Comment by kazinator

2 years ago

More about the indenting. If you're in :set lisp mode, and you have this, say:

  (progn  
    (cond
      (foo bar)
      (xyzzy quux)))_   ;; <-- cursor here

If you hit Enter for a new line, it will do this:

  (progn  
    (cond
      (foo bar)
      (xyzzy quux)))
  _                     ;; <-- cursor here

In parinfer mode, though, that is counterproductive, because you control structure through indentation. Say you want to add a fallback (t 42) case to the cond. You just want dumb indentation that is not Lisp aware and which just copies the indentation of the previous line:

  (progn  
    (cond
      (foo bar)
      (xyzzy quux)))
      _                     ;; <-- cursor here

Whereby parindent will instantly move the parentheses:

  (progn  
    (cond
      (foo bar)
      (xyzzy quux)
      ))

So I have it that when parinfer mode turns on, :set nolisp is executed, and vice versa, when parinfer is off, :set lisp goes on.