налаштування LSP для erlang та zig в текстовому редакторі geany 2.1

нотатка про встановлення і налаштування на (l)ubuntu 22.04 LTS,
та на новіших версіях/інших дистрибутивах лінукса повинно бути аналогічно

  1. завантажимо geany-2.1, geany-plugins-2.1, erlang_ls, zls
    (раніше ми вже встановили erlang за допомогою kerl, zig також завантажили та встановили)

  2. розархівуємо завантажені в п.1. архіви

$ tar -xvf geany-2.1.tar.bz2
$ tar -xvf geany-plugins-2.1.tar.gz
  1. компіляція та встановлення завантаженого та розархівованого
    (все по інструкції, без сюрпризів)
$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
  1. далі пробуємо запустити та перезапустити geany
    в пункті меню Довідка -> About ми побачимо версію 2.1,
    в пункті меню Редагування -> Налаштування -> таб Інструменти
    змінюємо термінал з наступного (1) та наступний (2)
    (у випадку користування qterminal разом з fish)
# 1

xterm -e "/bin/sh %c"


# 2

qterminal -e fish -c "%c"
  1. далі включаємо плагін LSP Client:
    в пункті меню Інструменти -> Диспетчер плагінів
    знаходимо потрібний пункт, позначаємо його галочкою,
    закриваємо вікно, закриваємо-перезапускаємо geany
    тепер ми побачимо пункт LSP Client в меню пункту Інструменти :)

  2. для 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
}
  1. вносимо зміни в 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