From a7768782fe354cd07a3700aea22e7cc14bf183b7 Mon Sep 17 00:00:00 2001 From: Ian Griffin Date: Sat, 5 Oct 2024 09:09:29 +0800 Subject: [PATCH] more proper tree-sitter support, better older version compatibility, general cleanup --- init.org.d/10-misc.org | 5 ++- init.org.d/40-fonts.org | 8 ++-- init.org.d/50-ui.org | 2 +- init.org.d/60-ide.org | 33 +++++++++++----- init.org.d/70-lang.org | 83 +++++++++++++++++++---------------------- 5 files changed, 70 insertions(+), 61 deletions(-) diff --git a/init.org.d/10-misc.org b/init.org.d/10-misc.org index 368e798..45b528b 100644 --- a/init.org.d/10-misc.org +++ b/init.org.d/10-misc.org @@ -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 diff --git a/init.org.d/40-fonts.org b/init.org.d/40-fonts.org index 158ea25..95d2fd8 100644 --- a/init.org.d/40-fonts.org +++ b/init.org.d/40-fonts.org @@ -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 diff --git a/init.org.d/50-ui.org b/init.org.d/50-ui.org index 528337e..d090d09 100644 --- a/init.org.d/50-ui.org +++ b/init.org.d/50-ui.org @@ -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)) diff --git a/init.org.d/60-ide.org b/init.org.d/60-ide.org index 9333f35..5ce708f 100644 --- a/init.org.d/60-ide.org +++ b/init.org.d/60-ide.org @@ -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 ("" . company-select-next)) + :hook prog-mode :custom (company-minimum-prefix-length 1) (company-idle-delay 0.0)) diff --git a/init.org.d/70-lang.org b/init.org.d/70-lang.org index 7607b4b..ff49759 100644 --- a/init.org.d/70-lang.org +++ b/init.org.d/70-lang.org @@ -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