70 lines
1.8 KiB
Org Mode
70 lines
1.8 KiB
Org Mode
#+TITLE: Languages
|
|
|
|
* Intro
|
|
This is where Programming Language modes are configured.
|
|
|
|
* Default Settings
|
|
|
|
#+begin_src emacs-lisp
|
|
(defun lang-default-settings ()
|
|
"default setting for a language"
|
|
(display-line-numbers-mode)
|
|
(eglot-ensure)
|
|
(company-mode))
|
|
#+end_src
|
|
|
|
|
|
* Built-in Modes
|
|
|
|
|
|
** hook default settings to configured language modes
|
|
#+begin_src emacs-lisp
|
|
(let ((langs '("sh" "c++" "mhtml" "java" "js" "python" "latex")))
|
|
(dolist (lang langs)
|
|
(add-hook (intern (concat lang "-mode-hook")) (lambda () (lang-default-settings)))))
|
|
#+end_src
|
|
|
|
** add LSP server program names to eglot's configuration
|
|
#+begin_src emacs-lisp
|
|
(let ((server-programs '((c++-mode . ("clangd"))
|
|
(mhtml-mode . ("html-language-server"))
|
|
(java-mode . ("jdtls"))
|
|
(js-mode . ("typescript-language-server"))
|
|
(python-mode . ("pyright"))
|
|
(latex-mode . ("texlab")))))
|
|
(setq eglot-server-programs (append server-programs eglot-server-programs)))
|
|
#+end_src
|
|
|
|
* Installed Modes
|
|
** Go
|
|
#+begin_src emacs-lisp
|
|
(use-package go-mode
|
|
:mode "\\.go\\'"
|
|
:hook
|
|
(go-mode . (lambda () (lang-default-settings)))
|
|
:config
|
|
(setq go-tab-width default-custom-tab-size))
|
|
|
|
#+end_src
|
|
|
|
** TypeScript
|
|
#+begin_src emacs-lisp
|
|
(use-package typescript-mode
|
|
:mode "\\.ts\\'"
|
|
:init
|
|
(add-to-list 'eglot-server-programs `(typescript-mode . ("typescript-language-server")))
|
|
:hook
|
|
(typescript-mode . (lambda () (lang-default-settings))))
|
|
#+end_src
|
|
|
|
** Markdown
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package markdown-mode
|
|
:commands (markdown-mode gfm-mode)
|
|
:mode (("\\.md\\'". markdown-mode)
|
|
("\\.markdown\\'" . markdown-mode))
|
|
:init
|
|
(setq markdown-command "multimarkdown"))
|
|
#+end_src
|