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
|
||||
'(("/LICENSE\\'" . text-mode)
|
||||
("\\.log\\'" . text-mode)
|
||||
("rc\\'" . conf-mode)
|
||||
("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode)))
|
||||
("rc\\'" . conf-mode)))
|
||||
|
||||
|
||||
;;
|
||||
|
|
|
@ -143,14 +143,8 @@
|
|||
(setq selection-coding-system 'utf-8))
|
||||
|
||||
|
||||
;;; Support for more file extensions
|
||||
;; Add support for additional file extensions.
|
||||
(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))
|
||||
;;; Support for Doom-specific file extensions
|
||||
(add-to-list 'auto-mode-alist '("/\\.doom\\(?:rc\\|project\\|module\\|profile\\)\\'" . emacs-lisp-mode))
|
||||
|
||||
|
||||
;;
|
||||
|
|
|
@ -484,17 +484,50 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation."
|
|||
file))))
|
||||
|
||||
;;;###autoload
|
||||
(defun doom/sudo-find-file (file)
|
||||
"Open FILE as root."
|
||||
(interactive "FOpen file as root: ")
|
||||
;; 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)
|
||||
;; REVIEW: use only these when we drop 28 support
|
||||
(remote-file-name-inhibit-auto-save t)
|
||||
(remote-file-name-inhibit-auto-save-visited t))
|
||||
(find-file (doom--sudo-file-path (expand-file-name file)))))
|
||||
(defun doom/sudo-find-file (file &optional arg)
|
||||
"Open FILE as root.
|
||||
|
||||
This will prompt you to save the current buffer, unless prefix ARG is given, in
|
||||
which case it will save it without prompting."
|
||||
(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)
|
||||
;; REVIEW: use only these when we drop 28 support
|
||||
(remote-file-name-inhibit-auto-save t)
|
||||
(remote-file-name-inhibit-auto-save-visited t)
|
||||
;; 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
|
||||
(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)
|
||||
"Remove FILE from your recently-opened-files list."
|
||||
(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)))
|
||||
(setq recentf-list (delete file recentf-list))
|
||||
(setq recentf-list (delete (recentf-expand-file-name file) recentf-list))
|
||||
(recentf-save-list)
|
||||
(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))
|
||||
#+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
|
||||
To add other CAPFs on a mode-per-mode basis, put either of the following in your
|
||||
~config.el~:
|
||||
|
|
|
@ -40,7 +40,8 @@ TAB/S-TAB.")
|
|||
('aggressive
|
||||
(not (or (bound-and-true-p mct--active)
|
||||
(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 'ido) (ido-active))
|
||||
(where-is-internal 'minibuffer-complete
|
||||
|
@ -114,10 +115,10 @@ TAB/S-TAB.")
|
|||
(use-package! cape
|
||||
:defer t
|
||||
:init
|
||||
(add-hook! prog-mode
|
||||
(add-hook! 'prog-mode-hook
|
||||
(defun +corfu-add-cape-file-h ()
|
||||
(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 ()
|
||||
(add-hook 'completion-at-point-functions #'cape-elisp-block 0 t)))
|
||||
;; Enable Dabbrev completion basically everywhere as a fallback.
|
||||
|
@ -126,8 +127,12 @@ TAB/S-TAB.")
|
|||
;; Set up `cape-dabbrev' options.
|
||||
(defun +dabbrev-friend-buffer-p (other-buffer)
|
||||
(< (buffer-size other-buffer) +corfu-buffer-scanning-size-limit))
|
||||
(add-hook! (prog-mode text-mode conf-mode comint-mode minibuffer-setup
|
||||
eshell-mode)
|
||||
(add-hook! '(prog-mode-hook
|
||||
text-mode-hook
|
||||
conf-mode-hook
|
||||
comint-mode-hook
|
||||
minibuffer-setup-hook
|
||||
eshell-mode-hook)
|
||||
(defun +corfu-add-cape-dabbrev-h ()
|
||||
(add-hook 'completion-at-point-functions #'cape-dabbrev 20 t)))
|
||||
(after! dabbrev
|
||||
|
|
|
@ -161,13 +161,16 @@ orderless."
|
|||
(consult-customize
|
||||
consult-ripgrep consult-git-grep consult-grep
|
||||
consult-bookmark consult-recent-file
|
||||
+default/search-project +default/search-other-project
|
||||
+default/search-project-for-symbol-at-point
|
||||
+default/search-cwd +default/search-other-cwd
|
||||
+default/search-notes-for-symbol-at-point
|
||||
+default/search-emacsd
|
||||
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-for-symbol-at-point
|
||||
+default/search-cwd +default/search-other-cwd
|
||||
+default/search-notes-for-symbol-at-point
|
||||
+default/search-emacsd
|
||||
:preview-key "C-SPC"))
|
||||
(consult-customize
|
||||
consult-theme
|
||||
:preview-key (list "C-SPC" :debounce 0.5 'any))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; editor/evil/packages.el
|
||||
|
||||
(package! evil :pin "88d073c9d03ca223564e7e8589f44ecc87c98153")
|
||||
(package! evil :pin "0251080640e0da6f0eec2b7d8dd70e9c9b9915d7")
|
||||
(package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7")
|
||||
(package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9")
|
||||
(package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d")
|
||||
|
@ -35,4 +35,4 @@
|
|||
(package! neotree)
|
||||
(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))
|
||||
|
||||
|
||||
(after! vc-annotate
|
||||
(after! vc
|
||||
(set-popup-rules!
|
||||
'(("^\\*vc-diff" :select nil) ; *vc-diff*
|
||||
("^\\*vc-change" :select t))) ; *vc-change-log*
|
||||
'(("^\\*vc-diff" :select nil :size '+popup-shrink-to-fit)
|
||||
("^\\*vc-change-log" :select t))))
|
||||
|
||||
|
||||
(after! vc-annotate
|
||||
(set-evil-initial-state! 'vc-annotate-mode 'normal)
|
||||
|
||||
;; Clean up after itself
|
||||
|
|
|
@ -33,8 +33,11 @@ default/fallback account."
|
|||
:enter-func
|
||||
(lambda () (mu4e-message "Switched to %s" label))
|
||||
:leave-func
|
||||
(lambda () (progn (setq +mu4e-personal-addresses nil)
|
||||
(mu4e-clear-caches)))
|
||||
(lambda ()
|
||||
(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
|
||||
(lambda (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,73 +5,79 @@
|
|||
:init
|
||||
(after! factor-mode
|
||||
(set-eval-handler! 'factor-mode #'fuel-eval-region)
|
||||
(set-repl-handler! 'factor-mode #'run-factor))
|
||||
(set-repl-handler! 'factor-mode #'+factor/open-repl
|
||||
:persist t
|
||||
:send-region #'fuel-eval-region
|
||||
:send-buffer #'fuel-run-file)
|
||||
(set-lookup-handlers! 'factor-mode
|
||||
:definition #'fuel-edit-word-at-point
|
||||
:references #'fuel-show-callers
|
||||
:documentation #'fuel-help)
|
||||
(map! :map factor-mode-map
|
||||
:localleader
|
||||
"t" #'fuel-test-vocab
|
||||
"F" #'fuel-run-file
|
||||
"f" #'run-factor
|
||||
"a" #'fuel-refresh-all
|
||||
"L" #'fuel-load-usings
|
||||
"u" #'fuel-vocab-usage
|
||||
"U" #'fuel-vocab-uses
|
||||
(:prefix ("c" . "change")
|
||||
"w" #'fuel-edit-word-at-point
|
||||
"d" #'fuel-edit-word-doc-at-point
|
||||
"v" #'fuel-edit-vocabulary)
|
||||
(:prefix ("e" . "eval")
|
||||
"d" #'fuel-eval-definition
|
||||
"R" #'fuel-eval-extended-region
|
||||
"r" #'fuel-eval-region)
|
||||
(:prefix ("h" . "help")
|
||||
"p" #'fuel-apropos
|
||||
"h" #'fuel-help
|
||||
"b" #'fuel-help-display-bookmarks
|
||||
"v" #'fuel-help-vocab
|
||||
"w" #'fuel-show-file-words
|
||||
"c" #'fuel-show-callees
|
||||
"e" #'fuel-stack-effect-region
|
||||
"s" #'fuel-stack-effect-sexp)
|
||||
(:prefix ("s" . "scaffold")
|
||||
"v" #'fuel-scaffold-vocab
|
||||
"h" #'fuel-scaffold-help
|
||||
"t" #'fuel-scaffold-tests)
|
||||
(:prefix ("r" . "refactor")
|
||||
"s" #'fuel-refactor-extract-sexp
|
||||
"w" #'fuel-refactor-extract-region
|
||||
"v" #'fuel-refactor-extract-vocab
|
||||
"i" #'fuel-refactor-inline-word
|
||||
"g" #'fuel-refactor-make-generic
|
||||
"u" #'fuel-update-usings
|
||||
"r" #'fuel-refactor-rename-word)))
|
||||
:config
|
||||
(set-lookup-handlers! 'factor-mode
|
||||
:definition #'fuel-edit-word-at-point
|
||||
:references #'fuel-show-callers
|
||||
:documentation #'fuel-help))
|
||||
(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-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-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
|
||||
"t" #'fuel-test-vocab
|
||||
"F" #'fuel-run-file
|
||||
"f" #'run-factor
|
||||
"a" #'fuel-refresh-all
|
||||
"L" #'fuel-load-usings
|
||||
"u" #'fuel-vocab-usage
|
||||
"U" #'fuel-vocab-uses
|
||||
(:prefix ("c" . "change")
|
||||
"w" #'fuel-edit-word-at-point
|
||||
"d" #'fuel-edit-word-doc-at-point
|
||||
"v" #'fuel-edit-vocabulary)
|
||||
(:prefix ("e" . "eval")
|
||||
"d" #'fuel-eval-definition
|
||||
"R" #'fuel-eval-extended-region
|
||||
"r" #'fuel-eval-region)
|
||||
(:prefix ("h" . "help")
|
||||
"p" #'fuel-apropos
|
||||
"h" #'fuel-help
|
||||
"b" #'fuel-help-display-bookmarks
|
||||
"v" #'fuel-help-vocab
|
||||
"w" #'fuel-show-file-words
|
||||
"c" #'fuel-show-callees
|
||||
"e" #'fuel-stack-effect-region
|
||||
"s" #'fuel-stack-effect-sexp)
|
||||
(:prefix ("s" . "scaffold")
|
||||
"v" #'fuel-scaffold-vocab
|
||||
"h" #'fuel-scaffold-help
|
||||
"t" #'fuel-scaffold-tests)
|
||||
(:prefix ("r" . "refactor")
|
||||
"s" #'fuel-refactor-extract-sexp
|
||||
"w" #'fuel-refactor-extract-region
|
||||
"v" #'fuel-refactor-extract-vocab
|
||||
"i" #'fuel-refactor-inline-word
|
||||
"g" #'fuel-refactor-make-generic
|
||||
"u" #'fuel-update-usings
|
||||
"r" #'fuel-refactor-rename-word))
|
||||
(map! :after fuel-listener
|
||||
:map fuel-listener-mode-map
|
||||
:localleader
|
||||
"b" #'fuel-switch-to-buffer
|
||||
"w" #'fuel-switch-to-buffer-other-window
|
||||
"f" #'fuel-switch-to-buffer-other-frame
|
||||
"e" #'fuel-edit-vocabulary
|
||||
"r" #'fuel-refresh-all
|
||||
"i" #'fuel-stack-mode
|
||||
"h" #'fuel-help
|
||||
"s" #'fuel-scaffold-vocab))
|
||||
|
||||
(map! :after fuel-listener
|
||||
:map fuel-listener-mode-map
|
||||
:localleader
|
||||
"b" #'fuel-switch-to-buffer
|
||||
"w" #'fuel-switch-to-buffer-other-window
|
||||
"f" #'fuel-switch-to-buffer-other-frame
|
||||
"e" #'fuel-edit-vocabulary
|
||||
"r" #'fuel-refresh-all
|
||||
"i" #'fuel-stack-mode
|
||||
"h" #'fuel-help
|
||||
"s" #'fuel-scaffold-vocab)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; 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 ::
|
||||
Leverages tree-sitter for better syntax highlighting and structural text
|
||||
editing. Requires [[doom-module::tools tree-sitter]].
|
||||
- +snail :: Use Snail, a development environment and REPL interaction package
|
||||
for Julia in the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables
|
||||
convenient and dynamic REPL-driven development.
|
||||
- +snail ::
|
||||
Use Snail, a development environment and REPL interaction package for Julia in
|
||||
the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables convenient
|
||||
and dynamic REPL-driven development.
|
||||
|
||||
** Packages
|
||||
- [[doom-package:julia-mode]]
|
||||
- [[doom-package:julia-repl]]
|
||||
- if [[doom-package:+lsp]]
|
||||
- if [[doom-module:+lsp]]
|
||||
- if [[doom-module::tools lsp]]
|
||||
- [[doom-package:lsp-julia]]
|
||||
- [[doom-package:lsp]]
|
||||
- if [[doom-module::tools lsp +eglot]]
|
||||
- [[doom-package:eglot-jl]]
|
||||
- [[doom-package:eglot]]
|
||||
- if [[doom-package:][+snail]]
|
||||
- [[doom-package:][julia-snail]]
|
||||
- if [[doom-module:+snail]]
|
||||
- [[doom-package:julia-snail]]
|
||||
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
@ -63,8 +64,8 @@ Pkg.add("LanguageServer")
|
|||
Pkg.add("SymbolServer")
|
||||
#+end_src
|
||||
|
||||
Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled
|
||||
[[doom-module::tools lsp]] or [[doom-module::tools lsp +eglot]], respectively:
|
||||
Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled [[doom-module::tools
|
||||
lsp]] or [[doom-module::tools lsp +eglot]], respectively:
|
||||
|
||||
*** =lsp-julia=
|
||||
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-repl-use-emacsclient)
|
||||
:config
|
||||
(set-popup-rule! "^\\*julia.*\\*$" :ttl nil)
|
||||
(unless (modulep! +snail)
|
||||
(set-popup-rule! "^\\*julia.*\\*$" :ttl nil))
|
||||
|
||||
(when (modulep! :ui workspaces)
|
||||
(defadvice! +julia--namespace-repl-buffer-to-workspace-a (&optional executable-key suffix)
|
||||
|
|
|
@ -48,7 +48,36 @@
|
|||
(if (modulep! :tools lsp +eglot)
|
||||
'eglot
|
||||
'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)
|
||||
(add-hook 'rustic-mode-local-vars-hook #'tree-sitter! 'append))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/scala/packages.el
|
||||
|
||||
(package! sbt-mode :pin "bcf8d6040021013430b39d6f6766ce1aab0b691a")
|
||||
(package! sbt-mode :pin "cc68728a6ef0600aad369157b3a2d0ce56afba9b")
|
||||
(package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4")
|
||||
|
||||
(when (and (modulep! +lsp)
|
||||
|
|
|
@ -50,7 +50,9 @@
|
|||
|
||||
(defun +eval-repl-known-repls ()
|
||||
"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)
|
||||
"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 ()
|
||||
"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)))
|
||||
(founds (mapcar (lambda (fn) (list (+eval-pretty-mode-name-from-fn fn) fn))
|
||||
(+eval-repl-found-repls)))
|
||||
(repls (seq-uniq (append knowns founds)))
|
||||
(names (mapcar #'cl-first repls))
|
||||
(repls (cl-delete-duplicates (append knowns founds)))
|
||||
(names (mapcar #'car repls))
|
||||
(choice (or (completing-read "Open a REPL for: " names)
|
||||
(user-error "Aborting"))))
|
||||
(cl-second (assoc choice repls))))
|
||||
(cadr (assoc choice repls))))
|
||||
|
||||
(defun +eval-repl-from-major-mode ()
|
||||
"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
|
||||
already has a known one."
|
||||
(pcase-let* ((`(,fn ,plist) (+eval-repl-from-major-mode))
|
||||
(fn (cond ((or prompt-p (not fn)) (+eval-repl-prompt))
|
||||
(t fn)))
|
||||
(fn (if (or prompt-p (not fn)) (+eval-repl-prompt) fn))
|
||||
(region (when (use-region-p)
|
||||
(buffer-substring-no-properties (region-beginning)
|
||||
(region-end)))))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; tools/pdf/packages.el
|
||||
|
||||
(package! pdf-tools :pin "93e74924517d39483b432d6c3c9b8f8b8f0eb50c")
|
||||
(package! pdf-tools :pin "a1048bceb2bd3f635437b0f2bfac27cae8c2dabc")
|
||||
(package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216")
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
;;; 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
|
||||
:hook (doom-first-file . centaur-tabs-mode)
|
||||
:init
|
||||
|
@ -20,7 +29,20 @@
|
|||
(defun +tabs-disable-centaur-tabs-mode-maybe-h ()
|
||||
"Disable `centaur-tabs-mode' in current buffer."
|
||||
(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)
|
||||
|
|
|
@ -84,9 +84,10 @@ stored in `persp-save-dir'.")
|
|||
;; HACK Fix #319: the warnings buffer gets swallowed when creating
|
||||
;; `+workspaces-main', so display it ourselves, if it exists.
|
||||
(when-let (warnings (get-buffer "*Warnings*"))
|
||||
(save-excursion
|
||||
(display-buffer-in-side-window
|
||||
warnings '((window-height . shrink-window-if-larger-than-buffer))))))))
|
||||
(unless (get-buffer-window warnings)
|
||||
(save-excursion
|
||||
(display-buffer-in-side-window
|
||||
warnings '((window-height . shrink-window-if-larger-than-buffer)))))))))
|
||||
(defun +workspaces-init-persp-mode-h ()
|
||||
(cond (persp-mode
|
||||
;; `uniquify' breaks persp-mode. It renames old buffers, which causes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue