Автоиндентировать файл.lisp из командной строки и использовать slimv, чтобы сделать отступ
Я пытаюсь автоматически сделать отступ для файла.lisp из командной строки, используя vim+slimv для выполнения отступа.
Я попытался написать это:
vi -c 'call SlimvConnectSwank()' -c 'normal gg=G' -c 'wq' -c 'q!' temp.lisp
Но сервер swank не запрашивает выполнение отступа, так что это просто делает отступ для файла.lisp vim по умолчанию (если SlimV и сервер не были запущены).
Нужно ли вводить какую-то команду delay/wait -c после вызова для подключения к серверу swank? Кажется, что весь процесс vi завершается слишком быстро, и он не дает шансу возможности подключиться. Если соединение swank происходит в отдельном потоке, я полагаю, что это может быть так.
Мысли / комментарии / предложения приветствуются.
Спасибо!
Тамас понял. Это была (и я проверил это, оба действительно необходимы; действительно:)) команда сна и команда swank, которая заставила его работать.
Я добавил это в свой.bashrc и присвоил ему псевдоним 'ai', чтобы я мог легко сделать отступ для файла.lisp из командной строки:
alias ai="vi \
-c 'call SlimvConnectSwank()' \
-c 'sleep 1' \
-c 'call SlimvEval(['0'])' \
-c 'normal gg=G' \
-c 'wq' \
-c 'q!'"
Теперь 'ai temp.lisp' автоматически устанавливает отступ temp.lisp для стандартов slimv + vim + swank и т. Д.
Все виды сценариев этого сценария для автоматического отступа в репозитории файлов lisp, если у вас есть команда bash, чтобы сделать это для одного файла.
1 ответ
Весь процесс является однопоточным, поэтому нет необходимости добавлять задержки, каждая команда должна завершиться до выполнения следующей. Вы можете проверить, что отступ Slimv отвечает за эту команду:
vi -c "call SlimvConnectSwank()" -c "setlocal indentexpr?" temp.lisp
Это должно напечатать indentexpr=SlimvIndent(v:lnum)
,
Я подозреваю, что у вас есть некоторые определения в вашем temp.lisp
это влияет на отступ. Сначала эти определения должны быть переданы серверу-серверу, иначе сервер-сервер не будет знать, например, аргументы функции и т. Д. Помните: весь процесс является динамическим, информация времени выполнения используется для создания отступов в формах.
Поэтому я думаю, что сначала вам нужно проверить весь буфер и сделать отступ только после этого. Вы можете использовать эту команду:
vi -c "call SlimvConnectSwank()" -c "call SlimvEvalBuffer()" -c "normal gg=G" -c "wq" -c "q!" temp.lisp