How to indent square brackets identically as paren

2019-07-21 18:54发布

问题:

I've defined a few read-macros in Common Lisp with square bracket delimiters, and I'd like to make Emacs indent those square brackets in the exactly same way as with parentheses.

For example, from this:

(mapcar [if (flag)
        :t 
        :f]
        my-list)

To this:

(mapcar [if (flag)
            :t
            :f]
        my-list)    

...which is what Emacs would do if the square brackets were parentheses.

How can I achieve that?

回答1:

You need to tell Emacs that [ and ] are matching parentheses:

(modify-syntax-entry ?\[ "(]" lisp-mode-syntax-table)
(modify-syntax-entry ?\] ")[" lisp-mode-syntax-table)