hackweek-emacs/cnf/programming.el

52 lines
1.4 KiB
EmacsLisp
Raw Permalink Normal View History

2025-06-29 19:54:44 +02:00
(push (concat user-emacs-directory "cnf/lang") load-path)
(push '("\\.py\\'" . (lambda () (require 'l-python) (python-mode))) auto-mode-alist)
;; LSP: language server in emacs
;; Currently I switched over to eglot
;; Pro/Contra eglot vs. lsp-mode
;; Pros:
;; - Eglot is part of Emacs core since 29
;; - Eglot seems to be a bit faster/leaner (There's `emacs-lsp-booster` for lsp-mode)
;; Cons:
;; - Eglot does not support multiple LSP servers **per buffer** (e.g. jedi + ruffe, html + js + tailwind)
;; (There is a multiplexer for Eglot `lspx`)
;; - Eglot does no support smth. like DAP mode
;; Keybindings
;; (general-def :states '(normal visual) :keymaps 'eglot-mode-map
;; "SPC =" 'eglot-format
;; "=" 'eglot-format)
;; LSP-MODE
(straight-use-package 'lsp-mode)
;; COMPANY: autocompletion
(straight-use-package 'company)
(setq company-idle-delay 0.0
company-tooltip-limit 5
company-minimum-prefix-length 1
company-echo-delay 0
company-auto-complete nil)
(add-hook 'prog-mode-hook 'company-mode)
(straight-use-package 'lsp-mode)
;; Keybindings
(defun my/keymap-company ()
(interactive)
(general-def
:keymaps 'company-active-map
"<tab>" 'company-complete-selection
"<return>" nil
"RET" nil))
(general-def
:states '(normal insert)
:keymaps 'company-mode-map
"C-<return>" 'company-search-candidates
"C-." 'company-search-candidates)
(add-hook 'company-mode-hook 'my/keymap-company)
(provide 'programming)