dev: merging from main
This commit is contained in:
commit
e14e30df50
20 changed files with 255 additions and 130 deletions
|
@ -250,8 +250,7 @@ tell you about it. Very annoying. This prevents that."
|
||||||
auto-mode-alist
|
auto-mode-alist
|
||||||
'(("/LICENSE\\'" . text-mode)
|
'(("/LICENSE\\'" . text-mode)
|
||||||
("\\.log\\'" . text-mode)
|
("\\.log\\'" . text-mode)
|
||||||
("rc\\'" . conf-mode)
|
("rc\\'" . conf-mode)))
|
||||||
("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode)))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -143,14 +143,8 @@
|
||||||
(setq selection-coding-system 'utf-8))
|
(setq selection-coding-system 'utf-8))
|
||||||
|
|
||||||
|
|
||||||
;;; Support for more file extensions
|
;;; Support for Doom-specific file extensions
|
||||||
;; Add support for additional file extensions.
|
(add-to-list 'auto-mode-alist '("/\\.doom\\(?:rc\\|project\\|module\\|profile\\)\\'" . emacs-lisp-mode))
|
||||||
(dolist (entry '(("/\\.doom\\(?:rc\\|project\\|module\\|profile\\)\\'" . emacs-lisp-mode)
|
|
||||||
("/LICENSE\\'" . text-mode)
|
|
||||||
("\\.log\\'" . text-mode)
|
|
||||||
("rc\\'" . conf-mode)
|
|
||||||
("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode)))
|
|
||||||
(push entry auto-mode-alist))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -484,17 +484,50 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation."
|
||||||
file))))
|
file))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom/sudo-find-file (file)
|
(defun doom/sudo-find-file (file &optional arg)
|
||||||
"Open FILE as root."
|
"Open FILE as root.
|
||||||
(interactive "FOpen file as root: ")
|
|
||||||
;; HACK: Disable auto-save in temporary tramp buffers because it could trigger
|
This will prompt you to save the current buffer, unless prefix ARG is given, in
|
||||||
;; processes that hang silently in the background, making those buffers
|
which case it will save it without prompting."
|
||||||
;; inoperable for the rest of that session (Tramp caches them).
|
(interactive
|
||||||
|
(list (read-file-name "Open file as root: ")
|
||||||
|
current-prefix-arg))
|
||||||
|
;; HACK: Teach `save-place' to treat the new "remote" buffer as if it were
|
||||||
|
;; visiting the same local file (because it is), and preserve the cursor
|
||||||
|
;; position as usual.
|
||||||
|
(letf! ((defun remote-local-name (path)
|
||||||
|
(if path (or (file-remote-p path 'localname) path)))
|
||||||
|
(defmacro with-local-name (&rest body)
|
||||||
|
`(when save-place-mode
|
||||||
|
(let ((buffer-file-name (remote-local-name buffer-file-name))
|
||||||
|
(default-directory (remote-local-name default-directory)))
|
||||||
|
,@body))))
|
||||||
|
(let ((window-start (window-start))
|
||||||
|
(buffer (current-buffer)))
|
||||||
|
(when (and buffer-file-name (file-equal-p buffer-file-name file))
|
||||||
|
(when (buffer-modified-p)
|
||||||
|
(save-some-buffers arg (lambda () (eq (current-buffer) buffer))))
|
||||||
|
(with-local-name (save-place-to-alist)))
|
||||||
|
(prog1
|
||||||
|
;; HACK: Disable auto-save in temporary tramp buffers because it could
|
||||||
|
;; trigger processes that hang silently in the background, making
|
||||||
|
;; those buffers inoperable for the rest of that session (Tramp
|
||||||
|
;; caches them).
|
||||||
(let ((auto-save-default nil)
|
(let ((auto-save-default nil)
|
||||||
;; REVIEW: use only these when we drop 28 support
|
;; REVIEW: use only these when we drop 28 support
|
||||||
(remote-file-name-inhibit-auto-save t)
|
(remote-file-name-inhibit-auto-save t)
|
||||||
(remote-file-name-inhibit-auto-save-visited t))
|
(remote-file-name-inhibit-auto-save-visited t)
|
||||||
(find-file (doom--sudo-file-path (expand-file-name file)))))
|
;; Prevent redundant work
|
||||||
|
save-place-mode)
|
||||||
|
(find-file (doom--sudo-file-path (expand-file-name file))))
|
||||||
|
;; Record of the cursor's old position if it isn't at BOB (indicating
|
||||||
|
;; this buffer was already open), in case the user wishes to go to it.
|
||||||
|
(unless (bobp)
|
||||||
|
(doom-set-jump-h)
|
||||||
|
;; save-place-find-file-hook requires point be a BOB to do its thang.
|
||||||
|
(goto-char (point-min)))
|
||||||
|
(with-local-name (save-place-find-file-hook))
|
||||||
|
(set-window-start nil window-start)))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun doom/sudo-this-file ()
|
(defun doom/sudo-this-file ()
|
||||||
|
@ -528,9 +561,17 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation."
|
||||||
(defun doom/remove-recent-file (file)
|
(defun doom/remove-recent-file (file)
|
||||||
"Remove FILE from your recently-opened-files list."
|
"Remove FILE from your recently-opened-files list."
|
||||||
(interactive
|
(interactive
|
||||||
(list (completing-read "Remove recent file: " recentf-list
|
(list (completing-read "Remove recent file: "
|
||||||
|
(lambda (string predicate action)
|
||||||
|
(if (eq action 'metadata)
|
||||||
|
'(metadata
|
||||||
|
(display-sort-function . identity)
|
||||||
|
(cycle-sort-function . identity)
|
||||||
|
(category . file))
|
||||||
|
(complete-with-action
|
||||||
|
action recentf-list string predicate)))
|
||||||
nil t)))
|
nil t)))
|
||||||
(setq recentf-list (delete file recentf-list))
|
(setq recentf-list (delete (recentf-expand-file-name file) recentf-list))
|
||||||
(recentf-save-list)
|
(recentf-save-list)
|
||||||
(message "Removed %S from `recentf-list'" (abbreviate-file-name file)))
|
(message "Removed %S from `recentf-list'" (abbreviate-file-name file)))
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,14 @@ To disable idle (as-you-type) completion, unset ~corfu-auto~:
|
||||||
(setq corfu-auto nil))
|
(setq corfu-auto nil))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Turning off auto-completion
|
||||||
|
To disable idle (as-you-type) completion, unset ~corfu-auto~:
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;;; in $DOOMDIR/config.el
|
||||||
|
(after! corfu
|
||||||
|
(setq corfu-auto nil))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Adding CAPFs to a mode
|
** Adding CAPFs to a mode
|
||||||
To add other CAPFs on a mode-per-mode basis, put either of the following in your
|
To add other CAPFs on a mode-per-mode basis, put either of the following in your
|
||||||
~config.el~:
|
~config.el~:
|
||||||
|
|
|
@ -40,7 +40,8 @@ TAB/S-TAB.")
|
||||||
('aggressive
|
('aggressive
|
||||||
(not (or (bound-and-true-p mct--active)
|
(not (or (bound-and-true-p mct--active)
|
||||||
(bound-and-true-p vertico--input)
|
(bound-and-true-p vertico--input)
|
||||||
(eq (current-local-map) read-passwd-map)
|
(and (featurep 'auth-source)
|
||||||
|
(eq (current-local-map) read-passwd-map))
|
||||||
(and (featurep 'helm-core) (helm--alive-p))
|
(and (featurep 'helm-core) (helm--alive-p))
|
||||||
(and (featurep 'ido) (ido-active))
|
(and (featurep 'ido) (ido-active))
|
||||||
(where-is-internal 'minibuffer-complete
|
(where-is-internal 'minibuffer-complete
|
||||||
|
@ -114,10 +115,10 @@ TAB/S-TAB.")
|
||||||
(use-package! cape
|
(use-package! cape
|
||||||
:defer t
|
:defer t
|
||||||
:init
|
:init
|
||||||
(add-hook! prog-mode
|
(add-hook! 'prog-mode-hook
|
||||||
(defun +corfu-add-cape-file-h ()
|
(defun +corfu-add-cape-file-h ()
|
||||||
(add-hook 'completion-at-point-functions #'cape-file -10 t)))
|
(add-hook 'completion-at-point-functions #'cape-file -10 t)))
|
||||||
(add-hook! (org-mode markdown-mode)
|
(add-hook! '(org-mode-hook markdown-mode-hook)
|
||||||
(defun +corfu-add-cape-elisp-block-h ()
|
(defun +corfu-add-cape-elisp-block-h ()
|
||||||
(add-hook 'completion-at-point-functions #'cape-elisp-block 0 t)))
|
(add-hook 'completion-at-point-functions #'cape-elisp-block 0 t)))
|
||||||
;; Enable Dabbrev completion basically everywhere as a fallback.
|
;; Enable Dabbrev completion basically everywhere as a fallback.
|
||||||
|
@ -126,8 +127,12 @@ TAB/S-TAB.")
|
||||||
;; Set up `cape-dabbrev' options.
|
;; Set up `cape-dabbrev' options.
|
||||||
(defun +dabbrev-friend-buffer-p (other-buffer)
|
(defun +dabbrev-friend-buffer-p (other-buffer)
|
||||||
(< (buffer-size other-buffer) +corfu-buffer-scanning-size-limit))
|
(< (buffer-size other-buffer) +corfu-buffer-scanning-size-limit))
|
||||||
(add-hook! (prog-mode text-mode conf-mode comint-mode minibuffer-setup
|
(add-hook! '(prog-mode-hook
|
||||||
eshell-mode)
|
text-mode-hook
|
||||||
|
conf-mode-hook
|
||||||
|
comint-mode-hook
|
||||||
|
minibuffer-setup-hook
|
||||||
|
eshell-mode-hook)
|
||||||
(defun +corfu-add-cape-dabbrev-h ()
|
(defun +corfu-add-cape-dabbrev-h ()
|
||||||
(add-hook 'completion-at-point-functions #'cape-dabbrev 20 t)))
|
(add-hook 'completion-at-point-functions #'cape-dabbrev 20 t)))
|
||||||
(after! dabbrev
|
(after! dabbrev
|
||||||
|
|
|
@ -161,13 +161,16 @@ orderless."
|
||||||
(consult-customize
|
(consult-customize
|
||||||
consult-ripgrep consult-git-grep consult-grep
|
consult-ripgrep consult-git-grep consult-grep
|
||||||
consult-bookmark consult-recent-file
|
consult-bookmark consult-recent-file
|
||||||
|
consult--source-recent-file consult--source-project-recent-file consult--source-bookmark
|
||||||
|
:preview-key "C-SPC")
|
||||||
|
(when (modulep! :config default)
|
||||||
|
(consult-customize
|
||||||
+default/search-project +default/search-other-project
|
+default/search-project +default/search-other-project
|
||||||
+default/search-project-for-symbol-at-point
|
+default/search-project-for-symbol-at-point
|
||||||
+default/search-cwd +default/search-other-cwd
|
+default/search-cwd +default/search-other-cwd
|
||||||
+default/search-notes-for-symbol-at-point
|
+default/search-notes-for-symbol-at-point
|
||||||
+default/search-emacsd
|
+default/search-emacsd
|
||||||
consult--source-recent-file consult--source-project-recent-file consult--source-bookmark
|
:preview-key "C-SPC"))
|
||||||
:preview-key "C-SPC")
|
|
||||||
(consult-customize
|
(consult-customize
|
||||||
consult-theme
|
consult-theme
|
||||||
:preview-key (list "C-SPC" :debounce 0.5 'any))
|
:preview-key (list "C-SPC" :debounce 0.5 'any))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; editor/evil/packages.el
|
;;; editor/evil/packages.el
|
||||||
|
|
||||||
(package! evil :pin "88d073c9d03ca223564e7e8589f44ecc87c98153")
|
(package! evil :pin "0251080640e0da6f0eec2b7d8dd70e9c9b9915d7")
|
||||||
(package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7")
|
(package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7")
|
||||||
(package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9")
|
(package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9")
|
||||||
(package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d")
|
(package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d")
|
||||||
|
@ -35,4 +35,4 @@
|
||||||
(package! neotree)
|
(package! neotree)
|
||||||
(autoload 'neotree-make-executor "neotree" nil nil 'macro))
|
(autoload 'neotree-make-executor "neotree" nil nil 'macro))
|
||||||
|
|
||||||
(package! evil-collection :pin "e0982fcbb6f1694b27074565553fac0e736a30b4"))
|
(package! evil-collection :pin "ca977acb83c0dd01fc57dbc6f3d3111e89f4ec9d"))
|
||||||
|
|
|
@ -28,10 +28,13 @@
|
||||||
"k" #'log-view-msg-prev))
|
"k" #'log-view-msg-prev))
|
||||||
|
|
||||||
|
|
||||||
(after! vc-annotate
|
(after! vc
|
||||||
(set-popup-rules!
|
(set-popup-rules!
|
||||||
'(("^\\*vc-diff" :select nil) ; *vc-diff*
|
'(("^\\*vc-diff" :select nil :size '+popup-shrink-to-fit)
|
||||||
("^\\*vc-change" :select t))) ; *vc-change-log*
|
("^\\*vc-change-log" :select t))))
|
||||||
|
|
||||||
|
|
||||||
|
(after! vc-annotate
|
||||||
(set-evil-initial-state! 'vc-annotate-mode 'normal)
|
(set-evil-initial-state! 'vc-annotate-mode 'normal)
|
||||||
|
|
||||||
;; Clean up after itself
|
;; Clean up after itself
|
||||||
|
|
|
@ -33,8 +33,11 @@ default/fallback account."
|
||||||
:enter-func
|
:enter-func
|
||||||
(lambda () (mu4e-message "Switched to %s" label))
|
(lambda () (mu4e-message "Switched to %s" label))
|
||||||
:leave-func
|
:leave-func
|
||||||
(lambda () (progn (setq +mu4e-personal-addresses nil)
|
(lambda ()
|
||||||
(mu4e-clear-caches)))
|
(setq +mu4e-personal-addresses nil)
|
||||||
|
;; REVIEW: `mu4e-clear-caches' was removed in 1.12.2, but
|
||||||
|
;; may still be useful to users on older versions.
|
||||||
|
(if (fboundp 'mu4e-clear-caches) (mu4e-clear-caches)))
|
||||||
:match-func
|
:match-func
|
||||||
(lambda (msg)
|
(lambda (msg)
|
||||||
(when msg
|
(when msg
|
||||||
|
|
8
modules/lang/factor/autoload.el
Normal file
8
modules/lang/factor/autoload.el
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
;;; lang/factor/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +factor/open-repl ()
|
||||||
|
"Open the Factor Listener."
|
||||||
|
(interactive)
|
||||||
|
(call-interactively #'run-factor)
|
||||||
|
(current-buffer))
|
|
@ -5,27 +5,15 @@
|
||||||
:init
|
:init
|
||||||
(after! factor-mode
|
(after! factor-mode
|
||||||
(set-eval-handler! 'factor-mode #'fuel-eval-region)
|
(set-eval-handler! 'factor-mode #'fuel-eval-region)
|
||||||
(set-repl-handler! 'factor-mode #'run-factor))
|
(set-repl-handler! 'factor-mode #'+factor/open-repl
|
||||||
:config
|
:persist t
|
||||||
|
:send-region #'fuel-eval-region
|
||||||
|
:send-buffer #'fuel-run-file)
|
||||||
(set-lookup-handlers! 'factor-mode
|
(set-lookup-handlers! 'factor-mode
|
||||||
:definition #'fuel-edit-word-at-point
|
:definition #'fuel-edit-word-at-point
|
||||||
:references #'fuel-show-callers
|
:references #'fuel-show-callers
|
||||||
:documentation #'fuel-help))
|
:documentation #'fuel-help)
|
||||||
|
(map! :map factor-mode-map
|
||||||
(map! :after fuel-help
|
|
||||||
:map fuel-help-mode-map
|
|
||||||
:localleader
|
|
||||||
"e" #'fuel-help-edit
|
|
||||||
"d" #'fuel-help-delete-bookmark
|
|
||||||
"B" #'fuel-help-display-bookmarks
|
|
||||||
"n" #'fuel-help-next
|
|
||||||
"d" #'fuel-help-kill-page
|
|
||||||
"p" #'fuel-help-previous
|
|
||||||
"b" #'fuel-help-bookmark-page
|
|
||||||
"e" #'fuel-help-edit)
|
|
||||||
|
|
||||||
(map! :after factor-mode
|
|
||||||
:map factor-mode-map
|
|
||||||
:localleader
|
:localleader
|
||||||
"t" #'fuel-test-vocab
|
"t" #'fuel-test-vocab
|
||||||
"F" #'fuel-run-file
|
"F" #'fuel-run-file
|
||||||
|
@ -62,9 +50,26 @@
|
||||||
"i" #'fuel-refactor-inline-word
|
"i" #'fuel-refactor-inline-word
|
||||||
"g" #'fuel-refactor-make-generic
|
"g" #'fuel-refactor-make-generic
|
||||||
"u" #'fuel-update-usings
|
"u" #'fuel-update-usings
|
||||||
"r" #'fuel-refactor-rename-word))
|
"r" #'fuel-refactor-rename-word)))
|
||||||
|
:config
|
||||||
|
(set-popup-rules!
|
||||||
|
'(("^\\*fuel \\(debug\\|xref\\|messages\\)\\*$" :slot 1 :vslot -1)
|
||||||
|
("^\\*fuel help\\*$" :slot 2 :vslot 2 :select t :size 0.35)
|
||||||
|
("^\\*fuel listener\\*$" :size 0.3 :quit nil :ttl nil)))
|
||||||
|
|
||||||
(map! :after fuel-listener
|
(map! :after fuel-help
|
||||||
|
:map fuel-help-mode-map
|
||||||
|
:localleader
|
||||||
|
"e" #'fuel-help-edit
|
||||||
|
"d" #'fuel-help-delete-bookmark
|
||||||
|
"B" #'fuel-help-display-bookmarks
|
||||||
|
"n" #'fuel-help-next
|
||||||
|
"d" #'fuel-help-kill-page
|
||||||
|
"p" #'fuel-help-previous
|
||||||
|
"b" #'fuel-help-bookmark-page
|
||||||
|
"e" #'fuel-help-edit)
|
||||||
|
|
||||||
|
(map! :after fuel-listener
|
||||||
:map fuel-listener-mode-map
|
:map fuel-listener-mode-map
|
||||||
:localleader
|
:localleader
|
||||||
"b" #'fuel-switch-to-buffer
|
"b" #'fuel-switch-to-buffer
|
||||||
|
@ -74,4 +79,5 @@
|
||||||
"r" #'fuel-refresh-all
|
"r" #'fuel-refresh-all
|
||||||
"i" #'fuel-stack-mode
|
"i" #'fuel-stack-mode
|
||||||
"h" #'fuel-help
|
"h" #'fuel-help
|
||||||
"s" #'fuel-scaffold-vocab)
|
"s" #'fuel-scaffold-vocab))
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; lang/factor/packages.el
|
;;; lang/factor/packages.el
|
||||||
|
|
||||||
(package! fuel :pin "23fcfc70753abbbdc0e86af06330d63da6e4ea64")
|
(package! fuel :pin "12fc9d5071e46cac7b558204db5f4f09ea56e9c7")
|
||||||
|
|
|
@ -20,22 +20,23 @@ This module adds support for [[https://julialang.org/][the Julia language]] to D
|
||||||
- +tree-sitter ::
|
- +tree-sitter ::
|
||||||
Leverages tree-sitter for better syntax highlighting and structural text
|
Leverages tree-sitter for better syntax highlighting and structural text
|
||||||
editing. Requires [[doom-module::tools tree-sitter]].
|
editing. Requires [[doom-module::tools tree-sitter]].
|
||||||
- +snail :: Use Snail, a development environment and REPL interaction package
|
- +snail ::
|
||||||
for Julia in the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables
|
Use Snail, a development environment and REPL interaction package for Julia in
|
||||||
convenient and dynamic REPL-driven development.
|
the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables convenient
|
||||||
|
and dynamic REPL-driven development.
|
||||||
|
|
||||||
** Packages
|
** Packages
|
||||||
- [[doom-package:julia-mode]]
|
- [[doom-package:julia-mode]]
|
||||||
- [[doom-package:julia-repl]]
|
- [[doom-package:julia-repl]]
|
||||||
- if [[doom-package:+lsp]]
|
- if [[doom-module:+lsp]]
|
||||||
- if [[doom-module::tools lsp]]
|
- if [[doom-module::tools lsp]]
|
||||||
- [[doom-package:lsp-julia]]
|
- [[doom-package:lsp-julia]]
|
||||||
- [[doom-package:lsp]]
|
- [[doom-package:lsp]]
|
||||||
- if [[doom-module::tools lsp +eglot]]
|
- if [[doom-module::tools lsp +eglot]]
|
||||||
- [[doom-package:eglot-jl]]
|
- [[doom-package:eglot-jl]]
|
||||||
- [[doom-package:eglot]]
|
- [[doom-package:eglot]]
|
||||||
- if [[doom-package:][+snail]]
|
- if [[doom-module:+snail]]
|
||||||
- [[doom-package:][julia-snail]]
|
- [[doom-package:julia-snail]]
|
||||||
|
|
||||||
** Hacks
|
** Hacks
|
||||||
/No hacks documented for this module./
|
/No hacks documented for this module./
|
||||||
|
@ -63,8 +64,8 @@ Pkg.add("LanguageServer")
|
||||||
Pkg.add("SymbolServer")
|
Pkg.add("SymbolServer")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled
|
Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled [[doom-module::tools
|
||||||
[[doom-module::tools lsp]] or [[doom-module::tools lsp +eglot]], respectively:
|
lsp]] or [[doom-module::tools lsp +eglot]], respectively:
|
||||||
|
|
||||||
*** =lsp-julia=
|
*** =lsp-julia=
|
||||||
To instruct [[doom-package:lsp-julia]] not to use the built-in package:
|
To instruct [[doom-package:lsp-julia]] not to use the built-in package:
|
||||||
|
|
|
@ -53,7 +53,8 @@
|
||||||
:hook (+julia-repl-start . +julia-override-repl-escape-char-h)
|
:hook (+julia-repl-start . +julia-override-repl-escape-char-h)
|
||||||
:hook (+julia-repl-start . julia-repl-use-emacsclient)
|
:hook (+julia-repl-start . julia-repl-use-emacsclient)
|
||||||
:config
|
:config
|
||||||
(set-popup-rule! "^\\*julia.*\\*$" :ttl nil)
|
(unless (modulep! +snail)
|
||||||
|
(set-popup-rule! "^\\*julia.*\\*$" :ttl nil))
|
||||||
|
|
||||||
(when (modulep! :ui workspaces)
|
(when (modulep! :ui workspaces)
|
||||||
(defadvice! +julia--namespace-repl-buffer-to-workspace-a (&optional executable-key suffix)
|
(defadvice! +julia--namespace-repl-buffer-to-workspace-a (&optional executable-key suffix)
|
||||||
|
|
|
@ -48,7 +48,36 @@
|
||||||
(if (modulep! :tools lsp +eglot)
|
(if (modulep! :tools lsp +eglot)
|
||||||
'eglot
|
'eglot
|
||||||
'lsp-mode))
|
'lsp-mode))
|
||||||
(add-hook 'rustic-mode-local-vars-hook #'rustic-setup-lsp 'append))
|
(add-hook 'rustic-mode-local-vars-hook #'rustic-setup-lsp 'append)
|
||||||
|
|
||||||
|
;; HACK: Add @scturtle fix for signatures on hover on LSP mode. This code
|
||||||
|
;; has not been upstreamed because it depends on the exact format of the
|
||||||
|
;; response of Rust Analyzer, which is not stable enough for `lsp-mode'
|
||||||
|
;; maintainers (see emacs-lsp/lsp-mode#1740).
|
||||||
|
(unless (modulep! :tools lsp +eglot)
|
||||||
|
(defadvice! +rust--dont-cache-results-from-ra-a (fn &rest args)
|
||||||
|
:after #'lsp-eldoc-function
|
||||||
|
(when (derived-mode-p 'rust-mode 'rust-ts-mode)
|
||||||
|
(setq lsp--hover-saved-bounds nil)))
|
||||||
|
|
||||||
|
;; extract and show short signature for rust-analyzer
|
||||||
|
(cl-defmethod lsp-clients-extract-signature-on-hover (contents (_server-id (eql rust-analyzer)))
|
||||||
|
(let* ((value (if lsp-use-plists (plist-get contents :value) (gethash "value" contents)))
|
||||||
|
(groups (--partition-by (s-blank? it) (s-lines (s-trim value))))
|
||||||
|
(mod-group (cond ((s-equals? "```rust" (car (-fifth-item groups))) (-third-item groups))
|
||||||
|
((s-equals? "```rust" (car (-third-item groups))) (-first-item groups))
|
||||||
|
(t nil)))
|
||||||
|
(cmt (if (null mod-group) "" (concat " // " (cadr mod-group))))
|
||||||
|
(sig-group (cond ((s-equals? "```rust" (car (-fifth-item groups))) (-fifth-item groups))
|
||||||
|
((s-equals? "```rust" (car (-third-item groups))) (-third-item groups))
|
||||||
|
(t (-first-item groups))))
|
||||||
|
(sig (->> sig-group
|
||||||
|
(--drop-while (s-equals? "```rust" it))
|
||||||
|
(--take-while (not (s-equals? "```" it)))
|
||||||
|
(--map (s-replace-regexp "//.*" "" it))
|
||||||
|
(--map (s-trim it))
|
||||||
|
(s-join " "))))
|
||||||
|
(lsp--render-element (concat "```rust\n" sig cmt "\n```"))))))
|
||||||
|
|
||||||
(when (modulep! +tree-sitter)
|
(when (modulep! +tree-sitter)
|
||||||
(add-hook 'rustic-mode-local-vars-hook #'tree-sitter! 'append))
|
(add-hook 'rustic-mode-local-vars-hook #'tree-sitter! 'append))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; lang/scala/packages.el
|
;;; lang/scala/packages.el
|
||||||
|
|
||||||
(package! sbt-mode :pin "bcf8d6040021013430b39d6f6766ce1aab0b691a")
|
(package! sbt-mode :pin "cc68728a6ef0600aad369157b3a2d0ce56afba9b")
|
||||||
(package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4")
|
(package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4")
|
||||||
|
|
||||||
(when (and (modulep! +lsp)
|
(when (and (modulep! +lsp)
|
||||||
|
|
|
@ -50,7 +50,9 @@
|
||||||
|
|
||||||
(defun +eval-repl-known-repls ()
|
(defun +eval-repl-known-repls ()
|
||||||
"Yield the available repl functions as a list of symbols."
|
"Yield the available repl functions as a list of symbols."
|
||||||
(seq-uniq (mapcar (pcase-lambda (`(,mode ,fn . _)) (list mode fn)) +eval-repls)))
|
(cl-delete-duplicates
|
||||||
|
(mapcar (lambda! ((mode fn &rest _)) (list mode fn))
|
||||||
|
+eval-repls)))
|
||||||
|
|
||||||
(defun +doom-pretty-mode-name (mode)
|
(defun +doom-pretty-mode-name (mode)
|
||||||
"Convert a mode name into a variant nicer for human eyes."
|
"Convert a mode name into a variant nicer for human eyes."
|
||||||
|
@ -82,15 +84,15 @@ human-readable variant of its associated major mode name."
|
||||||
|
|
||||||
(defun +eval-repl-prompt ()
|
(defun +eval-repl-prompt ()
|
||||||
"Prompt the user for the choice of a repl to open."
|
"Prompt the user for the choice of a repl to open."
|
||||||
(let* ((knowns (mapcar (pcase-lambda (`(,mode ,fn)) (list (+doom-pretty-mode-name mode) fn))
|
(let* ((knowns (mapcar (lambda! ((mode fn)) (list (+doom-pretty-mode-name mode) fn))
|
||||||
(+eval-repl-known-repls)))
|
(+eval-repl-known-repls)))
|
||||||
(founds (mapcar (lambda (fn) (list (+eval-pretty-mode-name-from-fn fn) fn))
|
(founds (mapcar (lambda (fn) (list (+eval-pretty-mode-name-from-fn fn) fn))
|
||||||
(+eval-repl-found-repls)))
|
(+eval-repl-found-repls)))
|
||||||
(repls (seq-uniq (append knowns founds)))
|
(repls (cl-delete-duplicates (append knowns founds)))
|
||||||
(names (mapcar #'cl-first repls))
|
(names (mapcar #'car repls))
|
||||||
(choice (or (completing-read "Open a REPL for: " names)
|
(choice (or (completing-read "Open a REPL for: " names)
|
||||||
(user-error "Aborting"))))
|
(user-error "Aborting"))))
|
||||||
(cl-second (assoc choice repls))))
|
(cadr (assoc choice repls))))
|
||||||
|
|
||||||
(defun +eval-repl-from-major-mode ()
|
(defun +eval-repl-from-major-mode ()
|
||||||
"Fetch the repl associated with the current major mode, if there
|
"Fetch the repl associated with the current major mode, if there
|
||||||
|
@ -103,8 +105,7 @@ is one."
|
||||||
prompted for a repl choice, even if the major mode they're in
|
prompted for a repl choice, even if the major mode they're in
|
||||||
already has a known one."
|
already has a known one."
|
||||||
(pcase-let* ((`(,fn ,plist) (+eval-repl-from-major-mode))
|
(pcase-let* ((`(,fn ,plist) (+eval-repl-from-major-mode))
|
||||||
(fn (cond ((or prompt-p (not fn)) (+eval-repl-prompt))
|
(fn (if (or prompt-p (not fn)) (+eval-repl-prompt) fn))
|
||||||
(t fn)))
|
|
||||||
(region (when (use-region-p)
|
(region (when (use-region-p)
|
||||||
(buffer-substring-no-properties (region-beginning)
|
(buffer-substring-no-properties (region-beginning)
|
||||||
(region-end)))))
|
(region-end)))))
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; tools/pdf/packages.el
|
;;; tools/pdf/packages.el
|
||||||
|
|
||||||
(package! pdf-tools :pin "93e74924517d39483b432d6c3c9b8f8b8f0eb50c")
|
(package! pdf-tools :pin "a1048bceb2bd3f635437b0f2bfac27cae8c2dabc")
|
||||||
(package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216")
|
(package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216")
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
;;; ui/tabs/config.el -*- lexical-binding: t; -*-
|
;;; ui/tabs/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(defcustom +tabs-buffer-update-groups-delay 0.1
|
||||||
|
"Minimum wait time (in seconds) before tab groups are recalculated."
|
||||||
|
:type 'float
|
||||||
|
:group 'doom)
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Packages
|
||||||
|
|
||||||
(use-package! centaur-tabs
|
(use-package! centaur-tabs
|
||||||
:hook (doom-first-file . centaur-tabs-mode)
|
:hook (doom-first-file . centaur-tabs-mode)
|
||||||
:init
|
:init
|
||||||
|
@ -20,7 +29,20 @@
|
||||||
(defun +tabs-disable-centaur-tabs-mode-maybe-h ()
|
(defun +tabs-disable-centaur-tabs-mode-maybe-h ()
|
||||||
"Disable `centaur-tabs-mode' in current buffer."
|
"Disable `centaur-tabs-mode' in current buffer."
|
||||||
(when (centaur-tabs-mode-on-p)
|
(when (centaur-tabs-mode-on-p)
|
||||||
(centaur-tabs-local-mode)))))
|
(centaur-tabs-local-mode))))
|
||||||
|
|
||||||
|
;; HACK: `centaur-tabs-buffer-update-groups' is both expensive and called too
|
||||||
|
;; frequently. There really is no reason to call it more than 10 times per
|
||||||
|
;; second, as buffers rarely change groups more frequently than that.
|
||||||
|
(let ((time (float-time)))
|
||||||
|
(defadvice! +tabs--rate-limit-buffer-update-groups-a (fn)
|
||||||
|
:around #'centaur-tabs-buffer-update-groups
|
||||||
|
(let ((now (float-time)))
|
||||||
|
(if-let ((buf (and (< now (+ time +tabs-buffer-update-groups-delay))
|
||||||
|
(assq (current-buffer) centaur-tabs--buffers))))
|
||||||
|
(car (nth 2 buf))
|
||||||
|
(setq time now)
|
||||||
|
(funcall fn))))))
|
||||||
|
|
||||||
|
|
||||||
;; TODO tab-bar-mode (emacs 27)
|
;; TODO tab-bar-mode (emacs 27)
|
||||||
|
|
|
@ -84,9 +84,10 @@ stored in `persp-save-dir'.")
|
||||||
;; HACK Fix #319: the warnings buffer gets swallowed when creating
|
;; HACK Fix #319: the warnings buffer gets swallowed when creating
|
||||||
;; `+workspaces-main', so display it ourselves, if it exists.
|
;; `+workspaces-main', so display it ourselves, if it exists.
|
||||||
(when-let (warnings (get-buffer "*Warnings*"))
|
(when-let (warnings (get-buffer "*Warnings*"))
|
||||||
|
(unless (get-buffer-window warnings)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(display-buffer-in-side-window
|
(display-buffer-in-side-window
|
||||||
warnings '((window-height . shrink-window-if-larger-than-buffer))))))))
|
warnings '((window-height . shrink-window-if-larger-than-buffer)))))))))
|
||||||
(defun +workspaces-init-persp-mode-h ()
|
(defun +workspaces-init-persp-mode-h ()
|
||||||
(cond (persp-mode
|
(cond (persp-mode
|
||||||
;; `uniquify' breaks persp-mode. It renames old buffers, which causes
|
;; `uniquify' breaks persp-mode. It renames old buffers, which causes
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue