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
(if (version< emacs-version "28")
(setq user-emacs-directory (setq user-emacs-directory
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))) (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,13 +13,27 @@ 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
(when (version< emacs-version "29")
(use-package tree-sitter-langs) (use-package tree-sitter-langs)
(use-package tree-sitter (use-package tree-sitter
:after tree-sitter-langs :after tree-sitter-langs
:diminish :diminish
:config :config
(global-tree-sitter-mode) (global-tree-sitter-mode)))
:hook (prog-mode . tree-sitter-hl-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
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
#+end_src #+end_src
* Imenu-list * Imenu-list
@ -31,7 +45,6 @@ Imenu, the tool to get function names in source codes in emacs, displayed and co
* 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,34 +35,24 @@
* 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
:mode (("\\.ts\\'" . typescript-ts-mode)
("\\.tsx\\'" . tsx-ts-mode))
:hook (lang-default-settings
(tsx-ts-mode . lang-default-settings))
: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 (use-package typescript-mode
:mode ("\\.ts\\'" ("\\.tsx" . typescript-tsx-mode)) :mode ("\\.ts\\'" ("\\.tsx\\'" . typescript-tsx-mode))
:config :config
(define-derived-mode typescript-tsx-mode typescript-mode "TypeScriptReact") (define-derived-mode typescript-tsx-mode typescript-mode "TypeScriptReact")
(dolist (mode '(typescript-mode typescript-tsx-mode)) (dolist (mode '(ykpescript-mode typescript-tsx-mode))
(add-to-list 'eglot-server-programs `(,mode . ("typescript-language-server", "--stdio")))) (add-to-list 'eglot-server-programs `(,mode . ("typescript-language-server", "--stdio"))))
:hook :hook
(typescript-mode . (lambda () (lang-default-settings) (typescript-mode . (lambda () (lang-default-settings)
@ -124,10 +114,15 @@ python venv manager
#+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))
:bind
("C-c C-o" . ein:notebook-open)
:commands
ein:run
ein:notebook-open
ein:login)
;; :custom ;; :custom
;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook") ;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook")
;; :mode (("\\.ipynb\\'". ein:notebook-mode)))
#+end_src #+end_src
*** Tab Size *** Tab Size