налаштування LSP для erlang та zig в текстовому редакторі geany 2.1
нотатка про встановлення і налаштування на (l)ubuntu 22.04 LTS,
та на новіших версіях/інших дистрибутивах лінукса повинно бути аналогічно
-
завантажимо geany-2.1, geany-plugins-2.1, erlang_ls, zls
(раніше ми вже встановили erlang за допомогою kerl, zig також завантажили та встановили) -
розархівуємо завантажені в п.1. архіви
$ tar -xvf geany-2.1.tar.bz2
$ tar -xvf geany-plugins-2.1.tar.gz
- компіляція та встановлення завантаженого та розархівованого
(все по інструкції, без сюрпризів)
$cd geany-2.1
$ ./configure
$ make
$ sudo make install
$ cd ..
$ cd geany-plugins-2.1
$ ./configure
$ make
$ sudo make install
результат команди configure для плагінів виглядає наступним чином
Build Environment:
Geany version: 2.1 (GTK3)
Install prefix: /usr/local
Datadir: /usr/local/share/geany-plugins
Libdir: /usr/local/lib/geany-plugins
Docdir: /usr/local/share/doc/geany-plugins
Plugins path: /usr/local/lib/geany
Build Features:
Unit tests: no
Static code checking: no
Extra C compiler warnings: yes
Extra linker options: yes
Plugins:
Addons: yes
Autoclose: yes
Automark: yes
CodeNav: yes
Commander: yes
Debugger: no
Defineformat: yes
GeanyCtags: yes
GeanyDoc: yes
GeanyExtraSel: yes
GeanyGenDoc: no
GeanyInsertNum: yes
LaTeX: yes
GeanyLua: no
GeanyMacro: yes
GeanyMiniScript: yes
GeanyNumberedBookmarks: yes
GeanyPrj: yes
GeanyVC: yes
GeanyPG: no
GeniusPaste: no
GitChangeBar: no
Keyrecord: yes
LineOperations: yes
Lipsum: yes
LSP: yes
Markdown: no
Overview: yes
PairTagHighlighter: yes
PoHelper: yes
Pretty Printer: yes
ProjectOrganizer: yes
Scope: no
Sendmail: yes
ShiftColumn: yes
Spellcheck: no
TreeBrowser: yes
Tableconvert: yes
Updatechecker: no
Vimode: yes
WebHelper: no
Workbench: no
XMLSnippets: yes
Features:
GeanyVC GtkSpell support: no
Markdown library: peg-markdown
Utility library: yes
Utility library VTE support: no
те, що потрібно
LSP: yes
- далі пробуємо запустити та перезапустити geany
в пункті меню Довідка -> About ми побачимо версію 2.1,
в пункті меню Редагування -> Налаштування -> таб Інструменти
змінюємо термінал з наступного (1) та наступний (2)
(у випадку користування qterminal разом з fish)
# 1
xterm -e "/bin/sh %c"
# 2
qterminal -e fish -c "%c"
-
далі включаємо плагін LSP Client:
в пункті меню Інструменти -> Диспетчер плагінів
знаходимо потрібний пункт, позначаємо його галочкою,
закриваємо вікно, закриваємо-перезапускаємо geany
тепер ми побачимо пункт LSP Client в меню пункту Інструменти :) -
для zig додаємо наступний конфіг
/home/user/.config/zls.json
з наступним вмістом
{
"zig_exe_path": "/home/user/.zig/zig14",
"zig_lib_path": "/home/user/.zig/lib",
"enable_semantic_tokens": true,
"warn_style": true,
"enable_autofix": true
}
- вносимо зміни в lsp конфіг
/home/user/.config/geany/plugins/lsp/lsp.conf
зауважу, що це не весь конфіг -
в блоці [all] виставляємо true для ключів,
і нижче додаємо наступний блок для zig
[Zig]
cmd=/home/user/.zig/zls
semantic_tokens_enable=true
autocomplete_use_snippets=true
rpc_log=stdout
rpc_log_full=true
show_server_stderr=true
check_server_entry=true
також додаємо блок для erlang
[Erlang]
cmd=/home/user/.zig/run_erlang_language_server.sh
semantic_tokens_enable=true
autocomplete_use_snippets=true
rpc_log=stdout
rpc_log_full=true
show_server_stderr=true
check_server_entry=true
вміст вищезгаданого скрипта для запуску erlang та erlang_ls
#!/bin/sh
#exit
. /home/user/.kerl/erlangs/25.3/activate
#erlang_ls
#source "/home/user/.kerl/erlangs/25.3/activate"
exec "/home/user/.zig/erlang_ls" --transport stdio
загалом це все :)
після перезапуску все повинно працювати
у випадку проблеми можна потицяти команди(пункти меню)
в пункті меню Інструменти -> Restart All Servers
та подивитись на вивід в Панелі повідомлень
Посилання
https://www.geany.org/manual/current/index.html
https://plugins.geany.org/downloads.html
https://plugins.geany.org/install.html
https://plugins.geany.org/lsp.html
https://erlang-ls.github.io/
https://github.com/erlang-ls/erlang_ls
https://github.com/erlang-ls/erlang_ls/releases/tag/1.1.0
https://zigtools.org/zls/install/
https://zigtools.org/zls/install/?zig_version=0.14.1&compatibility=only-runtime