1. Vim's auto-indentation for Lisp is controlled by the &lispwords variable. e.g.,
; :set lispwords+=def
(def f (x)
body)
; :set lispwords-=list
(list x
y
z)
def forms have their arguments indented by the standard amount of space, while the arguments to list are lined up with each other.
&lispwords can be approximated by the names of macros that take a rest parameter named "body". It's not as strict as in Common Lisp, because it's just a naming convention instead of a keyword, but it's followed pretty closely in Arc's source. I just maintain a few exceptions to the rule.
But using &lispwords gives a pretty binary choice that fails on "wavy" indentation like
(if a
b
c
d
e)
and the indentation of paired forms like the variables of
(with (x something
y something-else)
body)
In all, a better equalprg would be really nice. Not something I plan on doing, but maybe some crazies out there feel like it.
2. Symbols like avg get highlighted in the deftem at the top of news.arc, even though it doesn't refer to the function avg. This can actually be really helpful, so that you know when you accidentally shadow a standard function/macro/variable. Besides, detecting this distinction in Vim seems too difficult.
3. Open question: should forms like a!b!c only highlight the exclamation points, or (current behavior) highlight past each ! as though they are quoted symbols? I think single exclamation marks like a!b should highlight past ! like a quoted symbol, since that's what the ssyntax means and it's quite readable, but nested ones will "run together" under such a scheme.
4. If, like me, you use Vim views & sessions, your old settings for existing Arc files may prevent
au BufRead,BufNewFile *.arc setf arc
from kicking in. You can setf manually, so that the view is saved with this info, or delete the existing views so that it stops reverting the filetype from (in my case) "arc" back to just "". Took me for-fucking-ever to figure that one out. Hope this helps someone as much as it would've helped me.