more proper tree-sitter support, better older version compatibility, general cleanup

This commit is contained in:
Ian Griffin 2024-10-05 09:09:29 +08:00
parent 008ce842e7
commit a7768782fe
5 changed files with 70 additions and 61 deletions

View File

@ -12,8 +12,9 @@ Functions needed at the start of the configuration
* User Emacs Directories
set the directory for emacs and it's apps to put stuff.
#+begin_src emacs-lisp
(setq user-emacs-directory
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share")))
(if (version< emacs-version "28")
(setq user-emacs-directory
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))))
#+end_src
* Backup Directory

View File

@ -10,10 +10,10 @@
:strike-through nil :overline nil :underline nil
:slant normal :weight normal
:height 100 :width normal
:foundry "CTDB" :family "Source Code Pro"))))
'(fixed-pitch ((t (:family "Source Code Pro"))))
'(fixed-pitch-serif ((t (:family "Source Code Pro"))))
'(variable-pitch ((t (:inherit default :weight regular :family "Cantarell")))))
:foundry "CTDB" :family "Roboto Mono"))))
'(fixed-pitch ((t (:family "Roboto Mono"))))
'(fixed-pitch-serif ((t (:family "Roboto Mono"))))
'(variable-pitch ((t (:inherit default :weight regular :family "Inter")))))
#+end_src
** Chinese Font

View File

@ -152,7 +152,7 @@ sets the tab size 5 spaces
* Theme
Load theme (that is built-in)
#+begin_src emacs-lisp
(load-theme 'modus-operandi t)
(load-theme 'modus-vivendi t)
;; (use-package solarized-theme
;; :config
;; (load-theme 'solarized-selenized-black))

View File

@ -13,25 +13,38 @@ Tree sitter highlighting in emacs.[[https://tree-sitter.github.io/tree-sitter/sy
Tree-sitter Syntax Highlighting website]]
#+begin_src emacs-lisp
(use-package tree-sitter-langs)
(use-package tree-sitter
:after tree-sitter-langs
:diminish
(when (version< emacs-version "29")
(use-package tree-sitter-langs)
(use-package tree-sitter
:after tree-sitter-langs
:diminish
:config
(global-tree-sitter-mode)))
(add-hook 'prog-mode 'tree-sitter-hl-mode )
#+end_src
** treesit-auto
automatically install treesitter language
#+begin_src emacs-lisp
(use-package treesit-auto
:custom
(treesit-auto-install 'prompt)
:config
(global-tree-sitter-mode)
:hook (prog-mode . tree-sitter-hl-mode))
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
#+end_src
* Imenu-list
Imenu, the tool to get function names in source codes in emacs, displayed and constantly updated in a separate buffer
#+begin_src emacs-lisp
(use-package imenu-list
:commands (imenu-list-minor-mode))
(use-package imenu-list
:commands (imenu-list-minor-mode))
#+end_src
* Neotree
Tree-based explorer for Emacs
#+begin_src emacs-lisp
(use-package neotree
:hook (neotree-mode . (lambda ()
@ -49,7 +62,6 @@ Tree-based explorer for Emacs
* Magit
[[https://magit.vc][Git Interface for Emacs]]
#+begin_src emacs-lisp
(use-package magit
:bind
@ -66,6 +78,7 @@ This package provides Popup autocompletion
:bind
(:map company-active-map
("<tab>" . company-select-next))
:hook prog-mode
:custom
(company-minimum-prefix-length 1)
(company-idle-delay 0.0))

View File

@ -9,16 +9,16 @@
(defun lang-default-settings ()
"default setting for a language"
(display-line-numbers-mode)
(eglot-ensure)
(company-mode))
(treesit-auto-mode)
(eglot-ensure))
#+end_src
* Built-in Modes
** hook default settings to configured language modes
#+begin_src emacs-lisp
(let ((langs '("sh" "c++" "mhtml" "java" "js" "json" "python" "LaTeX" "typescript-ts" "tsx-ts")))
(dolist (lang langs)
(add-hook (intern (concat lang "-mode-hook")) (lambda () (lang-default-settings)))))
(let ((langs '("sh" "c++" "go-ts" "java" "js" "json" "LaTeX" "mhtml" "python" "typescript-ts" "tsx-ts")))
(dolist (lang langs)
(add-hook (intern (concat lang "-mode-hook")) 'lang-default-settings)))
#+end_src
** add LSP server program names to eglot's configuration
@ -35,47 +35,37 @@
* Installed Modes
** Go
unused, as tree-sitter has covered most needed functionality
#+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))
;; (use-package go-mode
;; :mode "\\.go\\'"
;; :hook (go-mode . lang-default-settings)
;; :config
;; (setq go-tab-width default-custom-tab-size))
#+end_src
** TypeScript
No longer using typescript-mode, as there's a builtin typescript-ts mode in Emacs 29
#+begin_src emacs-lisp
(if (version< emacs-version "29")
(use-package typescript-ts
:mode (("\\.ts\\'" . typescript-ts-mode)
("\\.tsx\\'" . tsx-ts-mode))
:hook (lang-default-settings
(tsx-ts-mode . lang-default-settings))
(use-package typescript-mode
:mode ("\\.ts\\'" ("\\.tsx\\'" . typescript-tsx-mode))
:config
(let ((server-programs '(("typescript-ts-mode" . ("typescript-language-server" "--stdio"))
("tsx-ts-mode" . ("typescript-language-server""--stdio")))))
(setq eglot-server-programs (append server-programs eglot-server-programs))))
(use-package typescript-mode
:mode ("\\.ts\\'" ("\\.tsx" . typescript-tsx-mode))
:config
(define-derived-mode typescript-tsx-mode typescript-mode "TypeScriptReact")
(dolist (mode '(typescript-mode typescript-tsx-mode))
(add-to-list 'eglot-server-programs `(,mode . ("typescript-language-server", "--stdio"))))
:hook
(typescript-mode . (lambda () (lang-default-settings)
(let ((custom-tab-size 2))
(setq-default default-tab-width custom-tab-size
tab-width custom-tab-size
c-basic-offset custom-tab-size))))
(typescript-tsx-mode . (lambda ()
(lang-default-settings)
(let ((custom-tab-size 4))
(setq-default default-tab-width custom-tab-size
tab-width custom-tab-size
c-basic-offset custom-tab-size))))))
(define-derived-mode typescript-tsx-mode typescript-mode "TypeScriptReact")
(dolist (mode '(ykpescript-mode typescript-tsx-mode))
(add-to-list 'eglot-server-programs `(,mode . ("typescript-language-server", "--stdio"))))
:hook
(typescript-mode . (lambda () (lang-default-settings)
(let ((custom-tab-size 2))
(setq-default default-tab-width custom-tab-size
tab-width custom-tab-size
c-basic-offset custom-tab-size))))
(typescript-tsx-mode . (lambda ()
(lang-default-settings)
(let ((custom-tab-size 4))
(setq-default default-tab-width custom-tab-size
tab-width custom-tab-size
c-basic-offset custom-tab-size))))))
#+end_src
** Markdown
@ -122,12 +112,17 @@ python venv manager
*** Jupyter
#+begin_src emacs-lisp
(use-package ein
:config
(add-to-list 'org-babel-load-languages '(ein . t)))
;; :custom
;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook")
;; :mode (("\\.ipynb\\'". ein:notebook-mode)))
(use-package ein
:config
(add-to-list 'org-babel-load-languages '(ein . t))
:bind
("C-c C-o" . ein:notebook-open)
:commands
ein:run
ein:notebook-open
ein:login)
;; :custom
;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook")
#+end_src
*** Tab Size