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 * User Emacs Directories
set the directory for emacs and it's apps to put stuff. set the directory for emacs and it's apps to put stuff.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq user-emacs-directory (if (version< emacs-version "28")
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))) (setq user-emacs-directory
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))))
#+end_src #+end_src
* Backup Directory * Backup Directory

View File

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

View File

@ -152,7 +152,7 @@ sets the tab size 5 spaces
* Theme * Theme
Load theme (that is built-in) Load theme (that is built-in)
#+begin_src emacs-lisp #+begin_src emacs-lisp
(load-theme 'modus-operandi t) (load-theme 'modus-vivendi t)
;; (use-package solarized-theme ;; (use-package solarized-theme
;; :config ;; :config
;; (load-theme 'solarized-selenized-black)) ;; (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]] Tree-sitter Syntax Highlighting website]]
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package tree-sitter-langs) (when (version< emacs-version "29")
(use-package tree-sitter (use-package tree-sitter-langs)
:after tree-sitter-langs (use-package tree-sitter
:diminish :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 :config
(global-tree-sitter-mode) (treesit-auto-add-to-auto-mode-alist 'all)
:hook (prog-mode . tree-sitter-hl-mode)) (global-treesit-auto-mode))
#+end_src #+end_src
* Imenu-list * Imenu-list
Imenu, the tool to get function names in source codes in emacs, displayed and constantly updated in a separate buffer Imenu, the tool to get function names in source codes in emacs, displayed and constantly updated in a separate buffer
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package imenu-list (use-package imenu-list
:commands (imenu-list-minor-mode)) :commands (imenu-list-minor-mode))
#+end_src #+end_src
* Neotree * Neotree
Tree-based explorer for Emacs Tree-based explorer for Emacs
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package neotree (use-package neotree
:hook (neotree-mode . (lambda () :hook (neotree-mode . (lambda ()
@ -49,7 +62,6 @@ Tree-based explorer for Emacs
* Magit * Magit
[[https://magit.vc][Git Interface for Emacs]] [[https://magit.vc][Git Interface for Emacs]]
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package magit (use-package magit
:bind :bind
@ -66,6 +78,7 @@ This package provides Popup autocompletion
:bind :bind
(:map company-active-map (:map company-active-map
("<tab>" . company-select-next)) ("<tab>" . company-select-next))
:hook prog-mode
:custom :custom
(company-minimum-prefix-length 1) (company-minimum-prefix-length 1)
(company-idle-delay 0.0)) (company-idle-delay 0.0))

View File

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