Emacsのlsp-modeでlua-language-serverを動かそうとしたら、ハマったのでメモ。
モテるターミナルにカスタマイズしよう(WezTerm)を見て、weztermを設定しようとした。
設定ファイルである wezterm.lua をEmacsで編集するためにluaの環境を整えようとしたら、Lua-language-serverを lsp-mode が認識しなかった。
加えて、自動でインストールしようとしたら、emacsがフリーズしてしまった。
動作させるために必要だった設定は以下の通り。
(setq lsp-clients-lua-language-server-bin (format "%s/.nix-profile/bin/lua-language-server" (getenv "HOME"))
lsp-clients-lua-language-server-main-location (format "%s/.lua-language-server/main.lua" (getenv "HOME")))
; reference : https://github.com/emacs-lsp/lsp-mode/issues/4688#issuecomment-3138937688
(defun my/lsp-clients-lua-language-server-test ()
"(Improved) Test Lua language server binaries and files."
(or (and (f-exists? lsp-clients-lua-language-server-main-location)
(f-exists? lsp-clients-lua-language-server-bin))
(f-exists? (car (split-string lsp-clients-lua-language-server-command)))))
(advice-add #'lsp-clients-lua-language-server-test
:override #'my/lsp-clients-lua-language-server-test)
lsp-mode自体にもIssueが上っていたためそれを参考にして設定したら動作した。
私はnixを使用してlua-language-serverをインストールしている。
インストールする時に、lua-language-serverの main.lua を適当な場所に配置する。
この main.lua の場所を lsp-clients-lua-language-server-main-location に設定し、 lsp-clients-lua-language-server-bin にlua-language-serverをインストールしたPathを設定する。
最後に、このIssueコメントにある関数をコピペしたら動いた。
参考 : Externally provided lua-language-server is not recognized #4688
このブログはHugoのGithub Styleを少し設定している。
デフォルトだと、自己紹介などがブログに埋もれてしまうためメニューバーに追加した。
現状、一つ加える度にhtmlを触らないといけない実装になっているのが気になるが、動いているからヨシ!
config.toml に以下の要素を追加して、設定ファイルに追記すれば要素が追加されるようにした。
[[params.self]]
name = 'Self'
url="introduction/introduction"
そして、作成したHugoプロジェクト以下に layouts/partial/menu.html を作る。
menus.html の追加のメニューとして以下の変更を加えた。
{{ range .Site.Params.projects }}
<a class="UnderlineNav-item
{{ if .IsSection }} selected {{ end }}
{{ if eq .Type " tags" }} selected {{ end }}"
href="{{ absURL .url }}">
{{ .name}}
</a>
{{ end }}
既存の実装では、リンクを貼る実装が {{urls.JoinPath .Site.BaseURL url}} になってる。
だが、上手く動作してくれなかったので {{absURL .url}} という実装にしている。