Add support for clangd for c languages in emacs.
This commit is contained in:
parent
e469ed8b9a
commit
c36568462f
@ -1,6 +1,6 @@
|
|||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- py39-ansible
|
- py311-ansible
|
||||||
- ansible-sshjail
|
- ansible-sshjail
|
||||||
state: present
|
state: present
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
.idea
|
.idea
|
||||||
.python-version
|
.python-version
|
||||||
|
|
||||||
|
# Emacs per-directory settings
|
||||||
.dir-locals.el
|
.dir-locals.el
|
||||||
|
|
||||||
|
# C/C++ Language Server compile commands
|
||||||
|
compile_commands.json
|
||||||
|
49
ansible/roles/emacs/files/elisp/lang-c.el
Normal file
49
ansible/roles/emacs/files/elisp/lang-c.el
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
(require 'common-lsp)
|
||||||
|
(require 'util-tree-sitter)
|
||||||
|
|
||||||
|
(defun locate-compile-commands-file ()
|
||||||
|
"See if compile_commands.json exists."
|
||||||
|
;; This can be generated by prefixing the make command with `intercept-build15 --append`
|
||||||
|
(let ((compile-commands-file (locate-dominating-file (buffer-file-name) "compile_commands.json")))
|
||||||
|
compile-commands-file
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun activate-c-eglot ()
|
||||||
|
"Activate eglot for the c family of languages."
|
||||||
|
(when (locate-compile-commands-file)
|
||||||
|
(eglot-ensure)
|
||||||
|
(defclass my/eglot-c (eglot-lsp-server) ()
|
||||||
|
:documentation
|
||||||
|
"Own eglot server class.")
|
||||||
|
|
||||||
|
(add-to-list 'eglot-server-programs
|
||||||
|
'(c-ts-mode . (my/eglot-c "/usr/local/bin/clangd15")))
|
||||||
|
(add-hook 'before-save-hook 'eglot-format-buffer nil 'local)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(use-package c-mode
|
||||||
|
:mode (
|
||||||
|
("\\.c\\'" . c-ts-mode)
|
||||||
|
("\\.h\\'" . c-or-c++-ts-mode)
|
||||||
|
)
|
||||||
|
:commands (c-mode c-ts-mode)
|
||||||
|
:pin manual
|
||||||
|
:ensure nil
|
||||||
|
:hook (
|
||||||
|
(c-ts-mode . (lambda ()
|
||||||
|
(activate-c-eglot)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
:init
|
||||||
|
(add-to-list 'major-mode-remap-alist '(c-mode . c-ts-mode))
|
||||||
|
(add-to-list 'major-mode-remap-alist '(c++-mode . c++-ts-mode))
|
||||||
|
(add-to-list 'major-mode-remap-alist '(c-or-c++-mode . c-or-c++-ts-mode))
|
||||||
|
(add-to-list 'treesit-language-source-alist '(c "https://github.com/tree-sitter/tree-sitter-c"))
|
||||||
|
(add-to-list 'treesit-language-source-alist '(cpp "https://github.com/tree-sitter/tree-sitter-cpp"))
|
||||||
|
(unless (treesit-ready-p 'c) (treesit-install-language-grammar 'c))
|
||||||
|
(unless (treesit-ready-p 'cpp) (treesit-install-language-grammar 'cpp))
|
||||||
|
)
|
||||||
|
|
||||||
|
(provide 'lang-c)
|
@ -57,7 +57,7 @@
|
|||||||
:init
|
:init
|
||||||
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
(add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode))
|
||||||
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
(add-to-list 'treesit-language-source-alist '(rust "https://github.com/tree-sitter/tree-sitter-rust"))
|
||||||
(unless (treesit-ready-p 'yaml) (treesit-install-language-grammar 'rust))
|
(unless (treesit-ready-p 'rust) (treesit-install-language-grammar 'rust))
|
||||||
:config
|
:config
|
||||||
;; Add keybindings for interacting with Cargo
|
;; Add keybindings for interacting with Cargo
|
||||||
(use-package cargo
|
(use-package cargo
|
||||||
|
@ -32,4 +32,6 @@
|
|||||||
|
|
||||||
(require 'lang-dockerfile)
|
(require 'lang-dockerfile)
|
||||||
|
|
||||||
|
(require 'lang-c)
|
||||||
|
|
||||||
(load-directory autoload-directory)
|
(load-directory autoload-directory)
|
||||||
|
@ -16,20 +16,20 @@
|
|||||||
when: 'emacs_flavor == "full"'
|
when: 'emacs_flavor == "full"'
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- py39-pygments
|
- py311-pygments
|
||||||
- inkscape # to support SVGs in LaTeX
|
- inkscape # to support SVGs in LaTeX
|
||||||
# - prettier # typescript formatting
|
# - prettier # typescript formatting
|
||||||
- aspell
|
- aspell
|
||||||
- en-aspell
|
- en-aspell
|
||||||
- unzip # for extracting mspyls
|
- unzip # for extracting mspyls
|
||||||
- py39-isort
|
- py311-isort
|
||||||
- py39-black
|
- py311-black
|
||||||
- zip # for odt export from org-mode
|
- zip # for odt export from org-mode
|
||||||
- gnuplot # used for exporting graphs from org-mode
|
- gnuplot # used for exporting graphs from org-mode
|
||||||
# - pyright
|
# - pyright
|
||||||
- sqlite3 # for sqlite code blocks in org-mode
|
- sqlite3 # for sqlite code blocks in org-mode
|
||||||
# - terraform-ls # Terraform language server
|
# - terraform-ls # Terraform language server
|
||||||
- py39-ptvsd
|
- py311-ptvsd
|
||||||
- hs-ShellCheck
|
- hs-ShellCheck
|
||||||
# - gopls
|
# - gopls
|
||||||
state: present
|
state: present
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
- name: Install packages
|
- name: Install packages
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- py39-yamllint
|
- py311-yamllint
|
||||||
state: present
|
state: present
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- zsh
|
- zsh
|
||||||
- py39-jmespath # Needed on machine running ansible for json_query
|
- py311-jmespath # Needed on machine running ansible for json_query
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
- zsh
|
- zsh
|
||||||
- sqlite3
|
- sqlite3
|
||||||
- git
|
- git
|
||||||
- py39-jmespath # Needed on machine running ansible for json_query
|
- py311-jmespath # Needed on machine running ansible for json_query
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- include_tasks:
|
- include_tasks:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user