Eglot and org, org-roam

This commit is contained in:
Joseph Ferano 2023-08-10 11:26:29 +07:00
parent ab7a977c0b
commit ce04e2e77a
3 changed files with 194 additions and 95 deletions

View File

@ -345,23 +345,57 @@ Use Dashboard.el. First load `all-the-icons` for nicer rendering
#+end_src #+end_src
We want to add whatever custom theme we selected to the custom variables since emacs will just We want to add whatever custom theme we selected to the custom variables since
automatically read it on startup but we don't want emacs to add these settings to init.el, which in emacs will just automatically read it on startup but we don't want emacs to add
our case is worse since we have a literate file. Send all custom variables to ~custom.el~ these settings to init.el, which in our case is worse since we have a literate
file. Send all custom variables to ~custom.el~
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq custom-file (expand-file-name "custom.el" user-emacs-directory)) (setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file) (load custom-file)
#+end_src #+end_src
Save the chosen theme after picking a new one I copied this from consult so that I could add the customize-save-variable at
the end, so if I load another emacs process, it can have the same thing.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defun joe/save-current-theme (THEME) (defun joe/consult-theme (theme)
(let ((inhibit-message t) "Disable current themes and enable THEME from `consult-themes'.
(message-log-max nil))
(customize-save-variable 'custom-enabled-themes custom-enabled-themes))) The command supports previewing the currently selected theme."
(advice-add 'consult-theme :after #'joe/save-current-theme) (interactive
(list
(let* ((regexp (consult--regexp-filter
(mapcar (lambda (x) (if (stringp x) x (format "\\`%s\\'" x)))
consult-themes)))
(avail-themes (seq-filter
(lambda (x) (string-match-p regexp (symbol-name x)))
(cons 'default (custom-available-themes))))
(saved-theme (car custom-enabled-themes)))
(consult--read
(mapcar #'symbol-name avail-themes)
:prompt "Theme: "
:require-match t
:category 'theme
:history 'consult--theme-history
:lookup (lambda (selected &rest _)
(setq selected (and selected (intern-soft selected)))
(or (and selected (car (memq selected avail-themes)))
saved-theme))
:state (lambda (action theme)
(pcase action
('return (consult-theme (or theme saved-theme)))
((and 'preview (guard theme)) (consult-theme theme))))
:default (symbol-name (or saved-theme 'default))))))
(when (eq theme 'default) (setq theme nil))
(unless (eq theme (car custom-enabled-themes))
(mapc #'disable-theme custom-enabled-themes)
(when theme
(if (custom-theme-p theme)
(enable-theme theme)
(load-theme theme :no-confirm))
))
(customize-save-variable 'custom-enabled-themes custom-enabled-themes))
#+end_src #+end_src
*** Other *** Other
@ -755,7 +789,7 @@ weren't working, until I randomly saw this in someone's init.el
(kbd "SPC Bd") 'bookmark-delete (kbd "SPC Bd") 'bookmark-delete
(kbd "SPC mr") 'joe/compile-run (kbd "SPC mr") 'joe/compile-run
(kbd "SPC mc") 'joe/compile-comp (kbd "SPC mc") 'joe/compile-comp
(kbd "SPC ct") 'consult-theme (kbd "SPC ct") 'joe/consult-theme
(kbd "SPC cl") 'consult-line (kbd "SPC cl") 'consult-line
(kbd "SPC ci") 'consult-imenu (kbd "SPC ci") 'consult-imenu
(kbd "SPC cy") 'consult-yank-from-kill-ring (kbd "SPC cy") 'consult-yank-from-kill-ring
@ -953,6 +987,7 @@ Ace Window will show a hint if there are more than 2 windows, but I don't really
"^\\*Occur\\*$" occur-mode "^\\*Occur\\*$" occur-mode
"^\\*lsp-help\\*" lsp-help-mode "^\\*lsp-help\\*" lsp-help-mode
"^\\*eldoc\\*" special-mode "^\\*eldoc\\*" special-mode
"^\\*godot.*" godot-mode
"^\\*ert\\*" ert-results-mode "^\\*ert\\*" ert-results-mode
"^\\*HTTP Response\\*" javascript-mode "^\\*HTTP Response\\*" javascript-mode
"^\\*SQL.*" sql-interactive-mode "^\\*SQL.*" sql-interactive-mode
@ -960,6 +995,7 @@ Ace Window will show a hint if there are more than 2 windows, but I don't really
"^\\*cargo-run\\*" cargo-run-mode "^\\*cargo-run\\*" cargo-run-mode
"^\\*rustic-compilation\\*" rustic-compilation-mode "^\\*rustic-compilation\\*" rustic-compilation-mode
"^\\*ansi-term\\*$" term-mode "^\\*ansi-term\\*$" term-mode
"^\\*Async Shell Command\\*$" shell-mode
("^\\*Warnings\\*$" . hide) ("^\\*Warnings\\*$" . hide)
help-mode help-mode
helpful-mode)) helpful-mode))
@ -1240,6 +1276,7 @@ Ace Window will show a hint if there are more than 2 windows, but I don't really
(with-eval-after-load 'project (with-eval-after-load 'project
(setq project-vc-ignores '("target/" "bin/" "obj/")) (setq project-vc-ignores '("target/" "bin/" "obj/"))
(add-to-list 'project-switch-commands '(magit-project-status "Magit" ?m)) (add-to-list 'project-switch-commands '(magit-project-status "Magit" ?m))
;; TODO: This doesn't start in the correct working directory
(add-to-list 'project-switch-commands '(joe/vterm-here "VTerm" ?s)) (add-to-list 'project-switch-commands '(joe/vterm-here "VTerm" ?s))
(add-to-list 'project-vc-extra-root-markers ".dir-locals.el") (add-to-list 'project-vc-extra-root-markers ".dir-locals.el")
@ -1436,7 +1473,7 @@ When called interactively, prompt for BUFFER."
(global-set-key (kbd "C-. C-l") 'consult-line) (global-set-key (kbd "C-. C-l") 'consult-line)
(global-set-key (kbd "C-. C-i") 'consult-imenu) (global-set-key (kbd "C-. C-i") 'consult-imenu)
(global-set-key (kbd "C-. C-t") 'consult-theme) (global-set-key (kbd "C-. C-t") 'joe/consult-theme)
(global-set-key (kbd "C-. C-r") 'consult-recent-file) (global-set-key (kbd "C-. C-r") 'consult-recent-file)
(global-set-key (kbd "C-. C-y") 'consult-yank-from-kill-ring) (global-set-key (kbd "C-. C-y") 'consult-yank-from-kill-ring)
@ -1684,36 +1721,37 @@ be kept here commented out in case we want to try it again.
#+end_src #+end_src
** Terminals/Shells ** Terminals/Shells
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'vterm) (require 'vterm)
(setq vterm-shell "/bin/fish") (setq vterm-shell "/bin/fish")
(setq vterm-timer-delay 0.01) (setq vterm-timer-delay 0.01)
(setq vterm-buffer-name-string "VTerm - %s") (setq vterm-buffer-name-string "VTerm - %s")
(setq vterm-max-scrollback 100000) (setq vterm-max-scrollback 100000)
(setq vterm-kill-buffer-on-exit t) (setq vterm-kill-buffer-on-exit t)
(defun joe/close-popup-buffer (vterm-buf event-msg) (defun joe/close-popup-buffer (vterm-buf event-msg)
(unless (or (eq popper-popup-status nil) (unless (or (eq popper-popup-status nil)
(eq popper-popup-status 'raised)) (eq popper-popup-status 'raised))
(popper-close-latest))) (popper-close-latest)))
(setq vterm-exit-functions '(joe/close-popup-buffer)) (setq vterm-exit-functions '(joe/close-popup-buffer))
(defun joe/vterm-here () (defun joe/vterm-here ()
(interactive) (interactive)
(let ((vterm-buf (vterm--internal #'switch-to-buffer))) (let ((vterm-buf (vterm--internal #'switch-to-buffer)))
(with-current-buffer vterm-buf (with-current-buffer vterm-buf
(setq popper-popup-status 'raised)))) (setq popper-popup-status 'raised))))
(global-set-key (kbd "C-c t") #'vterm) (global-set-key (kbd "C-c t") #'vterm)
(global-set-key (kbd "C-c T") #'joe/vterm-here) (global-set-key (kbd "C-c T") #'joe/vterm-here)
;; (setq explicit-shell-file-name "~/Development/fell/fell") ;; (setq explicit-shell-file-name "~/Development/fell/fell")
(add-hook 'shell-mode (lambda () (setq-local global-hl-line-mode nil))) (add-hook 'shell-mode (lambda () (setq-local global-hl-line-mode nil)))
(setq shell-kill-buffer-on-exit t) (setq shell-kill-buffer-on-exit t)
(add-hook 'vterm-mode-hook (add-hook 'vterm-mode-hook
(lambda () (lambda ()
(define-key vterm-mode-map (kbd "C-c C-x") #'vterm-send-C-x) (define-key vterm-mode-map (kbd "C-c C-x") #'vterm-send-C-x)
(when (boundp 'evil-mode) (when (boundp 'evil-mode)
(evil-define-key 'insert vterm-mode-map (kbd "C-f") #'vterm-send-C-f)
(evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm-send-C-w) (evil-define-key 'insert vterm-mode-map (kbd "C-w") #'vterm-send-C-w)
(evil-define-key 'insert vterm-mode-map (kbd "<delete>") #'vterm-send-delete)) (evil-define-key 'insert vterm-mode-map (kbd "<delete>") #'vterm-send-delete))
(setq-local global-hl-line-mode nil))) (setq-local global-hl-line-mode nil)))
@ -1765,11 +1803,13 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
(evil-define-key 'insert comint-mode-map (kbd "C-n") 'comint-next-input) (evil-define-key 'insert comint-mode-map (kbd "C-n") 'comint-next-input)
(evil-define-key 'insert comint-mode-map (kbd "C-p") 'comint-previous-input)) (evil-define-key 'insert comint-mode-map (kbd "C-p") 'comint-previous-input))
#+end_src #+end_src
*** Mono-complete *** Completion
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; (evil-global-set-key 'insert (kbd "C-f") #'mono-complete-expand) ;; (evil-global-set-key 'insert (kbd "C-f") #'mono-complete-expand)
(require 'mono-complete) (require 'mono-complete)
(evil-global-set-key 'insert (kbd "M-/") #'mono-complete-expand-or-fallback)
(evil-global-set-key 'insert (kbd "C-f") #'mono-complete-expand-or-fallback)
(setq mono-complete-backends (list 'dabbrev 'filesystem)) (setq mono-complete-backends (list 'dabbrev 'filesystem))
(setq mono-complete-backends (list 'capf 'dabbrev 'filesystem)) (setq mono-complete-backends (list 'capf 'dabbrev 'filesystem))
@ -1784,6 +1824,13 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
:inherit 'shadow) :inherit 'shadow)
(mono-complete-mode +1) (mono-complete-mode +1)
(setq completion-in-region-function
(lambda (&rest args)
(apply (if vertico-mode
#'consult-completion-in-region
#'completion--in-region)
args)))
#+end_src #+end_src
*** Eldoc *** Eldoc
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1794,15 +1841,22 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
*** Eglot *** Eglot
#+begin_src emacs-lisp #+begin_src emacs-lisp
(with-eval-after-load 'eglot (with-eval-after-load 'eglot
(global-eldoc-mode -1)
;; (flymake-mode -1) ;; (flymake-mode -1)
;; Disable it completely until we find out how the hell we can toggle it ;; Disable it completely until we find out how the hell we can toggle it
(setq eglot-stay-out-of '(flymake)) (setq eglot-stay-out-of '(flymake))
(setq eglot-stay-out-of '())
(setq eldoc-idle-delay 0.15)
;; (setq eglot-stay-out-of '())
;; (add-hook 'eglot-managed-mode-hook (lambda () (flymake-mode -1))) ;; (add-hook 'eglot-managed-mode-hook (lambda () (flymake-mode -1)))
(when (boundp 'evil-mode)
;; (evil-global-set-key 'normal (kbd "M-d") #'lsp-describe-thing-at-point)
(evil-global-set-key 'normal (kbd "SPC li") 'eglot-inlay-hints-mode) (evil-global-set-key 'normal (kbd "SPC li") 'eglot-inlay-hints-mode)
(evil-global-set-key 'normal (kbd "<leader>cs") 'consult-eglot-symbols))) (evil-global-set-key 'normal (kbd "SPC cs") 'consult-eglot-symbols)
(evil-global-set-key 'normal (kbd "SPC cr") 'eglot-rename)
(evil-global-set-key 'normal (kbd "SPC ca") 'eglot-code-actions))
;; These don't work
;; (setq flymake-start-on-save-buffer nil)
;; (setq flymake-start-on-flymake-mode nil)
#+end_src #+end_src
*** COMMENT LSP *** COMMENT LSP
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1911,6 +1965,10 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
(popper-close-latest)))))) (popper-close-latest))))))
(add-hook 'compilation-finish-functions 'joe/close-compilation-if-no-warn-err) (add-hook 'compilation-finish-functions 'joe/close-compilation-if-no-warn-err)
#+end_src #+end_src
*** Godot
#+begin_src emacs-lisp
(require 'gdscript-mode)
#+end_src
** Programming Languages ** Programming Languages
*** Python *** Python
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1921,6 +1979,7 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
#+end_src> #+end_src>
*** Rust *** Rust
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq rustic-lsp-setup-p nil)
(require 'rustic) (require 'rustic)
(require 'ob-rust) (require 'ob-rust)
;; Org-Babel ;; Org-Babel
@ -1938,19 +1997,18 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i
;; (evcxr-minor-mode) ;; (evcxr-minor-mode)
(electric-pair-local-mode))) (electric-pair-local-mode)))
(with-eval-after-load 'rustic ;; (with-eval-after-load 'rustic
;; Don't autostart ;; ;; Don't autostart
(setq rustic-lsp-setup-p nil) ;; ;; (define-key rustic-mode-map (kbd "<f9>") #'joe/save-then-recompile)
;; (define-key rustic-mode-map (kbd "<f9>") #'joe/save-then-recompile)
(setq lsp-rust-analyzer-server-display-inlay-hints t) ;; (setq lsp-rust-analyzer-server-display-inlay-hints t)
(setq lsp-rust-analyzer-display-lifetime-elision-hints-enable "always") ;; (setq lsp-rust-analyzer-display-lifetime-elision-hints-enable "always")
(setq lsp-rust-analyzer-display-chaining-hints t) ;; (setq lsp-rust-analyzer-display-chaining-hints t)
(setq lsp-rust-analyzer-display-lifetime-elision-hints-use-parameter-names t) ;; (setq lsp-rust-analyzer-display-lifetime-elision-hints-use-parameter-names t)
(setq lsp-rust-analyzer-display-closure-return-type-hints t) ;; (setq lsp-rust-analyzer-display-closure-return-type-hints t)
(setq lsp-rust-analyzer-display-parameter-hints t) ;; (setq lsp-rust-analyzer-display-parameter-hints t)
(setq lsp-rust-analyzer-display-reborrow-hints t) ;; (setq lsp-rust-analyzer-display-reborrow-hints t)
(setq lsp-rust-analyzer-cargo-watch-command "clippy")) ;; (setq lsp-rust-analyzer-cargo-watch-command "clippy"))
#+end_src #+end_src
*** Elisp *** Elisp
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -2157,11 +2215,11 @@ and there's no need for a middle-man when it's already been implemented.
** Org Mode ** Org Mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'org-bullets) (require 'org-bullets)
(defun joe/org-init () (defun joe/org-init ()
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
(setq org-agenda-files '("~/todo.org")) (setq org-agenda-files '("~/Notes/Schedule.org"))
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
@ -2183,22 +2241,40 @@ and there's no need for a middle-man when it's already been implemented.
(add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("cc" . "src C :includes stdio.h stdlib.h")) (add-to-list 'org-structure-template-alist '("cc" . "src C :includes stdio.h stdlib.h"))
(setq org-edit-src-content-indentation 0)) (setq org-edit-src-content-indentation 0))
(with-eval-after-load 'org (joe/org-init)) (with-eval-after-load 'org (joe/org-init))
(setq org-blank-before-new-entry (setq org-blank-before-new-entry
'((heading . nil) '((heading . nil)
(plain-list-item . nil))) (plain-list-item . nil)))
(setq org-cycle-separator-lines 1) (setq org-cycle-separator-lines 1)
(setq org-hide-emphasis-markers t) (setq org-hide-emphasis-markers t)
(setq org-src-window-setup 'current-window) (setq org-src-window-setup 'current-window)
(defun joe/org-hook () (defun joe/org-hook ()
(local-set-key (kbd "C-. C-i") 'consult-org-heading) (local-set-key (kbd "C-. C-i") 'consult-org-heading)
(org-fancy-priorities-mode)
(olivetti-mode)
(org-bullets-mode) (org-bullets-mode)
(org-indent-mode)) (org-indent-mode))
(add-hook 'org-mode-hook 'joe/org-hook) (add-hook 'org-mode-hook 'joe/org-hook)
(require 'org-kanban) (require 'org-kanban)
(require 'org-fancy-priorities)
;; (setq org-fancy-priorities-list '("🅰" "🅱" "🅲" "🅳" "🅴"))
;; (setq org-fancy-priorities-list '("⚡" "⬆" "⬇"))
;; (setq org-fancy-priorities-list '("⚡" "⬆" "⬇"))
(setq org-fancy-priorities-list '((?D . "🌙") (?C . "🌇") (?B . "☀️") (?A . "🌄")))
(require 'org-roam)
(setq org-roam-directory "/home/joe/Notes/Roam/")
(setq org-roam-node-display-template (concat "${title:*} "
(propertize "${tags:10}" 'face 'org-tag)))
(org-roam-db-autosync-mode)
(define-key global-map (kbd "C-c n l") #'org-roam-buffer-toggle)
(define-key global-map (kbd "C-c n f") #'org-roam-node-find)
(define-key global-map (kbd "C-c n g") #'org-roam-graph)
(define-key global-map (kbd "C-c n i") #'org-roam-node-insert)
(define-key global-map (kbd "C-c n c") #'org-roam-capture)
(org-roam-setup)
#+end_src #+end_src
** Magit ** Magit

View File

@ -40,4 +40,4 @@ SETUVAR fish_pager_color_description:B3A06D\x1eyellow
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr SETUVAR fish_pager_color_selected_background:\x2dr
SETUVAR fish_user_paths:/home/joe/\x2elocal/share/bin/cargo/bin\x1e\x1e/home/joe/\x2elocal/bin SETUVAR fish_user_paths:/home/joe/\x2elocal/bin/elm\x1e/home/joe/\x2elocal/share/bin/cargo/bin\x1e\x1e/home/joe/\x2elocal/bin

23
.config/keyd/default.conf Normal file
View File

@ -0,0 +1,23 @@
[ids]
*
[global]
overload_tap_timeout = 250
[main]
esc = capslock
capslock = overload(control, esc)
rightalt = layer(rightalt)
rightcontrol = overload(hyper, rightcontrol)
leftcontrol = overload(hyper, leftcontrol)
[hyper:C-M-S-A]
[rightalt:G]
h = left
j = down
k = up
l = right