diff --git a/flakes/emacs/config/init.el b/flakes/emacs/config/init.el index 93b75d6..5475154 100644 --- a/flakes/emacs/config/init.el +++ b/flakes/emacs/config/init.el @@ -184,8 +184,9 @@ (add-to-list 'eglot-server-programs `(,mode . ("vscode-json-language-server" "--stdio")) 0)) - (add-to-list 'eglot-server-programs - '(swift-mode . ("xcrun" "sourcekit-lsp")))) + (dolist (mode '(swift-mode swift-ts-mode)) + (add-to-list 'eglot-server-programs + `(,mode . ("xcrun" "sourcekit-lsp"))))) (use-package emacs :ensure nil @@ -682,6 +683,10 @@ swift-mode:basic-offset 2 swift-mode:repl-executable "xcrun swift repl")) +(use-package swift-ts-mode + :custom + (swift-ts-mode-indent-offset 2)) + (use-package tab-bar :config (tab-bar-mode) @@ -706,12 +711,6 @@ :custom (treesit-auto-install 'prompt) :config - (add-to-list 'treesit-auto-recipe-list - (make-treesit-auto-recipe - :lang 'swift - :ts-mode 'swift-ts-mode - :remap '(swift-mode) - :ext "\\.swift\\'")) (setq treesit-auto-langs '(swift python diff --git a/flakes/emacs/config/tree-sitter/libtree-sitter-swift.dylib b/flakes/emacs/config/tree-sitter/libtree-sitter-swift.dylib deleted file mode 100755 index 1b98ad7..0000000 Binary files a/flakes/emacs/config/tree-sitter/libtree-sitter-swift.dylib and /dev/null differ diff --git a/flakes/emacs/home.nix b/flakes/emacs/home.nix index ea7ce5f..65acffd 100644 --- a/flakes/emacs/home.nix +++ b/flakes/emacs/home.nix @@ -1,7 +1,16 @@ { pkgs, lib, ... }: +let + swiftTreeSitterGrammar = pkgs.tree-sitter-grammars.tree-sitter-swift; + swiftTreeSitterLibraryName = + if pkgs.stdenv.hostPlatform.isDarwin then + "libtree-sitter-swift.dylib" + else + "libtree-sitter-swift.so"; +in { home.file.".emacs.d/early-init.el".source = ./config/early-init.el; - home.file.".emacs.d/tree-sitter/libtree-sitter-swift.dylib".source = ./config/tree-sitter/libtree-sitter-swift.dylib; + home.file.".emacs.d/tree-sitter/${swiftTreeSitterLibraryName}".source = + "${swiftTreeSitterGrammar}/parser"; home.file.".emacs.d/snippets".source = ./config/snippets; programs.emacs = { @@ -64,6 +73,7 @@ restclient smartparens swift-mode + swift-ts-mode super-save terraform-mode treesit-auto