Немного что-то, что можно было бы заимствовать у IDE. Таким образом, идея заключалась бы в том, чтобы выделить функциональные аргументы (и, возможно, узлы переменных имен) внутри тел функций. Это поведение по умолчанию для некоторых C:

Хорошо, если бы я разместил курсор внутри func, я бы хотел, чтобы аргументы foo и bar выделены, чтобы лучше следовать логике алгоритма. Обратите внимание, что аналогичное имя foo в func2 не получило бы подсветки. Эта роскошь может быть опущена, хотя...

С помощью локально ограниченных переменных мне также хотелось бы иметь локально инициализированные переменные highlit:

Наконец, чтобы заново осознать роскошь:

Не так тривиально писать это. Я использовал C, чтобы дать общее представление. На самом деле я мог бы использовать это для программирования Scheme/ Clojure лучше:


Это должно распознавать привязки let, loop, for, doseq.
Мой vimscript-fu не настолько силен; Я подозреваю, что нам нужно
- Разберите (не-regexply?) аргументы из определения функции под курсором. Конечно, это будет язык. Мой приоритет будет Clojure.
- определить область синтаксиса для охвата только данной функции/области действия
- укажите требуемые синтаксические соответствия
В качестве функции это может быть отображено на ключ (если он очень ресурсоемкий) или CursorMoved, если не так медленно.
Хорошо, теперь. Кто-нибудь написал/нашел что-то вроде этого? У vimscript-гуру есть идея о том, как на самом деле начать писать такой script?
Извините за небольшую оффтопичность и плохое форматирование. Не стесняйтесь редактировать/форматировать. Или проголосовать, чтобы закрыть.