From d046d35aeb13e6456534c1739be61243e3a865f6 Mon Sep 17 00:00:00 2001 From: "M. Yas. Davoodeh" Date: Thu, 19 Mar 2020 13:42:06 +0330 Subject: [PATCH 001/167] Added +lsp to Tex-Mode. --- modules/lang/latex/README.org | 1 + modules/lang/latex/config.el | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/modules/lang/latex/README.org b/modules/lang/latex/README.org index 0d208c5c7..0fc3bd8a3 100644 --- a/modules/lang/latex/README.org +++ b/modules/lang/latex/README.org @@ -30,6 +30,7 @@ Provide a helping hand when working with LaTeX documents. ** Module Flags + =+latexmk= Use LatexMk instead of LaTeX to compile documents. + =+cdlatex= Enable [[https://github.com/cdominik/cdlatex][cdlatex]] for fast math insertion. ++ =+lsp= Start LSP automatically in `tex-mode-hook`. ** Plugins + [[http://www.gnu.org/software/auctex/][auctex]] diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index a73d5bb5a..45f3da203 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -180,6 +180,12 @@ If no viewers are found, `latex-preview-pane' is used.") :init (add-to-list '+latex--company-backends #'+latex-symbols-company-backend nil #'eq)) +(after! tex-mode + (when (featurep! +lsp) + (add-hook 'tex-mode-local-vars-hook #'lsp!) + (add-hook 'latex-mode-local-vars-hook #'lsp!) + (after! yatex + (add-hook 'yatex-mode-local-vars-hook #'lsp!)))) ;; bibtex + reftex (load! "+ref") From 6b68dcceee7f9d43ca72d98589aef51a482d0a96 Mon Sep 17 00:00:00 2001 From: "M. Yas. Davoodeh" Date: Thu, 19 Mar 2020 19:19:35 +0330 Subject: [PATCH 002/167] Minor fixes in docs and check for :lang lsp. --- docs/modules.org | 2 +- modules/lang/latex/README.org | 3 ++- modules/lang/latex/config.el | 6 ++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/modules.org b/docs/modules.org index 9eb0b8616..25ed94402 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -114,7 +114,7 @@ Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/javascript/README.org][javascript]] =+lsp= - JavaScript, TypeScript, and CoffeeScript support + julia - TODO + kotlin =+lsp+= - TODO -+ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex= - TODO ++ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex= =+lsp= - TODO + lean - TODO + [[file:../modules/lang/ledger/README.org][ledger]] - TODO + lua =+moonscript= - TODO diff --git a/modules/lang/latex/README.org b/modules/lang/latex/README.org index 0fc3bd8a3..9b6fe2e4b 100644 --- a/modules/lang/latex/README.org +++ b/modules/lang/latex/README.org @@ -30,7 +30,8 @@ Provide a helping hand when working with LaTeX documents. ** Module Flags + =+latexmk= Use LatexMk instead of LaTeX to compile documents. + =+cdlatex= Enable [[https://github.com/cdominik/cdlatex][cdlatex]] for fast math insertion. -+ =+lsp= Start LSP automatically in `tex-mode-hook`. ++ =+lsp= Start LSP automatically in `tex-mode-hook`. This + requires the =:tools lsp= module. ** Plugins + [[http://www.gnu.org/software/auctex/][auctex]] diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index 45f3da203..57d64fe60 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -181,11 +181,9 @@ If no viewers are found, `latex-preview-pane' is used.") (add-to-list '+latex--company-backends #'+latex-symbols-company-backend nil #'eq)) (after! tex-mode - (when (featurep! +lsp) + (when (and (featurep! +lsp) (featurep! :tools lsp)) (add-hook 'tex-mode-local-vars-hook #'lsp!) - (add-hook 'latex-mode-local-vars-hook #'lsp!) - (after! yatex - (add-hook 'yatex-mode-local-vars-hook #'lsp!)))) + (add-hook 'latex-mode-local-vars-hook #'lsp!))) ;; bibtex + reftex (load! "+ref") From 76ae9e687aede0a20927aec677313ac1b3fb6603 Mon Sep 17 00:00:00 2001 From: "M. Yas. Davoodeh" Date: Fri, 27 Mar 2020 16:25:33 +0430 Subject: [PATCH 003/167] Move hooks to `(after! tex)` block --- modules/lang/latex/config.el | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index 57d64fe60..081edf29b 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -74,7 +74,11 @@ If no viewers are found, `latex-preview-pane' is used.") (sp-local-pair modes open nil :actions :rem)) ;; And tweak these so that users can decide whether they want use latex ;; quotes or not, via `+latex-enable-plain-double-quotes' - (sp-local-pair modes "``" nil :unless '(:add sp-in-math-p))))) + (sp-local-pair modes "``" nil :unless '(:add sp-in-math-p)))) + ;; Hook lsp if enabled + (when (and (featurep! +lsp) (featurep! :tools lsp)) + (add-hook 'tex-mode-local-vars-hook #'lsp!) + (add-hook 'latex-mode-local-vars-hook #'lsp!))) (after! latex @@ -180,10 +184,5 @@ If no viewers are found, `latex-preview-pane' is used.") :init (add-to-list '+latex--company-backends #'+latex-symbols-company-backend nil #'eq)) -(after! tex-mode - (when (and (featurep! +lsp) (featurep! :tools lsp)) - (add-hook 'tex-mode-local-vars-hook #'lsp!) - (add-hook 'latex-mode-local-vars-hook #'lsp!))) - ;; bibtex + reftex (load! "+ref") From 3be5692c7750e9d0a330cca1834ef3b5090ffba5 Mon Sep 17 00:00:00 2001 From: Keating950 Date: Thu, 16 Apr 2020 19:00:23 -0400 Subject: [PATCH 004/167] Respect global whitespace mode config, if set --- core/core-ui.el | 1 + 1 file changed, 1 insertion(+) diff --git a/core/core-ui.el b/core/core-ui.el index 71f75c035..1ac441088 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -142,6 +142,7 @@ Does nothing if `whitespace-mode' is already active or the current buffer is read-only or not file-visiting." (unless (or (eq major-mode 'fundamental-mode) buffer-read-only + (equal global-whitespace-mode t) (null buffer-file-name)) (require 'whitespace) (set (make-local-variable 'whitespace-style) From 8535318cf4ac4969fb11005f461837552912cd24 Mon Sep 17 00:00:00 2001 From: Keating950 Date: Thu, 16 Apr 2020 19:05:23 -0400 Subject: [PATCH 005/167] Update docstring --- core/core-ui.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/core-ui.el b/core/core-ui.el index 1ac441088..37e4fda6a 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -138,8 +138,8 @@ size.") e.g. If you indent with spaces by default, tabs will be highlighted. If you indent with tabs, spaces at BOL are highlighted. -Does nothing if `whitespace-mode' is already active or the current buffer is -read-only or not file-visiting." +Does nothing if `whitespace-mode' or 'global-whitespace-mode'is already +active or if the current buffer is read-only or not file-visiting." (unless (or (eq major-mode 'fundamental-mode) buffer-read-only (equal global-whitespace-mode t) From e89dc0ecaf9a627683058786e5f6662cc1912491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alois=20Jan=C3=AD=C4=8Dek?= Date: Fri, 17 Apr 2020 12:08:08 +0200 Subject: [PATCH 006/167] Autoload all 4 org decrypt/encrypt user commands currently if someone wants to use them, it has to manually autoload them first in user config.el with (unless (fboundp ...) (autoload ...)) --- modules/lang/org/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index c2c8a2b72..449b6c150 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -778,7 +778,7 @@ compelling reason, so..." (use-package! org-crypt ; built-in - :commands org-encrypt-entries + :commands org-encrypt-entries org-encrypt-entry org-decrypt-entries org-decrypt-entry :hook (org-reveal-start . org-decrypt-entry) :config (add-hook! 'org-mode-hook From 2dd84b8e2f0286df73f19bcb7449dac6a9cad362 Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Sat, 11 Apr 2020 16:53:12 +0400 Subject: [PATCH 007/167] Add org-noter package This package allows the creation of notes on a document (pdf, EPub, etc.) which will be kept in sync with the document. Providing context sensitive annotations that are managed in plaintext. --- modules/config/default/+emacs-bindings.el | 4 +++- modules/config/default/+evil-bindings.el | 3 +++ modules/lang/org/README.org | 13 +++++++++++++ modules/lang/org/config.el | 1 + modules/lang/org/contrib/noter.el | 14 ++++++++++++++ modules/lang/org/packages.el | 2 ++ 6 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/lang/org/contrib/noter.el diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 7cfdb43dc..e07af04a1 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -128,7 +128,9 @@ :desc "Bibliographic entries" "b" (cond ((featurep! :completion ivy) #'ivy-bibtex) ((featurep! :completion helm) #'helm-bibtex))) - + (:when (featurep! :lang org +noter) + :desc "Org noter" "e" #'org-noter) + :desc "Find file in notes" "f" #'+default/find-in-notes :desc "Browse notes" "F" #'+default/browse-notes :desc "Org store link" "l" #'org-store-link diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index e0fe4744b..90ee2f482 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -464,6 +464,9 @@ :desc "Toggle org-clock" "c" #'+org/toggle-clock :desc "Cancel org-clock" "C" #'org-clock-cancel :desc "Open deft" "d" #'deft + (:when (featurep! :lang org +noter) + :desc "Org noter" "e" #'org-noter) + :desc "Find file in notes" "f" #'+default/find-in-notes :desc "Browse notes" "F" #'+default/browse-notes :desc "Org store link" "l" #'org-store-link diff --git a/modules/lang/org/README.org b/modules/lang/org/README.org index 12a554e88..b7d86b6f9 100644 --- a/modules/lang/org/README.org +++ b/modules/lang/org/README.org @@ -18,6 +18,7 @@ - [[#built-in-custom-link-types][Built-in custom link types]] - [[#configuration][Configuration]] - [[#changing-org-directory][Changing ~org-directory~]] + - [[#changing-org-noter-notes-search-path][Changing ~org-noter-notes-search-path~]] * Description This module adds org-mode support to Doom Emacs, along with a number of @@ -68,6 +69,8 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode + =+present= Enables integration with reveal.js, beamer and org-tree-slide, so Emacs can be used for presentations. + =+roam= Enables org-roam integration. ++ =+noter= Enables org-noter integration. Keeps notes in sync with a document. + Requires [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][pdf-tools]] (=:tools pdf=) or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][DocView]] or [[https://github.com/wasamasa/nov.el][nov.el]] to be enabled. ** Plugins + [[https://github.com/hniksic/emacs-htmlize][htmlize]] @@ -121,6 +124,9 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode + =+roam= + [[https://github.com/jethrokuan/org-roam][org-roam]] + [[https://github.com/jethrokuan/company-org-roam][company-org-roam]] ++ =+noter= + + [[https://github.com/weirdNox/org-noter][org-noter]] + ** Hacks + The window is recentered when following links. @@ -223,3 +229,10 @@ To modify ~org-directory~ it must be set /before/ =org= has loaded: ;; ~/.doom.d/config.el (setq org-directory "~/new/org/location/") #+END_SRC +** Changing ~org-noter-notes-search-path~ +To modify ~org-noter-notes-search-path~ set: + +#+BEGIN_SRC emacs-lisp +;; ~/.doom.d/config.el +(setq org-noter-notes-search-path '("~/notes/path/")) +#+END_SRC diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index c2c8a2b72..aec684f41 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -965,6 +965,7 @@ compelling reason, so..." (if (featurep! +pomodoro) (load! "contrib/pomodoro")) (if (featurep! +present) (load! "contrib/present")) (if (featurep! +roam) (load! "contrib/roam")) + (if (featurep! +noter) (load! "contrib/noter")) ;; Add our general hooks after the submodules, so that any hooks the ;; submodules add run after them, and can overwrite any defaults if necessary. diff --git a/modules/lang/org/contrib/noter.el b/modules/lang/org/contrib/noter.el new file mode 100644 index 000000000..5702e1e0a --- /dev/null +++ b/modules/lang/org/contrib/noter.el @@ -0,0 +1,14 @@ +;;; lang/org/contrib/noter.el -*- lexical-binding: t; -*- +;;;###if (featurep! +noter) + +(use-package! org-noter + :defer t + :preface + ;; Allow the user to preempt this and set the document search path + ;; If not set then use `org-directory' + (defvar org-noter-notes-search-path nil) + :config + (setq org-noter-auto-save-last-location t + org-noter-separate-notes-from-heading t) + (unless org-noter-notes-search-path + (setq org-noter-notes-search-path org-directory))) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index f63159d6a..8c8f677d9 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -75,6 +75,8 @@ (package! org-roam :pin "e33c144298") (when (featurep! :completion company) (package! company-org-roam :pin "0913d86f16"))) +(when (featurep! +noter) + (package! org-noter :pin "9ead81d42d")) ;;; Babel (package! ob-async :pin "80a30b96a0") From 317beed13cdb556579d844a4fc734a17ce36f39f Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Fri, 17 Apr 2020 16:45:26 +0400 Subject: [PATCH 008/167] Add missing Notes bindings to evil and emacs --- modules/config/default/+emacs-bindings.el | 4 ++++ modules/config/default/+evil-bindings.el | 1 + 2 files changed, 5 insertions(+) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index e07af04a1..0e46389a9 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -128,6 +128,10 @@ :desc "Bibliographic entries" "b" (cond ((featurep! :completion ivy) #'ivy-bibtex) ((featurep! :completion helm) #'helm-bibtex))) + + :desc "Toggle org-clock" "c" #'+org/toggle-clock + :desc "Cancel org-clock" "C" #'org-clock-cancel + :desc "Open deft" "d" #'deft (:when (featurep! :lang org +noter) :desc "Org noter" "e" #'org-noter) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 90ee2f482..8cad27ba5 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -472,6 +472,7 @@ :desc "Org store link" "l" #'org-store-link :desc "Tags search" "m" #'org-tags-view :desc "Org capture" "n" #'org-capture + :desc "Goto capture" "N" #'org-capture-goto-target :desc "Active org-clock" "o" #'org-clock-goto :desc "Todo list" "t" #'org-todo-list :desc "Search notes" "s" #'+default/org-notes-search From b8de456a7381648172863f2de135be8326c99cfd Mon Sep 17 00:00:00 2001 From: Benjamin Andresen Date: Fri, 17 Apr 2020 16:17:23 +0200 Subject: [PATCH 009/167] Fix: contrib/journal: `buffer-file-name' is nil in *Capture* buffer --- modules/lang/org/contrib/journal.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/org/contrib/journal.el b/modules/lang/org/contrib/journal.el index 11ffacd3c..5457d3274 100644 --- a/modules/lang/org/contrib/journal.el +++ b/modules/lang/org/contrib/journal.el @@ -29,6 +29,7 @@ (defun +org-journal-mode-maybe () "Activate `org-journal-mode', maybe." (and (eq major-mode 'org-mode) + (stringp buffer-file-name) (string-match-p org-journal-file-pattern buffer-file-name) (let ((org-mode-hook (remq '+org-journal-mode-maybe org-mode-hook))) (org-journal-mode)))) From 5502013906e11d4464c949fa6b84bfaa97c02464 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:05:15 -0400 Subject: [PATCH 010/167] Bump :lang org fuxialexander/org-pdftools@4156b67 -> fuxialexander/org-pdftools@67964a5 integral-dw/org-superstar-mode@4897c33 -> integral-dw/org-superstar-mode@09ddc28 jethrokuan/org-roam@e33c144 -> jethrokuan/org-roam@6175739 magit/orgit@0242088 -> magit/orgit@7d6afa5 --- modules/config/default/+emacs-bindings.el | 8 +++---- modules/config/default/+evil-bindings.el | 8 +++---- modules/lang/org/config.el | 28 +++-------------------- modules/lang/org/contrib/roam.el | 16 ++++++------- modules/lang/org/packages.el | 8 +++---- 5 files changed, 23 insertions(+), 45 deletions(-) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 7cfdb43dc..d7a82ec22 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -155,10 +155,10 @@ :desc "Insert" "i" #'org-roam-insert :desc "Org Roam" "r" #'org-roam (:prefix ("d" . "by date") - :desc "Arbitrary date" "d" #'org-roam-date - :desc "Today" "t" #'org-roam-today - :desc "Tomorrow" "m" #'org-roam-tomorrow - :desc "Yesterday" "y" #'org-roam-yesterday)))) + :desc "Arbitrary date" "d" #'org-roam-dailies-date + :desc "Today" "t" #'org-roam-dailies-today + :desc "Tomorrow" "m" #'org-roam-dailies-tomorrow + :desc "Yesterday" "y" #'org-roam-dailies-yesterday)))) ;;; o --- open "o" nil ; we need to unbind it first as Org claims this prefix diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index e0fe4744b..83bc73ac5 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -486,10 +486,10 @@ :desc "Insert" "i" #'org-roam-insert :desc "Org Roam" "r" #'org-roam (:prefix ("d" . "by date") - :desc "Arbitrary date" "d" #'org-roam-date - :desc "Today" "t" #'org-roam-today - :desc "Tomorrow" "m" #'org-roam-tomorrow - :desc "Yesterday" "y" #'org-roam-yesterday))) + :desc "Arbitrary date" "d" #'org-roam-dailies-date + :desc "Today" "t" #'org-roam-dailies-today + :desc "Tomorrow" "m" #'org-roam-dailies-tomorrow + :desc "Yesterday" "y" #'org-roam-dailies-yesterday))) (:when (featurep! :lang org +journal) (:prefix ("j" . "journal") diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 449b6c150..40d4b053e 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -811,40 +811,18 @@ compelling reason, so..." :commands org-pdftools-export :init (after! org - (add-hook 'org-store-link-functions #'org-pdftools-store-link) - - ;; HACK `org-pdftools' hard-codes "pdftools:" for its links. We want to use - ;; a generic link so that the backend doesn't matter. These hacks are - ;; in place so that the old pdf(view|tools) links still work, but that - ;; org-pdftools will only generate pdf: links. - (org-link-set-parameters "pdf" + (org-link-set-parameters (or (bound-and-true-p org-pdftools-link-prefix) "pdf") :follow #'org-pdftools-open :complete #'org-pdftools-complete-link :store #'org-pdftools-store-link :export #'org-pdftools-export) - + (add-hook 'org-store-link-functions #'org-pdftools-store-link) (add-hook! 'org-open-link-functions (defun +org-open-old-pdf-links-fn (link) (let ((regexp "^pdf\\(?:tools\\|view\\):")) (when (string-match-p regexp link) (org-pdftools-open (replace-regexp-in-string regexp "" link)) - t)))) - - ;; TODO Perhaps PR a variable for changing the link upstream? - (defadvice! +org--use-generic-link-a (link) - :filter-return '(org-pdftools-complete-link - org-pdftools-get-link) - (replace-regexp-in-string "^pdftools:" "pdf:" link)) - - (defadvice! +org--store-generic-link-a (orig-fn &rest args) - :around #'org-pdftools-store-link - (cl-letf* ((old-store-props (symbol-function #'org-link-store-props)) - ((symbol-function #'org-link-store-props) - (lambda (&rest plist) - (plist-put! plist :type "pdf") - (plist-put! plist :link (+org--use-generic-link-a (plist-get plist :link))) - (apply old-store-props plist)))) - (apply orig-fn args))))) + t)))))) (use-package! evil-org diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index eea56ec8b..a5dcc3e83 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -5,14 +5,14 @@ :hook (org-load . org-roam-mode) :hook (org-roam-backlinks-mode . turn-on-visual-line-mode) :commands (org-roam-buffer-toggle-display - org-roam-date org-roam-find-file org-roam-graph-show org-roam-insert org-roam-switch-to-buffer - org-roam-today - org-roam-tomorrow - org-roam-yesterday) + org-roam-dailies-date + org-roam-dailies-today + org-roam-dailies-tomorrow + org-roam-dailies-yesterday) :preface ;; Set this to nil so we can later detect whether the user has set a custom ;; directory for it, and default to `org-directory' if they haven't. @@ -28,10 +28,10 @@ "i" #'org-roam-insert "m" #'org-roam (:prefix ("d" . "by date") - :desc "Arbitrary date" "d" #'org-roam-date - :desc "Today" "t" #'org-roam-today - :desc "Tomorrow" "m" #'org-roam-tomorrow - :desc "Yesterday" "y" #'org-roam-yesterday)) + :desc "Arbitrary date" "d" #'org-roam-dailies-date + :desc "Today" "t" #'org-roam-dailies-today + :desc "Tomorrow" "m" #'org-roam-dailies-tomorrow + :desc "Yesterday" "y" #'org-roam-dailies-yesterday)) :config (setq org-roam-directory (expand-file-name (or org-roam-directory "") org-directory) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index f63159d6a..7f6db9d68 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -34,7 +34,7 @@ (package! avy) (package! htmlize :pin "86f22f211e") -(package! org-superstar :pin "4897c333a8") +(package! org-superstar :pin "09ddc28383") (package! org-yt :recipe (:host github :repo "TobiasZawada/org-yt") :pin "40cc1ac76d") @@ -47,9 +47,9 @@ :recipe (:host github :repo "hlissner/evil-org-mode") :pin "4d44e9bbdc")) (when (featurep! :tools pdf) - (package! org-pdftools :pin "4156b677fc")) + (package! org-pdftools :pin "22d9a367ab")) (when (featurep! :tools magit) - (package! orgit :pin "0242088fb2")) + (package! orgit :pin "e147f05577")) (when (featurep! +brain) (package! org-brain :pin "3630eb88a3")) (when (featurep! +dragndrop) @@ -72,7 +72,7 @@ (package! org-tree-slide :pin "7bf09a02bd") (package! org-re-reveal :pin "61549f4c00")) (when (featurep! +roam) - (package! org-roam :pin "e33c144298") + (package! org-roam :pin "6175739b33") (when (featurep! :completion company) (package! company-org-roam :pin "0913d86f16"))) From 789b1dc1ab12160b0042a5f42739a44f2f7ea15c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:07:13 -0400 Subject: [PATCH 011/167] Bump :lang racket greghendershott/racket-mode@bd4c8cf -> greghendershott/racket-mode@202cc1b Fixes #2922 --- modules/lang/racket/config.el | 4 ++-- modules/lang/racket/packages.el | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/lang/racket/config.el b/modules/lang/racket/config.el index f3727842b..c297b076c 100644 --- a/modules/lang/racket/config.el +++ b/modules/lang/racket/config.el @@ -13,8 +13,8 @@ :config (set-repl-handler! 'racket-mode #'+racket/open-repl) (set-lookup-handlers! 'racket-mode - :definition #'racket-visit-definition - :documentation #'racket-describe) + :definition #'racket-xp-visit-definition + :documentation #'racket-xp-describe) (set-docsets! 'racket-mode "Racket") (set-pretty-symbols! 'racket-mode :lambda "lambda" diff --git a/modules/lang/racket/packages.el b/modules/lang/racket/packages.el index 4288f361a..341191184 100644 --- a/modules/lang/racket/packages.el +++ b/modules/lang/racket/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/racket/packages.el -(package! racket-mode :pin "bd4c8cf3ce") +(package! racket-mode :pin "202cc1b784") From 2a8926ec3382a05be585a32fdace8e82bd4995fd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:49:58 -0400 Subject: [PATCH 012/167] Add HOLD org todo keyword WAIT = for tasks waiting on other people or external forces HOLD = for tasks waiting on you --- modules/lang/org/config.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 40d4b053e..97d99ab33 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -141,9 +141,10 @@ This forces it to read the background before rendering." (setq org-todo-keywords '((sequence "TODO(t)" ; A task that needs doing & is ready to do - "PROJ(p)" ; An ongoing project that cannot be completed in one step + "PROJ(p)" ; A project, which usually contains other tasks "STRT(s)" ; A task that is in progress - "WAIT(w)" ; Something is holding up this task; or it is paused + "WAIT(w)" ; Something external is holding up this task + "HOLD(h)" ; This task is paused/on hold because of me "|" "DONE(d)" ; Task successfully completed "KILL(k)") ; Task was cancelled, aborted or is no longer applicable @@ -158,6 +159,7 @@ This forces it to read the background before rendering." ("STRT" . +org-todo-active) ("[?]" . +org-todo-onhold) ("WAIT" . +org-todo-onhold) + ("HOLD" . +org-todo-onhold) ("PROJ" . +org-todo-project))) (defadvice! +org-display-link-in-eldoc-a (orig-fn &rest args) From 9e339b36f13e9f315ed2391e28b1eedd6793fa26 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:53:35 -0400 Subject: [PATCH 013/167] Bump :lang elm bsermons/flycheck-elm@debd0af -> bsermons/flycheck-elm@1b60050 jcollard/elm-mode@dd868e5 -> jcollard/elm-mode@7782be0 --- modules/lang/elm/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/elm/packages.el b/modules/lang/elm/packages.el index 6485cbe2f..220ae8bef 100644 --- a/modules/lang/elm/packages.el +++ b/modules/lang/elm/packages.el @@ -1,6 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/elm/packages.el -(package! elm-mode :pin "dd868e55ff") +(package! elm-mode :pin "7782be0814") (when (featurep! :checkers syntax) - (package! flycheck-elm :pin "debd0af563")) + (package! flycheck-elm :pin "1b60050efd")) From d21099cbd05c1ba1571ec8ecaf30639560599de5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:56:02 -0400 Subject: [PATCH 014/167] Flycheck buffer on idle-buffer-switch --- modules/checkers/syntax/config.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/checkers/syntax/config.el b/modules/checkers/syntax/config.el index 6d82bb0f5..f6c52c0a1 100644 --- a/modules/checkers/syntax/config.el +++ b/modules/checkers/syntax/config.el @@ -12,7 +12,12 @@ ;; Check only when saving or opening files. Newline & idle checks are a mote ;; excessive and can catch code in an incomplete state, producing false ;; positives, so we removed them. - (setq flycheck-check-syntax-automatically '(save mode-enabled)) + (setq flycheck-check-syntax-automatically '(save mode-enabled idle-buffer-switch)) + + ;; For the above functionality, check syntax in a buffer that you switched to + ;; only briefly. This allows "refreshing" the syntax check state for several + ;; buffers quickly after e.g. changing a config file. + (setq flycheck-buffer-switch-check-intermediate-buffers t) ;; Display errors a little quicker (default is 0.9s) (setq flycheck-display-errors-delay 0.25) From d3c2e4829bf7d7fced8f4034d29db77ff463f99c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 14:56:21 -0400 Subject: [PATCH 015/167] Disable byte-compile-dynamic for autoloads files Its deprecated and more trouble than its worth. --- core/cli/autoloads.el | 1 - 1 file changed, 1 deletion(-) diff --git a/core/cli/autoloads.el b/core/cli/autoloads.el index 4cd2e5fd0..cfc03ba57 100644 --- a/core/cli/autoloads.el +++ b/core/cli/autoloads.el @@ -90,7 +90,6 @@ one wants that.") (defun doom-cli--byte-compile-file (file) (condition-case-unless-debug e (let ((byte-compile-warnings (if doom-debug-mode byte-compile-warnings)) - (byte-compile-dynamic t) (byte-compile-dynamic-docstrings t)) (when (byte-compile-file file) (unless doom-interactive-mode From 71c5ad500089182b42e6bb1a9cc165bd9408fa11 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 15:44:14 -0400 Subject: [PATCH 016/167] Move clojure SPC m m {e,E} -> to SPC m {m,M} To be consistent with CL and elisp keybinds. --- modules/lang/clojure/config.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index 04a92bd2a..36d8b0b75 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -90,6 +90,8 @@ "\"" #'cider-jack-in-cljs "c" #'cider-connect-clj "C" #'cider-connect-cljs + "m" #'cider-macroexpand-1 + "M" #'cider-macroexpand-all (:prefix ("e" . "eval") "b" #'cider-eval-buffer "d" #'cider-eval-defun-at-point @@ -114,9 +116,6 @@ "e" #'cider-enlighten-mode "i" #'cider-inspect "r" #'cider-inspect-last-result) - (:prefix ("m" . "macro") - "e" #'cider-macroexpand-1 - "E" #'cider-macroexpand-all) (:prefix ("n" . "namespace") "n" #'cider-browse-ns "N" #'cider-browse-ns-all From 1a07ee8269bec6ef462999c947f0a758bf05f9fc Mon Sep 17 00:00:00 2001 From: Keating950 Date: Fri, 17 Apr 2020 19:59:54 -0400 Subject: [PATCH 017/167] simplified expression; fixed typo --- core/core-ui.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core-ui.el b/core/core-ui.el index 37e4fda6a..2de3ddbb2 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -138,7 +138,7 @@ size.") e.g. If you indent with spaces by default, tabs will be highlighted. If you indent with tabs, spaces at BOL are highlighted. -Does nothing if `whitespace-mode' or 'global-whitespace-mode'is already +Does nothing if `whitespace-mode' or 'global-whitespace-mode' is already active or if the current buffer is read-only or not file-visiting." (unless (or (eq major-mode 'fundamental-mode) buffer-read-only From 890d402e22dab94818a2d24ce2c0ed872a05edf3 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Fri, 17 Apr 2020 17:19:29 -0700 Subject: [PATCH 018/167] Make :ls/:buffers invoke ibuffer Only when evil and ibuffer are enabled Signed-off-by: Rudi Grinberg --- modules/editor/evil/+commands.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/editor/evil/+commands.el b/modules/editor/evil/+commands.el index 1c9de22a0..64dabe921 100644 --- a/modules/editor/evil/+commands.el +++ b/modules/editor/evil/+commands.el @@ -99,3 +99,7 @@ ;;; Org-mode (evil-ex-define-cmd "cap" #'org-capture) + +;;; ibuffer +(when (featurep! :emacs ibuffer) + (evil-ex-define-cmd "buffers" #'ibuffer)) From bcf37b9bee6c8f3780edf636a77787f288abc912 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Fri, 17 Apr 2020 18:03:34 -0700 Subject: [PATCH 019/167] Fix :last and :popup The doom/ prefix for popup commands no longer exists --- modules/editor/evil/+commands.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/evil/+commands.el b/modules/editor/evil/+commands.el index 64dabe921..9277c23ec 100644 --- a/modules/editor/evil/+commands.el +++ b/modules/editor/evil/+commands.el @@ -47,9 +47,9 @@ (evil-ex-define-cmd "k[ill]m" #'+evil:kill-matching-buffers) (evil-ex-define-cmd "k[ill]o" #'doom/kill-other-buffers) (evil-ex-define-cmd "k[ill]b" #'doom/kill-buried-buffers) -(evil-ex-define-cmd "l[ast]" #'doom/popup-restore) +(evil-ex-define-cmd "l[ast]" #'+popup/restore) (evil-ex-define-cmd "messages" #'view-echo-area-messages) -(evil-ex-define-cmd "pop[up]" #'doom/popup-this-buffer) +(evil-ex-define-cmd "pop[up]" #'+popup/buffer) ;;; Project navigation (evil-ex-define-cmd "a" #'projectile-find-other-file) From 54041ad827623131c056ade786999d4cff779515 Mon Sep 17 00:00:00 2001 From: Keating950 Date: Fri, 17 Apr 2020 21:33:45 -0400 Subject: [PATCH 020/167] simplifying boolean expression --- core/core-ui.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core-ui.el b/core/core-ui.el index 2de3ddbb2..a3498cf4f 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -142,7 +142,7 @@ Does nothing if `whitespace-mode' or 'global-whitespace-mode' is already active or if the current buffer is read-only or not file-visiting." (unless (or (eq major-mode 'fundamental-mode) buffer-read-only - (equal global-whitespace-mode t) + global-whitespace-mode (null buffer-file-name)) (require 'whitespace) (set (make-local-variable 'whitespace-style) From 6e4ec07ad57e9a4fd4d5003500f24e82a555568c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 21:50:05 -0400 Subject: [PATCH 021/167] Fix void-variable global-whitespace-mode In case whitespace-mode hasn't been loaded yet. --- core/core-ui.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core-ui.el b/core/core-ui.el index a3498cf4f..da17eeafe 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -142,7 +142,7 @@ Does nothing if `whitespace-mode' or 'global-whitespace-mode' is already active or if the current buffer is read-only or not file-visiting." (unless (or (eq major-mode 'fundamental-mode) buffer-read-only - global-whitespace-mode + (bound-and-true-p global-whitespace-mode) (null buffer-file-name)) (require 'whitespace) (set (make-local-variable 'whitespace-style) From a7a5cbb7bf091ab9a0884dc30dc8ec269182f4c3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 21:58:55 -0400 Subject: [PATCH 022/167] editor/snippets: refactor & comment And load snippets earlier in daemon sessions. --- modules/editor/snippets/config.el | 53 ++++++++++++++++--------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/modules/editor/snippets/config.el b/modules/editor/snippets/config.el index cb1c9315d..d4b9728a8 100644 --- a/modules/editor/snippets/config.el +++ b/modules/editor/snippets/config.el @@ -5,7 +5,7 @@ ;; -;; Packages +;;; Packages (use-package! yasnippet :defer-incrementally eldoc easymenu help-mode @@ -20,9 +20,12 @@ ;; Remove default ~/.emacs.d/snippets (defvar yas-snippet-dirs nil) - ;; Ensure `yas-reload-all' is called as late as possible. Other modules could - ;; have additional configuration for yasnippet. For example, file-templates. - (add-transient-hook! 'yas-minor-mode-hook (yas-reload-all)) + (if (daemonp) + (after! yasnippet (yas-reload-all)) + ;; Ensure `yas-reload-all' is called as late as possible. Other modules + ;; could have additional configuration for yasnippet. For example, + ;; file-templates. + (add-transient-hook! 'yas-minor-mode-hook (yas-reload-all))) (add-hook! '(text-mode-hook prog-mode-hook @@ -31,24 +34,28 @@ #'yas-minor-mode-on) :config - (setq yas-verbosity (if doom-debug-mode 3 0) - yas-also-auto-indent-first-line t) - - (add-to-list 'load-path +snippets-dir) - ;; default snippets library, if available - (require 'doom-snippets nil t) - ;; Allow private snippets in DOOMDIR/snippets (add-to-list 'yas-snippet-dirs '+snippets-dir) - ;; In case `+snippets-dir' and `doom-snippets-dir' are the same + ;; Reduce verbosity. 3 is too chatty about initializing yasnippet. 2 is just + ;; right (only shows errors). + (setq yas-verbosity (if doom-debug-mode 3 0)) + ;; Ensure the snippet is properly indented + (setq yas-also-auto-indent-first-line t) + + ;; default snippets library, if available + (add-to-list 'load-path +snippets-dir) + (require 'doom-snippets nil t) + + ;; HACK In case `+snippets-dir' and `doom-snippets-dir' are the same, or + ;; duplicates exist in `yas-snippet-dirs'. (advice-add #'yas-snippet-dirs :filter-return #'delete-dups) ;; Remove GUI dropdown prompt (prefer ivy/helm) (delq! 'yas-dropdown-prompt yas-prompt-functions) ;; Prioritize private snippets in `+snippets-dir' over built-in ones if there ;; are multiple choices. - (add-to-list 'yas-prompt-functions #'+snippets-prompt-private nil #'eq) + (add-to-list 'yas-prompt-functions #'+snippets-prompt-private) ;; Register `def-project-mode!' modes with yasnippet. This enables project ;; specific snippet libraries (e.g. for Laravel, React or Jekyll projects). @@ -61,22 +68,14 @@ ;; tell smartparens overlays not to interfere with yasnippet keybinds (advice-add #'yas-expand :before #'sp-remove-active-pair-overlay)) - ;; Enable `read-only-mode' for built-in snippets (in `doom-local-dir') - (add-hook 'snippet-mode-hook #'+snippets-read-only-maybe-h) - ;; (Evil only) fix off-by-one issue with line-wise visual selections in ;; `yas-insert-snippet', and switches to insert mode afterwards. (advice-add #'yas-insert-snippet :around #'+snippets-expand-on-region-a) - (define-key! snippet-mode-map - "C-c C-k" #'+snippet--abort - "C-c C-e" #'+snippet--edit) + ;; Show keybind hints in snippet header-line (add-hook 'snippet-mode-hook #'+snippets-show-hints-in-header-line-h) - - ;; Replace commands with superior alternatives - (define-key! yas-minor-mode-map - [remap yas-new-snippet] #'+snippets/new - [remap yas-visit-snippet-file] #'+snippets/edit) + ;; Enable `read-only-mode' for built-in snippets (in `doom-local-dir') + (add-hook 'snippet-mode-hook #'+snippets-read-only-maybe-h) (map! :map yas-keymap "C-e" #'+snippets/goto-end-of-field @@ -85,7 +84,11 @@ [M-left] #'+snippets/goto-start-of-field [M-backspace] #'+snippets/delete-to-start-of-field [backspace] #'+snippets/delete-backward-char - [delete] #'+snippets/delete-forward-char-or-field)) + [delete] #'+snippets/delete-forward-char-or-field + ;; Replace commands with superior alternatives + :map yas-minor-mode-map + [remap yas-new-snippet] #'+snippets/new + [remap yas-visit-snippet-file] #'+snippets/edit)) (use-package! auto-yasnippet From cf355d4d421b903ec02a7c057ec14cc43e89bcbe Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 21:59:25 -0400 Subject: [PATCH 023/167] Bump :editor snippets hlissner/doom-snippets@2a0c3cf -> hlissner/doom-snippets@feaedeb joaotavora/yasnippet@ac03c2f -> joaotavora/yasnippet@5b1217a --- modules/editor/snippets/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/snippets/packages.el b/modules/editor/snippets/packages.el index e100d3717..fec5e4d36 100644 --- a/modules/editor/snippets/packages.el +++ b/modules/editor/snippets/packages.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; -*- ;;; editor/snippets/packages.el -(package! yasnippet :pin "ac03c2f192") +(package! yasnippet :pin "5b1217ab08") (package! auto-yasnippet :pin "db9e0dd433") (package! doom-snippets :recipe (:host github :repo "hlissner/doom-snippets" :files ("*.el" "*")) - :pin "2a0c3cf901") + :pin "feaedeb550") From 0b31e97712db50dcf9ac16e4622baa448206c6a7 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:00:45 -0400 Subject: [PATCH 024/167] Bump :ui treemacs Alexander-Miller/treemacs@1b82dac -> Alexander-Miller/treemacs@2bb14ac --- modules/ui/treemacs/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/treemacs/packages.el b/modules/ui/treemacs/packages.el index a5278feae..cf79e6efd 100644 --- a/modules/ui/treemacs/packages.el +++ b/modules/ui/treemacs/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/treemacs/packages.el -(package! treemacs :pin "1b82dacc57") +(package! treemacs :pin "2bb14ac262") (when (featurep! :editor evil +everywhere) (package! treemacs-evil)) (package! treemacs-projectile) From fae02456d7ee630be7c08745c1a065857afc889c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:02:02 -0400 Subject: [PATCH 025/167] Bump :tools ein millejoh/emacs-ipython-notebook@c0147f6 -> millejoh/emacs-ipython-notebook@1322d8c --- modules/tools/ein/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tools/ein/packages.el b/modules/tools/ein/packages.el index 811588307..0e53a4f1d 100644 --- a/modules/tools/ein/packages.el +++ b/modules/tools/ein/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/ein/packages.el -(package! ein :pin "c0147f63c7") +(package! ein :pin "1322d8c7f8") From 9414b8cb023bf9c7c076f31a4112fba4f341d05b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:02:53 -0400 Subject: [PATCH 026/167] Bump :ui fill-column laishulu/hl-fill-column@612441e -> laishulu/hl-fill-column@43cb3c3 --- modules/ui/fill-column/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/fill-column/packages.el b/modules/ui/fill-column/packages.el index dcc6e381e..24adf3078 100644 --- a/modules/ui/fill-column/packages.el +++ b/modules/ui/fill-column/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/fill-column/packages.el -(package! hl-fill-column :pin "612441e697") +(package! hl-fill-column :pin "43cb3c35a9") From 51944fae0114962fc6385cf5ef71f7de2a15ce0a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:03:47 -0400 Subject: [PATCH 027/167] Refactor dap-mode and fix config load order Now doom's defaults will run *before* a user's after! or use-package! blocks for dap-mode. --- modules/tools/debugger/config.el | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index 4ceb75c96..dbf79387f 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -27,13 +27,13 @@ (use-package! dap-mode :when (featurep! :tools lsp) + :hook (dap-mode . dap-tooltip-mode) :after lsp-mode + :demand t :preface - (add-hook 'dap-mode-hook #'dap-ui-mode) ; use a hook so users can remove it (setq dap-breakpoints-file (concat doom-etc-dir "dap-breakpoints") dap-utils-extension-path (concat doom-etc-dir "dap-extension/")) :config - (dap-mode 1) (dolist (module '(((:lang . cc) ccls dap-lldb dap-gdb-lldb) ((:lang . elixir) elixir-mode dap-elixir) ((:lang . go) go-mode dap-go) @@ -52,7 +52,14 @@ (require 'dap-chrome) (require 'dap-firefox) (when IS-WINDOWS - (require 'dap-edge))))) + (require 'dap-edge)))) + + (dap-mode 1)) + + +(use-package! dap-ui-mode + :hook (dap-mode . dap-ui-mode) + :hook (dap-ui-mode . dap-ui-controls-mode)) (use-package! realgud From 4d3fdcfdcd8841ff276e120f5b02ce2797b5e867 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:05:15 -0400 Subject: [PATCH 028/167] Bump :tools debugger emacs-lsp/dap-mode@e2086fc -> emacs-lsp/dap-mode@0b9c8f2 realgud/realgud@94f2835 -> realgud/realgud@b854e04 --- modules/tools/debugger/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tools/debugger/packages.el b/modules/tools/debugger/packages.el index 139f8006b..b24186232 100644 --- a/modules/tools/debugger/packages.el +++ b/modules/tools/debugger/packages.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/debugger/packages.el -(when (package! realgud :pin "94f2835933") +(when (package! realgud :pin "b854e040e0") (when (featurep! :lang javascript) (package! realgud-trepan-ni :pin "6e9cac5e80"))) (when (featurep! :tools lsp) - (package! dap-mode :pin "e2086fc9fb")) + (package! dap-mode :pin "0b9c8f28ad")) From 944432eedf8c7665d310f3ca81610ef5ce55e089 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:06:23 -0400 Subject: [PATCH 029/167] Bump :ui modeline seagle0128/doom-modeline@b449558 -> seagle0128/doom-modeline@0ce0acd --- modules/ui/modeline/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/modeline/packages.el b/modules/ui/modeline/packages.el index a17eabc0a..4a8eae288 100644 --- a/modules/ui/modeline/packages.el +++ b/modules/ui/modeline/packages.el @@ -2,7 +2,7 @@ ;;; ui/modeline/packages.el (unless (featurep! +light) - (package! doom-modeline :pin "b44955841a")) + (package! doom-modeline :pin "0ce0acd7bc")) (package! anzu :pin "3e34fb3df5") (when (featurep! :editor evil) (package! evil-anzu :pin "9bca6ca14d")) From 1bc65ab98004d41b7babb2aca119202cba2abf5a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:11:55 -0400 Subject: [PATCH 030/167] Bump :lang emacs-lisp jorgenschaefer/emacs-buttercup@b360e35 -> jorgenschaefer/emacs-buttercup@a91f282 xuchunyang/elisp-demos@0d74766 -> xuchunyang/elisp-demos@57dd4ae --- modules/lang/emacs-lisp/packages.el | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/lang/emacs-lisp/packages.el b/modules/lang/emacs-lisp/packages.el index 38adeaf2f..f953c3662 100644 --- a/modules/lang/emacs-lisp/packages.el +++ b/modules/lang/emacs-lisp/packages.el @@ -7,9 +7,8 @@ (package! macrostep :pin "424e3734a1") (package! overseer :pin "02d49f582e") (package! elisp-def :pin "368b04da68") -(package! elisp-demos :pin "0d74766f0c") - +(package! elisp-demos :pin "57dd4ae3e4") (when (featurep! :checkers syntax) (package! flycheck-cask :pin "3457ae553c")) -(package! buttercup :pin "b360e35017") +(package! buttercup :pin "a91f282025") From efb30ac5a50aef8b68d549892e606a66f0cf88be Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:13:30 -0400 Subject: [PATCH 031/167] Bump :term vterm akermu/emacs-libvterm@996c535 -> akermu/emacs-libvterm@aa512b8 --- modules/term/vterm/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/term/vterm/packages.el b/modules/term/vterm/packages.el index 3c0e59afa..de92a1673 100644 --- a/modules/term/vterm/packages.el +++ b/modules/term/vterm/packages.el @@ -3,4 +3,4 @@ (package! vterm :built-in 'prefer - :pin "996c535b9c") + :pin "aa512b8351") From 45aa7a06531608fa311502a7b750c9a80603ebac Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:14:21 -0400 Subject: [PATCH 032/167] Bump :tools lookup jacktasia/dumb-jump@e8e9b0c -> jacktasia/dumb-jump@73b2b48 --- modules/tools/lookup/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tools/lookup/packages.el b/modules/tools/lookup/packages.el index 7b7ecf701..f5f4d7d62 100644 --- a/modules/tools/lookup/packages.el +++ b/modules/tools/lookup/packages.el @@ -8,7 +8,7 @@ (package! helm)) ;; -(package! dumb-jump :pin "e8e9b0c2d1") +(package! dumb-jump :pin "73b2b48fda") (when (featurep! :completion ivy) (package! ivy-xref :pin "3d4c35fe2b")) (when (featurep! :completion helm) From 5ebc8403087c667c8b1da4cdcb2dfb79869b1123 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:15:07 -0400 Subject: [PATCH 033/167] Bump :tools lsp emacs-lsp/lsp-mode@6671128 -> emacs-lsp/lsp-mode@e8e52fd --- modules/tools/lsp/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tools/lsp/packages.el b/modules/tools/lsp/packages.el index ef113251a..70e65dead 100644 --- a/modules/tools/lsp/packages.el +++ b/modules/tools/lsp/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/lsp/packages.el -(package! lsp-mode :pin "6671128422") +(package! lsp-mode :pin "e8e52fd4b1") (package! lsp-ui :pin "242dfe859c") (when (featurep! :completion company) (package! company-lsp :pin "f921ffa0cd")) From 45230c64b9a85311973fcfc528235bdc40bed301 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:16:53 -0400 Subject: [PATCH 034/167] Bump :lang go dominikh/go-mode.el@85a20da -> dominikh/go-mode.el@10d6ab4 mdempsky/gocode@939b4a6 -> mdempsky/gocode@4acdcbd --- modules/lang/go/packages.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/lang/go/packages.el b/modules/lang/go/packages.el index 88961221b..fe58f0329 100644 --- a/modules/lang/go/packages.el +++ b/modules/lang/go/packages.el @@ -2,14 +2,14 @@ ;;; lang/go/packages.el (package! go-eldoc :pin "cbbd2ea1e9") -(package! go-guru :pin "85a20dac6c") -(package! go-mode :pin "85a20dac6c") +(package! go-guru :pin "10d6ab43d9") +(package! go-mode :pin "10d6ab43d9") (package! gorepl-mode :pin "6a73bf352e") (package! go-tag :pin "59b243f2fa") (package! go-gen-test :pin "44c202ac97") (when (featurep! :completion company) - (package! company-go :pin "939b4a677f")) + (package! company-go :pin "4acdcbdea7")) (when (featurep! :checkers syntax) (package! flycheck-golangci-lint :pin "8e446c6831")) From e62f64d732eaf78093c7de24ad2227633a051c74 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:22:10 -0400 Subject: [PATCH 035/167] Encourage +lsp for :lang go #1245 The non-LSP stack (gocode) appears to be unmaintained and is a poor experience. Could use some help from go users to figure out which of the dependencies in the lang/go's readme should be installed with gopls. --- init.example.el | 2 +- modules/lang/go/README.org | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/init.example.el b/init.example.el index 2ffe28979..be49b185d 100644 --- a/init.example.el +++ b/init.example.el @@ -121,7 +121,7 @@ ;;faust ; dsp, but you get to keep your soul ;;fsharp ; ML stands for Microsoft's Language ;;fstar ; (dependent) types and (monadic) effects and Z3 - ;;go ; the hipster dialect + ;;(go +lsp) ; the hipster dialect ;;(haskell +dante) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; diff --git a/modules/lang/go/README.org b/modules/lang/go/README.org index 04ea402fa..f16d71788 100644 --- a/modules/lang/go/README.org +++ b/modules/lang/go/README.org @@ -15,7 +15,8 @@ - [[#troubleshooting][Troubleshooting]] * Description -This module adds [[https://golang.org][Go]] support. +This module adds [[https://golang.org][Go]] support, with optional (but recommended) LSP support via +[[https://github.com/golang/tools/blob/master/gopls/README.md][gopls]]. + Code completion (~gocode~) + Documentation lookup (~godoc~) @@ -30,7 +31,8 @@ This module adds [[https://golang.org][Go]] support. + Code checking (~flycheck-golangci-lint~) ** Module Flags -+ =+lsp= Enables integration for the gopls LSP server. ++ =+lsp= Enables integration for the gopls LSP server. It is highly recommended + you use this, as the non-LSP experience is deprecated (and poor). ** Plugins + [[https://github.com/dominikh/go-mode.el][go-mode]] @@ -38,7 +40,7 @@ This module adds [[https://golang.org][Go]] support. + [[https://github.com/dominikh/go-mode.el][go-guru]] + [[https://github.com/manute/gorepl-mode][gorepl-mode]] + [[https://github.com/brantou/emacs-go-tag][go-tag]] -+ [[https://github.com/mdempsky/gocode][company-go]]* ++ [[https://github.com/mdempsky/gocode][company-go]]* =DEPRECATED= + [[https://github.com/s-kostyaev/go-gen-test][go-gen-test]] + [[https://github.com/weijiangan/flycheck-golangci-lint][flycheck-golangci-lint]] (if =:checkers syntax= is enabled) From f47de2064c93f9d819b9a18f71f4c3e9d7cac40c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:42:05 -0400 Subject: [PATCH 036/167] Remove redundant org-pdftools-store-link hook This is already covered by the :store handler set with org-link-set-parameters. --- modules/lang/org/config.el | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 8bfc45151..5ad534940 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -818,7 +818,6 @@ compelling reason, so..." :complete #'org-pdftools-complete-link :store #'org-pdftools-store-link :export #'org-pdftools-export) - (add-hook 'org-store-link-functions #'org-pdftools-store-link) (add-hook! 'org-open-link-functions (defun +org-open-old-pdf-links-fn (link) (let ((regexp "^pdf\\(?:tools\\|view\\):")) From b82068cdcc45bd37a4ff362773f19ca840ec697f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 22:45:16 -0400 Subject: [PATCH 037/167] +org-open-old-pdf-links-fn -> +org-open-legacy-pdf-links-fn Clearer name and added a docstring to explain its purpose. --- modules/lang/org/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 5ad534940..15aa2c126 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -819,7 +819,8 @@ compelling reason, so..." :store #'org-pdftools-store-link :export #'org-pdftools-export) (add-hook! 'org-open-link-functions - (defun +org-open-old-pdf-links-fn (link) + (defun +org-open-legacy-pdf-links-fn (link) + "Open pdftools:* and pdfviews:* links as if they were pdf:* links." (let ((regexp "^pdf\\(?:tools\\|view\\):")) (when (string-match-p regexp link) (org-pdftools-open (replace-regexp-in-string regexp "" link)) From afcdae4fff28ab385da93d28cb819c9cd1769597 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 17 Apr 2020 23:08:17 -0400 Subject: [PATCH 038/167] Fix invoking helpful-key from evil-ex This should probably be reported upstream, but to whom? Helpful? Evil? The Doom slayer? --- modules/editor/evil/config.el | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index 3528964fd..3dfb39fd3 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -144,6 +144,15 @@ directives. By default, this only recognizes C directives.") (when (eq major-mode 'fundamental-mode) (hack-local-variables))) + ;; HACK Invoking helpful from evil-ex throws a "No recursive edit is in + ;; progress" error because, between evil-ex and helpful, + ;; `abort-recursive-edit' gets called one time too many. + (defadvice! +evil--fix-helpful-key-in-evil-ex-a (key-sequence) + :before #'helpful-key + (when (evil-ex-p) + (run-at-time 0.1 nil #'helpful-key key-sequence) + (abort-recursive-edit))) + ;; Make ESC (from normal mode) the universal escaper. See `doom-escape-hook'. (advice-add #'evil-force-normal-state :after #'+evil-escape-a) From 2dc074664057e08ee40bbb1f7e9c76658e9f0390 Mon Sep 17 00:00:00 2001 From: yoavm448 Date: Sat, 18 Apr 2020 19:07:02 +0300 Subject: [PATCH 039/167] ui/zen: register org-done as fixed pitch --- modules/ui/zen/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ui/zen/config.el b/modules/ui/zen/config.el index 0f02441a2..8d9fc576d 100644 --- a/modules/ui/zen/config.el +++ b/modules/ui/zen/config.el @@ -48,6 +48,7 @@ 'org-todo-keyword-kill 'org-todo-keyword-outd 'org-todo + 'org-done 'org-indent 'font-lock-comment-face 'line-number From 141a649e04c1bdd18a015c094f11ae3d4f61d099 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 12:51:00 -0400 Subject: [PATCH 040/167] Revert afca8f14a Fix #2932 --- modules/lang/org/autoload/contrib-dragndrop.el | 10 ---------- modules/lang/org/contrib/dragndrop.el | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/modules/lang/org/autoload/contrib-dragndrop.el b/modules/lang/org/autoload/contrib-dragndrop.el index 1adc86278..618790cee 100644 --- a/modules/lang/org/autoload/contrib-dragndrop.el +++ b/modules/lang/org/autoload/contrib-dragndrop.el @@ -10,13 +10,3 @@ (rassq-delete-all '+org-dragndrop-download-dnd-fn (copy-alist dnd-protocol-alist)))) (dnd-handle-one-url nil action uri)))) - -;;;###autoload -(defun +org-dragndrop-image-fn (protocol link _description) - "Return the image associated with the current attachment." - (let ((file (expand-file-name link org-attach-id-dir))) - (when (and (file-exists-p file) (image-type-from-file-name file)) - (with-temp-buffer - (insert-file-contents file) - (goto-char (point-min)) - (buffer-substring-no-properties (point) (point-max)))))) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index e845332aa..84e2671e1 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -17,7 +17,8 @@ (after! org ;; A shorter link to attachments (+org-def-link "download" org-attach-id-dir) - (org-link-set-parameters "download" :image-data-fun #'+org-dragndrop-image-fn)) + (setf (alist-get "download" org-link-abbrev-alist nil nil #'equal) + (abbreviate-file-name org-attach-id-dir))) :config (setq org-download-image-dir org-attach-id-dir org-download-link-format "[[download:%s]]\n" From a0fd06e96b3d9387dcd91d0c0c8b187c22e92131 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 18:59:22 -0400 Subject: [PATCH 041/167] Mention 'void-function org-time-add' error on Gentoo --- modules/email/mu4e/README.org | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/email/mu4e/README.org b/modules/email/mu4e/README.org index d87a9eefd..9f4a95172 100644 --- a/modules/email/mu4e/README.org +++ b/modules/email/mu4e/README.org @@ -19,6 +19,7 @@ - [[#mbsync][mbsync]] - [[#troubleshooting][Troubleshooting]] - [[#no-such-file-or-directory-mu4e][=No such file or directory, mu4e=]] + - [[#void-function-org-time-add-error-on-gentoo][~(void-function org-time-add)~ error on Gentoo]] * Description This module makes Emacs an email client, using ~mu4e~. @@ -139,3 +140,11 @@ Then configure Emacs to use your email address: ** =No such file or directory, mu4e= You will get =No such file or directory, mu4e= errors if you don't run ~doom sync~ after installing =mu= through your package manager. +** ~(void-function org-time-add)~ error on Gentoo +Gentoo users will see this error because [[https://gitweb.gentoo.org/repo/gentoo.git/tree/net-mail/mu/files/70mu-gentoo.el#n2][the =net-mail/mu= package eagerly loads +=mu4e= (which pulls in =org=) much too early]]; before Emacs reads =~/.emacs.d=. +So early, that it loads the built-in version of org-mode, rather than the newer +version that Doom installs. + +Later versions of the =net-mail/mu= package have [[https://gitweb.gentoo.org/repo/gentoo.git/commit/net-mail/mu?id=770e1fccb119fbce8ba6d16021a3598123f212ff][fixed this issue]], but you may +need to switch to the unstable build of =net-mail/mu= to see it. From 09f617de8ba7be09f5567b25f8b3149c02803b56 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 19:06:47 -0400 Subject: [PATCH 042/167] tools/debugger: move dap-mode behind +lsp flag + To make this consistent with other opt-in LSP integration + Install posframe for dap-ui-mode to work (#2934) Fixes #2934 --- docs/modules.org | 2 +- modules/tools/debugger/config.el | 75 +++++++++++++++--------------- modules/tools/debugger/packages.el | 5 +- 3 files changed, 42 insertions(+), 40 deletions(-) diff --git a/docs/modules.org b/docs/modules.org index 276f7ebb4..4a8dc11d4 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -156,7 +156,7 @@ Modules that offer terminal emulation. Small modules that give Emacs access to external tools & services. + ansible - TODO -+ debugger - A (nigh-)universal debugger in Emacs ++ debugger =+lsp= - A (nigh-)universal debugger in Emacs + [[file:../modules/tools/direnv/README.org][direnv]] - TODO + [[file:../modules/tools/docker/README.org][docker]] =+lsp= - TODO + [[file:../modules/tools/editorconfig/README.org][editorconfig]] - TODO diff --git a/modules/tools/debugger/config.el b/modules/tools/debugger/config.el index dbf79387f..f86585fdf 100644 --- a/modules/tools/debugger/config.el +++ b/modules/tools/debugger/config.el @@ -25,43 +25,6 @@ gdb-many-windows t) -(use-package! dap-mode - :when (featurep! :tools lsp) - :hook (dap-mode . dap-tooltip-mode) - :after lsp-mode - :demand t - :preface - (setq dap-breakpoints-file (concat doom-etc-dir "dap-breakpoints") - dap-utils-extension-path (concat doom-etc-dir "dap-extension/")) - :config - (dolist (module '(((:lang . cc) ccls dap-lldb dap-gdb-lldb) - ((:lang . elixir) elixir-mode dap-elixir) - ((:lang . go) go-mode dap-go) - ((:lang . java) lsp-java dap-java) - ((:lang . php) php-mode dap-php) - ((:lang . python) python dap-python) - ((:lang . ruby) ruby-mode dap-ruby) - ((:lang . rust) rust-mode dap-lldb))) - (when (doom-module-p (caar module) (cdar module) '+lsp) - (with-eval-after-load (nth 1 module) - (mapc #'require (cddr module))))) - - (when (featurep! :lang javascript +lsp) - (with-eval-after-load 'js2-mode - (require 'dap-node) - (require 'dap-chrome) - (require 'dap-firefox) - (when IS-WINDOWS - (require 'dap-edge)))) - - (dap-mode 1)) - - -(use-package! dap-ui-mode - :hook (dap-mode . dap-ui-mode) - :hook (dap-ui-mode . dap-ui-controls-mode)) - - (use-package! realgud :defer t :init @@ -123,3 +86,41 @@ (if cmd-buf (switch-to-buffer cmd-buf)) (message "Error running command: %s" (mapconcat #'identity cmd-args " ")))) cmd-buf))) + + +(use-package! dap-mode + :when (featurep! +lsp) + :hook (dap-mode . dap-tooltip-mode) + :after lsp-mode + :demand t + :preface + (setq dap-breakpoints-file (concat doom-etc-dir "dap-breakpoints") + dap-utils-extension-path (concat doom-etc-dir "dap-extension/")) + :config + (dolist (module '(((:lang . cc) ccls dap-lldb dap-gdb-lldb) + ((:lang . elixir) elixir-mode dap-elixir) + ((:lang . go) go-mode dap-go) + ((:lang . java) lsp-java dap-java) + ((:lang . php) php-mode dap-php) + ((:lang . python) python dap-python) + ((:lang . ruby) ruby-mode dap-ruby) + ((:lang . rust) rust-mode dap-lldb))) + (when (doom-module-p (caar module) (cdar module) '+lsp) + (with-eval-after-load (nth 1 module) + (mapc #'require (cddr module))))) + + (when (featurep! :lang javascript +lsp) + (with-eval-after-load 'js2-mode + (require 'dap-node) + (require 'dap-chrome) + (require 'dap-firefox) + (when IS-WINDOWS + (require 'dap-edge)))) + + (dap-mode 1)) + + +(use-package! dap-ui-mode + :when (featurep! +lsp) + :hook (dap-mode . dap-ui-mode) + :hook (dap-ui-mode . dap-ui-controls-mode)) diff --git a/modules/tools/debugger/packages.el b/modules/tools/debugger/packages.el index b24186232..9321e25fb 100644 --- a/modules/tools/debugger/packages.el +++ b/modules/tools/debugger/packages.el @@ -5,5 +5,6 @@ (when (featurep! :lang javascript) (package! realgud-trepan-ni :pin "6e9cac5e80"))) -(when (featurep! :tools lsp) - (package! dap-mode :pin "0b9c8f28ad")) +(when (featurep! +lsp) + (package! dap-mode :pin "0b9c8f28ad") + (package! posframe :pin "e62e584268")) From d5f83d712340ceb8bd925d41bf79649e14afbbfb Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 20:28:03 -0400 Subject: [PATCH 043/167] Extend nav-flash-face to edge of window in Emacs 27 --- modules/ui/nav-flash/config.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ui/nav-flash/config.el b/modules/ui/nav-flash/config.el index ddede5f03..862be30d2 100644 --- a/modules/ui/nav-flash/config.el +++ b/modules/ui/nav-flash/config.el @@ -5,6 +5,10 @@ org-find-file org-find-file-at-mouse) "A list of commands that should not trigger nav-flash.") + +;; +;;; Packages + (use-package! nav-flash :defer t :init @@ -30,4 +34,7 @@ (advice-add #'evil-window-bottom :after #'+nav-flash-blink-cursor-a) ;; Bound to `ga' for evil users - (advice-add #'what-cursor-position :after #'+nav-flash-blink-cursor-a)) + (advice-add #'what-cursor-position :after #'+nav-flash-blink-cursor-a) + + :config + (if EMACS27+ (set-face-extend 'nav-flash-face t))) From cfc5e1b0a2c9f7ca1a2770c217323d4c25d0ee86 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 20:37:50 -0400 Subject: [PATCH 044/167] Fix link to pdf-tools in lang/org readme --- modules/lang/org/README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/README.org b/modules/lang/org/README.org index b7d86b6f9..42f37af9f 100644 --- a/modules/lang/org/README.org +++ b/modules/lang/org/README.org @@ -70,7 +70,7 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode Emacs can be used for presentations. + =+roam= Enables org-roam integration. + =+noter= Enables org-noter integration. Keeps notes in sync with a document. - Requires [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][pdf-tools]] (=:tools pdf=) or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][DocView]] or [[https://github.com/wasamasa/nov.el][nov.el]] to be enabled. + Requires [[https://github.com/politza/pdf-tools][pdf-tools]] (=:tools pdf=) or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][DocView]] or [[https://github.com/wasamasa/nov.el][nov.el]] to be enabled. ** Plugins + [[https://github.com/hniksic/emacs-htmlize][htmlize]] From ce93b6d1448ce18d27a11e2598f61d3a590d9098 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 20:42:31 -0400 Subject: [PATCH 045/167] Alphabetize org flags in readme --- modules/lang/org/README.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/org/README.org b/modules/lang/org/README.org index 42f37af9f..abd177491 100644 --- a/modules/lang/org/README.org +++ b/modules/lang/org/README.org @@ -64,13 +64,13 @@ https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode + =+ipython= (**DEPRECATED**) Enables ipython integration for babel. + =+journal= Enables [[https://github.com/bastibe/org-journal][org-journal]] integration. + =+jupyter= Enables Jupyter integration for babel. ++ =+noter= Enables org-noter integration. Keeps notes in sync with a document. + Requires [[https://github.com/politza/pdf-tools][pdf-tools]] (=:tools pdf=) or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][DocView]] or [[https://github.com/wasamasa/nov.el][nov.el]] to be enabled. + =+pandoc= Enables pandoc integration into the Org exporter. + =+pomodoro= Enables a pomodoro timer for clocking time on tasks. + =+present= Enables integration with reveal.js, beamer and org-tree-slide, so Emacs can be used for presentations. + =+roam= Enables org-roam integration. -+ =+noter= Enables org-noter integration. Keeps notes in sync with a document. - Requires [[https://github.com/politza/pdf-tools][pdf-tools]] (=:tools pdf=) or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html][DocView]] or [[https://github.com/wasamasa/nov.el][nov.el]] to be enabled. ** Plugins + [[https://github.com/hniksic/emacs-htmlize][htmlize]] From 5d51d4e4a662410679a5678fcc3f5251a8f33a66 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Apr 2020 21:08:41 -0400 Subject: [PATCH 046/167] Fix emmet for non-evil users --- modules/lang/web/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/web/config.el b/modules/lang/web/config.el index ea094a792..a1dccab9b 100644 --- a/modules/lang/web/config.el +++ b/modules/lang/web/config.el @@ -14,8 +14,8 @@ (setq-hook! 'rjsx-mode-hook emmet-expand-jsx-className? t) (map! :map emmet-mode-keymap :v [tab] #'emmet-wrap-with-markup - :i [tab] #'+web/indent-or-yas-or-emmet-expand - :i "M-E" #'emmet-expand-line)) + [tab] #'+web/indent-or-yas-or-emmet-expand + "M-E" #'emmet-expand-line)) ;; From c96303830835ed49b6803a5288379891d6ab7cfc Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 19 Apr 2020 14:39:45 -0400 Subject: [PATCH 047/167] Use straight master branch by default raxod502/straight.el@d28fd41930 causes breakage; preventing users from installing Doom. It's about time we stop living dangerously and use straight's master branch instead. Addresses #2937 --- core/core-packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core-packages.el b/core/core-packages.el index 388a5b16c..416e0f2d0 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -94,7 +94,7 @@ missing) and shouldn't be deleted.") ;;; Straight (setq straight-base-dir doom-local-dir - straight-repository-branch "develop" + straight-repository-branch "master" straight-cache-autoloads nil ; we already do this, and better. ;; Doom doesn't encourage you to modify packages in place. Disabling this ;; makes 'doom sync' instant (once everything set up), which is much nicer From a36afa5136b519b1e57f90ac10b4b7377ce5d196 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 19 Apr 2020 20:34:47 -0400 Subject: [PATCH 048/167] Remove redundant dtrt-indent mapping It was upstreamed in jscheid/dtrt-indent#51 --- core/core-editor.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/core-editor.el b/core/core-editor.el index a6f194cf9..b08f53670 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -383,8 +383,6 @@ files, so we replace calls to `pp' with the much faster `prin1'." ;; Reduced from the default of 5000 for slightly faster analysis (setq dtrt-indent-max-lines 2000) - ;; Add support for more languages - (add-to-list 'dtrt-indent-hook-mapping-list '(typescript-mode javascript typescript-indent-level)) ;; always keep tab-width up-to-date (push '(t tab-width) dtrt-indent-hook-generic-mapping-list) From 3a5ef316fc59bff81f1fae3ae29aaa8006734557 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 19 Apr 2020 22:04:12 -0400 Subject: [PATCH 049/167] Fix #2938: wrong-type-argument stringp error on org-journal --- modules/lang/org/contrib/journal.el | 1 + mytest | 0 2 files changed, 1 insertion(+) create mode 100644 mytest diff --git a/modules/lang/org/contrib/journal.el b/modules/lang/org/contrib/journal.el index 5457d3274..b2b551e16 100644 --- a/modules/lang/org/contrib/journal.el +++ b/modules/lang/org/contrib/journal.el @@ -30,6 +30,7 @@ "Activate `org-journal-mode', maybe." (and (eq major-mode 'org-mode) (stringp buffer-file-name) + (stringp org-journal-file-pattern) (string-match-p org-journal-file-pattern buffer-file-name) (let ((org-mode-hook (remq '+org-journal-mode-maybe org-mode-hook))) (org-journal-mode)))) diff --git a/mytest b/mytest new file mode 100644 index 000000000..e69de29bb From 0a26a22d5934bd4d098a9e8536843a3c334cf2b1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 20 Apr 2020 22:52:51 -0400 Subject: [PATCH 050/167] Fix incorrect M-RET keybind in ivy readme --- modules/completion/ivy/README.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/ivy/README.org b/modules/completion/ivy/README.org index b21b92c61..ea1599519 100644 --- a/modules/completion/ivy/README.org +++ b/modules/completion/ivy/README.org @@ -136,7 +136,7 @@ These keybindings are available while a search is active: | =C-c C-o= | Open a buffer with your search results | | =C-c C-e= | Open a writable buffer of your search results | | =C-SPC= | Preview the current candidate | -| =M-RET= | Open the selected candidate in other-window | +| =C-RET= | Open the selected candidate in other-window | Changes to the resulting wgrep buffer (opened by =C-c C-e=) can be committed with =C-c C-c= and aborted with =C-c C-k= (alternatively =ZZ= and =ZQ=, for evil From 27c64a3abd45433defbf07238c474328cefcbfae Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 21 Apr 2020 13:47:26 -0400 Subject: [PATCH 051/167] Fix #2946: use powerthesaurus fork --- modules/tools/lookup/packages.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/tools/lookup/packages.el b/modules/tools/lookup/packages.el index f5f4d7d62..59d3251a1 100644 --- a/modules/tools/lookup/packages.el +++ b/modules/tools/lookup/packages.el @@ -28,7 +28,12 @@ (if IS-MAC (package! osx-dictionary :pin "1b79ff64c7") (package! define-word :pin "d8c76d503b") - (package! powerthesaurus :pin "81a262ec0c") + ;; HACK Fix #2945: the main package is broken (see + ;; SavchenkoValeriy/emacs-powerthesaurus). We use this fork until it is + ;; merged. + (package! powerthesaurus + :recipe (:host github :repo "maxchaos/emacs-powerthesaurus" :branch "pt-api-change") + :pin "81a262ec0c") (when (featurep! +offline) (package! wordnut :pin "feac531404") (package! synosaurus :pin "14d34fc92a")))) From b3bbcf61ac33ad07e9889fd23af300dd479ed342 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 21 Apr 2020 11:02:39 -0700 Subject: [PATCH 052/167] Add full name to :cap Makes it available as :capture which is a slightly easier to understand name. --- modules/editor/evil/+commands.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/evil/+commands.el b/modules/editor/evil/+commands.el index 9277c23ec..3bf6cf5e5 100644 --- a/modules/editor/evil/+commands.el +++ b/modules/editor/evil/+commands.el @@ -98,7 +98,7 @@ (evil-ex-define-cmd "tabsave" #'+workspace:save) ;;; Org-mode -(evil-ex-define-cmd "cap" #'org-capture) +(evil-ex-define-cmd "cap[ture]" #'org-capture) ;;; ibuffer (when (featurep! :emacs ibuffer) From 0c3e11766c5c0eff7e4f6cb113c69e0deffa9b07 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 21 Apr 2020 17:08:34 -0400 Subject: [PATCH 053/167] Fix #2949: swap TLS 1.3 & 1.2 in gnutls-algorithm-priority --- core/core.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/core.el b/core/core.el index 9a9b5d0db..5c93aa91b 100644 --- a/core/core.el +++ b/core/core.el @@ -196,11 +196,12 @@ users).") (setq gnutls-verify-error (not (getenv "INSECURE")) gnutls-algorithm-priority (when (boundp 'libgnutls-version) - (concat "SECURE128:+SECURE192:-VERS-ALL:+VERS-TLS1.2" + (concat "SECURE128:+SECURE192:-VERS-ALL" (if (and (not IS-WINDOWS) (not (version< emacs-version "26.3")) (>= libgnutls-version 30605)) - ":+VERS-TLS1.3"))) + ":+VERS-TLS1.3") + ":+VERS-TLS1.2")) ;; `gnutls-min-prime-bits' is set based on recommendations from ;; https://www.keylength.com/en/4/ gnutls-min-prime-bits 3072 From 6315984ae6423af1a39980e2ec8af7243bd4b1b3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 21 Apr 2020 18:20:34 -0400 Subject: [PATCH 054/167] Add workaround for tigersoldier/company-lsp#128 Fix from emacs-lsp/lsp-python-ms#79 --- modules/tools/lsp/config.el | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 888c9c6fe..3c4aabfaf 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -213,6 +213,39 @@ auto-killed (which is a potentially expensive process)." :references 'lsp-ui-peek-find-references))) +(use-package! company-lsp + :defer t + :config + (setq company-lsp-cache-candidates 'auto) + ;; HACK Fix tigersoldier/company-lsp#128 causing company-lsp results to + ;; display candidates that are unrelated to the prefix. Source: + ;; emacs-lsp/lsp-python-ms#79 + (add-to-list 'company-lsp-filter-candidates '(mspyls . t)) + (defadvice! +company---fix-lsp-caching-on-competion-a (response prefix) + :override #'company-lsp--on-completion + (let* ((incomplete (and (hash-table-p response) (gethash "isIncomplete" response))) + (items (cond ((hash-table-p response) (gethash "items" response)) + ((sequencep response) response))) + (candidates (mapcar (lambda (item) + (company-lsp--make-candidate item prefix)) + (lsp--sort-completions items))) + (server-id (lsp--client-server-id (lsp--workspace-client lsp--cur-workspace))) + (should-filter (or + ;; CHANGE BEGIN + (eq company-lsp-cache-candidates t) + ;; CHANGE END + (and (null company-lsp-cache-candidates) + (company-lsp--get-config company-lsp-filter-candidates server-id))))) + (when (null company-lsp--completion-cache) + (add-hook 'company-completion-cancelled-hook #'company-lsp--cleanup-cache nil t) + (add-hook 'company-completion-finished-hook #'company-lsp--cleanup-cache nil t)) + (when (eq company-lsp-cache-candidates 'auto) + (company-lsp--cache-put prefix (company-lsp--cache-item-new candidates incomplete))) + (if should-filter + (company-lsp--filter-candidates candidates prefix) + candidates)))) + + (use-package! helm-lsp :when (featurep! :completion helm) :commands helm-lsp-workspace-symbol helm-lsp-global-workspace-symbol) From 7ed9ee2ae5b66ecd8c0fe77aa5c6456c1b749ba5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 21 Apr 2020 23:19:17 -0400 Subject: [PATCH 055/167] Bind m ' -> markdown-edit-code-block For consistency with org and latex. --- modules/lang/markdown/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/markdown/config.el b/modules/lang/markdown/config.el index ddce13f34..07003b237 100644 --- a/modules/lang/markdown/config.el +++ b/modules/lang/markdown/config.el @@ -70,6 +70,7 @@ capture, the end position, and the output buffer.") (map! :map markdown-mode-map :localleader + "'" #'markdown-edit-code-block "o" #'markdown-open "p" #'markdown-preview "e" #'markdown-export From f7ce75bbe91e3ced17953f2ffc4dcaef87ba526b Mon Sep 17 00:00:00 2001 From: Eric Dallo Date: Tue, 21 Apr 2020 23:05:28 -0300 Subject: [PATCH 056/167] Bump :lang dart amake/flutter.el@ec92a4d -> amake/flutter.el@293b722 emacs-lsp/lsp-dart@064d47b -> emacs-lsp/lsp-dart@4cd73b7 --- modules/lang/dart/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/dart/packages.el b/modules/lang/dart/packages.el index 44d69fa9a..30a0f8be8 100644 --- a/modules/lang/dart/packages.el +++ b/modules/lang/dart/packages.el @@ -4,8 +4,8 @@ (package! dart-mode :pin "04fcd649f1") (when (featurep! +lsp) - (package! lsp-dart :pin "064d47bad3")) + (package! lsp-dart :pin "4cd73b77f4")) (when (featurep! +flutter) - (package! flutter :pin "ec92a4df84") + (package! flutter :pin "293b7225b9") (package! hover :pin "6f9ed1a651")) From 4891a7151f452958b95e88054300b9ce2521a9db Mon Sep 17 00:00:00 2001 From: Viktor Astakhov Date: Wed, 22 Apr 2020 20:48:00 +0300 Subject: [PATCH 057/167] Add Poetry support --- modules/lang/python/README.org | 5 +++++ modules/lang/python/config.el | 5 +++++ modules/lang/python/doctor.el | 4 ++++ modules/lang/python/packages.el | 2 ++ 4 files changed, 16 insertions(+) diff --git a/modules/lang/python/README.org b/modules/lang/python/README.org index 228ae963e..ebb303ac2 100644 --- a/modules/lang/python/README.org +++ b/modules/lang/python/README.org @@ -25,6 +25,8 @@ Adds Python support to Doom Emacs. + ~+lsp~ Language Server Protocol support + ~+pyenv~ Python virtual environment support via [[https://github.com/pyenv/pyenv][pyenv]] + ~+conda~ Python virtual environment support via [[https://conda.io/en/latest/][Conda]] ++ ~+poetry~ Python packaging, dependency management, and virtual environment + support via [[https://python-poetry.org/][Poetry]] + ~+cython~ Cython files support via [[https://github.com/cython/cython/blob/master/Tools/cython-mode.el][Cython-mode]] ** Plugins @@ -41,6 +43,8 @@ Adds Python support to Doom Emacs. + [[https://github.com/necaris/conda.el][conda]]* + ~+pyenv~ + [[https://github.com/pythonic-emacs/pyenv-mode][pyenv]]* ++ ~+poetry~ + + [[https://github.com/galaunay/poetry.el][poetry]]* + ~+lsp~ and ~:tools lsp~ + [[https://github.com/emacs-lsp/lsp-mode][lsp]] + [[https://github.com/emacs-lsp/lsp-python-ms][lsp-python-ms]]* @@ -67,6 +71,7 @@ This module has no direct prerequisites. Here are some of its soft dependencies. + Python virtual environments install instructions at: + [[https://github.com/pyenv/pyenv][pyenv]] + [[https://conda.io/en/latest/][Conda]] + + [[https://python-poetry.org/][Poetry]] + ~pipenv~ requires [[https://pipenv.readthedocs.io/en/latest/][pipenv]] diff --git a/modules/lang/python/config.el b/modules/lang/python/config.el index 63a833029..8b3073e38 100644 --- a/modules/lang/python/config.el +++ b/modules/lang/python/config.el @@ -280,6 +280,11 @@ called.") 'append)) +(use-package! poetry + :when (featurep! +poetry) + :after python) + + (use-package! lsp-python-ms :when (featurep! +lsp) :after lsp-clients diff --git a/modules/lang/python/doctor.el b/modules/lang/python/doctor.el index e4979e5ea..588d3fb7a 100644 --- a/modules/lang/python/doctor.el +++ b/modules/lang/python/doctor.el @@ -20,6 +20,10 @@ (unless (executable-find "conda") (warn! "Couldn't find conda in your PATH"))) +(when (featurep! +poetry) + (if (not (executable-find "poetry")) + (warn! "Couldn't find poetry in your PATH"))) + (when (featurep! +cython) (unless (executable-find "cython") (warn! "Couldn't find cython. cython-mode will not work."))) diff --git a/modules/lang/python/packages.el b/modules/lang/python/packages.el index ee838e6fd..4788487d6 100644 --- a/modules/lang/python/packages.el +++ b/modules/lang/python/packages.el @@ -24,6 +24,8 @@ (package! pyenv-mode :pin "aec6f2aa28")) (when (featurep! +conda) (package! conda :pin "335474e409")) +(when (featurep! +poetry) + (package! poetry :pin "6dcc9d22ca")) ;; Testing frameworks (package! nose :pin "f852829751") From 083b3b634d9f982ccafa2be4b92a6119d78c2955 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Apr 2020 15:49:23 -0400 Subject: [PATCH 058/167] Sneaky file is sneaky --- mytest | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mytest diff --git a/mytest b/mytest deleted file mode 100644 index e69de29bb..000000000 From e0f8fbee228f6387837229d0ca7d6660eda97d75 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Apr 2020 15:50:17 -0400 Subject: [PATCH 059/167] Fix #2939: pdf-tools config not triggered on pdf-view-mode Because pdf-view can load without pulling in pdf-tools. Closes #2954 --- modules/tools/pdf/config.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/tools/pdf/config.el b/modules/tools/pdf/config.el index a5047ec41..4aa9f3bf9 100644 --- a/modules/tools/pdf/config.el +++ b/modules/tools/pdf/config.el @@ -1,6 +1,6 @@ ;;; tools/pdf/config.el -*- lexical-binding: t; -*- -(use-package! pdf-tools +(use-package! pdf-view :mode ("\\.[pP][dD][fF]\\'" . pdf-view-mode) :magic ("%PDF" . pdf-view-mode) :init @@ -20,9 +20,10 @@ :config (map! :map pdf-view-mode-map :gn "q" #'kill-current-buffer) - (setq-default pdf-view-display-size 'fit-page - pdf-view-use-scaling t - pdf-view-use-imagemagick nil) + (setq-default pdf-view-display-size 'fit-page) + ;; Enable hiDPI support, but at the cost of memory! See politza/pdf-tools#51 + (setq pdf-view-use-scaling t + pdf-view-use-imagemagick nil) ;; Add retina support for MacOS users (when IS-MAC From 3c81d059de14a2e95a2163a8e12b4313f5165264 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Apr 2020 17:25:30 -0400 Subject: [PATCH 060/167] Don't use company-elm if +lsp --- modules/lang/elm/config.el | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/modules/lang/elm/config.el b/modules/lang/elm/config.el index 71c3dd97c..504adbce8 100644 --- a/modules/lang/elm/config.el +++ b/modules/lang/elm/config.el @@ -1,12 +1,10 @@ ;;; lang/elm/config.el -*- lexical-binding: t; -*- (after! elm-mode - (add-hook 'elm-mode-hook #'rainbow-delimiters-mode) - - (when (featurep! +lsp) - (add-hook 'elm-mode-local-vars-hook #'lsp!)) - - (set-company-backend! 'elm-mode 'company-elm) + (if (featurep! +lsp) + (add-hook 'elm-mode-local-vars-hook #'lsp!) + (set-company-backend! 'elm-mode 'company-elm)) + (set-repl-handler! 'elm-mode #'run-elm-interactive) (set-pretty-symbols! 'elm-mode :null "null" @@ -22,4 +20,4 @@ (use-package! flycheck-elm :when (featurep! :checkers syntax) :after elm-mode - :config (add-to-list 'flycheck-checkers 'elm nil #'eq)) + :config (add-to-list 'flycheck-checkers 'elm)) From c4d4780b7b6b436c968dcd2b6b88862b2279eefb Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Apr 2020 19:49:19 -0400 Subject: [PATCH 061/167] Bump :ui indent-guides DarthFennec/highlight-indent-guides@0b10f38 -> DarthFennec/highlight-indent-guides@1b12c7b --- modules/ui/indent-guides/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/indent-guides/packages.el b/modules/ui/indent-guides/packages.el index 3bf737416..3a6856a27 100644 --- a/modules/ui/indent-guides/packages.el +++ b/modules/ui/indent-guides/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/indent-guides/packages.el -(package! highlight-indent-guides :pin "0b10f38c54") +(package! highlight-indent-guides :pin "1b12c7b440") From 0837c56430144b90386f8513f44ffdaf03c2b498 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 03:33:08 -0400 Subject: [PATCH 062/167] Fix loading new themes from face-remapped buffers E.g. If mixed-pitch-mode is enabled and you change themes, then open a new frame, the theme is messed up. Also refactor load-theme advice into one. --- core/core-ui.el | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/core/core-ui.el b/core/core-ui.el index da17eeafe..103404615 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -598,20 +598,25 @@ behavior). Do not set this directly, this is let-bound in `doom-init-theme-h'.") (let ((doom--prefer-theme-elc t)) ; DEPRECATED in Emacs 27 (load-theme doom-theme t))))) -(defadvice! doom--run-load-theme-hooks-a (theme &optional _no-confirm no-enable) - "Set up `doom-load-theme-hook' to run after `load-theme' is called." - :after-while #'load-theme - (unless no-enable - (setq doom-theme theme - doom-init-theme-p t) - (run-hooks 'doom-load-theme-hook))) +(defadvice! doom--load-theme-a (orig-fn theme &optional no-confirm no-enable) + "Run `doom-load-theme-hook' on `load-theme' and fix its issues. -(defadvice! doom--disable-enabled-themes-a (theme &optional _no-confirm no-enable) - "Disable previously enabled themes before loading a new one. -Otherwise, themes can conflict with each other." - :after-while #'load-theme - (unless no-enable - (mapc #'disable-theme (remq theme custom-enabled-themes)))) +1. Disable previously enabled themes. +2. Don't let face-remapping screw up loading the new theme + (*cough*`mixed-pitch-mode'). +3. Record the current theme in `doom-theme'." + :around #'load-theme + ;; HACK Run `load-theme' from an estranged buffer, where we can be assured + ;; that buffer-local face remaps (by `mixed-pitch-mode', for instance) + ;; won't interfere with changing themes. + (with-temp-buffer + (when-let (result (funcall orig-fn theme no-confirm no-enable)) + (unless no-enable + (setq doom-theme theme + doom-init-theme-p t) + (mapc #'disable-theme (remq theme custom-enabled-themes)) + (run-hooks 'doom-load-theme-hook)) + result))) (unless EMACS27+ ;; DEPRECATED Not needed in Emacs 27 From 6c7bd1a94a4e53f18c67c5ab72e80c31efc0c2c2 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 03:44:23 -0400 Subject: [PATCH 063/167] Bump :ui doom hlissner/emacs-solaire-mode@4ac324c -> hlissner/emacs-solaire-mode@adc8c0c --- modules/ui/doom/config.el | 52 +++++++++++++++++++------------------ modules/ui/doom/packages.el | 2 +- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 5b2d0688d..5ae5ddacd 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -27,24 +27,20 @@ :defer t :init (add-hook! 'doom-load-theme-hook :append - (defun +doom-solaire-mode-swap-bg-maybe-h () + (defun +doom-solaire-swap-bg-faces-maybe-h () (when (string-prefix-p "doom-" (symbol-name doom-theme)) (require 'solaire-mode) - (solaire-mode-swap-bg)))) + (solaire-mode-swap-bg))) + #'solaire-global-mode) :config - ;; fringe can become unstyled when deleting or focusing frames - (add-hook 'focus-in-hook #'solaire-mode-reset) - ;; Prevent color glitches when reloading either DOOM or loading a new theme - (add-hook! '(doom-load-theme-hook doom-reload-hook) :append - #'solaire-mode-reset) ;; org-capture takes an org buffer and narrows it. The result is erroneously ;; considered an unreal buffer, so solaire-mode must be restored. (add-hook 'org-capture-mode-hook #'turn-on-solaire-mode) - ;; On Emacs 26+, when point is on the last line and solaire-mode is remapping - ;; the hl-line face, hl-line's highlight bleeds into the rest of the window - ;; after eob. On Emacs 27 this no longer happens. (unless EMACS27+ + ;; On Emacs <=26, when point is on the last line and solaire-mode is + ;; remapping the hl-line face, hl-line's highlight bleeds into the rest of + ;; the window after eob. On Emacs 27 this no longer happens. (defun +doom--line-range-fn () (let ((bol (line-beginning-position)) (eol (line-end-position)) @@ -57,21 +53,27 @@ (= eol pmax)) eol) ((line-beginning-position 2)))))) - (setq hl-line-range-function #'+doom--line-range-fn)) + (setq hl-line-range-function #'+doom--line-range-fn) - ;; Because fringes can't be given a buffer-local face, they can look odd, so - ;; we remove them in the minibuffer and which-key popups (they serve no - ;; purpose there anyway). - (add-hook! 'solaire-mode-hook - (defun +doom-disable-fringes-in-minibuffer-h (&rest _) - (set-window-fringes (minibuffer-window) 0 0 nil))) + ;; HACK The fringe cannot have a buffer-local remapping on Emacs <= 26, so + ;; we jump through hoops to reset it (globally) whenever it is likely + ;; that the fringe will have lost its background color. + + ;; Prevent color glitches when reloading either DOOM or loading a new theme + (add-hook! '(doom-load-theme-hook doom-reload-hook) :append + #'solaire-mode-reset) - (defadvice! +doom--no-fringes-in-which-key-buffer-a (&rest _) - :after 'which-key--show-buffer-side-window - (+doom-disable-fringes-in-minibuffer-h) - (set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil)) + ;; fringe can become unstyled when deleting or focusing frames + (add-hook 'focus-in-hook #'solaire-mode-reset) - (add-hook! '(minibuffer-setup-hook window-configuration-change-hook) - #'+doom-disable-fringes-in-minibuffer-h) - - (solaire-global-mode +1)) + ;; A global fringe color means the minibuffer (with its fringes) will always + ;; stand out, so we remove them (in which-key popups too). + (add-hook! 'solaire-mode-hook + (defun +doom-disable-fringes-in-minibuffer-h (&rest _) + (set-window-fringes (minibuffer-window) 0 0 nil))) + (defadvice! +doom--no-fringes-in-which-key-buffer-a (&rest _) + :after 'which-key--show-buffer-side-window + (+doom-disable-fringes-in-minibuffer-h) + (set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil)) + (add-hook! '(minibuffer-setup-hook window-configuration-change-hook) + #'+doom-disable-fringes-in-minibuffer-h))) diff --git a/modules/ui/doom/packages.el b/modules/ui/doom/packages.el index 0893eebed..46e44fbbc 100644 --- a/modules/ui/doom/packages.el +++ b/modules/ui/doom/packages.el @@ -2,4 +2,4 @@ ;;; ui/doom/packages.el (package! doom-themes :pin "8d5ddbbb72") -(package! solaire-mode :pin "4ac324ccb0") +(package! solaire-mode :pin "adc8c0c60d") From 279ca195d52bbb0ee8fff4bd0d6cab32cb33565d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 03:44:42 -0400 Subject: [PATCH 064/167] Auto-disable solaire-global-mode in tty daemon frames Or try, at least. This is very flimsy. --- modules/ui/doom/config.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 5ae5ddacd..17b7e70cc 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -33,6 +33,13 @@ (solaire-mode-swap-bg))) #'solaire-global-mode) :config + (when (daemonp) + (add-hook! 'doom-switch-frame-hook + (defun +doom-disable-solaire-mode-maybe-h (frame) + (if (display-graphic-p frame) + (solaire-global-mode +1) + (solaire-global-mode -1))))) + ;; org-capture takes an org buffer and narrows it. The result is erroneously ;; considered an unreal buffer, so solaire-mode must be restored. (add-hook 'org-capture-mode-hook #'turn-on-solaire-mode) From 4431eac0abf4ee287f3606893b8176540c27b85b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 13:04:03 -0400 Subject: [PATCH 065/167] Fix void-function: pdf-tools-install-noverify For folks who try `M-x pdf-tools-install` at startup instead of simply loading a pdf file. --- modules/tools/pdf/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/tools/pdf/config.el b/modules/tools/pdf/config.el index 4aa9f3bf9..99956fdea 100644 --- a/modules/tools/pdf/config.el +++ b/modules/tools/pdf/config.el @@ -53,6 +53,7 @@ (setq-hook! 'pdf-view-mode-hook evil-normal-state-cursor (list nil)) ;; Install epdfinfo binary if needed, blocking until it is finished + (require 'pdf-tools) (unless (file-executable-p pdf-info-epdfinfo-program) (let ((wconf (current-window-configuration))) (pdf-tools-install) From efa599f076c3a140c6b4006c352fdba3361abebd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 13:08:08 -0400 Subject: [PATCH 066/167] Fix run-hooks: wrong-number-of-args error for daemon users --- modules/ui/doom/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 17b7e70cc..2c62ec2db 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -35,8 +35,8 @@ :config (when (daemonp) (add-hook! 'doom-switch-frame-hook - (defun +doom-disable-solaire-mode-maybe-h (frame) - (if (display-graphic-p frame) + (defun +doom-disable-solaire-mode-maybe-h () + (if (display-graphic-p) (solaire-global-mode +1) (solaire-global-mode -1))))) From 1c9a39bf26597d2e0f43c1eb4cf581f91c1ac0fa Mon Sep 17 00:00:00 2001 From: bdarcus Date: Thu, 23 Apr 2020 14:25:05 -0400 Subject: [PATCH 067/167] switching org-roam-completion to use 'default The conditional setup for completion system was causing fuzzy completion to fail. This fixes that. --- modules/lang/org/contrib/roam.el | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index a5dcc3e83..a28f3ff9a 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -36,11 +36,7 @@ (setq org-roam-directory (expand-file-name (or org-roam-directory "") org-directory) org-roam-verbose nil ; https://youtu.be/fn4jIlFwuLU - org-roam-completion-system - (cond ((featurep! :completion helm) 'helm) - ((featurep! :completion ivy) 'ivy) - ((featurep! :completion ido) 'ido) - ('default))) + org-roam-completion-system 'default) ;; HACK Hide the mode line in the org-roam buffer, since it serves no purpose. ;; This makes it easier to distinguish among other org buffers. From 7d38f503e2f353009ff76e002d5d39fe0ed5b218 Mon Sep 17 00:00:00 2001 From: bdarcus Date: Thu, 23 Apr 2020 14:46:13 -0400 Subject: [PATCH 068/167] updating per @hlissner suggestion --- modules/lang/org/contrib/roam.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index a28f3ff9a..ef1fb7761 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -36,7 +36,14 @@ (setq org-roam-directory (expand-file-name (or org-roam-directory "") org-directory) org-roam-verbose nil ; https://youtu.be/fn4jIlFwuLU - org-roam-completion-system 'default) + org-roam-completion-system + (cond ((featurep! :completion helm) 'helm) + ((featurep! :completion ivy) 'ivy) + ((featurep! :completion ido) 'ido) + ('default)) + org-roam-completion-fuzzy-match + (or (featurep! :completion helm +fuzzy) + (featurep! :completion ivy +fuzzy))) ;; HACK Hide the mode line in the org-roam buffer, since it serves no purpose. ;; This makes it easier to distinguish among other org buffers. From 09d344541feda9cfa9caf435f0f40c0c18407252 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 16:52:54 -0400 Subject: [PATCH 069/167] epa-pinentry-mode -> epg-pinentry-mode Because epa-pinentry-mode is deprecated in 27+ --- modules/config/default/config.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/config/default/config.el b/modules/config/default/config.el index 490ec2a14..8ed0cf535 100644 --- a/modules/config/default/config.el +++ b/modules/config/default/config.el @@ -31,7 +31,10 @@ (after! epa ;; With GPG 2.1+, this forces gpg-agent to use the Emacs minibuffer to prompt ;; for the key passphrase. - (setq epa-pinentry-mode 'loopback) + (set (if EMACS27+ + 'epg-pinentry-mode + 'epa-pinentry-mode) ; DEPRECATED `epa-pinentry-mode' + 'loopback) ;; Default to the first secret key available in your keyring. (setq-default epa-file-encrypt-to From 21f27764334ccb796b5914778a0ad9c9b7795c83 Mon Sep 17 00:00:00 2001 From: Tyler Ware Date: Thu, 23 Apr 2020 21:13:28 -0600 Subject: [PATCH 070/167] tmux: Quote shell arg in listing windows / panes Specifying a session and / or window to +tmux-list-windows and +tmux-list-panes just failed, because of the special characters used in the ids for sessions & windows ($ and @). Quoting the ids before building up the tmux command fixes this. --- modules/tools/tmux/autoload/tmux.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tools/tmux/autoload/tmux.el b/modules/tools/tmux/autoload/tmux.el index 63f51156e..46e066318 100644 --- a/modules/tools/tmux/autoload/tmux.el +++ b/modules/tools/tmux/autoload/tmux.el @@ -104,7 +104,7 @@ but do not execute them." (if-let* ((lines (+tmux (format "list-windows %s -F '#{window_id};#{session_id};#{window_active};#{window_name};#{window_activity_flag}'" (if session - (concat "-t " (car session)) + (concat "-t " (shell-quote-argument (car session))) "-a"))))) (cl-loop for line in (split-string lines "\n" t) collect (let ((window (split-string line ";"))) @@ -122,7 +122,7 @@ but do not execute them." (if sess-or-win (concat (if (string-prefix-p "$" (car sess-or-win)) "-s ") "-t " - (car sess-or-win)) + (shell-quote-argument (car sess-or-win))) "-a"))))) (cl-loop for line in (split-string lines "\n" t) collect (let ((pane (split-string line ";"))) From 346a90c95d1bf8ba0d7373251add2038540ea3ca Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 16:53:37 -0400 Subject: [PATCH 071/167] Refactor vterm module --- modules/term/vterm/config.el | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/modules/term/vterm/config.el b/modules/term/vterm/config.el index 18938206c..e21b7a60a 100644 --- a/modules/term/vterm/config.el +++ b/modules/term/vterm/config.el @@ -2,25 +2,26 @@ (use-package! vterm :when (bound-and-true-p module-file-suffix) - :commands (vterm vterm-mode) - :preface (setq vterm-install t) + :commands vterm vterm-mode + :preface (setq vterm-install t) ; compile the package when you load vterm + :hook (vterm-mode . doom-mark-buffer-as-real-h) + :hook (vterm-mode . hide-mode-line-mode) ; modeline serves no purpose in vterm :config (set-popup-rule! "^vterm" :size 0.25 :vslot -4 :select t :quit nil :ttl 0) + ;; Once vterm is dead, the vterm buffer is useless. Why keep it around? We can + ;; spawn another if want one. + (setq vterm-kill-buffer-on-exit t) + (setq-hook! 'vterm-mode-hook - ;; Don't prompt about processes when killing vterm + ;; Don't prompt about dying processes when killing vterm confirm-kill-processes nil ;; Prevent premature horizontal scrolling hscroll-margin 0) - (setq vterm-kill-buffer-on-exit t) - + ;; Restore the point's location when leaving and re-entering insert mode. (when (featurep! :editor evil) (add-hook! 'vterm-mode-hook (defun +vterm-init-remember-point-h () (add-hook 'evil-insert-state-exit-hook #'+vterm-remember-insert-point-h nil t) - (add-hook 'evil-insert-state-entry-hook #'+vterm-goto-insert-point-h nil t)))) - - (add-hook 'vterm-mode-hook #'doom-mark-buffer-as-real-h) - ;; Modeline serves no purpose in vterm - (add-hook 'vterm-mode-hook #'hide-mode-line-mode)) + (add-hook 'evil-insert-state-entry-hook #'+vterm-goto-insert-point-h nil t))))) From 17dd1c652774300b422fbaf9918b8067050ca73a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 17:04:31 -0400 Subject: [PATCH 072/167] Add add-node-modules-path package to lang/javascript And use it on json-mode. --- modules/lang/javascript/autoload.el | 12 ------------ modules/lang/javascript/config.el | 3 ++- modules/lang/javascript/packages.el | 1 + 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/modules/lang/javascript/autoload.el b/modules/lang/javascript/autoload.el index a570be4ff..d4633f6b6 100644 --- a/modules/lang/javascript/autoload.el +++ b/modules/lang/javascript/autoload.el @@ -83,18 +83,6 @@ Run this for any buffer you want to skewer." ;; ;; Hooks -;;;###autoload -(defun +javascript-add-node-modules-path-h () - "Add current project's `node_modules/.bin` to `exec-path', so js tools -prioritize project-local packages over global ones." - (make-local-variable 'exec-path) - (cl-pushnew (expand-file-name "node_modules/.bin/" - (or (locate-dominating-file - (or (buffer-file-name) default-directory) - "node_modules") - (doom-project-root))) - exec-path :test #'string=)) - ;;;###autoload (defun +javascript-cleanup-tide-processes-h () "Clean up dangling tsserver processes if there are no more buffers with diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index c2fddb09b..489418de8 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -292,10 +292,11 @@ to tide." web-mode markdown-mode js-mode + json-mode typescript-mode solidity-mode) :when (locate-dominating-file default-directory "package.json") - :add-hooks '(+javascript-add-node-modules-path-h npm-mode)) + :add-hooks '(add-node-modules-path npm-mode)) (def-project-mode! +javascript-gulp-mode :when (locate-dominating-file default-directory "gulpfile.js")) diff --git a/modules/lang/javascript/packages.el b/modules/lang/javascript/packages.el index 5c3f1f9ad..8d4d99010 100644 --- a/modules/lang/javascript/packages.el +++ b/modules/lang/javascript/packages.el @@ -11,6 +11,7 @@ (package! eslintd-fix :pin "0c431141be") (package! js2-refactor :pin "d4c40b5fc8") (package! npm-mode :pin "3ee7c0bad5") +(package! add-node-modules-path :pin "f31e69ccb6") ;; Eval (package! nodejs-repl :pin "6fad7d764f") From 2d766cfa0c0b80a25718ae2bb46cf6f375ea67d9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 17:34:17 -0400 Subject: [PATCH 073/167] Remove :lang assembly This module is too trivial, and provides nothing that the user couldn't install themselves. --- core/autoload/help.el | 3 --- docs/modules.org | 1 - init.example.el | 1 - modules/lang/assembly/autoload.el | 4 ---- modules/lang/assembly/packages.el | 6 ------ 5 files changed, 15 deletions(-) delete mode 100644 modules/lang/assembly/autoload.el delete mode 100644 modules/lang/assembly/packages.el diff --git a/core/autoload/help.el b/core/autoload/help.el index 3c5954d7d..7cd190969 100644 --- a/core/autoload/help.el +++ b/core/autoload/help.el @@ -3,9 +3,6 @@ (defvar doom--help-major-mode-module-alist '((dockerfile-mode :tools docker) (agda2-mode :lang agda) - (haxor-mode :lang assembly) - (mips-mode :lang assembly) - (nasm-mode :lang assembly) (c-mode :lang cc) (c++-mode :lang cc) (objc++-mode :lang cc) diff --git a/docs/modules.org b/docs/modules.org index 4a8dc11d4..9d133f884 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -92,7 +92,6 @@ Modules that reconfigure or augment packages or features built into Emacs. Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/agda/README.org][agda]] - TODO -+ assembly - TODO + [[file:../modules/lang/cc/README.org][cc]] =+lsp= - TODO + [[file:../modules/lang/clojure/README.org][clojure]] =+lsp= - TODO + common-lisp - TODO diff --git a/init.example.el b/init.example.el index be49b185d..70cfcf205 100644 --- a/init.example.el +++ b/init.example.el @@ -104,7 +104,6 @@ :lang ;;agda ; types of types of types of types... - ;;assembly ; assembly for fun or debugging ;;cc ; C/C++/Obj-C madness ;;clojure ; java with a lisp ;;common-lisp ; if you've seen one lisp, you've seen them all diff --git a/modules/lang/assembly/autoload.el b/modules/lang/assembly/autoload.el deleted file mode 100644 index 29e8ded24..000000000 --- a/modules/lang/assembly/autoload.el +++ /dev/null @@ -1,4 +0,0 @@ -;;; lang/assembly/autoload.el -*- lexical-binding: t; -*- - -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.hax\\'" . haxor-mode)) diff --git a/modules/lang/assembly/packages.el b/modules/lang/assembly/packages.el deleted file mode 100644 index 78e44be3d..000000000 --- a/modules/lang/assembly/packages.el +++ /dev/null @@ -1,6 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; lang/assembly/packages.el - -(package! mips-mode :pin "75152fc78b") -(package! haxor-mode :pin "6fa25a8e6b") -(package! nasm-mode :pin "65ca6546fc") From b151abfd34d60dda9b6e58ffb91240b0cacbc803 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 17:38:45 -0400 Subject: [PATCH 074/167] Add :lang json module Removes json-mode from :lang data and adds LSP support (#2502). --- docs/modules.org | 1 + init.example.el | 1 + modules/lang/data/config.el | 5 ----- modules/lang/data/packages.el | 1 - modules/lang/json/README.org | 40 +++++++++++++++++++++++++++++++++++ modules/lang/json/config.el | 14 ++++++++++++ modules/lang/json/packages.el | 5 +++++ 7 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 modules/lang/json/README.org create mode 100644 modules/lang/json/config.el create mode 100644 modules/lang/json/packages.el diff --git a/docs/modules.org b/docs/modules.org index 9d133f884..e921ce1a5 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -111,6 +111,7 @@ Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/haskell/README.org][haskell]] =+dante +ghcide +lsp= - TODO + hy - TODO + [[file:../modules/lang/idris/README.org][idris]] - TODO ++ [[file:../modules/lang/json/README.org][json]] =+lsp= - TODO + java =+meghanada +lsp= - TODO + [[file:../modules/lang/javascript/README.org][javascript]] =+lsp= - JavaScript, TypeScript, and CoffeeScript support + julia =+lsp= - TODO diff --git a/init.example.el b/init.example.el index 70cfcf205..f44db3f3f 100644 --- a/init.example.el +++ b/init.example.el @@ -124,6 +124,7 @@ ;;(haskell +dante) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; + ;;json ; At least it ain't XML ;;(java +meghanada) ; the poster child for carpal tunnel syndrome ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) ;;julia ; a better, faster MATLAB diff --git a/modules/lang/data/config.el b/modules/lang/data/config.el index e625d4fd0..de828f17f 100644 --- a/modules/lang/data/config.el +++ b/modules/lang/data/config.el @@ -34,11 +34,6 @@ :mode "\\.gql\\'" :config (setq-hook! 'graphql-mode-hook tab-width graphql-indent-level)) -(use-package! json-mode - :mode "\\.js\\(?:on\\|[hl]int\\(?:rc\\)?\\)\\'" - :config - (set-electric! 'json-mode :chars '(?\n ?: ?{ ?}))) - (after! jsonnet-mode (set-electric! 'jsonnet-mode :chars '(?\n ?: ?{ ?}))) diff --git a/modules/lang/data/packages.el b/modules/lang/data/packages.el index 1c338af9e..20646ff7e 100644 --- a/modules/lang/data/packages.el +++ b/modules/lang/data/packages.el @@ -2,7 +2,6 @@ ;;; lang/data/packages.el (package! graphql-mode :pin "7c37aee28b") -(package! json-mode :pin "0e819e519a") (package! jsonnet-mode :pin "d8b486c837") (package! yaml-mode :pin "cecf4b106b") (package! csv-mode :pin "635337407c") diff --git a/modules/lang/json/README.org b/modules/lang/json/README.org new file mode 100644 index 000000000..6106c7ff1 --- /dev/null +++ b/modules/lang/json/README.org @@ -0,0 +1,40 @@ +#+TITLE: lang/json +#+DATE: April 23, 2020 +#+SINCE: v3.0.0 +#+STARTUP: inlineimages nofold + +* Table of Contents :TOC_3:noexport: +- [[#description][Description]] + - [[#maintainers][Maintainers]] + - [[#module-flags][Module Flags]] + - [[#plugins][Plugins]] +- [[#prerequisites][Prerequisites]] +- [[#features][Features]] +- [[#configuration][Configuration]] +- [[#troubleshooting][Troubleshooting]] + +* Description +This module provides JSON support. + +** Maintainers +This module has no dedicated maintainers. + +** Module Flags ++ =+lsp= Enable integration with LSP servers, if one is available. Requires the + =:tools lsp= module to be enabled. + +** Plugins ++ [[https://github.com/joshwnj/json-mode][json-mode]] ++ [[https://github.com/Sterlingg/json-snatcher][json-snatcher]] + +* Prerequisites +This module has no prereqisites. + +* TODO Features +# An in-depth list of features, how to use them, and their dependencies. + +* TODO Configuration +# How to configure this module, including common problems and how to address them. + +* TODO Troubleshooting +# Common issues and their solution, or places to look for help. diff --git a/modules/lang/json/config.el b/modules/lang/json/config.el new file mode 100644 index 000000000..62db538af --- /dev/null +++ b/modules/lang/json/config.el @@ -0,0 +1,14 @@ +;;; lang/json/config.el -*- lexical-binding: t; -*- + +(use-package! json-mode + :mode "\\.js\\(?:on\\|[hl]int\\(?:rc\\)?\\)\\'" + :init + (when (featurep! +lsp) + (add-hook 'json-mode-local-vars-hook #'lsp!)) + :config + (set-electric! 'json-mode :chars '(?\n ?: ?{ ?})) + + (map! :after json-mode + :map json-mode-map + :localleader + "s" #'jsons-print-path)) diff --git a/modules/lang/json/packages.el b/modules/lang/json/packages.el new file mode 100644 index 000000000..69d84fb8a --- /dev/null +++ b/modules/lang/json/packages.el @@ -0,0 +1,5 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/json/packages.el + +(package! json-mode :pin "0e819e519a") +(package! json-snatcher :pin "c4cecc0a50") From 4a8c4815f1c684a0bf0a9b9876c88bee363c0203 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 17:43:42 -0400 Subject: [PATCH 075/167] Add :lang yaml module Removes yaml-mode from :lang data and adds LSP support (#2502). Closes #2502 Co-authored-by: Seong Yong-ju --- docs/modules.org | 1 + init.example.el | 1 + modules/lang/data/config.el | 3 --- modules/lang/data/packages.el | 1 - modules/lang/yaml/README.org | 38 +++++++++++++++++++++++++++++++++++ modules/lang/yaml/config.el | 9 +++++++++ modules/lang/yaml/packages.el | 4 ++++ 7 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 modules/lang/yaml/README.org create mode 100644 modules/lang/yaml/config.el create mode 100644 modules/lang/yaml/packages.el diff --git a/docs/modules.org b/docs/modules.org index e921ce1a5..5b3796d94 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -143,6 +143,7 @@ Modules that bring support for a language or group of languages to Emacs. + swift =+lsp= - TODO + terra - TODO + web =+lsp= - HTML and CSS (SCSS/SASS/LESS/Stylus) support. ++ [[file:../modules/lang/yaml/README.org][yaml]] =+lsp= - TODO * :term Modules that offer terminal emulation. diff --git a/init.example.el b/init.example.el index f44db3f3f..3c54247a7 100644 --- a/init.example.el +++ b/init.example.el @@ -158,6 +158,7 @@ ;;swift ; who asked for emoji variables? ;;terra ; Earth and Moon in alignment for performance. ;;web ; the tubes + ;;yaml ; JSON, but readable :email ;;(mu4e +gmail) diff --git a/modules/lang/data/config.el b/modules/lang/data/config.el index de828f17f..19776b4e4 100644 --- a/modules/lang/data/config.el +++ b/modules/lang/data/config.el @@ -37,9 +37,6 @@ (after! jsonnet-mode (set-electric! 'jsonnet-mode :chars '(?\n ?: ?{ ?}))) -(after! yaml-mode - (setq-hook! 'yaml-mode-hook tab-width yaml-indent-offset)) - ;; ;;; Frameworks diff --git a/modules/lang/data/packages.el b/modules/lang/data/packages.el index 20646ff7e..d98d089ad 100644 --- a/modules/lang/data/packages.el +++ b/modules/lang/data/packages.el @@ -3,7 +3,6 @@ (package! graphql-mode :pin "7c37aee28b") (package! jsonnet-mode :pin "d8b486c837") -(package! yaml-mode :pin "cecf4b106b") (package! csv-mode :pin "635337407c") (package! dhall-mode :pin "ef4d33debe") (package! protobuf-mode diff --git a/modules/lang/yaml/README.org b/modules/lang/yaml/README.org new file mode 100644 index 000000000..f036f5a24 --- /dev/null +++ b/modules/lang/yaml/README.org @@ -0,0 +1,38 @@ +#+TITLE: lang/yaml +#+DATE: April 23, 2020 +#+SINCE: v3.0.0 +#+STARTUP: inlineimages nofold + +* Table of Contents :TOC_3:noexport: +- [[#description][Description]] + - [[#maintainers][Maintainers]] + - [[#module-flags][Module Flags]] + - [[#plugins][Plugins]] +- [[#prerequisites][Prerequisites]] +- [[#features][Features]] +- [[#configuration][Configuration]] +- [[#troubleshooting][Troubleshooting]] + +* Description +This module provides support for the [[https://yaml.org/][YAML file format]]. + +** Maintainers +This module has no dedicated maintainers. + +** Module Flags ++ =+lsp= Enables integration with LSP servers. Requires the =:tools lsp= module to be enabled. + +** Plugins ++ [[https://github.com/yoshiki/yaml-mode][yaml-mode]] + +* Prerequisites +This module has no prereqisites. + +* TODO Features +# An in-depth list of features, how to use them, and their dependencies. + +* TODO Configuration +# How to configure this module, including common problems and how to address them. + +* TODO Troubleshooting +# Common issues and their solution, or places to look for help. diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el new file mode 100644 index 000000000..282b4ed7a --- /dev/null +++ b/modules/lang/yaml/config.el @@ -0,0 +1,9 @@ +;;; lang/yaml/config.el -*- lexical-binding: t; -*- + +(use-package! yaml-mode + :hook "Procfile\\'" + :init + (when (featurep! +lsp) + (add-hook 'yaml-mode-local-vars-hook #'lsp!)) + :config + (setq-hook! 'yaml-mode-hook tab-width yaml-indent-offset)) diff --git a/modules/lang/yaml/packages.el b/modules/lang/yaml/packages.el new file mode 100644 index 000000000..6e0f161f3 --- /dev/null +++ b/modules/lang/yaml/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/yaml/packages.el + +(package! yaml-mode :pin "cecf4b106b") From e24b8cd1d1e4ceb7e4454a267985b639d5e7eb06 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 17:44:12 -0400 Subject: [PATCH 076/167] Slim down from lang/data + Removes jsonnet, graphql, dhall & protobuf packages from the module. + Removes +data-vagrant-mode project minor mode (unused). I'm phasing out the lang/data module. Its original purpose was to be for data interchange formats, like JSON, but over time it became the dumping ground for languages with no clear defining feature. These packages are being removed first because their configs are non-existent or so trivial that it offers nothing a user couldn't set up themselves. graphql and jsonnet might get heir own modules (or jsonnet might be gated behind a flag in the :lang json module), but for now they gotta go. fixup! Remove jsonnet, graphql, dhall & protobuf modes from lang/data --- core/core-editor.el | 2 ++ modules/lang/data/config.el | 21 --------------------- modules/lang/data/packages.el | 6 ------ 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/core/core-editor.el b/core/core-editor.el index b08f53670..1702c4d8e 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -174,6 +174,8 @@ possible." (push '("/LICENSE\\'" . text-mode) auto-mode-alist) (push '("\\.log\\'" . text-mode) auto-mode-alist) +(push '("rc\\'" . conf-mode) auto-mode-alist) +(push '("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode) auto-mode-alist) ;; diff --git a/modules/lang/data/config.el b/modules/lang/data/config.el index 19776b4e4..da0e72344 100644 --- a/modules/lang/data/config.el +++ b/modules/lang/data/config.el @@ -1,9 +1,5 @@ ;;; lang/data/config.el -*- lexical-binding: t; -*- -;; Built in plugins -(add-to-list 'auto-mode-alist '("/sxhkdrc\\'" . conf-mode)) -(add-to-list 'auto-mode-alist '("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode)) - (use-package! nxml-mode :mode "\\.p\\(?:list\\|om\\)\\'" ; plist, pom :mode "\\.xs\\(?:d\\|lt\\)\\'" ; xslt, xsd @@ -16,9 +12,6 @@ (setq-hook! 'nxml-mode-hook tab-width nxml-child-indent)) -;; -;;; Third-party plugins - ;;;###package csv-mode (map! :after csv-mode :localleader @@ -29,17 +22,3 @@ "S" #'csv-sort-numeric-fields "k" #'csv-kill-fields "t" #'csv-transpose) - -(use-package! graphql-mode - :mode "\\.gql\\'" - :config (setq-hook! 'graphql-mode-hook tab-width graphql-indent-level)) - -(after! jsonnet-mode - (set-electric! 'jsonnet-mode :chars '(?\n ?: ?{ ?}))) - - -;; -;;; Frameworks - -(def-project-mode! +data-vagrant-mode - :files ("Vagrantfile")) diff --git a/modules/lang/data/packages.el b/modules/lang/data/packages.el index d98d089ad..72a9dae2d 100644 --- a/modules/lang/data/packages.el +++ b/modules/lang/data/packages.el @@ -1,10 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/data/packages.el -(package! graphql-mode :pin "7c37aee28b") -(package! jsonnet-mode :pin "d8b486c837") (package! csv-mode :pin "635337407c") -(package! dhall-mode :pin "ef4d33debe") -(package! protobuf-mode - :recipe (:host github :repo "emacsmirror/protobuf-mode" :files (:defaults "*")) - :pin "94b7bd7e8b") From fe3f3d91c3a70bce471dbf36ccc0e48b6e1f6afa Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 18:10:13 -0400 Subject: [PATCH 077/167] tools/magit: gate forge behind flag & add README #1166 --- docs/modules.org | 2 +- modules/tools/magit/README.org | 60 +++++++++++++++++++++++++++++++++ modules/tools/magit/config.el | 10 +++--- modules/tools/magit/packages.el | 3 +- 4 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 modules/tools/magit/README.org diff --git a/docs/modules.org b/docs/modules.org index 5b3796d94..5bd421faa 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -168,7 +168,7 @@ Small modules that give Emacs access to external tools & services. backend + [[file:../modules/tools/lsp/README.org][lsp]] =+peek= - TODO + macos - TODO -+ magit - TODO ++ [[file:../modules/tools/magit/README.org][magit]] =+forge= - TODO + make - TODO + pass - TODO + pdf - TODO diff --git a/modules/tools/magit/README.org b/modules/tools/magit/README.org new file mode 100644 index 000000000..2be927280 --- /dev/null +++ b/modules/tools/magit/README.org @@ -0,0 +1,60 @@ +#+TITLE: tools/magit +#+DATE: March 14, 2018 +#+SINCE: v2.0.0 +#+STARTUP: inlineimages nofold + +* Table of Contents :TOC_3:noexport: +- [[#description][Description]] + - [[#maintainers][Maintainers]] + - [[#module-flags][Module Flags]] + - [[#plugins][Plugins]] + - [[#hacks][Hacks]] +- [[#prerequisites][Prerequisites]] +- [[#features][Features]] +- [[#configuration][Configuration]] +- [[#troubleshooting][Troubleshooting]] + +* Description +This module provides Magit, an interface to the Git version control system. + +If you are new to Magit, see the [[https://github.com/magit/magit#getting-started][Getting Started]] section of its project readme. + +** Maintainers +This module has no dedicated maintainers. + +** Module Flags ++ =+forge= Enable Forge; a porcelain for managing issues and PRs from within + Emacs. Will take a while on first run to build emacsql-sqlite. + +** Plugins ++ [[https://github.com/magit/magit][magit]] ++ [[https://github.com/magit/forge][forge]]* (=+forge=) ++ [[https://github.com/jtatarik/magit-gitflow][magit-gitflow]] ++ [[https://github.com/alphapapa/magit-todos][magit-todos]] ++ [[https://github.com/charignon/github-review][github-review]] ++ [[https://github.com/emacs-evil/evil-magit][evil-magit]]* (=:editor evil +everywhere=) + +** Hacks ++ =forge= was modified to defer compilation of emacsql-sqlite until you try to + use forge, rather than when magit first loads (which could be as soon as + startup). ++ =magit= has been modified to recognize + =$XDG_CACHE_HOME/git/credential/socket=. ++ =magit= has been modified to invalidate the projectile cache when you check + out a new branch or commit. ++ =magit= has been modified to revert repo buffers (e.g. after changing + branches) when you later switch to them, rather than all at once. + +* Prerequisites +This module requires ~git~. + +Forge will require [[https://magit.vc/manual/forge/Token-Creation.html#Token-Creation][a Github API token]] the first time you run =forge-pull=. + +* TODO Features +# An in-depth list of features, how to use them, and their dependencies. + +* TODO Configuration +# How to configure this module, including common problems and how to address them. + +* TODO Troubleshooting +# Common issues and their solution, or places to look for help. diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index 9bb3d8767..66cdff2ea 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -1,8 +1,5 @@ ;;; tools/magit/config.el -*- lexical-binding: t; -*- -;; -;;; Packages - (use-package! magit :commands magit-file-delete :defer-incrementally (dash f s with-editor git-commit package eieio lv transient) @@ -92,11 +89,12 @@ (use-package! forge + :when (featurep! +forge) ;; We defer loading even further because forge's dependencies will try to ;; compile emacsql, which is a slow and blocking operation. :after-call magit-status :commands forge-create-pullreq forge-create-issue - :init + :preface (setq forge-database-file (concat doom-etc-dir "forge/forge-database.sqlite")) :config ;; All forge list modes are derived from `forge-topic-list-mode' @@ -123,8 +121,8 @@ ensure it is built when we actually use Forge." (message (concat "Failed to build emacsql; forge may not work correctly.\n" "See *Compile-Log* buffer for details")) ;; HACK Due to changes upstream, forge doesn't initialize completely if - ;; it doesn't find `emacsql-sqlite-executable', so we have to do it - ;; manually after installing it. + ;; it doesn't find `emacsql-sqlite-executable', so we have to do it + ;; manually after installing it. (setq forge--sqlite-available-p t) (magit-add-section-hook 'magit-status-sections-hook 'forge-insert-pullreqs nil t) (magit-add-section-hook 'magit-status-sections-hook 'forge-insert-issues nil t) diff --git a/modules/tools/magit/packages.el b/modules/tools/magit/packages.el index de80bc93d..0bc97b4e1 100644 --- a/modules/tools/magit/packages.el +++ b/modules/tools/magit/packages.el @@ -2,7 +2,8 @@ ;;; tools/magit/packages.el (when (package! magit :pin "0f1234e785") - (package! forge :pin "2e2d26cf42") + (when (featurep! +forge) + (package! forge :pin "2e2d26cf42")) (package! magit-gitflow :pin "cc41b561ec") (package! magit-todos :pin "a0e5d1f3c7") (package! github-review :pin "50c6bcc7cf") From fe8dd63f221dcaee12fcac83dc3a17e4e1faddf7 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 19:45:26 -0400 Subject: [PATCH 078/167] Disable a couple modules by default An effort to reduce the number of packages for first-time install. These features aren't critical to the UX or character of Doom Emacs, so I've made them opt-in. --- init.example.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/init.example.el b/init.example.el index 3c54247a7..06bae4712 100644 --- a/init.example.el +++ b/init.example.el @@ -34,7 +34,7 @@ ;;hydra ;;indent-guides ; highlighted indent columns modeline ; snazzy, Atom-inspired modeline, plus API - nav-flash ; blink the current line after jumping + ;;nav-flash ; blink cursor line after big motions ;;neotree ; a project drawer, like NERDTree for vim ophints ; highlight the region an operation acts on (popup +defaults) ; tame sudden yet inevitable temporary windows @@ -44,7 +44,7 @@ ;;unicode ; extended unicode support for various languages vc-gutter ; vcs diff in the fringe vi-tilde-fringe ; fringe tildes to mark beyond EOB - window-select ; visually switch windows + ;;window-select ; visually switch windows workspaces ; tab emulation, persistence & separate workspaces ;;zen ; distraction-free coding or writing @@ -110,7 +110,7 @@ ;;coq ; proofs-as-programs ;;crystal ; ruby at the speed of c ;;csharp ; unity, .NET, and mono shenanigans - data ; config/data formats + ;;data ; config/data formats ;;(dart +flutter) ; paint ui and not much else ;;elixir ; erlang done right ;;elm ; care for a cup of TEA? From 28ec59cd20d0c74bfa0b55fd97ab1513b929ea99 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 20:00:31 -0400 Subject: [PATCH 079/167] lang/javascript: start tide/lsp later Gives direnv and other mode hooks a chance to set up the environment first. --- modules/lang/javascript/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index 489418de8..4b6debd2d 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -133,7 +133,9 @@ ;; ;;; Tools -(add-hook! '(js-mode-hook typescript-mode-hook web-mode-hook) +(add-hook! '(js2-mode-local-vars-hook + typescript-mode-local-vars-hook + web-mode-local-vars-hook) (defun +javascript-init-lsp-or-tide-maybe-h () "Start `lsp' or `tide' in the current buffer. From 916ef0fbbef3e61716dbeacf0c2ddc441b69c23b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 23:41:03 -0400 Subject: [PATCH 080/167] Rename unmap! to undefine-key! unmap! gives the false impression that it is related or similar to map!, but it isn't. --- core/core-keybinds.el | 3 ++- docs/getting_started.org | 2 +- modules/tools/magit/config.el | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/core-keybinds.el b/core/core-keybinds.el index a79258aee..7a698eab2 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -77,7 +77,8 @@ all hooks after it are ignored.") :init ;; Convenience aliases (defalias 'define-key! #'general-def) - (defalias 'unmap! #'general-unbind)) + (defalias 'undefine-key! #'general-unbind)) + ;; HACK `map!' uses this instead of `define-leader-key!' because it consumes ;; 20-30% more startup time, so we reimplement it ourselves. diff --git a/docs/getting_started.org b/docs/getting_started.org index 5745cbd2d..5e04916a9 100644 --- a/docs/getting_started.org +++ b/docs/getting_started.org @@ -910,7 +910,7 @@ also be helpful for debugging. + define-key + global-set-key + map! -+ unmap! ++ undefine-key! + define-key! ** Writing your own modules diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index 66cdff2ea..ce2c785f2 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -162,7 +162,7 @@ ensure it is built when we actually use Forge." (setq evil-magit-state 'normal evil-magit-use-z-for-folds t) :config - (unmap! magit-mode-map + (undefine-key! magit-mode-map ;; Replaced by z1, z2, z3, etc "M-1" "M-2" "M-3" "M-4" "1" "2" "3" "4" From 06d5d5e6c0c595005c541cc6497a9b1df4d96120 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 23:49:35 -0400 Subject: [PATCH 081/167] General refactors, reformatting & comment revision --- core/autoload/config.el | 2 +- core/core-projects.el | 3 -- core/core-ui.el | 3 -- init.example.el | 8 ++--- modules/completion/helm/config.el | 9 +----- modules/config/default/+evil-bindings.el | 26 +++++++++------ modules/editor/snippets/config.el | 1 + modules/email/mu4e/README.org | 2 +- modules/input/chinese/config.el | 5 +-- modules/lang/clojure/config.el | 40 ++++++++++++++---------- modules/lang/emacs-lisp/packages.el | 3 ++ modules/lang/java/config.el | 4 +-- modules/lang/org/contrib/dragndrop.el | 12 +++---- modules/term/eshell/config.el | 2 +- modules/tools/lookup/config.el | 9 +++--- 15 files changed, 65 insertions(+), 64 deletions(-) diff --git a/core/autoload/config.el b/core/autoload/config.el index eb3acac93..841a11b91 100644 --- a/core/autoload/config.el +++ b/core/autoload/config.el @@ -76,7 +76,7 @@ Runs `doom-reload-hook' afterwards." (interactive) (require 'core-cli) (when (and IS-WINDOWS (file-exists-p doom-env-file)) - (warn "Can't regenerate envvar file from within Emacs. Run 'doom env' from the console")) + (message "Can't regenerate envvar file from within Emacs. Run 'doom env' from the console")) ;; In case doom/reload is run before incrementally loaded packages are loaded, ;; which could cause odd load order issues. (mapc #'require (cdr doom-incremental-packages)) diff --git a/core/core-projects.el b/core/core-projects.el index 8b65e1ee9..daca64c3a 100644 --- a/core/core-projects.el +++ b/core/core-projects.el @@ -15,9 +15,6 @@ Emacs.") "fd") "name of `fd-find' executable binary") -(defvar doom-projectile-cache-timer-file (concat doom-cache-dir "projectile.timers") - "Where to save project file cache timers.") - ;; ;;; Packages diff --git a/core/core-ui.el b/core/core-ui.el index 103404615..ebbe798a1 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -278,9 +278,6 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original (setq indicate-buffer-boundaries nil indicate-empty-lines nil) -;; remove continuation arrow on right fringe -(delq! 'continuation fringe-indicator-alist 'assq) - ;; ;;; Windows/frames diff --git a/init.example.el b/init.example.el index 06bae4712..370dd77d4 100644 --- a/init.example.el +++ b/init.example.el @@ -1,11 +1,11 @@ ;;; init.el -*- lexical-binding: t; -*- -;; This file controls what Doom modules are enabled and what order they load in. -;; Remember to run 'doom sync' after modifying it! +;; This file controls what Doom modules are enabled and what order they load +;; in. Remember to run 'doom sync' after modifying it! ;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find information about all of Doom's modules -;; and what flags they support. +;; documentation. There you'll find information about all of Doom's +;; modules and what flags they support. ;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or ;; 'C-c g k' for non-vim users) to view its documentation. This works on diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index c27d30113..66e8d7b9a 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -101,14 +101,7 @@ be negative.") :config (set-popup-rule! "^\\*helm" :vslot -100 :size 0.22 :ttl nil) - ;; HACK Doom doesn't support these commands, which invite the user to install - ;; the package via ELPA. Force them to use +helm/* instead, because they work - ;; out of the box. - (advice-add #'helm-projectile-rg :override #'+helm/project-search) - (advice-add #'helm-projectile-ag :override #'+helm/project-search) - (advice-add #'helm-projectile-grep :override #'+helm/project-search) - - ;; Hide the modeline + ;; Hide the modeline in helm windows as it serves little purpose. (defun +helm--hide-mode-line (&rest _) (with-current-buffer (helm-buffer-get) (unless helm-mode-line-string diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index ce615bb6f..43a3e3770 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -6,7 +6,8 @@ ;; Minibuffer (define-key! evil-ex-completion-map "C-a" #'evil-beginning-of-line - "C-b" #'evil-backward-char) + "C-b" #'evil-backward-char + "C-f" #'evil-forward-char) (define-key! :keymaps +default-minibuffer-maps [escape] #'abort-recursive-edit @@ -15,16 +16,21 @@ "C-u" #'evil-delete-back-to-indentation "C-v" #'yank "C-w" #'doom/delete-backward-word - "C-z" (λ! (ignore-errors (call-interactively #'undo))) - ;; Scrolling lines - "C-j" #'next-line - "C-k" #'previous-line - "C-S-j" #'scroll-up-command - "C-S-k" #'scroll-down-command) + "C-z" (λ! (ignore-errors (call-interactively #'undo)))) - (define-key! read-expression-map - "C-j" #'next-line-or-history-element - "C-k" #'previous-line-or-history-element)) + (when (featurep! :editor evil +everywhere) + (define-key! :keymaps +default-minibuffer-maps + "C-f" #'forward-word + "C-b" #'backward-word + "M-f" #'foward-char + "M-b" #'backward-char + "C-j" #'next-line + "C-k" #'previous-line + "C-S-j" #'scroll-up-command + "C-S-k" #'scroll-down-command) + (define-key! read-expression-map + "C-j" #'next-line-or-history-element + "C-k" #'previous-line-or-history-element))) ;; diff --git a/modules/editor/snippets/config.el b/modules/editor/snippets/config.el index d4b9728a8..2a337412f 100644 --- a/modules/editor/snippets/config.el +++ b/modules/editor/snippets/config.el @@ -21,6 +21,7 @@ (defvar yas-snippet-dirs nil) (if (daemonp) + ;; If in a daemon session, front-load this expensive work: (after! yasnippet (yas-reload-all)) ;; Ensure `yas-reload-all' is called as late as possible. Other modules ;; could have additional configuration for yasnippet. For example, diff --git a/modules/email/mu4e/README.org b/modules/email/mu4e/README.org index 9f4a95172..dcf51e24a 100644 --- a/modules/email/mu4e/README.org +++ b/modules/email/mu4e/README.org @@ -12,7 +12,7 @@ - [[#arch-linux][Arch Linux]] - [[#nixos][NixOS]] - [[#opensuse][openSUSE]] - - [[Debian/Ubuntu]] + - [[#debianubuntu][Debian/Ubuntu]] - [[#features][Features]] - [[#configuration][Configuration]] - [[#offlineimap][offlineimap]] diff --git a/modules/input/chinese/config.el b/modules/input/chinese/config.el index 666cfe395..ffa4e2669 100644 --- a/modules/input/chinese/config.el +++ b/modules/input/chinese/config.el @@ -2,9 +2,10 @@ (use-package! pyim :after-call after-find-file pre-command-hook + :init + (setq pyim-dcache-directory (concat doom-cache-dir "pyim/")) :config - (setq pyim-dcache-directory (concat doom-cache-dir "pyim/") - pyim-page-tooltip t + (setq pyim-page-tooltip t default-input-method "pyim")) diff --git a/modules/lang/clojure/config.el b/modules/lang/clojure/config.el index 36d8b0b75..7a091a3ae 100644 --- a/modules/lang/clojure/config.el +++ b/modules/lang/clojure/config.el @@ -11,21 +11,22 @@ ;; ;;; Packages -;;;###package clojure-mode -(add-hook 'clojure-mode-hook #'rainbow-delimiters-mode) -(when (featurep! +lsp) - (add-hook! '(clojure-mode-local-vars-hook - clojurec-mode-local-vars-hook - clojurescript-mode-local-vars-hook) - (defun +clojure-disable-lsp-indentation-h () - (setq-local lsp-enable-indentation nil)) - #'lsp!) - (after! lsp-clojure - (dolist (m '(clojure-mode - clojurec-mode - clojurescript-mode - clojurex-mode)) - (add-to-list 'lsp-language-id-configuration (cons m "clojure"))))) +(use-package! clojure-mode + :hook (clojure-mode . rainbow-delimiters-mode) + :config + (when (featurep! +lsp) + (add-hook! '(clojure-mode-local-vars-hook + clojurec-mode-local-vars-hook + clojurescript-mode-local-vars-hook) + (defun +clojure-disable-lsp-indentation-h () + (setq-local lsp-enable-indentation nil)) + #'lsp!) + (after! lsp-clojure + (dolist (m '(clojure-mode + clojurec-mode + clojurescript-mode + clojurex-mode)) + (add-to-list 'lsp-language-id-configuration (cons m "clojure")))))) (use-package! cider @@ -58,13 +59,18 @@ cider-repl-history-quit-action 'delete-and-restore cider-repl-history-highlight-inserted-item t cider-repl-history-size 1000 - cider-repl-pop-to-buffer-on-connect 'display-only cider-repl-result-prefix ";; => " cider-repl-print-length 100 cider-repl-use-clojure-font-lock t cider-repl-use-pretty-printing t cider-repl-wrap-history nil - cider-stacktrace-default-filters '(tooling dup)) + cider-stacktrace-default-filters '(tooling dup) + + ;; Don't focus the CIDER REPL when it starts. Since it can take so long + ;; to start up, you either wait for a minute doing nothing or be + ;; prepared for your cursor to suddenly change buffers without warning. + ;; See https://github.com/clojure-emacs/cider/issues/1872 + cider-repl-pop-to-buffer-on-connect 'display-only) ;; Error messages emitted from CIDER is silently funneled into *nrepl-server* ;; rather than the *cider-repl* buffer. How silly. We might want to see that diff --git a/modules/lang/emacs-lisp/packages.el b/modules/lang/emacs-lisp/packages.el index f953c3662..a72ea6124 100644 --- a/modules/lang/emacs-lisp/packages.el +++ b/modules/lang/emacs-lisp/packages.el @@ -4,6 +4,8 @@ (package! elisp-mode :built-in t) (package! highlight-quoted :pin "2410347815") + +;; Tools (package! macrostep :pin "424e3734a1") (package! overseer :pin "02d49f582e") (package! elisp-def :pin "368b04da68") @@ -11,4 +13,5 @@ (when (featurep! :checkers syntax) (package! flycheck-cask :pin "3457ae553c")) +;; Libraries (package! buttercup :pin "a91f282025") diff --git a/modules/lang/java/config.el b/modules/lang/java/config.el index 4b04f3dff..5e6dee5fd 100644 --- a/modules/lang/java/config.el +++ b/modules/lang/java/config.el @@ -22,7 +22,7 @@ If the depth is 2, the first two directories are removed: net.lissner.game.") ;; -;; java-mode +;;; java-mode (add-hook 'java-mode-hook #'rainbow-delimiters-mode) @@ -31,7 +31,7 @@ If the depth is 2, the first two directories are removed: net.lissner.game.") ;; -;; Common packages +;;; Common packages (use-package! android-mode :commands android-mode diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index 84e2671e1..28f3229dc 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -38,7 +38,7 @@ (defadvice! +org--dragndrop-insert-link-a (_link filename) "Produces and inserts a link to FILENAME into the document. -If FILENAME is an image, produce an attach:%s path, otherwise use file:%s (with +If FILENAME is an image, produce an download:%s path, otherwise use file:%s (with an file icon produced by `+org-attach-icon-for')." :override #'org-download-insert-link (if (looking-back "^[ \t]+" (line-beginning-position)) @@ -54,11 +54,9 @@ an file icon produced by `+org-attach-icon-for')." (if (= org-download-image-org-width 0) "" (format "#+attr_org: :width %dpx\n" org-download-image-org-width)) (format org-download-link-format - (cond ((file-in-directory-p filename org-attach-id-dir) - (file-relative-name filename org-attach-id-dir)) - ((file-in-directory-p filename org-directory) - (file-relative-name filename org-directory)) - (filename))))) + (if (file-in-directory-p filename org-attach-id-dir) + (file-relative-name filename org-attach-id-dir) + filename)))) (org-display-inline-images)) ((insert (format "%s [[./%s][%s]] " @@ -72,6 +70,6 @@ an file icon produced by `+org-attach-icon-for')." :filter-return #'org-download--fullname (let ((dir (or (if buffer-file-name (file-name-directory buffer-file-name)) default-directory))) - (if (file-in-directory-p dir org-directory) + (if (file-in-directory-p dir org-attach-id-dir) (file-relative-name path dir) path)))) diff --git a/modules/term/eshell/config.el b/modules/term/eshell/config.el index 412d69bdc..217fa6ff4 100644 --- a/modules/term/eshell/config.el +++ b/modules/term/eshell/config.el @@ -48,7 +48,7 @@ You should use `set-eshell-alias!' to change this.") ;; -;; Packages +;;; Packages (after! eshell ; built-in (setq eshell-banner-message diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index 35179e360..cd78596b3 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -172,11 +172,10 @@ See https://github.com/magit/ghub/issues/81" (let ((gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")) (funcall orig-fn url))) - (use-package! helm-dash - :when (featurep! :completion helm)) - - (use-package! counsel-dash - :when (featurep! :completion ivy))) + (cond ((featurep! :completion helm) + (require 'helm-dash nil t)) + ((featurep! :completion ivy) + (require 'counsel-dash nil t)))) ;; From daec7b505779eae1722b9300df435279f39175c9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 23:50:40 -0400 Subject: [PATCH 082/167] Remove eslintd-fix package This package isn't hooked up to anything and has no keybinds. Its config is so trivial that users can install it themselves, so I decided it won't be included with the module by default. --- modules/lang/javascript/README.org | 1 - modules/lang/javascript/config.el | 7 ------- modules/lang/javascript/packages.el | 1 - 3 files changed, 9 deletions(-) diff --git a/modules/lang/javascript/README.org b/modules/lang/javascript/README.org index 2d45742fa..7edd05fc5 100644 --- a/modules/lang/javascript/README.org +++ b/modules/lang/javascript/README.org @@ -37,7 +37,6 @@ This module adds JavaScript and TypeScript support. + [[https://github.com/mooz/js2-mode][js2-mode]] + [[https://github.com/felipeochoa/rjsx-mode][rjsx-mode]] + [[https://github.com/emacs-typescript/typescript.el][typescript-mode]] -+ [[https://github.com/aaronjensen/eslintd-fix][eslintd-fix]] + [[https://github.com/magnars/js2-refactor.el][js2-refactor]] + [[https://github.com/mojochao/npm-mode][npm-mode]] + [[https://github.com/abicky/nodejs-repl.el][nodejs-repl]] diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index 4b6debd2d..cb7f067ee 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -241,13 +241,6 @@ to tide." (js2r-add-keybindings-with-prefix (format "%s r" doom-localleader-key))))) -(use-package! eslintd-fix - :commands eslintd-fix - :config - (setq-hook! 'eslintd-fix-mode-hook - flycheck-javascript-eslint-executable eslintd-fix-executable)) - - ;;;###package skewer-mode (map! :localleader (:after js2-mode diff --git a/modules/lang/javascript/packages.el b/modules/lang/javascript/packages.el index 8d4d99010..483ef6f47 100644 --- a/modules/lang/javascript/packages.el +++ b/modules/lang/javascript/packages.el @@ -8,7 +8,6 @@ (package! typescript-mode :pin "102587e458") ;; Tools -(package! eslintd-fix :pin "0c431141be") (package! js2-refactor :pin "d4c40b5fc8") (package! npm-mode :pin "3ee7c0bad5") (package! add-node-modules-path :pin "f31e69ccb6") From b7836322f6f10ec689cfc5f8e4fe448f8297d8cd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 23:51:38 -0400 Subject: [PATCH 083/167] Refactor tide-mode's lookup handlers The remap bypass is no longer necessary. --- modules/lang/javascript/config.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index cb7f067ee..479116ec7 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -179,9 +179,11 @@ to tide." (setq-default company-backends (delq 'company-tide (default-value 'company-backends)))) (set-company-backend! 'tide-mode 'company-tide) ;; navigation - (set-lookup-handlers! 'tide-mode - :definition '(tide-jump-to-definition :async t) - :references '(tide-references :async t)) + (set-lookup-handlers! 'tide-mode :async t + :definition #'tide-jump-to-definition + :references #'tide-references + :documentation #'tide-documentation-at-point) + (set-popup-rule! "^\\*tide-documentation" :quit t) ;; resolve to `doom-project-root' if `tide-project-root' fails (advice-add #'tide-project-root :override #'+javascript-tide-project-root-a) ;; cleanup tsserver when no tide buffers are left @@ -194,8 +196,6 @@ to tide." ;; `tide-mode-hook' is too early, so... (advice-add #'tide-setup :after #'eldoc-mode) - (define-key tide-mode-map [remap +lookup/documentation] #'tide-documentation-at-point) - (map! :localleader :map tide-mode-map "R" #'tide-restart-server From 0acc6c4e98381e8a580a7ac0b93ee84cad203d4e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 23 Apr 2020 23:52:59 -0400 Subject: [PATCH 084/167] Run julia-repl-use-emacsclient after opening a REPL --- modules/lang/julia/autoload.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/autoload.el b/modules/lang/julia/autoload.el index 5d0d16641..d25f60b58 100644 --- a/modules/lang/julia/autoload.el +++ b/modules/lang/julia/autoload.el @@ -10,7 +10,8 @@ "Run an inferior instance of `julia' inside Emacs." (interactive) (if (require 'julia-repl nil t) - (julia-repl) + (prog1 (julia-repl) + (julia-repl-use-emacsclient)) (let ((buffer (get-buffer-create "*Julia*"))) (unless (comint-check-proc "*Julia*") (apply #'make-comint-in-buffer "Julia" "*Julia*" julia-program julia-arguments)) From 5205fde6199391cf493f5d58483bfe6118ca6166 Mon Sep 17 00:00:00 2001 From: Elais Player Date: Thu, 23 Apr 2020 22:00:27 -0600 Subject: [PATCH 085/167] Add useful defaults and bindings to scheme mode (#2947) * Add useful defaults and bindings to scheme mode Scheme mode was pretty bare for a long time now and lacked many of geiser's useful features like `geiser-smart-tab` and starting the geiser repl on entering a file. This turns them on by default for the productive schemer. Besides that the following key bindings were remapped + `SPC m e e` -> `geiser-eval-last-sexp` + `SPC m e d` -> `geiser-eval-definition` + `SPC m e D` -> `geiser-eval-definition-and-go` This brings the geiser keymaps in line with other lisp modes in doom. Another change involves adding macro expand commands under `SPC m m` so schemers can see what evil lurks beneath their commands. Geiser autodoc commands have also been added under `SPC m h` for schemers to read the docs, though they can still use `SPC c k` to do the same thing. * Remove package cookie Its only necessary when not using (use-package!) * Use setq instead of custom * Add `defer t` back * Add defer flag for scheme package If a user went directly to a scheme file after load they would get an error concerning rainbow-delimiters not being loaded. Deferring scheme mode stops that error from happening * Fix typo Co-authored-by: Elais Player --- modules/lang/scheme/config.el | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 67e5bfd6a..261cfadd8 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -1,16 +1,19 @@ ;;; lang/scheme/config.el -*- lexical-binding: t; -*- -;;;###package scheme -(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode) - +(use-package! scheme + :defer t + :hook ((scheme-mode . rainbow-delimiters-mode) + (scheme-mode . geiser-mode))) (use-package! geiser :defer t :init (setq geiser-active-implementations '(guile chicken mit chibi chez)) + (setq geiser-mode-start-repl-p t) + (setq geiser-smart-tab-p t) (unless (featurep! :lang racket) (push 'racket geiser-active-implementations)) - (after! scheme ; built-in + (after! scheme ; built-in (set-repl-handler! 'scheme-mode '+scheme/open-repl) (set-eval-handler! 'scheme-mode #'geiser-eval-region) (set-lookup-handlers! 'scheme-mode @@ -22,24 +25,34 @@ ( "\\* [A-Za-z0-9_-]+ REPL \\*" :quit nil))) (map! :localleader :map scheme-mode-map - "'" #'geiser-mode-switch-to-repl - "s" #'geiser-set-scheme + "'" #'geiser-mode-switch-to-repl + "\"" #'geiser-connect + "[" #'geiser-squarify + "\\" #'geiser-insert-lambda + "s" #'geiser-set-scheme (:prefix ("e" . "eval") "b" #'geiser-eval-buffer "B" #'geiser-eval-buffer-and-go - "e" #'geiser-eval-definition - "E" #'geiser-eval-definition-and-go + "e" #'geiser-eval-last-sexp + "d" #'geiser-eval-definition + "D" #'geiser-eval-definition-and-go "r" #'geiser-eval-region "R" #'geiser-eval-region-and-go) (:prefix ("h" . "help") - "d" 'geiser-autodoc) - ;; TODO add more help keybindings - + "d" #'geiser-autodoc + "<" #'geiser-xref-callers + ">" #'geiser-xref-callees + "i" #'geiser-doc-look-up-manual) + (:prefix ("m" . "macro") + "r" #'geiser-expand-region + "d" #'geiser-expand-definition + "e" #'geiser-expand-last-sexp) (:prefix ("r" . "repl") "b" #'geiser-switch-to-repl "q" #'geiser-repl-exit + "l" #'geiser-load-current-buffer "r" #'geiser-restart-repl "R" #'geiser-reload "c" #'geiser-repl-clear-buffer))) From 68c6225115062972d7e26679a3718f11db81f41e Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Fri, 24 Apr 2020 12:14:00 +0800 Subject: [PATCH 086/167] yaml: hook -> mode --- modules/lang/yaml/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el index 282b4ed7a..f9f081b57 100644 --- a/modules/lang/yaml/config.el +++ b/modules/lang/yaml/config.el @@ -1,7 +1,7 @@ ;;; lang/yaml/config.el -*- lexical-binding: t; -*- (use-package! yaml-mode - :hook "Procfile\\'" + :mode "Procfile\\'" :init (when (featurep! +lsp) (add-hook 'yaml-mode-local-vars-hook #'lsp!)) From 74d05552c1302614b7efb967166fb193d7c67548 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 00:33:54 -0400 Subject: [PATCH 087/167] Refactor scheme module --- modules/lang/scheme/config.el | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 261cfadd8..2c2ce36a4 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -1,20 +1,19 @@ ;;; lang/scheme/config.el -*- lexical-binding: t; -*- (use-package! scheme - :defer t - :hook ((scheme-mode . rainbow-delimiters-mode) - (scheme-mode . geiser-mode))) + :hook (scheme-mode . rainbow-delimiters-mode)) + (use-package! geiser - :defer t + :hook (scheme-mode . geiser-mode) :init - (setq geiser-active-implementations '(guile chicken mit chibi chez)) - (setq geiser-mode-start-repl-p t) - (setq geiser-smart-tab-p t) + (setq geiser-active-implementations '(guile chicken mit chibi chez) + geiser-mode-start-repl-p t + geiser-smart-tab-p t) (unless (featurep! :lang racket) (push 'racket geiser-active-implementations)) (after! scheme ; built-in - (set-repl-handler! 'scheme-mode '+scheme/open-repl) + (set-repl-handler! 'scheme-mode #'+scheme/open-repl) (set-eval-handler! 'scheme-mode #'geiser-eval-region) (set-lookup-handlers! 'scheme-mode :definition #'geiser-edit-symbol-at-point @@ -30,7 +29,6 @@ "[" #'geiser-squarify "\\" #'geiser-insert-lambda "s" #'geiser-set-scheme - (:prefix ("e" . "eval") "b" #'geiser-eval-buffer "B" #'geiser-eval-buffer-and-go @@ -39,7 +37,6 @@ "D" #'geiser-eval-definition-and-go "r" #'geiser-eval-region "R" #'geiser-eval-region-and-go) - (:prefix ("h" . "help") "d" #'geiser-autodoc "<" #'geiser-xref-callers From abc201ae06c9af4c5914e5892e615687e15c3200 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 00:34:28 -0400 Subject: [PATCH 088/167] Improve indent logic in scheme-mode Better indentation for property lists and functions starting with 'define'. --- modules/lang/scheme/autoload.el | 45 +++++++++++++++++++++++++++++++++ modules/lang/scheme/config.el | 3 ++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/modules/lang/scheme/autoload.el b/modules/lang/scheme/autoload.el index 91729cb0b..464129d81 100644 --- a/modules/lang/scheme/autoload.el +++ b/modules/lang/scheme/autoload.el @@ -1,5 +1,50 @@ ;;; lang/scheme/autoload.el -*- lexical-binding: t; -*- +(defvar calculate-lisp-indent-last-sexp) + +;; Adapted from https://github.com/alezost/emacs-config/blob/master/utils/al-scheme.el#L76-L123 +;;;###autoload +(defun +scheme-scheme-indent-function-a (indent-point state) + "Advice to replace `scheme-indent-function'. + +This function is the same as `scheme-indent-function' except it indents property +lists properly and names starting with 'default'." + (let ((normal-indent (current-column))) + (goto-char (1+ (elt state 1))) + (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) + (if (and (elt state 2) + ;; NOTE looking-at -> looking-at-p + (not (looking-at-p "\\sw\\|\\s_"))) + (unless (> (save-excursion (forward-line 1) (point)) + calculate-lisp-indent-last-sexp) + (goto-char calculate-lisp-indent-last-sexp) + (beginning-of-line) + (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)) + (backward-prefix-chars) + (current-column) + (let* ((function (buffer-substring + (point) (progn (forward-sexp 1) (point)))) + (method (or (get (intern-soft function) 'scheme-indent-function) + (get (intern-soft function) 'scheme-indent-hook)))) + (cond ((or (eq method 'defun) + (and (null method) + (> (length function) 3) + ;; NOTE string-match -> string-match-p + ;; NOTE The original regexp is "\\`def" but it will mess + ;; indentation with such names as 'default-...'. + (string-match-p "\\`define" function))) + (lisp-indent-defform state indent-point)) + ;; NOTE Added this clause to handle alignment of keyword symbols + ((and (null method) + (> (length function) 1) + (string-match-p "\\`:" function)) + (let ((lisp-body-indent 1)) + (lisp-indent-defform state indent-point))) + ((integerp method) + (lisp-indent-specform method state indent-point normal-indent)) + (method + (funcall method state indent-point normal-indent))))))) + ;;;###autoload (defun +scheme/open-repl (&optional arg) "Open the Scheme REPL." diff --git a/modules/lang/scheme/config.el b/modules/lang/scheme/config.el index 2c2ce36a4..995868f96 100644 --- a/modules/lang/scheme/config.el +++ b/modules/lang/scheme/config.el @@ -1,7 +1,8 @@ ;;; lang/scheme/config.el -*- lexical-binding: t; -*- (use-package! scheme - :hook (scheme-mode . rainbow-delimiters-mode)) + :hook (scheme-mode . rainbow-delimiters-mode) + :config (advice-add #'scheme-indent-function :override #'+scheme-scheme-indent-function-a)) (use-package! geiser From a308f1a914412a9494d582d0d6915d40f9c4cbea Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:01:13 -0400 Subject: [PATCH 089/167] Bind SPC m l t -> org-toggle-link-display --- modules/lang/org/config.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 15aa2c126..17c031a68 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -657,12 +657,13 @@ between the two." "x" #'org-capture-goto-last-stored) (:prefix ("l" . "links") "c" #'org-cliplink + "d" #'+org/remove-link + "i" #'org-id-store-link "l" #'org-insert-link "L" #'org-insert-all-links "s" #'org-store-link "S" #'org-insert-last-stored-link - "i" #'org-id-store-link - "d" #'+org/remove-link) + "t" #'org-toggle-link-display) (:prefix ("r" . "refile") "." #'+org/refile-to-current-file "c" #'+org/refile-to-running-clock From a7b31eab2176245a5d38c010a3f3181f32d76bff Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:02:53 -0400 Subject: [PATCH 090/167] Add org table keybinds under SPC m b --- modules/lang/org/config.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 17c031a68..96716a831 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -623,9 +623,16 @@ between the two." (:prefix ("b" . "tables") "-" #'org-table-insert-hline "a" #'org-table-align + "b" #'org-table-blank-field "c" #'org-table-create-or-convert-from-region + "dc" #'org-table-delete-column + "dr" #'org-table-kill-row "e" #'org-table-edit-field + "f" #'org-table-edit-formulas "h" #'org-table-field-info + "s" #'org-table-sort-lines + "r" #'org-table-recalculate + "R" #'org-table-recalculate-buffer-tables (:when (featurep! +gnuplot) "p" #'org-plot/gnuplot)) (:prefix ("c" . "clock") From 42fd3d0cb65ce4caf934afced1ff30fd9b583f96 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:05:35 -0400 Subject: [PATCH 091/167] Move org deadline/schedule keys under SPC m d --- modules/lang/org/config.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 96716a831..970e11a60 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -590,7 +590,6 @@ between the two." "." #'helm-org-in-buffer-headings "/" #'helm-org-agenda-files-headings) "A" #'org-archive-subtree - "d" #'org-deadline "e" #'org-export-dispatch "f" #'org-footnote-new "h" #'org-toggle-heading @@ -600,7 +599,6 @@ between the two." "o" #'org-set-property "p" #'org-priority "q" #'org-set-tags-command - "s" #'org-schedule "t" #'org-todo "T" #'org-todo-list (:prefix ("a" . "attachments") @@ -648,6 +646,11 @@ between the two." "x" #'org-clock-cancel "=" #'org-clock-timestamps-up "-" #'org-clock-timestamps-down) + (:prefix ("d" . "date/deadline") + "d" #'org-deadline + "s" #'org-schedule + "t" #'org-time-stamp + "T" #'org-time-stamp-inactive) (:prefix ("g" . "goto") "g" #'org-goto (:when (featurep! :completion ivy) From b40d85e9b2e5feefa58aa3361c1ef6be5854289d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:06:41 -0400 Subject: [PATCH 092/167] Make SPC m c (clock) keybinds mnemonic + more clock keybinds --- modules/lang/org/config.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 970e11a60..80a5e4891 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -634,16 +634,18 @@ between the two." (:when (featurep! +gnuplot) "p" #'org-plot/gnuplot)) (:prefix ("c" . "clock") - "c" #'org-clock-in - "C" #'org-clock-out + "c" #'org-clock-cancel "d" #'org-clock-mark-default-task "e" #'org-clock-modify-effort-estimate "E" #'org-set-effort - "l" #'org-clock-in-last "g" #'org-clock-goto "G" (λ! (org-clock-goto 'select)) - "r" #'org-clock-report - "x" #'org-clock-cancel + "i" #'org-clock-in + "I" #'org-clock-in-last + "o" #'org-clock-out + "r" #'org-resolve-clocks + "R" #'org-clock-report + "t" #'org-evaluate-time-range "=" #'org-clock-timestamps-up "-" #'org-clock-timestamps-down) (:prefix ("d" . "date/deadline") From e8cd7b540485d34a257a1dae8fea425613c0debb Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:08:09 -0400 Subject: [PATCH 093/167] Add SPC m {#,*,+} org keybinds --- modules/lang/org/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 80a5e4891..2a3a2b282 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -580,7 +580,10 @@ between the two." [remap doom/forward-to-last-non-comment-or-eol] #'org-end-of-line :localleader + "#" #'org-update-statistics-cookies "'" #'org-edit-special + "*" #'org-ctrl-c-star + "+" #'org-ctrl-c-minus "," #'org-switchb "." #'org-goto (:when (featurep! :completion ivy) From 38f957557ae29224ee91ba393e3b571a70ef1e2d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:32:52 -0400 Subject: [PATCH 094/167] Remove def-package macros They've been deprecated for some time now. --- core/core-modules.el | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/core/core-modules.el b/core/core-modules.el index c0125b8dd..372872c5f 100644 --- a/core/core-modules.el +++ b/core/core-modules.el @@ -538,18 +538,5 @@ CATEGORY and MODULE can be omitted When this macro is used from inside a module (memq category (doom-module-get (car module) (cdr module) :flags))))) t)) -;; DEPRECATED -(defmacro def-package! (&rest args) - "Do not use this macro. Use `use-package!' instead." - (warn "`def-package!' is deprecated and was renamed to `use-package!'") - `(use-package! ,@args)) -(make-obsolete 'def-package! 'use-package! "2.0.9") - -(defmacro def-package-hook! (&rest args) - "Do not use this macro. Use `use-package!' instead." - (warn "`def-package-hook!' is deprecated and was renamed to `use-package-hook!'") - `(use-package-hook! ,@args)) -(make-obsolete 'def-package-hook! 'use-package-hook! "2.0.9") - (provide 'core-modules) ;;; core-modules.el ends here From c51b2d42ad3e4e839ffa9c27b642edbd8ded3d5e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:33:24 -0400 Subject: [PATCH 095/167] Remove require! macro This was meant for unit tests, which is where it will be moved to. --- core/core-modules.el | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/core/core-modules.el b/core/core-modules.el index 372872c5f..f3c22fb71 100644 --- a/core/core-modules.el +++ b/core/core-modules.el @@ -481,39 +481,6 @@ WARNINGS: (lambda () ,@body) 'append))) -(defmacro require! (category module &rest flags) - "Loads the CATEGORY MODULE module with FLAGS. - -CATEGORY is a keyword, MODULE is a symbol and FLAGS are symbols. - - (require! :lang php +lsp) - -This is for testing and internal use. This is not the correct way to enable a -module." - `(let ((doom-modules (or ,doom-modules (doom-modules))) - (module-path (doom-module-locate-path ,category ',module))) - (doom-module-set - ,category ',module - (let ((plist (doom-module-get ,category ',module))) - ,(when flags - `(plist-put plist :flags `,flags)) - (unless (plist-member plist :path) - (plist-put plist :path ,(doom-module-locate-path category module))) - plist)) - (if (directory-name-p module-path) - (condition-case-unless-debug ex - (let ((doom--current-module ',(cons category module)) - (doom--current-flags ',flags)) - (load! "init" module-path :noerror) - (load! "config" module-path :noerror)) - ('error - (lwarn 'doom-modules :error - "%s in '%s %s' -> %s" - (car ex) ,category ',module - (error-message-string ex)))) - (warn 'doom-modules :warning "Couldn't find module '%s %s'" - ,category ',module)))) - (defmacro featurep! (category &optional module flag) "Returns t if CATEGORY MODULE is enabled. From 309e71eea7063baee1a45f7bfb23fae4a9174db4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 02:36:44 -0400 Subject: [PATCH 096/167] term/vterm: mention vterm-module-cmake-args in readme --- modules/term/vterm/README.org | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/term/vterm/README.org b/modules/term/vterm/README.org index 2eab1af61..019fc5882 100644 --- a/modules/term/vterm/README.org +++ b/modules/term/vterm/README.org @@ -88,6 +88,13 @@ There are several ways to manually install the module: 1. You can use =M-x vterm-module-compile= to let emacs automatically compile and install the module. + Modify ~vterm-module-cmake-args~ to pass arguments to the cmake build script. + e.g. To use a local build of libvterm instead of the included one. + + #+BEGIN_SRC elisp + (setq vterm-module-cmake-args "-DUSE_SYSTEM_LIBVTERM=yes") + #+END_SRC + *WARNING*: Emacs will hang during the compilation. It may take a while. 2. You can compile and install the module yourself. Go to the vterm installation From f8693d0f8c0833a576768f41bb1df5b13bf90027 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 04:07:57 -0400 Subject: [PATCH 097/167] Load snippets *after* yasnippet config in daemon --- modules/editor/snippets/config.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/editor/snippets/config.el b/modules/editor/snippets/config.el index 2a337412f..71218a728 100644 --- a/modules/editor/snippets/config.el +++ b/modules/editor/snippets/config.el @@ -20,9 +20,7 @@ ;; Remove default ~/.emacs.d/snippets (defvar yas-snippet-dirs nil) - (if (daemonp) - ;; If in a daemon session, front-load this expensive work: - (after! yasnippet (yas-reload-all)) + (unless (daemonp) ;; Ensure `yas-reload-all' is called as late as possible. Other modules ;; could have additional configuration for yasnippet. For example, ;; file-templates. @@ -89,7 +87,10 @@ ;; Replace commands with superior alternatives :map yas-minor-mode-map [remap yas-new-snippet] #'+snippets/new - [remap yas-visit-snippet-file] #'+snippets/edit)) + [remap yas-visit-snippet-file] #'+snippets/edit) + + ;; If in a daemon session, front-load this expensive work: + (if (daemonp) (yas-reload-all))) (use-package! auto-yasnippet From 2389332b90235b9ea2d76159c3cccc8877e31b24 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 05:01:27 -0400 Subject: [PATCH 098/167] Fix #2963: ripgrep backend error for counsel-file-jump --- modules/completion/ivy/config.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 8688311b6..d0693cbea 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -262,7 +262,10 @@ evil-ex-specific constructs, so we disable it solely in evil-ex." (cond ((executable-find doom-projectile-fd-binary) (cons doom-projectile-fd-binary (list "-t" "f" "-E" ".git"))) ((executable-find "rg") - (split-string (format counsel-rg-base-command "--files --no-messages") " " t)) + (append (list "rg" "-0" "--files" "--color=never" "--hidden" "--no-messages") + (cl-loop for dir in projectile-globally-ignored-directories + collect (format "--glob '!%s'" dir)) + (if IS-WINDOWS (list "--path-separator /")))) ((cons find-program args))) (unless (listp args) (user-error "`counsel-file-jump-args' is a list now, please customize accordingly.")) From 9fe35c5fa471df997b8546c824bac497c4481f86 Mon Sep 17 00:00:00 2001 From: Alexander Graul Date: Wed, 22 Apr 2020 23:38:07 +0200 Subject: [PATCH 099/167] mu4e: Adjust config to mu4e 1.4 mu4e 1.4 brings quite a few changes, including the deprecation of previously used variables. These are now guarded by a version comparison. org-mu4e is not needed for linking anymore, org-mu4e-link-query-in-headers-mode was renamed. It's new version defaults to nil and is therefore not set anymore -- I am not sure if the default was changed or setting it was not strictly needed previously. --- modules/email/mu4e/autoload/email.el | 7 ++++--- modules/email/mu4e/config.el | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index 27d9a10db..f413207df 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -6,7 +6,7 @@ list of cons cells (VARIABLE . VALUE) -- you may want to modify: + `user-full-name' (this or the global `user-full-name' is required) - + `user-mail-address' (required) + + `user-mail-address' (required in mu4e < 1.4) + `smtpmail-smtp-user' (required for sending mail from Emacs) OPTIONAL: @@ -19,8 +19,9 @@ OPTIONAL: DEFAULT-P is a boolean. If non-nil, it marks that email account as the default/fallback account." (after! mu4e - (when-let (address (cdr (assq 'user-mail-address letvars))) - (add-to-list 'mu4e-user-mail-address-list address)) + (when (version< mu4e-mu-version "1.4") + (when-let (address (cdr (assq 'user-mail-address letvars))) + (add-to-list 'mu4e-user-mail-address-list address))) (setq mu4e-contexts (cl-loop for context in mu4e-contexts unless (string= (mu4e-context-name context) label) diff --git a/modules/email/mu4e/config.el b/modules/email/mu4e/config.el index 3bdb86efa..b61d1af6b 100644 --- a/modules/email/mu4e/config.el +++ b/modules/email/mu4e/config.el @@ -14,9 +14,11 @@ :commands mu4e mu4e-compose-new :init (provide 'html2text) ; disable obsolete package - (setq mu4e-maildir "~/.mail" - mu4e-attachment-dir "~/.mail/.attachments" - mu4e-user-mail-address-list nil) + (require 'mu4e-meta) + (when (version< mu4e-mu-version "1.4") + (setq mu4e-maildir "~/.mail" + mu4e-user-mail-address-list nil)) + (setq mu4e-attachment-dir "~/.mail/.attachments") :config (pcase +mu4e-backend (`mbsync @@ -104,8 +106,9 @@ (use-package! org-mu4e :hook (mu4e-compose-mode . org-mu4e-compose-org-mode) :config - (setq org-mu4e-link-query-in-headers-mode nil - org-mu4e-convert-to-html t) + (setq org-mu4e-convert-to-html t) + (when (version< mu4e-mu-version "1.4") + (setq org-mu4e-link-query-in-headers-mode nil)) ;; Only render to html once. If the first send fails for whatever reason, ;; org-mu4e would do so each time you try again. From 842283ec10bb72e0a08f06d02a0dd3c971962a8b Mon Sep 17 00:00:00 2001 From: Alexander Graul Date: Fri, 24 Apr 2020 12:09:38 +0200 Subject: [PATCH 100/167] Update mu4e README, add mbsync config section --- modules/email/mu4e/README.org | 55 ++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/modules/email/mu4e/README.org b/modules/email/mu4e/README.org index 9f4a95172..0001c53c2 100644 --- a/modules/email/mu4e/README.org +++ b/modules/email/mu4e/README.org @@ -12,11 +12,12 @@ - [[#arch-linux][Arch Linux]] - [[#nixos][NixOS]] - [[#opensuse][openSUSE]] - - [[Debian/Ubuntu]] + - [[#debianubuntu][Debian/Ubuntu]] - [[#features][Features]] - [[#configuration][Configuration]] - [[#offlineimap][offlineimap]] - [[#mbsync][mbsync]] + - [[#mu-and-mu4e][mu and mu4e]] - [[#troubleshooting][Troubleshooting]] - [[#no-such-file-or-directory-mu4e][=No such file or directory, mu4e=]] - [[#void-function-org-time-add-error-on-gentoo][~(void-function org-time-add)~ error on Gentoo]] @@ -105,20 +106,53 @@ sudo apt-get install maildir-utils # mu * Configuration ** offlineimap -This module uses =mbsync= by default. To change this, change ~+mu4e-backend~: +This module uses =mbsync= by default. To use =offlineimap=, change ~+mu4e-backend~: #+BEGIN_SRC emacs-lisp (setq +mu4e-backend 'offlineimap) #+END_SRC -Then you must set up offlineimap and index your mail: +Next, you need to write a configuration file for =offlineimap=. Mine can be found +[[https://github.com/hlissner/dotfiles/tree/master/shell/mu][in my dotfiles repository]]. It is configured to download mail to ~\~/.mail~. I +use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find a *very* +detailed configuration [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]]. -1. Write a ~\~/.offlineimaprc~. Mine can be found [[https://github.com/hlissner/dotfiles/tree/master/shell/mu][in my dotfiles repository]]. It - is configured to download mail to ~\~/.mail~. I use [[https://www.passwordstore.org/][unix pass]] to securely - store my login credentials. You can find a *very* detailed configuration - [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]]. -2. Download your email: ~offlineimap -o~ (may take a while) -3. Index it with mu: ~mu index --maildir ~/.mail~ +Next you can download your email with ~offlineimap -o~. This may take a while, +especially if you have thousands of mails. + +You can now proceed with the [[*mu and mu4e][mu and mu4e]] section. + +** mbsync +The steps needed to set up =mu4e= with =mbsync= are very similar to the ones for +[[*offlineimap][offlineimap]]. + +Start with writing a ~\~/.mbsyncrc~. An example for GMAIL can be found on +[[http://pragmaticemacs.com/emacs/migrating-from-offlineimap-to-mbsync-for-mu4e/][pragmaticemacs.com]]. A non-GMAIL example is available as a gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]]. The [[http://isync.sourceforge.net/mbsync.html][manual +page]] contains all needed information to set up your own. + +Next you can download your email with ~mbsync --all~. This may take a while, but +should be quicker than =offlineimap= ;). + +You can now proceed with the [[*mu and mu4e][mu and mu4e]] section. + +** mu and mu4e +You should have your email downloaded already. If you have not, you need to set +=offlineimap= or =mbsync= up before you proceed. + +Before you can use =mu4e= or the cli program =mu=, you need to index your email +initially. How to do that differs a little depending on the version of =mu= you +use. You can check your version with ~mu --version~. + +For =mu= *>=1.4* you need to run two commands: +#+BEGIN_SRC sh +mu init --maildir ~/.mail --my-address email@example.com +mu index +#+END_SRC + +=mu= *<1.4* only requires one command: +#+BEGIN_SRC sh +mu index --maildir ~/.mail +#+END_SRC Then configure Emacs to use your email address: @@ -130,12 +164,11 @@ Then configure Emacs to use your email address: (mu4e-trash-folder . "/Lissner.net/Trash") (mu4e-refile-folder . "/Lissner.net/All Mail") (smtpmail-smtp-user . "henrik@lissner.net") - (user-mail-address . "henrik@lissner.net") + (user-mail-address . "henrik@lissner.net") ;; only needed for mu < 1.4 (mu4e-compose-signature . "---\nHenrik Lissner")) t) #+END_SRC -** TODO mbsync * Troubleshooting ** =No such file or directory, mu4e= You will get =No such file or directory, mu4e= errors if you don't run ~doom From ecdeb489f81f91909a43dd86e47779fcbbc86f46 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 15:12:33 -0400 Subject: [PATCH 101/167] Update {ivy,helm}-xref for Emacs 27 More variables to set! --- modules/tools/lookup/config.el | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index cd78596b3..a186ed10c 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -136,12 +136,17 @@ Dictionary.app behind the scenes to get definitions.") (use-package! ivy-xref :when (featurep! :completion ivy) :config - (setq xref-show-xrefs-function #'ivy-xref-show-xrefs) - (set-popup-rule! "^\\*xref\\*$" :ignore t)) + (set-popup-rule! "^\\*xref\\*$" :ignore t) + ;; xref initialization is different in Emacs 27 - there are two different + ;; variables which can be set rather than just one + (when EMACS27+ + (setq xref-show-definitions-function #'ivy-xref-show-defs)) + ;; Necessary in Emacs <27. In Emacs 27 it will affect all xref-based + ;; commands other than xref-find-definitions too (eg project-find-regexp) + (setq xref-show-xrefs-function #'ivy-xref-show-xrefs)) (use-package! helm-xref - :when (featurep! :completion helm) - :config (setq xref-show-xrefs-function (if EMACS27+ #'helm-xref-show-xrefs-27 #'helm-xref-show-xrefs)))) + :when (featurep! :completion helm))) ;; From 6bcd1063e6dfe6a9fbd2f35f5cdcf49acd9fb555 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 15:54:53 -0400 Subject: [PATCH 102/167] org-roam-buffer-no-delete-other-windows = t Make org-roam buffer sticky. --- modules/lang/org/contrib/roam.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index ef1fb7761..cdc4b841e 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -36,6 +36,7 @@ (setq org-roam-directory (expand-file-name (or org-roam-directory "") org-directory) org-roam-verbose nil ; https://youtu.be/fn4jIlFwuLU + org-roam-buffer-no-delete-other-windows t ; make org-roam buffer sticky org-roam-completion-system (cond ((featurep! :completion helm) 'helm) ((featurep! :completion ivy) 'ivy) From 169821b9eb7f715c4f06c7685ff21aae9287e1d1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 15:56:39 -0400 Subject: [PATCH 103/167] Refactor hide-mode-line in org-roam buffer --- modules/lang/org/contrib/roam.el | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index cdc4b841e..a82594dfb 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -46,12 +46,9 @@ (or (featurep! :completion helm +fuzzy) (featurep! :completion ivy +fuzzy))) - ;; HACK Hide the mode line in the org-roam buffer, since it serves no purpose. - ;; This makes it easier to distinguish among other org buffers. - (defadvice! +org--hide-mode-line-a (&rest _) - :after #'org-roam-buffer--get-create - (with-current-buffer org-roam-buffer - (hide-mode-line-mode +1)))) + ;; Hide the mode line in the org-roam buffer, since it serves no purpose. This + ;; makes it easier to distinguish among other org buffers. + (add-hook 'org-roam-buffer-prepare-hook #'hide-mode-line-mode)) ;; Since the org module lazy loads org-protocol (waits until an org URL is From 635d070e9432b135d4f78448e5702cbce43991a5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 16:03:46 -0400 Subject: [PATCH 104/167] Open org-roam-buffer after org-roam-find-file Adds +org-roam-open-buffer-on-find-file option. --- modules/lang/org/contrib/roam.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index a82594dfb..72db4d5f8 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -1,6 +1,13 @@ ;;; lang/org/contrib/roam.el -*- lexical-binding: t; -*- ;;;###if (featurep! +roam) +(defvar +org-roam-open-buffer-on-find-file t + "If non-nil, open the org-roam buffer when opening an org roam file.") + + +;; +;;; Packages + (use-package! org-roam :hook (org-load . org-roam-mode) :hook (org-roam-backlinks-mode . turn-on-visual-line-mode) @@ -46,6 +53,18 @@ (or (featurep! :completion helm +fuzzy) (featurep! :completion ivy +fuzzy))) + ;; Normally, the org-roam buffer doesn't open until you explicitly call + ;; `org-roam'. If `+org-roam-open-buffer-on-find-file' is non-nil, the + ;; org-roam buffer will be opened for you when you use `org-roam-find-file' + ;; (but not `find-file', to limit the scope of this behavior). + (add-hook! 'find-file-hook + (defun +org-roam-open-buffer-maybe-h () + (and +org-roam-open-buffer-on-find-file + (memq 'org-roam-buffer--update-maybe post-command-hook) + (not (eq 'visible (org-roam-buffer--visibility))) + (with-current-buffer (window-buffer) + (org-roam-buffer--get-create))))) + ;; Hide the mode line in the org-roam buffer, since it serves no purpose. This ;; makes it easier to distinguish among other org buffers. (add-hook 'org-roam-buffer-prepare-hook #'hide-mode-line-mode)) From 71e23fb2506c9d82ee4c82b1ed006f4800467595 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 18:47:10 -0400 Subject: [PATCH 105/167] Refactor how solaire-mode is activated Otherwise we are swapping bg faces even if the user removes solaire-global-mode from doom-load-theme-hook. --- modules/ui/doom/config.el | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 2c62ec2db..656f96fbc 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -24,14 +24,7 @@ (use-package! solaire-mode :when (or (daemonp) (display-graphic-p)) - :defer t - :init - (add-hook! 'doom-load-theme-hook :append - (defun +doom-solaire-swap-bg-faces-maybe-h () - (when (string-prefix-p "doom-" (symbol-name doom-theme)) - (require 'solaire-mode) - (solaire-mode-swap-bg))) - #'solaire-global-mode) + :hook (doom-load-theme . solaire-global-mode) :config (when (daemonp) (add-hook! 'doom-switch-frame-hook @@ -40,6 +33,12 @@ (solaire-global-mode +1) (solaire-global-mode -1))))) + (add-hook! 'solaire-global-mode-hook + (defun +doom-solaire-swap-bg-faces-maybe-h () + (and solaire-global-mode + (string-prefix-p "doom-" (symbol-name doom-theme)) + (solaire-mode-swap-bg)))) + ;; org-capture takes an org buffer and narrows it. The result is erroneously ;; considered an unreal buffer, so solaire-mode must be restored. (add-hook 'org-capture-mode-hook #'turn-on-solaire-mode) From 2c0935cb6204efe2e3e252fc96389e208704a249 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 18:57:18 -0400 Subject: [PATCH 106/167] Feature detect set-face-extend In case there are folks out there using versions of Emacs 27 before :extend was introduced. --- modules/ui/nav-flash/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui/nav-flash/config.el b/modules/ui/nav-flash/config.el index 862be30d2..5bfdd2747 100644 --- a/modules/ui/nav-flash/config.el +++ b/modules/ui/nav-flash/config.el @@ -37,4 +37,5 @@ (advice-add #'what-cursor-position :after #'+nav-flash-blink-cursor-a) :config - (if EMACS27+ (set-face-extend 'nav-flash-face t))) + (when (fboundp 'set-face-extend) + (set-face-extend 'nav-flash-face t))) From 6159068b4d9917468880cb840e1e0d6568be271c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 20:41:56 -0400 Subject: [PATCH 107/167] Rewrite custom org link types This should fix a few issues with links (like org-download links) resolving to the incorrect org-directory or org-id-attach-dir (because it's resolved too early). I've also simplified and refactored the API to make it easier to grok. --- modules/lang/org/autoload/org-link.el | 64 +++++++++++++++++---------- modules/lang/org/config.el | 14 +++--- modules/lang/org/contrib/dragndrop.el | 12 ++--- 3 files changed, 54 insertions(+), 36 deletions(-) diff --git a/modules/lang/org/autoload/org-link.el b/modules/lang/org/autoload/org-link.el index bc4317183..dd887a5a8 100644 --- a/modules/lang/org/autoload/org-link.el +++ b/modules/lang/org/autoload/org-link.el @@ -1,43 +1,59 @@ ;;; lang/org/autoload/org-link.el -*- lexical-binding: t; -*- -(defun +org--relpath (path root) +(defun +org--relative-path (path root) (if (and buffer-file-name (file-in-directory-p buffer-file-name root)) (file-relative-name path) path)) -;;;###autoload -(defun +org-def-link (key dir) - (org-link-set-parameters - key - :complete (lambda () (+org--relpath (+org-link-read-file key dir) dir)) - :follow (lambda (link) (find-file (expand-file-name link dir))) - :face (lambda (link) - (if (file-exists-p (expand-file-name link dir)) - 'org-link - 'error)))) +(defun +org--read-link-path (key dir &optional fn) + (let ((file (funcall (or fn #'read-file-name) (format "%s: " (capitalize key)) dir))) + (format "%s:%s" key (file-relative-name file dir)))) ;;;###autoload -(defun +org-link-read-file (key dir) - (let ((file (read-file-name (format "%s: " (capitalize key)) dir))) - (format "%s:%s" - key - (file-relative-name file dir)))) +(defun +org-define-basic-link (key dir-var &rest plist) + "Define a link with some basic completion & fontification. + +KEY is the name of the link type. DIR-VAR is the directory variable to resolve +links relative to. PLIST is passed to `org-link-set-parameters' verbatim. + +Links defined with this will be rendered in the `error' face if the file doesn't +exist, and `org-link' otherwise." + (declare (indent 2)) + (let ((requires (plist-get plist :requires))) + (apply #'org-link-set-parameters + key + :complete (lambda () + (if requires (mapc #'require (doom-enlist requires))) + (+org--relative-path (+org--read-link-path key (symbol-value dir-var)) + (symbol-value dir-var))) + :follow (lambda (link) (find-file (expand-file-name link (symbol-value dir-var)))) + :face (lambda (link) + (if (file-exists-p (expand-file-name link (symbol-value dir-var))) + 'org-link + 'error)) + (doom-plist-delete plist :requires)))) + + +;; +;;; Image data functions (for custom inline images) ;;;###autoload -(defun +org-link-read-directory (key dir) - (let ((file (read-directory-name (format "%s: " (capitalize key)) dir))) - (format "%s:%s" - key - (file-relative-name file dir)))) +(defun +org-image-file-data-fn (protocol link _description) + "Intepret LINK as an image file path and return its data." + (when (and (file-exists-p link) + (image-type-from-file-name link)) + (with-temp-buffer + (insert-file-contents-literally link) + (buffer-string)))) ;;;###autoload -(defun +org-inline-data-image (_protocol link _description) +(defun +org-inline-image-data-fn (_protocol link _description) "Interpret LINK as base64-encoded image data." (base64-decode-string link)) ;;;###autoload -(defun +org-image-link (protocol link _description) - "Interpret LINK as base64-encoded image data." +(defun +org-http-image-data-fn (protocol link _description) + "Interpret LINK as an URL to an image file." (when (image-type-from-file-name link) (if-let* ((buf (url-retrieve-synchronously (concat protocol ":" link)))) (with-current-buffer buf diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 2a3a2b282..d6e0073e6 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -397,15 +397,15 @@ underlying, modified buffer. This fixes that." '("wolfram" . "https://wolframalpha.com/input/?i=%s") '("doom-repo" . "https://github.com/hlissner/doom-emacs/%s")) - (+org-def-link "org" org-directory) - (+org-def-link "doom" doom-emacs-dir) - (+org-def-link "doom-docs" doom-docs-dir) - (+org-def-link "doom-modules" doom-modules-dir) + (+org-define-basic-link "org" 'org-directory) + (+org-define-basic-link "doom" 'doom-emacs-dir) + (+org-define-basic-link "doom-docs" 'doom-docs-dir) + (+org-define-basic-link "doom-modules" 'doom-modules-dir) ;; Allow inline image previews of http(s)? urls or data uris - (org-link-set-parameters "http" :image-data-fun #'+org-image-link) - (org-link-set-parameters "https" :image-data-fun #'+org-image-link) - (org-link-set-parameters "img" :image-data-fun #'+org-inline-data-image) + (org-link-set-parameters "http" :image-data-fun #'+org-http-image-data-fn) + (org-link-set-parameters "https" :image-data-fun #'+org-http-image-data-fn) + (org-link-set-parameters "img" :image-data-fun #'+org-inline-image-data-fn) ;; Add support for youtube links + previews (require 'org-yt nil t)) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index 28f3229dc..bd57a7042 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -16,12 +16,14 @@ (after! org ;; A shorter link to attachments - (+org-def-link "download" org-attach-id-dir) - (setf (alist-get "download" org-link-abbrev-alist nil nil #'equal) - (abbreviate-file-name org-attach-id-dir))) + (+org-define-basic-link "download" 'org-attach-id-dir + :image-data-fun #'+org-image-file-data-fn + :requires 'org-download)) :config - (setq org-download-image-dir org-attach-id-dir - org-download-link-format "[[download:%s]]\n" + (unless org-download-image-dir + (setq org-download-image-dir (expand-file-name (or org-attach-id-dir "") + org-directory))) + (setq org-download-link-format "[[download:%s]]\n" org-download-method 'attach org-download-heading-lvl nil org-download-timestamp "_%Y%m%d_%H%M%S" From 211519270aed31e78445fb643220c3a563a13f34 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 20:45:21 -0400 Subject: [PATCH 108/167] Resolve org download links relative to org-download-image-dir --- modules/lang/org/contrib/dragndrop.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index bd57a7042..7d5e18ff3 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -16,7 +16,7 @@ (after! org ;; A shorter link to attachments - (+org-define-basic-link "download" 'org-attach-id-dir + (+org-define-basic-link "download" 'org-download-image-dir :image-data-fun #'+org-image-file-data-fn :requires 'org-download)) :config From 903460cd101be896c9744ebcd3955f47f50744f6 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 21:22:12 -0400 Subject: [PATCH 109/167] Base org-download links off of org-download-image-dir --- modules/lang/org/contrib/dragndrop.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index 7d5e18ff3..a0c2490df 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -56,8 +56,8 @@ an file icon produced by `+org-attach-icon-for')." (if (= org-download-image-org-width 0) "" (format "#+attr_org: :width %dpx\n" org-download-image-org-width)) (format org-download-link-format - (if (file-in-directory-p filename org-attach-id-dir) - (file-relative-name filename org-attach-id-dir) + (if (file-in-directory-p filename org-download-image-dir) + (file-relative-name filename org-download-image-dir) filename)))) (org-display-inline-images)) ((insert From efee551709e2f72e1105312302856bd976f7b813 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 24 Apr 2020 22:00:17 -0400 Subject: [PATCH 110/167] doctor: check for fc-list (fontconfig) Instead of find-font, which the doc doesn't even use. --- core/cli/doctor.el | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/core/cli/doctor.el b/core/cli/doctor.el index 5f790ccfa..22e690e2e 100644 --- a/core/cli/doctor.el +++ b/core/cli/doctor.el @@ -123,11 +123,8 @@ in." "both is rarely intentional; you should one or the other.")) ;; Check for fonts - (if (not (fboundp 'find-font)) - (progn - (warn! "Warning: unable to detect font") - (explain! "The `find-font' function is missing. This could indicate the incorrect " - "version of Emacs is being used!")) + (if (not (executable-find "fc-list")) + (warn! "Warning: unable to detect fonts because fontconfig isn't installed") ;; all-the-icons fonts (when (and (pcase system-type (`gnu/linux (concat (or (getenv "XDG_DATA_HOME") From ddc7bf782ca4b06253067f6d69058bd368ea5554 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 00:18:30 -0400 Subject: [PATCH 111/167] Activate jit-lock Improves scrolling and buffer performance by deferring font-locking until you're idle. YMMV --- core/core.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/core.el b/core/core.el index 5c93aa91b..f25296992 100644 --- a/core/core.el +++ b/core/core.el @@ -273,6 +273,11 @@ users).") ;; quickly self-correct. (setq fast-but-imprecise-scrolling t) +;; Font locking is the source of much slowness in Emacs. jit-lock-mode tries to +;; defer fontification until the user is idle. This should help... in theory. +(setq jit-lock-defer-time 0 ; only defer while processing input + jit-lock-stealth-time 2) ; fontify the rest of the buffer after a delay + ;; Resizing the Emacs frame can be a terribly expensive part of changing the ;; font. By inhibiting this, we halve startup times, particularly when we use ;; fonts that are larger than the system default (which would resize the frame). From efee633311330d1e061a680a27dda908701cfca3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 00:48:20 -0400 Subject: [PATCH 112/167] Reduce wasteful after! blocks in map! expansion When there are no labels, it produces empty after! forms, which do nothing. --- core/core-keybinds.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/core-keybinds.el b/core/core-keybinds.el index 7a698eab2..19b0517c4 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -109,8 +109,8 @@ all hooks after it are ignored.") (general--concat t doom-leader-key ,key) ,desc)))))))) (macroexp-progn - (cons `(after! which-key ,@(nreverse wkforms)) - (nreverse forms))))) + (append (and wkforms `((after! which-key ,@(nreverse wkforms)))) + (nreverse forms))))) (defmacro define-leader-key! (&rest args) "Define keys. From adbe9041cea7ab3d5ff877f22b5ca9dd88480040 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 01:23:55 -0400 Subject: [PATCH 113/167] Fix inline previews for download:* links --- modules/lang/org/autoload/org-link.el | 25 +++++++++++++++++++------ modules/lang/org/contrib/dragndrop.el | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/modules/lang/org/autoload/org-link.el b/modules/lang/org/autoload/org-link.el index dd887a5a8..17d8c1517 100644 --- a/modules/lang/org/autoload/org-link.el +++ b/modules/lang/org/autoload/org-link.el @@ -19,16 +19,20 @@ links relative to. PLIST is passed to `org-link-set-parameters' verbatim. Links defined with this will be rendered in the `error' face if the file doesn't exist, and `org-link' otherwise." (declare (indent 2)) - (let ((requires (plist-get plist :requires))) + (let ((requires (plist-get plist :requires)) + (dir-fn (if (functionp dir-var) + dir-var + (lambda () (symbol-value 'dir-var))))) (apply #'org-link-set-parameters key :complete (lambda () (if requires (mapc #'require (doom-enlist requires))) - (+org--relative-path (+org--read-link-path key (symbol-value dir-var)) - (symbol-value dir-var))) - :follow (lambda (link) (find-file (expand-file-name link (symbol-value dir-var)))) + (+org--relative-path (+org--read-link-path key (funcall dir-fn)) + (funcall dir-fn))) + :follow (lambda (link) + (org-link-open-as-file (expand-file-name link (funcall dir-fn)) nil)) :face (lambda (link) - (if (file-exists-p (expand-file-name link (symbol-value dir-var))) + (if (file-exists-p (expand-file-name link (funcall dir-fn))) 'org-link 'error)) (doom-plist-delete plist :requires)))) @@ -40,11 +44,20 @@ exist, and `org-link' otherwise." ;;;###autoload (defun +org-image-file-data-fn (protocol link _description) "Intepret LINK as an image file path and return its data." + (setq + link (expand-file-name + link + (pcase protocol + ("download" (or org-download-image-dir org-attach-id-dir default-directory)) + ("attachment" org-attach-id-dir) + (_ default-directory)))) (when (and (file-exists-p link) (image-type-from-file-name link)) (with-temp-buffer + (set-buffer-multibyte nil) + (setq buffer-file-coding-system 'binary) (insert-file-contents-literally link) - (buffer-string)))) + (buffer-substring-no-properties (point-min) (point-max))))) ;;;###autoload (defun +org-inline-image-data-fn (_protocol link _description) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index a0c2490df..2611b792f 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -16,7 +16,7 @@ (after! org ;; A shorter link to attachments - (+org-define-basic-link "download" 'org-download-image-dir + (+org-define-basic-link "download" (lambda () (or org-download-image-dir org-attach-id-dir ".")) :image-data-fun #'+org-image-file-data-fn :requires 'org-download)) :config From 8c1525e3d80d6d8a5bafc7abf6a1ec9f423a3703 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 01:27:25 -0400 Subject: [PATCH 114/167] Rewrite org-download/attach systems + Cut down on unnecessary code & advice + Fix 'attach and 'download methods for org-download so that a) their links actually work and b) inline previews of their links show up. + Allow users to only set org-attach-id-dir (which will be mirrored to org-download-image-dir, unless the user has changed it). + Prevent a few edge cases where org-attach-id-dir or org-download-image-dir were blank. --- modules/lang/org/autoload/org-attach.el | 4 +- modules/lang/org/config.el | 14 ++--- modules/lang/org/contrib/dragndrop.el | 82 +++++++++++-------------- 3 files changed, 44 insertions(+), 56 deletions(-) diff --git a/modules/lang/org/autoload/org-attach.el b/modules/lang/org/autoload/org-attach.el index fa41685b2..dbe88739b 100644 --- a/modules/lang/org/autoload/org-attach.el +++ b/modules/lang/org/autoload/org-attach.el @@ -42,7 +42,7 @@ PATH (a string) can be an url, a local file path, or a base64 encoded datauri." (unless (eq major-mode 'org-mode) (user-error "Not in an org buffer")) (require 'org-download) - (condition-case ex + (condition-case-unless-debug e (let ((raw-uri (url-unhex-string path))) (cond ((string-match-p "^data:image/png;base64," path) (org-download-dnd-base64 path nil)) @@ -56,4 +56,4 @@ PATH (a string) can be an url, a local file path, or a base64 encoded datauri." ;; insert the link (org-download-insert-link raw-uri new-path))))) (error - (user-error "Failed to attach file: %s" (error-message-string ex))))) + (user-error "Failed to attach file: %s" (error-message-string e))))) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index d6e0073e6..2674fc9f0 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -367,11 +367,10 @@ underlying, modified buffer. This fixes that." (defun +org-init-attachments-h () "Sets up org's attachment system." ;; Centralized attachments directory - (setq org-attach-id-dir (doom-path org-directory org-attach-id-dir) - ;; Store a link to attachments when they are attached - org-attach-store-link-p t - ;; Inherit attachment properties from parent nodes - org-attach-use-inheritance t) + (unless org-attach-id-dir + (setq org-attach-id-dir (expand-file-name ".attach/" org-directory))) + (setq org-attach-store-link-p t ; store link when attaching files + org-attach-use-inheritance t) ; inherit attachment properties from parent nodes (after! projectile (add-to-list 'projectile-globally-ignored-directories org-attach-id-dir))) @@ -932,9 +931,8 @@ compelling reason, so..." org-capture :preface ;; Change org defaults (should be set before org loads) - (setq org-directory "~/org/" - org-attach-id-dir ".attach/" - org-publish-timestamp-directory (concat doom-cache-dir "org-timestamps/") + (defvar org-attach-id-dir nil) ; set later + (setq org-publish-timestamp-directory (concat doom-cache-dir "org-timestamps/") org-preview-latex-image-directory (concat doom-cache-dir "org-latex/")) ;; Make most of the default modules opt-in, because I sincerely doubt most diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index 2611b792f..8d7b54699 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -21,57 +21,47 @@ :requires 'org-download)) :config (unless org-download-image-dir - (setq org-download-image-dir (expand-file-name (or org-attach-id-dir "") - org-directory))) - (setq org-download-link-format "[[download:%s]]\n" - org-download-method 'attach - org-download-heading-lvl nil + (setq org-download-image-dir org-attach-id-dir)) + (setq org-download-method 'attach org-download-timestamp "_%Y%m%d_%H%M%S" org-download-screenshot-method (cond (IS-MAC "screencapture -i %s") (IS-LINUX (cond ((executable-find "maim") "maim -s %s") ((executable-find "scrot") "scrot -s %s") - ((executable-find "gnome-screenshot") "gnome-screenshot -a -f %s"))))) + ((executable-find "gnome-screenshot") "gnome-screenshot -a -f %s")))) - ;; Handle non-image files a little differently. Images should be inserted - ;; as-is, as image previews. Other files, like pdfs or zips, should be linked - ;; to, with an icon indicating the type of file. - (defadvice! +org--dragndrop-insert-link-a (_link filename) - "Produces and inserts a link to FILENAME into the document. + org-download-heading-lvl nil + org-download-link-format "[[download:%s]]\n" + org-download-annotate-function (lambda (_link) "") + org-download-link-format-function + (lambda (filename) + (if (eq org-download-method 'attach) + (format "[[attachment:%s]]\n" + (org-link-escape + (file-relative-name filename (org-attach-dir)))) + ;; Handle non-image files a little differently. Images should be + ;; inserted as normal with previews. Other files, like pdfs or zips, + ;; should be linked to, with an icon indicating the type of file. + (format (concat (unless (image-type-from-file-name filename) + (concat (+org-attach-icon-for filename) + " ")) + org-download-link-format) + (org-link-escape + (funcall org-download-abbreviate-filename-function filename))))) + org-download-abbreviate-filename-function + (lambda (path) + (if (file-in-directory-p path org-download-image-dir) + (file-relative-name path org-download-image-dir) + path))) -If FILENAME is an image, produce an download:%s path, otherwise use file:%s (with -an file icon produced by `+org-attach-icon-for')." - :override #'org-download-insert-link - (if (looking-back "^[ \t]+" (line-beginning-position)) - (delete-region (match-beginning 0) (match-end 0)) - (newline)) - (cond ((image-type-from-file-name filename) - (insert - (concat - (if (= org-download-image-html-width 0) "" - (format "#+attr_html: :width %dpx\n" org-download-image-html-width)) - (if (= org-download-image-latex-width 0) "" - (format "#+attr_latex: :width %dcm\n" org-download-image-latex-width)) - (if (= org-download-image-org-width 0) "" - (format "#+attr_org: :width %dpx\n" org-download-image-org-width)) - (format org-download-link-format - (if (file-in-directory-p filename org-download-image-dir) - (file-relative-name filename org-download-image-dir) - filename)))) - (org-display-inline-images)) - ((insert - (format "%s [[./%s][%s]] " - (+org-attach-icon-for filename) - (file-relative-name filename (file-name-directory buffer-file-name)) - (file-name-nondirectory (directory-file-name filename))))))) - - (advice-add #'org-download--dir-2 :override #'ignore) - (defadvice! +org--dragndrop-download-fullname-a (path) - "Write PATH relative to current file." - :filter-return #'org-download--fullname - (let ((dir (or (if buffer-file-name (file-name-directory buffer-file-name)) - default-directory))) - (if (file-in-directory-p dir org-attach-id-dir) - (file-relative-name path dir) - path)))) + (defadvice! +org--dragndrop-then-display-inline-images-a (_link filename) + :after #'org-download-insert-link + (when (image-type-from-file-name filename) + (save-excursion + (org-display-inline-images + t t + (progn (org-back-to-heading t) (point)) + (progn (org-end-of-subtree t t) + (when (and (org-at-heading-p) (not (eobp))) (backward-char 1)) + (point))))))) From 2d1a2ed8b39ea6480339430d56bc0d565c678642 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 01:55:54 -0400 Subject: [PATCH 115/167] Fix basic links not returning correct paths A silly typo by a silly goose. --- modules/lang/org/autoload/org-link.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/autoload/org-link.el b/modules/lang/org/autoload/org-link.el index 17d8c1517..59d6c477b 100644 --- a/modules/lang/org/autoload/org-link.el +++ b/modules/lang/org/autoload/org-link.el @@ -22,7 +22,7 @@ exist, and `org-link' otherwise." (let ((requires (plist-get plist :requires)) (dir-fn (if (functionp dir-var) dir-var - (lambda () (symbol-value 'dir-var))))) + (lambda () (symbol-value dir-var))))) (apply #'org-link-set-parameters key :complete (lambda () From 096803e2fe0c018d335f9a646902c8ae8ebd4080 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 02:40:20 -0400 Subject: [PATCH 116/167] Don't trigger redraw on every frame switch --- modules/ui/doom/config.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 656f96fbc..adbb35714 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -30,8 +30,10 @@ (add-hook! 'doom-switch-frame-hook (defun +doom-disable-solaire-mode-maybe-h () (if (display-graphic-p) - (solaire-global-mode +1) - (solaire-global-mode -1))))) + (unless solaire-global-mode + (solaire-global-mode +1)) + (when solaire-global-mode + (solaire-global-mode -1)))))) (add-hook! 'solaire-global-mode-hook (defun +doom-solaire-swap-bg-faces-maybe-h () From 30dea4bf0c3854f991d02efa73c3d38c5d9a7640 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 02:55:06 -0400 Subject: [PATCH 117/167] Update tools/lookup readme Relevant to #1166 --- modules/tools/lookup/README.org | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/modules/tools/lookup/README.org b/modules/tools/lookup/README.org index b69d6b25e..5c51aeb78 100644 --- a/modules/tools/lookup/README.org +++ b/modules/tools/lookup/README.org @@ -25,13 +25,14 @@ - [[#commands][Commands]] * Description -Integrates with code navigation and documentation tools to help you quickly look -up definitions, references and documentation. +This module adds code navigation and documentation lookup tools to help you +quickly look up definitions, references, documentation, dictionary definitions +or synonyms. + Jump-to-definition and find-references implementations that just work. + Powerful xref integration for languages that support it. -+ Documentation lookup for a variety of online sources (like devdocs.io, - stackoverflow or youtube). ++ Search online providers like devdocs.io, stackoverflow, google, duckduckgo or + youtube (duckduckgo and google have live suggestions). + Integration with Dash.app docsets. + Support for online (and offline) dictionaries and thesauruses. @@ -43,14 +44,27 @@ up definitions, references and documentation. ** Plugins + [[https://github.com/jacktasia/dumb-jump][dumb-jump]] + [[https://github.com/alexmurray/ivy-xref][ivy-xref]] or [[https://github.com/brotzeit/helm-xref][helm-xref]] -+ [[https://github.com/nathankot/counsel-dash][counsel-dash]] or [[https://github.com/areina/helm-dash][helm-dash]] ++ [[https://github.com/tkf/emacs-request][request]] ++ =+docsets= + + [[https://github.com/dash-docs-el/dash-docs][dash-docs]] + + [[https://github.com/nathankot/counsel-dash][counsel-dash]] or [[https://github.com/areina/helm-dash][helm-dash]] ++ =+dictionary= + + if macOS + + [[https://github.com/xuchunyang/osx-dictionary.el][osx-dictionary]]* (on macOS) + + else + + [[https://github.com/abo-abo/define-word][define-word]] + + [[https://github.com/maxchaos/emacs-powerthesaurus][powerthesaurus]] + + =+offline= + + [[https://github.com/gromnitsky/wordnut][wordnut]] + + [[https://github.com/hpdeifel/synosaurus][synosaurus]] * Prerequisites This module has several soft dependencies: + ~ripgrep~ as a last-resort fallback for jump-to-definition/find-references. -+ ~sqlite3~ for Dash docset support. -+ ~wordnet~ for offline dictionary and thesaurus support. ++ ~sqlite3~ for Dash docset support (if you have =+docsets= enabled) ++ ~wordnet~ for offline dictionary and thesaurus support (if you have + =+dictionary +offline= enabled). ** MacOS #+BEGIN_SRC sh From 2fdffb746610390ae16a74a39410507e3a47f48c Mon Sep 17 00:00:00 2001 From: Viktor Astakhov Date: Sat, 25 Apr 2020 16:39:55 +0300 Subject: [PATCH 118/167] Add poetry flag to the documentation --- docs/modules.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules.org b/docs/modules.org index 4a8dc11d4..432792920 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -129,7 +129,7 @@ Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/php/README.org][php]] =+lsp= - TODO + plantuml - TODO + purescript - TODO -+ [[file:../modules/lang/python/README.org][python]] =+lsp +pyenv +conda= - TODO ++ [[file:../modules/lang/python/README.org][python]] =+lsp +pyenv +conda +poetry= - TODO + qt - TODO + racket - TODO + [[file:../modules/lang/rest/README.org][rest]] - TODO From ade60c9265c45239d8866d5683d8c49c7659a9d5 Mon Sep 17 00:00:00 2001 From: Eugene Diachkin Date: Sat, 25 Apr 2020 16:53:06 +0300 Subject: [PATCH 119/167] Fix typo in key bindings --- modules/config/default/+evil-bindings.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 43a3e3770..33346997a 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -22,7 +22,7 @@ (define-key! :keymaps +default-minibuffer-maps "C-f" #'forward-word "C-b" #'backward-word - "M-f" #'foward-char + "M-f" #'forward-char "M-b" #'backward-char "C-j" #'next-line "C-k" #'previous-line From 77542bcccc3beb04af55b7d7315d86a9580200be Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 14:04:09 -0400 Subject: [PATCH 120/167] Bind C-j/C-k to next/prev history in evil-ex --- modules/config/default/+evil-bindings.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 43a3e3770..468e0dcc5 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -7,7 +7,9 @@ (define-key! evil-ex-completion-map "C-a" #'evil-beginning-of-line "C-b" #'evil-backward-char - "C-f" #'evil-forward-char) + "C-f" #'evil-forward-char + "C-j" #'previous-complete-history-element + "C-k" #'next-complete-history-element) (define-key! :keymaps +default-minibuffer-maps [escape] #'abort-recursive-edit From 6cb1390fac83262b91d0ed624aefabb0ba95608f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 15:40:24 -0400 Subject: [PATCH 121/167] Fix #2968: refactor how org-directory default is set --- modules/config/default/autoload/files.el | 8 ++++-- modules/lang/org/config.el | 35 ++++++++++++++++-------- modules/lang/org/contrib/roam.el | 2 +- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/modules/config/default/autoload/files.el b/modules/config/default/autoload/files.el index 3c90f6d23..e49e8255f 100644 --- a/modules/config/default/autoload/files.el +++ b/modules/config/default/autoload/files.el @@ -27,11 +27,15 @@ ;;;###autoload (defun +default/browse-notes () "Browse files from `org-directory'." - (interactive) (doom-project-browse org-directory)) + (interactive) + (require 'org) + (doom-project-browse org-directory)) ;;;###autoload (defun +default/find-in-notes () "Find a file under `org-directory', recursively." - (interactive) (doom-project-find-file org-directory)) + (interactive) + (require 'org) + (doom-project-find-file org-directory)) ;;;###autoload (defun +default/find-file-under-here () diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 2674fc9f0..86fc7beb9 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -65,6 +65,12 @@ Is relative to `org-directory', unless it is absolute. Is used in Doom's default ;; ;;; `org-load' hooks +(defun +org-init-org-directory-h () + (unless org-directory + (setq org-directory "~/org")) + (setq org-id-locations-file (expand-file-name ".orgids" org-directory))) + + (defun +org-init-agenda-h () (unless org-agenda-files (setq org-agenda-files (list org-directory))) @@ -340,7 +346,7 @@ relative to `org-directory', unless it is an absolute path." (defadvice! +org--prevent-save-prompts-when-refiling-a (&rest _) "Fix #462: when refiling from org-capture, Emacs prompts to kill the underlying, modified buffer. This fixes that." - :after 'org-refile + :after #'org-refile (when (bound-and-true-p org-capture-is-refiling) (org-save-all-org-buffers))) @@ -366,13 +372,15 @@ underlying, modified buffer. This fixes that." (defun +org-init-attachments-h () "Sets up org's attachment system." + (setq org-attach-store-link-p t ; store link after attaching files + org-attach-use-inheritance t) ; inherit properties from parent nodes + ;; Centralized attachments directory - (unless org-attach-id-dir - (setq org-attach-id-dir (expand-file-name ".attach/" org-directory))) - (setq org-attach-store-link-p t ; store link when attaching files - org-attach-use-inheritance t) ; inherit attachment properties from parent nodes - (after! projectile - (add-to-list 'projectile-globally-ignored-directories org-attach-id-dir))) + (after! org-attach + (unless org-attach-id-dir + (setq org-attach-id-dir (expand-file-name ".attach/" org-directory))) + (after! projectile + (add-to-list 'projectile-globally-ignored-directories org-attach-id-dir)))) (defun +org-init-custom-links-h () @@ -457,9 +465,9 @@ underlying, modified buffer. This fixes that." (defun +org-init-hacks-h () "Getting org to behave." - ;; Don't open separate windows + ;; Open file links in current window, rather than new ones (setf (alist-get 'file org-link-frame-setup) #'find-file) - ;; Open directory links in Emacs + ;; Open directory links in dired (add-to-list 'org-file-apps '(directory . emacs)) ;; When you create a sparse tree and `org-indent-mode' is enabled, the @@ -930,8 +938,11 @@ compelling reason, so..." org-list org-pcomplete org-src org-footnote org-macro ob org org-agenda org-capture :preface - ;; Change org defaults (should be set before org loads) - (defvar org-attach-id-dir nil) ; set later + ;; Set these to nil now so we can detect user changes to them later (and fall + ;; back on defaults otherwise) + (defvar org-directory nil) + (defvar org-attach-id-dir nil) + (setq org-publish-timestamp-directory (concat doom-cache-dir "org-timestamps/") org-preview-latex-image-directory (concat doom-cache-dir "org-latex/")) @@ -974,6 +985,7 @@ compelling reason, so..." #'+org-unfold-to-2nd-level-or-point-h) (add-hook! 'org-load-hook + #'+org-init-org-directory-h #'+org-init-appearance-h #'+org-init-agenda-h #'+org-init-attachments-h @@ -1007,7 +1019,6 @@ compelling reason, so..." ;; Global ID state means we can have ID links anywhere. This is required for ;; `org-brain', however. (setq org-id-track-globally t - org-id-locations-file (expand-file-name ".orgids" org-directory) org-id-locations-file-relative t) ;; HACK `org-id' doesn't check if `org-id-locations-file' exists or is diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index 72db4d5f8..62641dc6f 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -40,7 +40,7 @@ :desc "Tomorrow" "m" #'org-roam-dailies-tomorrow :desc "Yesterday" "y" #'org-roam-dailies-yesterday)) :config - (setq org-roam-directory (expand-file-name (or org-roam-directory "") + (setq org-roam-directory (expand-file-name (or org-roam-directory "roam") org-directory) org-roam-verbose nil ; https://youtu.be/fn4jIlFwuLU org-roam-buffer-no-delete-other-windows t ; make org-roam buffer sticky From e68e68755b8c221a3862273331fe3304d1c62ac3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 15:52:38 -0400 Subject: [PATCH 122/167] Don't auto-open roam buffer in capture popups --- modules/lang/org/contrib/roam.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index 62641dc6f..91e150b0e 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -61,6 +61,7 @@ (defun +org-roam-open-buffer-maybe-h () (and +org-roam-open-buffer-on-find-file (memq 'org-roam-buffer--update-maybe post-command-hook) + (not (window-parameter nil 'window-side)) ; don't proc for popups (not (eq 'visible (org-roam-buffer--visibility))) (with-current-buffer (window-buffer) (org-roam-buffer--get-create))))) From b93e3e41ed44db096df825bca0443b618b153375 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 16:07:20 -0400 Subject: [PATCH 123/167] Fix duplicate files in org-roam db due to symlinks --- modules/lang/org/contrib/roam.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index 91e150b0e..0af9b60b9 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -53,6 +53,16 @@ (or (featurep! :completion helm +fuzzy) (featurep! :completion ivy +fuzzy))) + ;; HACK On first invocation, `org-roam-db-build-cache' builds the cache with a + ;; list of unresolved file paths. If those are symlinks, you will later + ;; end up with duplicate entries in your roam DB (e.g. after + ;; `org-roam-capture'ing to an existing file). + ;; TODO Report/PR this upstream! + (defadvice! +org-roam-resolve-symlinks-a (args) + :filter-args #'org-roam--list-files + (setcar args (file-truename (car args))) + args) + ;; Normally, the org-roam buffer doesn't open until you explicitly call ;; `org-roam'. If `+org-roam-open-buffer-on-find-file' is non-nil, the ;; org-roam buffer will be opened for you when you use `org-roam-find-file' From afe3033627533424322a70ad1750131f4e2f6de8 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 16:10:02 -0400 Subject: [PATCH 124/167] Bump :lang org Kungsgeten/org-brain@3630eb8 -> Kungsgeten/org-brain@7ffbf68 bastibe/org-journal@3fdb5b3 -> bastibe/org-journal@8bf06b2 dzop/emacs-jupyter@62ad054 -> dzop/emacs-jupyter@785edbb emacs-straight/org-mode@9994e8e -> emacs-straight/org-mode@14d6f95 fuxialexander/org-pdftools@22d9a36 -> fuxialexander/org-pdftools@8cc15bb jethrokuan/org-roam@6175739 -> jethrokuan/org-roam@963692f kaushalmodi/ox-hugo@b6f4142 -> kaushalmodi/ox-hugo@5106b43 --- modules/lang/org/packages.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index 7ef518d73..afca11882 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -27,7 +27,7 @@ :recipe (:host github :repo "emacs-straight/org-mode" :files ("*.el" "lisp/*.el" "contrib/lisp/*.el")) - :pin "9994e8ee89") + :pin "14d6f95bec") ;; ...And prevent other packages from pulling org; org-plus-contrib satisfies ;; the dependency already: https://github.com/raxod502/straight.el/issues/352 (package! org :recipe (:local-repo nil)) @@ -47,11 +47,11 @@ :recipe (:host github :repo "hlissner/evil-org-mode") :pin "4d44e9bbdc")) (when (featurep! :tools pdf) - (package! org-pdftools :pin "22d9a367ab")) + (package! org-pdftools :pin "8cc15bb801")) (when (featurep! :tools magit) (package! orgit :pin "e147f05577")) (when (featurep! +brain) - (package! org-brain :pin "3630eb88a3")) + (package! org-brain :pin "7ffbf6816a")) (when (featurep! +dragndrop) (package! org-download :pin "46417e2bd3")) (when (featurep! +gnuplot) @@ -60,9 +60,11 @@ (when (featurep! +ipython) ; DEPRECATED (package! ob-ipython :pin "7147455230")) (when (featurep! +jupyter) - (package! jupyter :pin "62ad054001")) + (package! jupyter :pin "785edbbff6")) (when (featurep! +journal) - (package! org-journal :pin "3fdb5b3036")) + (package! org-journal :pin "8bf06b28d6")) +(when (featurep! +noter) + (package! org-noter :pin "9ead81d42d")) (when (featurep! +pomodoro) (package! org-pomodoro :pin "aa07c11318")) (when (featurep! +present) @@ -72,11 +74,9 @@ (package! org-tree-slide :pin "7bf09a02bd") (package! org-re-reveal :pin "61549f4c00")) (when (featurep! +roam) - (package! org-roam :pin "6175739b33") + (package! org-roam :pin "963692f353") (when (featurep! :completion company) (package! company-org-roam :pin "0913d86f16"))) -(when (featurep! +noter) - (package! org-noter :pin "9ead81d42d")) ;;; Babel (package! ob-async :pin "80a30b96a0") @@ -105,6 +105,6 @@ (when (featurep! +hugo) (package! ox-hugo :recipe (:host github :repo "kaushalmodi/ox-hugo" :nonrecursive t) - :pin "b6f4142de2")) + :pin "5106b430a1")) (when (featurep! :lang rst) (package! ox-rst :pin "9158bfd180")) From a16b305c0fae7d99eddd280a7748e179100cfaab Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 16:24:31 -0400 Subject: [PATCH 125/167] Add REVIEW comment for org-roam symlink advice See jethrokuan/org-roam#518 --- modules/lang/org/contrib/roam.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index 0af9b60b9..83f8c0bb9 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -57,7 +57,7 @@ ;; list of unresolved file paths. If those are symlinks, you will later ;; end up with duplicate entries in your roam DB (e.g. after ;; `org-roam-capture'ing to an existing file). - ;; TODO Report/PR this upstream! + ;; REVIEW When jethrokuan/org-roam#518 is merged (defadvice! +org-roam-resolve-symlinks-a (args) :filter-args #'org-roam--list-files (setcar args (file-truename (car args))) From aff4a337ace9b1b73e65c9ceba846ca76e646128 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 17:00:57 -0400 Subject: [PATCH 126/167] Fix #2971: void-function doom-modeline-update-env errors --- modules/ui/modeline/autoload.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/ui/modeline/autoload.el b/modules/ui/modeline/autoload.el index 58ecd562b..4fc40237a 100644 --- a/modules/ui/modeline/autoload.el +++ b/modules/ui/modeline/autoload.el @@ -31,14 +31,16 @@ Meant for `doom-change-font-size-hook'." "Update version strings in all buffers." (dolist (window (window-list)) (with-selected-window window - (doom-modeline-update-env) + (when (fboundp 'doom-modeline-update-env) + (doom-modeline-update-env)) (force-mode-line-update)))) ;;;###autoload (defun +modeline-clear-env-in-all-windows-h (&rest _) "Blank out version strings in all buffers." - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (setq doom-modeline-env--version - (bound-and-true-p doom-modeline-load-string)))) + (unless (featurep! +light) + (dolist (buffer (buffer-list)) + (with-current-buffer buffer + (setq doom-modeline-env--version + (bound-and-true-p doom-modeline-load-string))))) (force-mode-line-update t)) From 91cf27939cf0ab00333b595fd990e959aea8d50a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 17:01:15 -0400 Subject: [PATCH 127/167] Fix void-function set-modeline! errors When `:ui (modeline +light)` is enabled. --- modules/ui/modeline/autoload.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ui/modeline/autoload.el b/modules/ui/modeline/autoload.el index 4fc40237a..55b55a3dd 100644 --- a/modules/ui/modeline/autoload.el +++ b/modules/ui/modeline/autoload.el @@ -1,13 +1,13 @@ ;;; ui/modeline/autoload/modeline.el -*- lexical-binding: t; -*- ;;;###autodef -(defalias 'def-modeline-format! #'doom-modeline-def-modeline) +(fset 'def-modeline-format! #'doom-modeline-def-modeline) ;;;###autodef -(defalias 'def-modeline-segment! #'doom-modeline-def-segment) +(fset 'def-modeline-segment! #'doom-modeline-def-segment) ;;;###autodef -(defalias 'set-modeline! #'doom-modeline-set-modeline) +(fset 'set-modeline! #'doom-modeline-set-modeline) (defvar +modeline--old-bar-height nil) From 632175d1e2f38ecc070d48a65b776577a4260a7b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 17:02:47 -0400 Subject: [PATCH 128/167] Fix #2322: delete open posframes on doom/reload --- modules/completion/ivy/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index d0693cbea..2c3e9aba7 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -331,7 +331,9 @@ evil-ex-specific constructs, so we disable it solely in evil-ex." ;; posframe. (dolist (fn '(swiper counsel-rg counsel-grep counsel-git-grep)) (setf (alist-get fn ivy-posframe-display-functions-alist) - #'ivy-display-function-fallback))) + #'ivy-display-function-fallback)) + + (add-hook 'doom-reload-hook #'posframe-delete-all)) (use-package! flx From db03746daf8c3c04df73ced5ac4e723238532076 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 18:36:51 -0400 Subject: [PATCH 129/167] editor/evil: mention vim-unimpaired in ported plugins --- modules/editor/evil/README.org | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/editor/evil/README.org b/modules/editor/evil/README.org index 46053eaad..bbb2bd803 100644 --- a/modules/editor/evil/README.org +++ b/modules/editor/evil/README.org @@ -71,6 +71,7 @@ The following vim plugins have been ported to evil: | vim-lion | evil-lion | omap =gl= / =gL= | | vim-seek or vim-sneak | evil-snipe | mmap =s= / =S=, omap =z= / =Z= & =x= / =X= | | vim-surround | evil-embrace and evil-surround | vmap =S=, omap =ys= | +| vim-unimpaired | (provided by Doom) | [[https://github.com/hlissner/doom-emacs/blob/develop/modules/editor/evil/config.el#L413-L460][see the list]] | This module has also ported vim-unimpaired keybinds to Emacs. From 993888cd2b27e1e29376d891bb82aa0e12318150 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:23:13 -0400 Subject: [PATCH 130/167] Enable hl-line-mode in special-mode buffers --- core/core-ui.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/core-ui.el b/core/core-ui.el index ebbe798a1..6ff9e85ba 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -419,7 +419,7 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original (use-package! hl-line ;; Highlights the current line - :hook ((prog-mode text-mode conf-mode) . hl-line-mode) + :hook ((prog-mode text-mode conf-mode special-mode) . hl-line-mode) :config ;; Not having to render the hl-line overlay in multiple buffers offers a tiny ;; performance boost. I also don't need to see it in other buffers. From bba82465a040499bf9e2f40e5928805d06821968 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:45:31 -0400 Subject: [PATCH 131/167] Bump :lang org hlissner/evil-org-mode@4d44e9b -> hlissner/evil-org-mode@9cf661a --- modules/lang/org/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index afca11882..290071e58 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -45,7 +45,7 @@ (when (featurep! :editor evil +everywhere) (package! evil-org :recipe (:host github :repo "hlissner/evil-org-mode") - :pin "4d44e9bbdc")) + :pin "9cf661af8f")) (when (featurep! :tools pdf) (package! org-pdftools :pin "8cc15bb801")) (when (featurep! :tools magit) From 55d34174826fcd27b59dc0f0480ca26b9a295d13 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:47:07 -0400 Subject: [PATCH 132/167] Remove unused autodefs for :ui modeline #2971 --- modules/ui/modeline/autoload.el | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/ui/modeline/autoload.el b/modules/ui/modeline/autoload.el index 55b55a3dd..437390db3 100644 --- a/modules/ui/modeline/autoload.el +++ b/modules/ui/modeline/autoload.el @@ -1,15 +1,5 @@ ;;; ui/modeline/autoload/modeline.el -*- lexical-binding: t; -*- -;;;###autodef -(fset 'def-modeline-format! #'doom-modeline-def-modeline) - -;;;###autodef -(fset 'def-modeline-segment! #'doom-modeline-def-segment) - -;;;###autodef -(fset 'set-modeline! #'doom-modeline-set-modeline) - - (defvar +modeline--old-bar-height nil) ;;;###autoload (defun +modeline-resize-for-font-h () From 740b16a33f37ebfb918590975e8ab0d9d0ea8122 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:50:03 -0400 Subject: [PATCH 133/167] Bump :tools lsp emacs-lsp/helm-lsp@46a72f5 -> emacs-lsp/helm-lsp@db24399 emacs-lsp/lsp-ivy@a6b7841 -> emacs-lsp/lsp-ivy@81e81ce emacs-lsp/lsp-mode@e8e52fd -> emacs-lsp/lsp-mode@4898d35 --- modules/tools/lsp/packages.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/tools/lsp/packages.el b/modules/tools/lsp/packages.el index 70e65dead..29c0649a0 100644 --- a/modules/tools/lsp/packages.el +++ b/modules/tools/lsp/packages.el @@ -1,11 +1,11 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/lsp/packages.el -(package! lsp-mode :pin "e8e52fd4b1") +(package! lsp-mode :pin "4898d35ace") (package! lsp-ui :pin "242dfe859c") (when (featurep! :completion company) (package! company-lsp :pin "f921ffa0cd")) (when (featurep! :completion ivy) - (package! lsp-ivy :pin "a6b7841e08")) + (package! lsp-ivy :pin "81e81ced99")) (when (featurep! :completion helm) - (package! helm-lsp :pin "46a72f5af1")) + (package! helm-lsp :pin "db243993ea")) From 217a032035c52261ede0975ad0c35f039d34d94a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:52:10 -0400 Subject: [PATCH 134/167] Bump :tools magit magit/magit@0f1234e -> magit/magit@8de6ecf magit/forge@2e2d26c -> magit/forge@e2da806 --- modules/tools/magit/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tools/magit/packages.el b/modules/tools/magit/packages.el index 0bc97b4e1..97ac695ce 100644 --- a/modules/tools/magit/packages.el +++ b/modules/tools/magit/packages.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/magit/packages.el -(when (package! magit :pin "0f1234e785") +(when (package! magit :pin "8de6ecf5c5") (when (featurep! +forge) - (package! forge :pin "2e2d26cf42")) + (package! forge :pin "e2da80660a")) (package! magit-gitflow :pin "cc41b561ec") (package! magit-todos :pin "a0e5d1f3c7") (package! github-review :pin "50c6bcc7cf") From f2813a35d7feda3803faa3ad8660abddf2cb5fa4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:52:49 -0400 Subject: [PATCH 135/167] Bump :tools lookup abo-abo/define-word@d8c76d5 -> abo-abo/define-word@08c71b1 jacktasia/dumb-jump@73b2b48 -> jacktasia/dumb-jump@d760aa8 --- modules/tools/lookup/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/tools/lookup/packages.el b/modules/tools/lookup/packages.el index 59d3251a1..0206f4c1f 100644 --- a/modules/tools/lookup/packages.el +++ b/modules/tools/lookup/packages.el @@ -8,7 +8,7 @@ (package! helm)) ;; -(package! dumb-jump :pin "73b2b48fda") +(package! dumb-jump :pin "d760aa880f") (when (featurep! :completion ivy) (package! ivy-xref :pin "3d4c35fe2b")) (when (featurep! :completion helm) @@ -27,7 +27,7 @@ (when (featurep! +dictionary) (if IS-MAC (package! osx-dictionary :pin "1b79ff64c7") - (package! define-word :pin "d8c76d503b") + (package! define-word :pin "08c71b1ff4") ;; HACK Fix #2945: the main package is broken (see ;; SavchenkoValeriy/emacs-powerthesaurus). We use this fork until it is ;; merged. From 90197eed707a3e1ea3f439cbf9d1d394f78d54c9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:58:42 -0400 Subject: [PATCH 136/167] Bump :ui treemacs Alexander-Miller/treemacs@2bb14ac -> Alexander-Miller/treemacs@ee1b523 --- modules/ui/treemacs/packages.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ui/treemacs/packages.el b/modules/ui/treemacs/packages.el index cf79e6efd..a1e1ead7e 100644 --- a/modules/ui/treemacs/packages.el +++ b/modules/ui/treemacs/packages.el @@ -1,7 +1,8 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/treemacs/packages.el -(package! treemacs :pin "2bb14ac262") +(package! treemacs :pin "ee1b523b28") +;; These packages have no :pin because they're in the same repo (when (featurep! :editor evil +everywhere) (package! treemacs-evil)) (package! treemacs-projectile) From c68ca95dad3d4d1c9b6ea7f8b094a7e1fb46b3b4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 25 Apr 2020 21:59:02 -0400 Subject: [PATCH 137/167] Bump :ui modeline seagle0128/doom-modeline@0ce0acd -> seagle0128/doom-modeline@c177959 --- modules/ui/modeline/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/modeline/packages.el b/modules/ui/modeline/packages.el index 4a8eae288..f9427d43e 100644 --- a/modules/ui/modeline/packages.el +++ b/modules/ui/modeline/packages.el @@ -2,7 +2,7 @@ ;;; ui/modeline/packages.el (unless (featurep! +light) - (package! doom-modeline :pin "0ce0acd7bc")) + (package! doom-modeline :pin "c177959bbf")) (package! anzu :pin "3e34fb3df5") (when (featurep! :editor evil) (package! evil-anzu :pin "9bca6ca14d")) From 2ae397b88582d5854365f0ddf0a26c2ae45e50b3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 01:48:07 -0400 Subject: [PATCH 138/167] Redesign project readme --- README.md | 367 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 216 insertions(+), 151 deletions(-) diff --git a/README.md b/README.md index 60125414e..484051841 100644 --- a/README.md +++ b/README.md @@ -1,185 +1,250 @@ - - Made with Doom Emacs - - - Supports Emacs 26.x - 27.0.50 - - - Build status: develop - - - Join our discord server - -

+
+ +# Doom Emacs + +[Website] • [Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) + +![Made with Doom Emacs](https://img.shields.io/github/tag/hlissner/doom-emacs.svg?style=flat-square&label=release&color=58839b) +![Supports Emacs 26-27](https://img.shields.io/badge/Supports-Emacs_26.1_--_27.x-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) +![Latest commit](https://img.shields.io/github/last-commit/hlissner/doom-emacs/develop?style=flat-square) +![Build status: develop](https://img.shields.io/github/workflow/status/hlissner/doom-emacs/CI/develop?style=flat-square) +[![Discord Server](https://img.shields.io/discord/406534637242810369?color=blue&label=Discord%20Chat&logo=discord&logoColor=white&style=flat-square)][Discord] ![Doom Emacs Screenshot](https://raw.githubusercontent.com/hlissner/doom-emacs/screenshots/main.png) -

- Screenshots - | - Get started - | - Contribute - | - Documentation - | - FAQ -

+
--- -**Quick start** +### Table of Contents +- [Introduction](#introduction) +- [Features](#features) +- [Prerequisites](#prerequisites) +- [Install](#install) +- [Roadmap](#roadmap) +- [Getting help](#getting-help) +- [Contributing](#contributing) -1. **Install Emacs 26.1+**. 27 is recommended. _28+ is not supported_. -2. Install [ripgrep](https://github.com/BurntSushi/ripgrep) 11.0+. -3. Windows and BSD users will need GNU Find. -4. Clone Doom and run its installer: - - ```bash - git clone https://github.com/hlissner/doom-emacs ~/.emacs.d - ~/.emacs.d/bin/doom install - ``` - -Find more detailed install instructions [in the -documentation](docs/getting_started.org#install). - -**Table of Contents** - -- [What is Doom Emacs](#what-is-doom-emacs) - - [Doom's mantras](#dooms-mantras) - - [Features](#features) -- [Getting Help](#getting-help) - - [Community](#community) - - [Troubleshooting](#troubleshooting) - - [Contributing](#contributing) - -# What is Doom Emacs +# Introduction - + -It is a story as old as time. A stubborn, shell-dwelling, and melodramatic -vimmer -- envious of the features of modern text editors -- spirals into despair -before succumbing to the [dark side][url:evil-mode]. This is his config. +> It is a story as old as time. A stubborn, shell-dwelling, and melodramatic +> vimmer -- envious of the features of modern text editors -- spirals into +> despair before he succumbs to the [dark side][evil-mode]. This is his config. -Doom is a configuration framework for [GNU -Emacs](https://www.gnu.org/software/emacs/) tailored for Emacs bankruptcy -veterans who want less framework in their frameworks and the performance of a -hand rolled config (or better). It can be a foundation for your own config or a -resource for Emacs enthusiasts to learn more about our favorite OS. +Doom is a configuration framework for [GNU Emacs] tailored for Emacs bankruptcy +veterans who want less framework in their frameworks, a modicum of stability +(and reproducibility) from their package manager, and the performance of a hand +rolled config (or better). It can be a foundation for your own config or a +resource for Emacs enthusiasts to learn more about our favorite operating +system. -## Doom's mantras +Its design is guided by these mantras: -- **Gotta go fast.** Startup and run-time performance are priorities. Doom goes - beyond lazy loading packages by modifying them to be snappier and load lazier! -- **Close to metal.** There's less between you and vanilla Emacs by design. - There's less to grok, on top of Emacs. -- **Readability counts.** Internals ought to be written as if reading them were - part of the user experience, and it is! Modules should be syntactically sweet. - Backend logic should be functional (as much as elisp permits), abstraction - light and (hopefully) documented. -- **Opinionated, but not stubborn.** Doom is a bundle of reasonable defaults and - curated opinions, but all of it should be optional. Use as little or as much - of it as you like. -- **Your system, your rules.** There are more ways to set up your development - environment than there are dislikes on Youtube Rewind '18, so Doom leaves it - to you. Doom will not *automatically* install system dependencies (and will - coerce its plugins not to do so either). Use `doom doctor` to figure out - what's missing. ++ **Gotta go fast.** Startup and run-time performance are priorities. Doom goes + beyond by modifying packages to be snappier and load lazier. ++ **Close to metal.** There's less between you and vanilla Emacs by design. + That's less to grok and less to work around when you tinker. Internals ought + to be written as if reading them were part of Doom's UX, and it is! ++ **Opinionated, but not stubborn.** Doom is about reasonable defaults and + curated opinions, but use as little or as much of it as you like. ++ **Your system, your rules.** You know better. At least, Doom hopes so! It + won't *automatically* install system dependencies (and will force plugins not + to either). Rely on `doom doctor` to tell you what's missing. ++ **Nix/Guix was a great idea!** The Emacs ecosystem is temperamental. Things + break and they break often. Disaster recovery should be a priority! Doom's + package management should be declarative and your private config reproducible, + and comes with a means to roll back releases and updates (still a WIP). + +Check out [the FAQ][FAQ] for answers to common questions about the project. -## Features +# Features - Minimalistic good looks inspired by modern editors. -- A modular architecture that can be extended to your own configs. -- A standard library suited to simplifying your config. -- A declarative [package management system][doom:packages] (powered by - [straight.el][url:straight]) with a command line interface. Install packages - from anywhere, not just (M)ELPA. -- (Optional) Vim-emulation powered by [evil-mode][url:evil-mode], including - ports of popular vim plugins and functionality. - Curated and sane defaults for many packages, (major) OSes, and Emacs itself. +- A modular organizational structure for separating concerns in your config. +- A standard library designed to simplify your elisp bike shedding. +- A declarative [package management system][package-management] (powered by + [straight.el]) with a command line interface. Install packages from anywhere, + not just (M)ELPA, and pin them to any commit. +- Optional vim emulation powered by [evil-mode], including ports of popular vim + plugins like [vim-sneak], [vim-easymotion], [vim-unimpaired] and + [more][ported-vim-plugins]! +- Opt-in LSP integration for many languages, using [lsp-mode]. - Support for *many* programming languages. Includes syntax highlighting, linters/checker integration, inline code evaluation, code completion (where possible), REPLs, documentation lookups, snippets, and more! - Support for *many* tools, like docker, pass, ansible, terraform, and more. -- A Spacemacs-esque [keybinding scheme][doom:bindings], centered around leader - and localleader prefix keys (SPC and SPCm, by - default). -- A rule-based [popup management system][doom:popups] to control how temporary - or disposable buffers are displayed (and disposed of). -- Automatic indentation detection and [editorconfig][url:editorconfig] - integration. Let someone else argue about tabs vs **\_\***spaces**\*\_**. +- A Spacemacs-esque [keybinding scheme][bindings], centered around leader + and localleader prefix keys (SPC and SPCm for + evil users, C-c and C-c l for vanilla users). +- A rule-based [popup manager][popup-system] to control how temporary buffers + are displayed (and disposed of). +- Per-file indentation style detection and [editorconfig] integration. Let + someone else can argue about tabs vs **_spaces_**. - Project-management tools and framework-specific minor modes with their own snippets libraries. -- Project search (and replace) utilities, powered by [ripgrep][url:ripgrep]. +- Project search (and replace) utilities, powered by [ripgrep] and [ivy] or + [helm]. - Isolated and persistent workspaces (also substitutes for vim tabs). -- An envvar file generator that captures a snapshot of your shell environment - for Doom to load at startup. No more struggling to get Emacs to inherit your - `PATH`, among other things. +- Support for Chinese and Japanese input systems. +- Save a snapshot of your shell environment to a file for Emacs to load at + startup. No more struggling to get Emacs to inherit your `PATH`, among other + things. -# Getting Help -## Community +# Prerequisites ++ Git 2.23+ ++ Emacs 26.1+ *(27 is recommended)* with GNUTLS support ++ [ripgrep] 11.0+ ++ GNU `find` ++ *OPTIONAL:* [fd] 7.3.0+ (improves file indexing performance for some commands) + +Doom is comprised of [~150 optional modules][Modules], some of which may have +additional dependencies. [Visit their documentation][Modules] or run `bin/doom +doctor` to check for any that you may have missed. -We have [a Discord server][url:discord]! Hop on and say hi! -## Troubleshooting +# Install +``` sh +git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d +~/.emacs.d/bin/doom install +``` -Encountered a problem? Here are some things to try before shooting off that bug -report: +Then [read our Getting Started guide][docs] to be walked through setting up, +configuring and maintaining Doom Emacs. -- Run `bin/doom sync`. This ensures Doom is properly set up and its autoloads - files are up-to-date. -- Folks who have byte-compiled their config (with `bin/doom compile`) should run - `bin/doom clean` to rule out stale bytecode. Never debug with a byte-compiled - config. It makes your job harder. -- Run `bin/doom doctor` to detect common issues in your development environment - and missing third party dependencies. -- Search [Doom's issue tracker][github:issues] in case your issue was already +It's a good idea to add `~/.emacs.d/bin` to your `PATH`! Other `bin/doom` +commands you should know about: + ++ `doom sync` to synchronize your private config with Doom. Installs new + packages, removes orphaned packages and regenerates caches. Run this whenever + you modify your private `init.el` or `packages.el`, or install/remove an Emacs + package through your OS package manager (e.g. mu4e or agda). ++ `doom upgrade` to update Doom to the latest release & all installed packages. ++ `doom doctor` to diagnose common issues with your system and config. ++ `doom env` to dump a snapshot of your shell environment to a file that Doom + will load at startup. This allows Emacs to inherit your `PATH`, among other + things. ++ `doom build` to recompile all installed packages (use this if you up/downgrade + Emacs). + + +# Roadmap +Doom is an active and ongoing project. To make that development more +transparent, its roadmap (and other concerns) are published across three github +project boards and a newsletter: + ++ [Development Roadmap](/projects/3): roughly outlines our goals between release + milestones and their progress. ++ [Plugins under review](/projects/2): lists plugins we are watching and + considering for inclusion, and what their status for inclusion is. Please + consult this list before requesting new packages/features. ++ [Upstream bugs](/projects/5): lists issues that originate from elsewhere, and + whether or not we have local workarounds or temporary fixes for them. ++ ~~Doom's newsletter~~ (not finished) will contain changelogs in between + releases. + + +# Getting help +Emacs is no journey of a mere thousand miles. You _will_ run into problems and +mysterious errors. When you do, here are some places you can look for help: + ++ [Our documentation][docs] covers many use cases. + + [The Configuration section][configuration] covers how to configure Doom and + its packages. + + [The Package Management section][package-management] covers how to install + and disable packages. + + [This section][bin/doom] explains the `bin/doom` script's most important + commands. + + [This section][common-mistakes] lists some common configuration mistakes new + users make, when migrating a config from another distro or their own. + + [This answer][change-theme] shows you how to add your own themes to your + private config. + + [This answer][change-font] shows you how to change the default font. + + Your issue may be documented in the [FAQ]. ++ With Emacs built-in help system documentation is a keystroke away: + + For functions: `SPC h f` or `C-h f` + + For variables: `SPC h v` or `C-h v` + + For a keybind: `SPC h k` or `C-h k` + + To search available keybinds: `SPC h b b` or `C-h b b` ++ Run `bin/doom doctor` to detect common issues with your development + environment and private config. ++ Check out the [FAQ], in case your question has already been answered. ++ Search [Doom's issue tracker](/issues) in case your issue was already reported. -- [Visit our FAQ][docs:faq] to see if your issue is listed. - -If all else fails, [file that bug report][github:new-issue]! **Please do not -ignore the issue template!** It's a great help if you can [include a backtrace -with errors][docs:backtrace]. - -## Contributing - -Doom (and my Emacs work in general) is a labor of love and incurable madness, -done on my spare time. If you'd like to support my work, there are many things -you can do to help. I welcome contributions! - -- I love pull requests and bug reports. Check out the [Contributing - Guidelines][docs:contributing] to find out how you can help out. -- I welcome Elisp pointers! Don't hesitate to [tell me my Elisp-fu - sucks][github:new-issue] (but please tell me why). -- Hop on [our Discord server][url:discord] and say hi! Help others out, hang out - or talk to me about Emacs, or gamedev, or programming, machine learning, - physics, pixel art, anime, gaming -- anything you like. Nourish this lonely - soul! -- If you'd like to support my work financially, consider buying me a drink - through [liberapay][url:liberapay] or [paypal][url:paypal]. Donations are a - great help. My work here contends with studies, ventures in indie gamedev, and - my freelance work. ++ Hop on [our Discord server][discord]; it's active and friendly! Keep an eye on + the #announcements channel, where I announce breaking updates and releases. -[docs:wiki]: docs/index.org -[docs:wiki-quickstart]: docs/getting_started.org -[docs:wiki-modules]: docs/index.org#Module%20List -[docs:wiki-customization]: docs/getting_started.org#Customize -[docs:contributing]: docs/contributing.org -[docs:faq]: docs/faq.org -[docs:backtrace]: https://github.com/hlissner/doom-emacs/blob/develop/docs/getting_started.org#how-to-extract-a-backtrace-from-an-error -[github:new-issue]: https://github.com/hlissner/doom-emacs/issues/new -[github:issues]: https://github.com/hlissner/doom-emacs/issues -[doom:bindings]: modules/config/default/+evil-bindings.el -[doom:packages]: core/autoload/packages.el -[doom:popups]: modules/ui/popup/README.org -[url:discord]: https://discord.gg/qvGgnVx -[url:liberapay]: https://liberapay.com/hlissner/donate -[url:paypal]: https://paypal.me/henriklissner/10 -[url:editorconfig]: http://editorconfig.org/ -[url:evil-mode]: https://github.com/emacs-evil/evil -[url:ripgrep]: https://github.com/BurntSushi/ripgrep -[url:straight]: https://github.com/raxod502/straight.el +# Contribute +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![Elisp styleguide](https://img.shields.io/badge/elisp-style%20guide-purple?style=flat-square)](https://github.com/bbatsov/emacs-lisp-style-guide) +[![Donate on liberapay](https://img.shields.io/badge/liberapay-donate-1.svg?style=flat-square&logo=liberapay&color=blue)][liberapay] +[![Donate on paypal](https://img.shields.io/badge/paypal-donate-1?style=flat-square&logo=paypal&color=blue)][paypal] + +Doom is a labor of love and incurable madness, but I'm only one guy. Doom +wouldn't be where it is today without your help. I welcome contributions of any +kind! + ++ I :heart: pull requests and bug reports (see the [Contributing + Guidelines][contribute])! ++ Don't hesitate to [tell me my Elisp-fu sucks](/issues/new), but please tell me + why. ++ Hop on [our Discord server][Discord] and say hi! Help others, hang out or talk + to me about Emacs, gamedev, programming, physics, pixel art, anime, gaming -- + anything you like. Nourish this lonely soul. ++ If you'd like to support my work financially, buy me a drink through + [liberapay] or [paypal]. My work contends with studies, adventures in indie + gamedev and freelance work. Donations help me allocate more time to my Emacs + and OSS capers. + +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/0)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/0) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/1)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/1) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/2)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/2) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/3)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/3) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/4)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/4) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/5)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/5) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/6)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/6) +[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/7)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/7) + + +[contribute]: docs/contributing.org +[discord]: https://discord.gg/qvGgnVx +[documentation]: docs/index.org +[faq]: docs/faq.org +[install]: docs/getting_started.org#install +[backtrace]: docs/getting_started.org#how-to-extract-a-backtrace-from-an-error +[configuration]: docs/getting_started.org#configuring-doom +[package-management]: docs/getting_started.org#package-management +[bin/doom]: docs/getting_started.org#the-bindoom-utility +[common-mistakes]: docs/getting_started.org#common-mistakes-when-configuring-doom-emacs +[change-theme]: docs/faq.org#how-do-i-change-the-theme +[change-font]: docs/faq.org#how-do-i-change-the-fonts +[modules]: docs/modules.org +[popup-system]: modules/ui/popup/README.org +[screenshots]: #screenshots +[website]: https://doomemacs.org + +[bindings]: modules/config/default/+evil-bindings.el +[editorconfig]: http://editorconfig.org/ +[evil-mode]: https://github.com/emacs-evil/evil +[fd]: https://github.com/sharkdp/fd +[gnu emacs]: https://www.gnu.org/software/emacs/ +[helm]: https://github.com/emacs-helm/helm +[ivy]: https://github.com/abo-abo/swiper +[lsp-mode]: https://github.com/emacs-lsp/lsp-mode +[nix]: https://nixos.org +[ported-vim-plugins]: modules/editor/evil/README.org#ported-vim-plugins +[ripgrep]: https://github.com/BurntSushi/ripgrep +[straight.el]: https://github.com/raxod502/straight.el +[vim-easymotion]: https://github.com/easymotion/vim-easymotion +[vim-lion]: https://github.com/tommcdo/vim-lion +[vim-sneak]: https://github.com/justinmk/vim-sneak +[vim-unimpaired]: https://github.com/tpope/vim-unimpaired + +[liberapay]: https://liberapay.com/hlissner/donate +[paypal]: https://paypal.me/henriklissner/10 From 3202b68b01817cab3230d77ee549a850e524fb5c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 01:52:09 -0400 Subject: [PATCH 139/167] Fix "Found argument '--glob ...' which wasn't expected" error When using +ivy/projectile-find-file. --- modules/completion/ivy/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 2c3e9aba7..4b91aea31 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -264,7 +264,7 @@ evil-ex-specific constructs, so we disable it solely in evil-ex." ((executable-find "rg") (append (list "rg" "-0" "--files" "--color=never" "--hidden" "--no-messages") (cl-loop for dir in projectile-globally-ignored-directories - collect (format "--glob '!%s'" dir)) + collect "--glob" and collect (concat "!" dir)) (if IS-WINDOWS (list "--path-separator /")))) ((cons find-program args))) (unless (listp args) From edef4d6c7d3fad89865aa7fde23fce92efce5494 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 01:54:44 -0400 Subject: [PATCH 140/167] Fix documentation links in readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 484051841..25e1339fa 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,8 @@ git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d ~/.emacs.d/bin/doom install ``` -Then [read our Getting Started guide][docs] to be walked through setting up, -configuring and maintaining Doom Emacs. +Then [read our Getting Started guide][documentation] to be walked through +setting up, configuring and maintaining Doom Emacs. It's a good idea to add `~/.emacs.d/bin` to your `PATH`! Other `bin/doom` commands you should know about: @@ -153,7 +153,7 @@ project boards and a newsletter: Emacs is no journey of a mere thousand miles. You _will_ run into problems and mysterious errors. When you do, here are some places you can look for help: -+ [Our documentation][docs] covers many use cases. ++ [Our documentation][documentation] covers many use cases. + [The Configuration section][configuration] covers how to configure Doom and its packages. + [The Package Management section][package-management] covers how to install From 8532aa8dbe6b85738660afa13e7e3e934d9b48c5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 02:01:10 -0400 Subject: [PATCH 141/167] Don't null-byte delimit ripgrep file list --- modules/completion/ivy/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 4b91aea31..db5baab53 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -262,7 +262,7 @@ evil-ex-specific constructs, so we disable it solely in evil-ex." (cond ((executable-find doom-projectile-fd-binary) (cons doom-projectile-fd-binary (list "-t" "f" "-E" ".git"))) ((executable-find "rg") - (append (list "rg" "-0" "--files" "--color=never" "--hidden" "--no-messages") + (append (list "rg" "--files" "--color=never" "--hidden" "--no-messages") (cl-loop for dir in projectile-globally-ignored-directories collect "--glob" and collect (concat "!" dir)) (if IS-WINDOWS (list "--path-separator /")))) From e4b570c9aeb15473e56d6c8351108706fdaee366 Mon Sep 17 00:00:00 2001 From: "M. Yas. Davoodeh" Date: Sun, 26 Apr 2020 10:33:10 +0430 Subject: [PATCH 142/167] Fix tex-lsp related commented issues --- docs/modules.org | 2 +- modules/lang/latex/README.org | 4 ++-- modules/lang/latex/config.el | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/modules.org b/docs/modules.org index 25ed94402..e062d5113 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -114,7 +114,7 @@ Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/javascript/README.org][javascript]] =+lsp= - JavaScript, TypeScript, and CoffeeScript support + julia - TODO + kotlin =+lsp+= - TODO -+ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex= =+lsp= - TODO ++ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex +lsp= - TODO + lean - TODO + [[file:../modules/lang/ledger/README.org][ledger]] - TODO + lua =+moonscript= - TODO diff --git a/modules/lang/latex/README.org b/modules/lang/latex/README.org index 9b6fe2e4b..8a52cea48 100644 --- a/modules/lang/latex/README.org +++ b/modules/lang/latex/README.org @@ -30,8 +30,8 @@ Provide a helping hand when working with LaTeX documents. ** Module Flags + =+latexmk= Use LatexMk instead of LaTeX to compile documents. + =+cdlatex= Enable [[https://github.com/cdominik/cdlatex][cdlatex]] for fast math insertion. -+ =+lsp= Start LSP automatically in `tex-mode-hook`. This - requires the =:tools lsp= module. ++ =+lsp= Start LSP automatically in `tex-mode-hook`. This requires the =:tools + lsp= module. Supported servers are `digestif` and `TexLab`. ** Plugins + [[http://www.gnu.org/software/auctex/][auctex]] diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index 081edf29b..19a12c7b4 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -76,9 +76,10 @@ If no viewers are found, `latex-preview-pane' is used.") ;; quotes or not, via `+latex-enable-plain-double-quotes' (sp-local-pair modes "``" nil :unless '(:add sp-in-math-p)))) ;; Hook lsp if enabled - (when (and (featurep! +lsp) (featurep! :tools lsp)) - (add-hook 'tex-mode-local-vars-hook #'lsp!) - (add-hook 'latex-mode-local-vars-hook #'lsp!))) + (when (featurep! +lsp) + (add-hook! '(tex-mode-local-vars-hook + latex-mode-local-vars-hook) + #'lsp!))) (after! latex @@ -178,6 +179,7 @@ If no viewers are found, `latex-preview-pane' is used.") (add-to-list '+latex--company-backends #'company-auctex-environments nil #'eq) (add-to-list '+latex--company-backends #'company-auctex-macros nil #'eq)) + (use-package! company-math :when (featurep! :completion company) :defer t From e4001ebcaed320372fab43c34d432d73ad54afb1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 02:31:52 -0400 Subject: [PATCH 143/167] Remove website link from readme It's not up yet! --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 25e1339fa..a62df627e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Doom Emacs -[Website] • [Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) +[Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) ![Made with Doom Emacs](https://img.shields.io/github/tag/hlissner/doom-emacs.svg?style=flat-square&label=release&color=58839b) ![Supports Emacs 26-27](https://img.shields.io/badge/Supports-Emacs_26.1_--_27.x-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) @@ -227,7 +227,6 @@ kind! [modules]: docs/modules.org [popup-system]: modules/ui/popup/README.org [screenshots]: #screenshots -[website]: https://doomemacs.org [bindings]: modules/config/default/+evil-bindings.el [editorconfig]: http://editorconfig.org/ From fe5e6fff9ad9b5f518a44382607826f1538935ec Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 02:33:06 -0400 Subject: [PATCH 144/167] Remove redundant yasnippet keybinds --- modules/config/default/+emacs-bindings.el | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 25391b39c..f059cefce 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -541,14 +541,4 @@ ;;; treemacs (:when (featurep! :ui treemacs) "" #'+treemacs/toggle - "" #'+treemacs/find-file) - - ;;; yasnippet - (:after yasnippet - :map yas-keymap ; keymap while editing an inserted snippet - "C-e" #'+snippets/goto-end-of-field - "C-a" #'+snippets/goto-start-of-field - "" #'yas-prev-field - "" #'+snippets/delete-to-start-of-field - [backspace] #'+snippets/delete-backward-char - [delete] #'+snippets/delete-forward-char-or-field)) + "" #'+treemacs/find-file)) From e1a9bf234faaef1f47f4bd1f6404f402756f34ff Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 02:33:37 -0400 Subject: [PATCH 145/167] Minor refactors --- modules/editor/file-templates/templates/org-mode/__doom-readme | 2 +- modules/email/mu4e/config.el | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/editor/file-templates/templates/org-mode/__doom-readme b/modules/editor/file-templates/templates/org-mode/__doom-readme index 56a1f25a8..695067459 100644 --- a/modules/editor/file-templates/templates/org-mode/__doom-readme +++ b/modules/editor/file-templates/templates/org-mode/__doom-readme @@ -7,7 +7,7 @@ (match-string 2 buffer-file-name)) "")`} #+DATE: `(format (format-time-string "%B %%s, %Y") (string-to-number (format-time-string "%d")))` -#+SINCE: ${2:{replace with next tagged release version}} +#+SINCE: ${2:} #+STARTUP: inlineimages nofold * Table of Contents :TOC_3:noexport: diff --git a/modules/email/mu4e/config.el b/modules/email/mu4e/config.el index 3bdb86efa..cfd43a3a7 100644 --- a/modules/email/mu4e/config.el +++ b/modules/email/mu4e/config.el @@ -109,8 +109,7 @@ ;; Only render to html once. If the first send fails for whatever reason, ;; org-mu4e would do so each time you try again. - (add-hook! 'message-send-hook - (setq-local org-mu4e-convert-to-html nil))) + (setq-hook! 'message-send-hook org-mu4e-convert-to-html nil)) ;; From 5edfcec2dfa588bcd8946cde454538e9deaac13e Mon Sep 17 00:00:00 2001 From: tecosaur Date: Sun, 26 Apr 2020 15:35:04 +0800 Subject: [PATCH 146/167] Critical bugfixes! Momentus edits of paramount importance crucial to the long-term success of the project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A few tweaks to the readme: 1. Replaced typographic approximation of em dashes with … em dashes 2. Made parenthesis surrounding italic text non-italic (yes, it's an improvement — Robert Bringhurst agrees with me [5.3.2 of his book]) 3. Made `project/?` links actually link to the project pages (relative links like `/?` resolve to `/blob/?`) 4. Replaced code blocks around keypresses with `` as is used earlier in the readme 5. Fixed new issue link, as in (3) --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a62df627e..7b17fdb53 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ > It is a story as old as time. A stubborn, shell-dwelling, and melodramatic -> vimmer -- envious of the features of modern text editors -- spirals into +> vimmer—envious of the features of modern text editors—spirals into > despair before he succumbs to the [dark side][evil-mode]. This is his config. Doom is a configuration framework for [GNU Emacs] tailored for Emacs bankruptcy @@ -98,7 +98,7 @@ Check out [the FAQ][FAQ] for answers to common questions about the project. # Prerequisites + Git 2.23+ -+ Emacs 26.1+ *(27 is recommended)* with GNUTLS support ++ Emacs 26.1+ (*27 is recommended*) with GNUTLS support + [ripgrep] 11.0+ + GNU `find` + *OPTIONAL:* [fd] 7.3.0+ (improves file indexing performance for some commands) @@ -138,12 +138,12 @@ Doom is an active and ongoing project. To make that development more transparent, its roadmap (and other concerns) are published across three github project boards and a newsletter: -+ [Development Roadmap](/projects/3): roughly outlines our goals between release ++ [Development Roadmap](https://github.com/hlissner/doom-emacs/projects/3): roughly outlines our goals between release milestones and their progress. -+ [Plugins under review](/projects/2): lists plugins we are watching and ++ [Plugins under review](https://github.com/hlissner/doom-emacs/projects/2): lists plugins we are watching and considering for inclusion, and what their status for inclusion is. Please consult this list before requesting new packages/features. -+ [Upstream bugs](/projects/5): lists issues that originate from elsewhere, and ++ [Upstream bugs](https://github.com/hlissner/doom-emacs/projects/5): lists issues that originate from elsewhere, and whether or not we have local workarounds or temporary fixes for them. + ~~Doom's newsletter~~ (not finished) will contain changelogs in between releases. @@ -167,10 +167,10 @@ mysterious errors. When you do, here are some places you can look for help: + [This answer][change-font] shows you how to change the default font. + Your issue may be documented in the [FAQ]. + With Emacs built-in help system documentation is a keystroke away: - + For functions: `SPC h f` or `C-h f` - + For variables: `SPC h v` or `C-h v` - + For a keybind: `SPC h k` or `C-h k` - + To search available keybinds: `SPC h b b` or `C-h b b` + + For functions: SPC h for or C-h f + + For variables: SPC h v or C-h v + + For a keybind: SPC h k or C-h k + + To search available keybinds: SPC h b b or C-h b b + Run `bin/doom doctor` to detect common issues with your development environment and private config. + Check out the [FAQ], in case your question has already been answered. @@ -192,7 +192,7 @@ kind! + I :heart: pull requests and bug reports (see the [Contributing Guidelines][contribute])! -+ Don't hesitate to [tell me my Elisp-fu sucks](/issues/new), but please tell me ++ Don't hesitate to [tell me my Elisp-fu sucks](https://github.com/hlissner/doom-emacs/issues/new), but please tell me why. + Hop on [our Discord server][Discord] and say hi! Help others, hang out or talk to me about Emacs, gamedev, programming, physics, pixel art, anime, gaming -- From 077b6f00d4dc410a490af0fdcd47d83dce0b0bd2 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 04:09:46 -0400 Subject: [PATCH 147/167] Swap C-j/C-k history keys in evil-ex Typo reported by @howsiwei in hlissner/doom-emacs@77542bc --- modules/config/default/+evil-bindings.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 468e0dcc5..0df43b08c 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -8,8 +8,8 @@ "C-a" #'evil-beginning-of-line "C-b" #'evil-backward-char "C-f" #'evil-forward-char - "C-j" #'previous-complete-history-element - "C-k" #'next-complete-history-element) + "C-j" #'next-complete-history-element + "C-k" #'previous-complete-history-element) (define-key! :keymaps +default-minibuffer-maps [escape] #'abort-recursive-edit From 50ff934ff2169866e2fb38b32ae015a7268bb85a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 04:12:33 -0400 Subject: [PATCH 148/167] Fix #2832: filename modifiers replaced with empty strings --- modules/editor/evil/autoload/advice.el | 119 ++++++++++++------------- modules/editor/evil/autoload/ex.el | 4 +- modules/editor/evil/config.el | 2 +- modules/editor/evil/test/test-evil.el | 4 +- modules/term/eshell/autoload/evil.el | 2 +- 5 files changed, 65 insertions(+), 66 deletions(-) diff --git a/modules/editor/evil/autoload/advice.el b/modules/editor/evil/autoload/advice.el index 834f40315..e54a1ab90 100644 --- a/modules/editor/evil/autoload/advice.el +++ b/modules/editor/evil/autoload/advice.el @@ -7,7 +7,7 @@ (call-interactively #'doom/escape))) ;;;###autoload -(defun +evil-resolve-vim-path-a (file-name) +(defun +evil-replace-filename-modifiers-a (file-name) "Take a path and resolve any vim-like filename modifiers in it. This adds support for most vim file modifiers, as well as: @@ -15,66 +15,65 @@ support for most vim file modifiers, as well as: See http://vimdoc.sourceforge.net/htmldoc/cmdline.html#filename-modifiers for more information on modifiers." - (let (case-fold-search) + (let ((origin-buffer (current-buffer)) + case-fold-search) (with-temp-buffer - (save-excursion (insert file-name)) - (while (re-search-forward "\\(^\\|[^\\\\]\\)\\(\\([%#]\\)\\(:\\([PphtreS~.]\\|g?s\\)\\)*\\)" nil t) - (catch 'continue - (unless buffer-file-name - (replace-match (match-string 1) t t nil 2) - (throw 'continue t)) - (let ((beg (match-beginning 2)) - (end (match-end 3)) - (path (pcase (match-string 3) - ("%" (file-relative-name buffer-file-name)) - ("#" (and (other-buffer) - (buffer-file-name (other-buffer))))))) - (save-match-data - (goto-char beg) - (while (re-search-forward ":\\([PphtreS~.]\\|g?s\\)" (+ (point) 3) t) - (let* ((modifier (match-string 1)) - (global (string-prefix-p "gs" modifier))) - (when global - (setq modifier (substring modifier 1))) - (setq end (match-end 1) - path - (or (when path - (pcase (substring modifier 0 1) - ("p" (expand-file-name path)) - ("~" (concat "~/" (file-relative-name path "~"))) - ("." (file-relative-name path default-directory)) - ("t" (file-name-nondirectory (directory-file-name path))) - ("r" (file-name-sans-extension path)) - ("e" (file-name-extension path)) - ("S" (shell-quote-argument path)) - ("h" - (let ((parent (file-name-directory (expand-file-name path)))) - (unless (file-equal-p path parent) - (if (file-name-absolute-p path) - (directory-file-name parent) - (file-relative-name parent))))) - ("s" - (if (featurep 'evil) - (when-let (args (evil-delimited-arguments (substring modifier 1) 2)) - (let ((pattern (evil-transform-vim-style-regexp (car args))) - (replace (cadr args))) - (replace-regexp-in-string - (if global pattern (concat "\\(" pattern "\\).*\\'")) - (evil-transform-vim-style-regexp replace) path t t - (unless global 1)))) - path)) - ("P" - (let ((project-root (doom-project-root (file-name-directory (expand-file-name path))))) - (unless project-root - (user-error "Not in a project")) - (abbreviate-file-name project-root))))) - "")) - ;; strip trailing slash, if applicable - (or (string-empty-p path) - (not (equal (substring path -1) "/")) - (setq path (substring path 0 -1)))))) - (replace-match path t t nil 2)))) - (replace-regexp-in-string "\\\\\\([#%]\\)" "\\1" (buffer-string) t)))) + (let ((buffer-file-name (buffer-file-name origin-buffer))) + (save-excursion (insert file-name)) + (while (re-search-forward "\\(^\\|[^\\\\]\\)\\(\\([%#]\\)\\(:\\([PphtreS~.]\\|g?s\\)\\)*\\)" nil t) + (if (null buffer-file-name) + (replace-match (match-string 1) t t nil 2) + (let ((beg (match-beginning 2)) + (end (match-end 3)) + (path (pcase (match-string 3) + ("%" (file-relative-name buffer-file-name default-directory)) + ("#" (and (other-buffer origin-buffer) + (buffer-file-name (other-buffer origin-buffer))))))) + (save-match-data + (goto-char beg) + (while (re-search-forward ":\\([PphtreS~.]\\|g?s\\)" (+ (point) 3) t) + (let* ((modifier (match-string 1)) + (global (string-prefix-p "gs" modifier))) + (when global + (setq modifier (substring modifier 1))) + (setq end (match-end 1) + path + (pcase (and path (substring modifier 0 1)) + (`nil "") + ("p" (expand-file-name path)) + ("~" (concat "~/" (file-relative-name path "~"))) + ("." (file-relative-name path)) + ("t" (file-name-nondirectory (directory-file-name path))) + ("r" (file-name-sans-extension path)) + ("e" (file-name-extension path)) + ("S" (shell-quote-argument path)) + ("h" + (let ((parent (file-name-directory (expand-file-name path)))) + (unless (file-equal-p path parent) + (if (file-name-absolute-p path) + (directory-file-name parent) + (file-relative-name parent))))) + ("s" + (if (featurep 'evil) + (when-let (args (evil-delimited-arguments (substring modifier 1) 2)) + (let ((pattern (evil-transform-vim-style-regexp (car args))) + (replace (cadr args))) + (replace-regexp-in-string + (if global pattern (concat "\\(" pattern "\\).*\\'")) + (evil-transform-vim-style-regexp replace) path t t + (unless global 1)))) + path)) + ("P" + (let ((project-root (doom-project-root (file-name-directory (expand-file-name path))))) + (unless project-root + (user-error "Not in a project")) + (abbreviate-file-name project-root))))) + ;; strip trailing slash, if applicable + (or (string-empty-p path) + (not (equal (substring path -1) "/")) + (setq path (substring path 0 -1)))))) + (replace-match path t t nil 2)))) + (replace-regexp-in-string "\\\\\\([#%]\\)" "\\1" (buffer-string) t))))) (defun +evil--insert-newline (&optional above _noextranewline) (let ((pos (save-excursion (beginning-of-line-text) (point))) diff --git a/modules/editor/evil/autoload/ex.el b/modules/editor/evil/autoload/ex.el index 09b18ed70..bdcb5d6fa 100644 --- a/modules/editor/evil/autoload/ex.el +++ b/modules/editor/evil/autoload/ex.el @@ -108,7 +108,7 @@ g Repeat alignment on all matches in each line" If BANG is non-nil, open compilation output in a comint buffer. If BANG, then run ARGUMENTS as a full command. This command understands vim file -modifiers (like %:p:h). See `+evil-resolve-vim-path-a' for details." +modifiers (like %:p:h). See `+evil-replace-filename-modifiers-a' for details." (interactive "") (let ((compile-command "make")) (+evil:compile (if (stringp arguments) @@ -122,7 +122,7 @@ modifiers (like %:p:h). See `+evil-resolve-vim-path-a' for details." If BANG is non-nil, open compilation output in a comint buffer. This command understands vim file modifiers (like %:p:h). See -`+evil-resolve-vim-path-a' for details." +`+evil-replace-filename-modifiers-a' for details." (interactive "") (compile (evil-ex-replace-special-filenames (format "%s %s" diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index 3dfb39fd3..358e0cb1f 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -159,7 +159,7 @@ directives. By default, this only recognizes C directives.") ;; monkey patch `evil-ex-replace-special-filenames' to improve support for ;; file modifiers like %:p:h. This adds support for most of vim's modifiers, ;; and one custom one: %:P (expand to the project root). - (advice-add #'evil-ex-replace-special-filenames :override #'+evil-resolve-vim-path-a) + (advice-add #'evil-ex-replace-special-filenames :override #'+evil-replace-filename-modifiers-a) ;; make `try-expand-dabbrev' (from `hippie-expand') work in minibuffer (add-hook 'minibuffer-inactive-mode-hook #'+evil--fix-dabbrev-in-minibuffer-h) diff --git a/modules/editor/evil/test/test-evil.el b/modules/editor/evil/test/test-evil.el index dd77fd0f4..3b77c9cc3 100644 --- a/modules/editor/evil/test/test-evil.el +++ b/modules/editor/evil/test/test-evil.el @@ -9,10 +9,10 @@ (load! "../autoload/evil") (before-each - (fset 'resv #'+evil-resolve-vim-path-a) + (fset 'resv #'+evil-replace-filename-modifiers-a) (spy-on 'doom-project-root :and-call-fake (lambda () project-root))) - ;; `evil-ex-replace-special-filenames' / `+evil-resolve-vim-path-a' + ;; `evil-ex-replace-special-filenames' / `+evil-replace-filename-modifiers-a' (describe "file modifiers" (it "supports basic vim file modifiers" (let ((buffer-file-name "~/.emacs.d/test/modules/feature/test-evil.el") diff --git a/modules/term/eshell/autoload/evil.el b/modules/term/eshell/autoload/evil.el index a3326e322..04e45d377 100644 --- a/modules/term/eshell/autoload/evil.el +++ b/modules/term/eshell/autoload/evil.el @@ -6,7 +6,7 @@ "TODO" (interactive "") (let ((buffer (+eshell-last-buffer)) - (command (+evil-resolve-vim-path-a command))) + (command (+evil-replace-filename-modifiers-a command))) (cond (buffer (select-window (get-buffer-window buffer)) (+eshell-run-command command buffer)) From 4d8ab273d54377977ead3b7acb540b8b5ebe3cbd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 04:46:05 -0400 Subject: [PATCH 149/167] Remove duplicate latex entry in docs/modules.org --- docs/modules.org | 3 +-- modules/lang/latex/config.el | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules.org b/docs/modules.org index cedcf262a..cd5b7e282 100644 --- a/docs/modules.org +++ b/docs/modules.org @@ -116,8 +116,7 @@ Modules that bring support for a language or group of languages to Emacs. + [[file:../modules/lang/javascript/README.org][javascript]] =+lsp= - JavaScript, TypeScript, and CoffeeScript support + julia =+lsp= - TODO + kotlin =+lsp+= - TODO -+ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex +lsp= - TODO -+ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex +fold= - TODO ++ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex +fold +lsp= - TODO + lean - TODO + [[file:../modules/lang/ledger/README.org][ledger]] - TODO + lua =+moonscript= - TODO diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index 680778f4d..31227ae65 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -221,5 +221,6 @@ is mostly for \\section etc." :init (add-to-list '+latex--company-backends #'+latex-symbols-company-backend nil #'eq)) + ;; bibtex + reftex (load! "+ref") From b719f1917c7e74e5939cdad09ea243dce059bc77 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 04:48:24 -0400 Subject: [PATCH 150/167] Reflow long text in readme --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7b17fdb53..70afa116b 100644 --- a/README.md +++ b/README.md @@ -138,13 +138,15 @@ Doom is an active and ongoing project. To make that development more transparent, its roadmap (and other concerns) are published across three github project boards and a newsletter: -+ [Development Roadmap](https://github.com/hlissner/doom-emacs/projects/3): roughly outlines our goals between release - milestones and their progress. -+ [Plugins under review](https://github.com/hlissner/doom-emacs/projects/2): lists plugins we are watching and - considering for inclusion, and what their status for inclusion is. Please - consult this list before requesting new packages/features. -+ [Upstream bugs](https://github.com/hlissner/doom-emacs/projects/5): lists issues that originate from elsewhere, and - whether or not we have local workarounds or temporary fixes for them. ++ [Development Roadmap](https://github.com/hlissner/doom-emacs/projects/3): + roughly outlines our goals between release milestones and their progress. ++ [Plugins under review](https://github.com/hlissner/doom-emacs/projects/2): + lists plugins we are watching and considering for inclusion, and what their + status for inclusion is. Please consult this list before requesting new + packages/features. ++ [Upstream bugs](https://github.com/hlissner/doom-emacs/projects/5): lists + issues that originate from elsewhere, and whether or not we have local + workarounds or temporary fixes for them. + ~~Doom's newsletter~~ (not finished) will contain changelogs in between releases. @@ -192,7 +194,8 @@ kind! + I :heart: pull requests and bug reports (see the [Contributing Guidelines][contribute])! -+ Don't hesitate to [tell me my Elisp-fu sucks](https://github.com/hlissner/doom-emacs/issues/new), but please tell me ++ Don't hesitate to [tell me my Elisp-fu + sucks](https://github.com/hlissner/doom-emacs/issues/new), but please tell me why. + Hop on [our Discord server][Discord] and say hi! Help others, hang out or talk to me about Emacs, gamedev, programming, physics, pixel art, anime, gaming -- From 0bb2dc129a6700bacdddf945779354d6d8eecd52 Mon Sep 17 00:00:00 2001 From: tecosaur Date: Sun, 26 Apr 2020 17:47:43 +0800 Subject: [PATCH 151/167] Oooops, I did a boo-boo Abbrev-mode betrayed me :( for that you get two commits for the price of one. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70afa116b..a5df26390 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ mysterious errors. When you do, here are some places you can look for help: + [This answer][change-font] shows you how to change the default font. + Your issue may be documented in the [FAQ]. + With Emacs built-in help system documentation is a keystroke away: - + For functions: SPC h for or C-h f + + For functions: SPC h f or C-h f + For variables: SPC h v or C-h v + For a keybind: SPC h k or C-h k + To search available keybinds: SPC h b b or C-h b b From 3f6cf65c148209595a14d552a5d7631c62c4bfc2 Mon Sep 17 00:00:00 2001 From: Axel Soll Date: Sun, 26 Apr 2020 21:51:01 +0200 Subject: [PATCH 152/167] Add .jinja2 file extension to supported web files. (#2977) --- modules/lang/web/+html.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/web/+html.el b/modules/lang/web/+html.el index 345521889..150b5a655 100644 --- a/modules/lang/web/+html.el +++ b/modules/lang/web/+html.el @@ -12,7 +12,7 @@ :mode "\\.svelte\\'" :mode "\\.vue\\'" :mode "\\.twig\\'" - :mode "\\.jinja\\'" + :mode "\\.jinja2?\\'" :mode "wp-content/themes/.+/.+\\.php\\'" :mode "templates/.+\\.php\\'" ;; REVIEW We associate TSX files with `web-mode' because `typescript-mode' From 681851dd85a2d3dbe821830be38ee0148f43eeff Mon Sep 17 00:00:00 2001 From: Gennady Uraltsev Date: Sun, 26 Apr 2020 16:52:05 -0400 Subject: [PATCH 153/167] Make rg --path-separator argument work under Windows --- modules/completion/ivy/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index db5baab53..73276413f 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -265,7 +265,7 @@ evil-ex-specific constructs, so we disable it solely in evil-ex." (append (list "rg" "--files" "--color=never" "--hidden" "--no-messages") (cl-loop for dir in projectile-globally-ignored-directories collect "--glob" and collect (concat "!" dir)) - (if IS-WINDOWS (list "--path-separator /")))) + (if IS-WINDOWS (list "--path-separator" "/")))) ((cons find-program args))) (unless (listp args) (user-error "`counsel-file-jump-args' is a list now, please customize accordingly.")) From a21b6d35a4587a2329ff276088cd6d6e935eb081 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 14:03:33 -0400 Subject: [PATCH 154/167] Make C-` & C-~ available outside of normal mode --- modules/config/default/+evil-bindings.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 56d61bf54..96c800365 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -194,9 +194,9 @@ ;;; :ui (map! (:when (featurep! :ui popup) - :n "C-`" #'+popup/toggle - :n "C-~" #'+popup/raise - :g "C-x p" #'+popup/other) + "C-`" #'+popup/toggle + "C-~" #'+popup/raise + "C-x p" #'+popup/other) (:when (featurep! :ui workspaces) :n "C-t" #'+workspace/new From 9509897db1825360c14790eb4cafd323a4335852 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 16:50:26 -0400 Subject: [PATCH 155/167] dumb-jump-prefer-searcher = rg --- modules/tools/lookup/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/tools/lookup/config.el b/modules/tools/lookup/config.el index a186ed10c..6381956a2 100644 --- a/modules/tools/lookup/config.el +++ b/modules/tools/lookup/config.el @@ -104,6 +104,7 @@ Dictionary.app behind the scenes to get definitions.") :commands dumb-jump-result-follow :config (setq dumb-jump-default-project doom-emacs-dir + dumb-jump-prefer-searcher 'rg dumb-jump-aggressive nil dumb-jump-selector (cond ((featurep! :completion ivy) 'ivy) From d6c5d18a87829846cafa917ae80669bea2c7f508 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 26 Apr 2020 20:26:38 -0400 Subject: [PATCH 156/167] Bump to emacs-straight/org-mode@3106837 From emacs-straight/org-mode@14d6f95 Fixes void-function org-get-outline-path when invoking eldoc, because org-get-outline-path was moved to org-refile in a recent refactor upstream. --- modules/lang/org/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/org/packages.el b/modules/lang/org/packages.el index 290071e58..07fc7a7cf 100644 --- a/modules/lang/org/packages.el +++ b/modules/lang/org/packages.el @@ -27,7 +27,7 @@ :recipe (:host github :repo "emacs-straight/org-mode" :files ("*.el" "lisp/*.el" "contrib/lisp/*.el")) - :pin "14d6f95bec") + :pin "31068373dc") ;; ...And prevent other packages from pulling org; org-plus-contrib satisfies ;; the dependency already: https://github.com/raxod502/straight.el/issues/352 (package! org :recipe (:local-repo nil)) From 64f15bfe3cbbe3281d9c1c0a23813f643c3347c0 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 00:07:49 -0400 Subject: [PATCH 157/167] Fix getting started link in readme --- README.md | 5 +++-- modules/config/default/+evil-bindings.el | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a5df26390..755b648e6 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,8 @@ git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d ~/.emacs.d/bin/doom install ``` -Then [read our Getting Started guide][documentation] to be walked through -setting up, configuring and maintaining Doom Emacs. +Then [read our Getting Started guide][getting-started] to be walked through +installing, configuring and maintaining Doom Emacs. It's a good idea to add `~/.emacs.d/bin` to your `PATH`! Other `bin/doom` commands you should know about: @@ -219,6 +219,7 @@ kind! [discord]: https://discord.gg/qvGgnVx [documentation]: docs/index.org [faq]: docs/faq.org +[getting-started]: docs/getting_started.org [install]: docs/getting_started.org#install [backtrace]: docs/getting_started.org#how-to-extract-a-backtrace-from-an-error [configuration]: docs/getting_started.org#configuring-doom diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 96c800365..8b8c9434b 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -4,7 +4,7 @@ ;; NOTE SPC u replaces C-u as the universal argument. ;; Minibuffer - (define-key! evil-ex-completion-map + (define-key! :keymaps '(evil-ex-completion-map evil-ex-search-keymap) "C-a" #'evil-beginning-of-line "C-b" #'evil-backward-char "C-f" #'evil-forward-char From c1127a5bde1779a98749bd63b8d6df345d7e7d6b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 01:42:31 -0400 Subject: [PATCH 158/167] Rewrite move/copy/delete file commands To use rename-file, copy-file and delete-file, so these commands can enjoy the benefits of any plugins that have advised these, like org-roam does for rename-file. --- core/autoload/files.el | 169 +++++++++++--------------- modules/editor/evil/autoload/files.el | 4 +- 2 files changed, 71 insertions(+), 102 deletions(-) diff --git a/core/autoload/files.el b/core/autoload/files.el index 65d0a6639..b62925d43 100644 --- a/core/autoload/files.el +++ b/core/autoload/files.el @@ -203,52 +203,29 @@ single file or nested compound statement of `and' and `or' statements." ;; ;;; Helpers -(defun doom--forget-file (path) - "Ensure `recentf', `projectile' and `save-place' forget OLD-PATH." - (when (bound-and-true-p recentf-mode) - (recentf-remove-if-non-kept path)) - (when (and (bound-and-true-p projectile-mode) - (doom-project-p) - (projectile-file-cached-p path (doom-project-root))) - (projectile-purge-file-from-cache path)) - (when (bound-and-true-p save-place-mode) - (save-place-forget-unreadable-files))) - -(defun doom--update-file (path) - (when (featurep 'vc) - (vc-file-clearprops path) - (vc-resynch-buffer path nil t)) - (when (featurep 'magit) - (when-let (default-directory (magit-toplevel (file-name-directory path))) - (magit-refresh)))) - -(defun doom--copy-file (old-path new-path &optional force-p) - (let* ((new-path (expand-file-name new-path)) - (old-path (file-truename old-path)) - (new-path (apply #'expand-file-name - (if (or (directory-name-p new-path) - (file-directory-p new-path)) - (list (file-name-nondirectory old-path) new-path) - (list new-path)))) - (new-path-dir (file-name-directory new-path)) - (project-root (doom-project-root)) - (short-new-name (if (and project-root (file-in-directory-p new-path project-root)) - (file-relative-name new-path project-root) - (abbreviate-file-name new-path)))) - (unless (file-directory-p new-path-dir) - (make-directory new-path-dir t)) - (when (buffer-modified-p) - (save-buffer)) - (cond ((file-equal-p old-path new-path) - (throw 'status 'overwrite-self)) - ((and (file-exists-p new-path) - (not force-p) - (not (y-or-n-p (format "File already exists at %s, overwrite?" short-new-name)))) - (throw 'status 'aborted)) - ((file-exists-p old-path) - (copy-file old-path new-path t) - short-new-name) - (short-new-name)))) +(defun doom--update-files (&rest files) + "Ensure FILES are updated in `recentf', `magit' and `save-place'." + (let (toplevels) + (dolist (file files) + (when (featurep 'vc) + (vc-file-clearprops file) + (when-let (buffer (get-file-buffer file)) + (with-current-buffer buffer + (vc-refresh-state)))) + (when (featurep 'magit) + (when-let (default-directory (magit-toplevel (file-name-directory file))) + (cl-pushnew default-directory toplevels))) + (unless (file-readable-p file) + (when (bound-and-true-p recentf-mode) + (recentf-remove-if-non-kept file)) + (when (and (bound-and-true-p projectile-mode) + (doom-project-p) + (projectile-file-cached-p file (doom-project-root))) + (projectile-purge-file-from-cache file)))) + (dolist (default-directory toplevels) + (magit-refresh)) + (when (bound-and-true-p save-place-mode) + (save-place-forget-unreadable-files)))) ;; @@ -256,73 +233,67 @@ single file or nested compound statement of `and' and `or' statements." ;;;###autoload (defun doom/delete-this-file (&optional path force-p) - "Delete FILENAME (defaults to the file associated with current buffer) and -kills the buffer. If FORCE-P, force the deletion (don't ask for confirmation)." + "Delete PATH, kill its buffers and expunge it from vc/magit cache. + +If PATH is not specified, default to the current buffer's file. + +If FORCE-P, delete without confirmation." (interactive - (list (file-truename (buffer-file-name)) + (list (buffer-file-name (buffer-base-buffer)) current-prefix-arg)) - (let* ((fbase (file-name-sans-extension (file-name-nondirectory path))) - (buf (current-buffer))) - (cond ((not (file-exists-p path)) - (error "File doesn't exist: %s" path)) - ((not (or force-p (y-or-n-p (format "Really delete %s?" fbase)))) - (message "Aborted") - nil) - ((unwind-protect - (progn (delete-file path) t) - (let ((short-path (file-relative-name path (doom-project-root)))) - (if (file-exists-p path) - (error "Failed to delete %s" short-path) - ;; Ensures that windows displaying this buffer will be switched - ;; to real buffers (`doom-real-buffer-p') - (doom/kill-this-buffer-in-all-windows buf t) - (doom--forget-file path) - (doom--update-file path) - (message "Successfully deleted %s" short-path)))))))) + (let* ((path (or path (buffer-file-name (buffer-base-buffer)))) + (short-path (abbreviate-file-name path))) + (unless (and path (file-exists-p path)) + (user-error "Buffer is not visiting any file")) + (unless (file-exists-p path) + (error "File doesn't exist: %s" path)) + (unless (or force-p (y-or-n-p (format "Really delete %S?" short-path))) + (user-error "Aborted")) + (let ((buf (current-buffer))) + (unwind-protect + (progn (delete-file path) t) + (if (file-exists-p path) + (error "Failed to delete %S" short-path) + ;; Ensures that windows displaying this buffer will be switched to + ;; real buffers (`doom-real-buffer-p') + (doom/kill-this-buffer-in-all-windows buf t) + (doom--update-files path) + (message "Deleted %S" short-path)))))) ;;;###autoload (defun doom/copy-this-file (new-path &optional force-p) - "Copy current buffer's file to NEW-PATH. If FORCE-P, overwrite the destination -file if it exists, without confirmation." + "Copy current buffer's file to NEW-PATH. + +If FORCE-P, overwrite the destination file if it exists, without confirmation." (interactive (list (read-file-name "Copy file to: ") current-prefix-arg)) - (pcase (catch 'status - (when-let (dest (doom--copy-file (buffer-file-name) new-path force-p)) - (doom--update-file new-path) - (message "File successfully copied to %s" dest))) - (`overwrite-self (error "Cannot overwrite self")) - (`aborted (message "Aborted")) - (_ t))) + (unless (and buffer-file-name (file-exists-p buffer-file-name)) + (user-error "Buffer is not visiting any file")) + (let ((old-path (buffer-file-name (buffer-base-buffer))) + (new-path (expand-file-name new-path))) + (make-directory (file-name-directory new-path) 't) + (copy-file old-path new-path (or force-p 1)) + (doom--update-files old-path new-path) + (message "File copied to %S" (abbreviate-file-name new-path)))) ;;;###autoload (defun doom/move-this-file (new-path &optional force-p) - "Move current buffer's file to NEW-PATH. If FORCE-P, overwrite the destination -file if it exists, without confirmation." + "Move current buffer's file to NEW-PATH. + +If FORCE-P, overwrite the destination file if it exists, without confirmation." (interactive (list (read-file-name "Move file to: ") current-prefix-arg)) - (pcase (catch 'status - (let ((old-path (buffer-file-name)) - (new-path (expand-file-name new-path))) - (when-let (dest (doom--copy-file old-path new-path force-p)) - (doom--forget-file old-path) - (when (file-exists-p old-path) - (delete-file old-path)) - (mapc #'doom--update-file - (delq - nil (list (if (ignore-errors - (file-equal-p (doom-project-root old-path) - (doom-project-root new-path))) - nil - old-path) - new-path))) - (kill-current-buffer) - (find-file new-path) - (message "File successfully moved to %s" dest)))) - (`overwrite-self (error "Cannot overwrite self")) - (`aborted (message "Aborted")) - (_ t))) + (unless (and buffer-file-name (file-exists-p buffer-file-name)) + (user-error "Buffer is not visiting any file")) + (let ((old-path (buffer-file-name (buffer-base-buffer))) + (new-path (expand-file-name new-path))) + (make-directory (file-name-directory new-path) 't) + (rename-file old-path new-path (or force-p 1)) + (set-visited-file-name new-path t t) + (doom--update-files old-path new-path) + (message "File moved to %S" (abbreviate-file-name new-path)))) (defun doom--sudo-file-path (file) (let ((host (or (file-remote-p file 'host) "localhost"))) diff --git a/modules/editor/evil/autoload/files.el b/modules/editor/evil/autoload/files.el index ac3daed1b..93de22915 100644 --- a/modules/editor/evil/autoload/files.el +++ b/modules/editor/evil/autoload/files.el @@ -6,8 +6,7 @@ kills the buffer. If FORCE-P, force the deletion (don't ask for confirmation)." :repeat nil (interactive "") - (doom/delete-this-file (or filename (file-truename buffer-file-name)) - force-p)) + (doom/delete-this-file filename force-p)) ;;;###autoload (autoload '+evil:move-this-file "editor/evil/autoload/files" nil t) (evil-define-command +evil:move-this-file (new-path &optional force-p) @@ -30,4 +29,3 @@ overwrite the destination file if it exists, without confirmation." (when (or (not new-path) (string-empty-p new-path)) (user-error "No new path was specified")) (doom/copy-this-file new-path force-p)) - From 01ab30adeb5d975d36d8d960cd1bb3d99dc54180 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 01:43:51 -0400 Subject: [PATCH 159/167] Flip C-f/C-b and M-f/M-b back to their defaults To stay consistent with Emacs' keybinds. --- modules/config/default/+evil-bindings.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 8b8c9434b..b3ab8da21 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -22,10 +22,6 @@ (when (featurep! :editor evil +everywhere) (define-key! :keymaps +default-minibuffer-maps - "C-f" #'forward-word - "C-b" #'backward-word - "M-f" #'forward-char - "M-b" #'backward-char "C-j" #'next-line "C-k" #'previous-line "C-S-j" #'scroll-up-command From c601382a5525e10a6542257caefa973af2b01b7c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 02:12:47 -0400 Subject: [PATCH 160/167] Add EMACS28+ const --- core/core.el | 1 + 1 file changed, 1 insertion(+) diff --git a/core/core.el b/core/core.el index f25296992..7d0596ba7 100644 --- a/core/core.el +++ b/core/core.el @@ -8,6 +8,7 @@ "Current version of Doom Emacs.") (defconst EMACS27+ (> emacs-major-version 26)) +(defconst EMACS28+ (> emacs-major-version 27)) (defconst IS-MAC (eq system-type 'darwin)) (defconst IS-LINUX (eq system-type 'gnu/linux)) (defconst IS-WINDOWS (memq system-type '(cygwin windows-nt ms-dos))) From 019e988b8dcc40be516f3cfe47bd4839f6d99fe4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 13:33:00 -0400 Subject: [PATCH 161/167] org-roam-graph-show -> org-roam-graph org-roam-graph-show is deprecated Closes #2987 --- modules/config/default/+emacs-bindings.el | 2 +- modules/config/default/+evil-bindings.el | 2 +- modules/lang/org/contrib/roam.el | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index f059cefce..fc8b67fe2 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -157,7 +157,7 @@ :desc "Switch to buffer" "b" #'org-roam-switch-to-buffer :desc "Org Roam Capture" "c" #'org-roam-capture :desc "Find file" "f" #'org-roam-find-file - :desc "Show graph" "g" #'org-roam-graph-show + :desc "Show graph" "g" #'org-roam-graph :desc "Insert" "i" #'org-roam-insert :desc "Org Roam" "r" #'org-roam (:prefix ("d" . "by date") diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index b3ab8da21..52df2ec1b 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -490,7 +490,7 @@ :desc "Switch to buffer" "b" #'org-roam-switch-to-buffer :desc "Org Roam Capture" "c" #'org-roam-capture :desc "Find file" "f" #'org-roam-find-file - :desc "Show graph" "g" #'org-roam-graph-show + :desc "Show graph" "g" #'org-roam-graph :desc "Insert" "i" #'org-roam-insert :desc "Org Roam" "r" #'org-roam (:prefix ("d" . "by date") diff --git a/modules/lang/org/contrib/roam.el b/modules/lang/org/contrib/roam.el index 83f8c0bb9..064f342d1 100644 --- a/modules/lang/org/contrib/roam.el +++ b/modules/lang/org/contrib/roam.el @@ -13,7 +13,7 @@ :hook (org-roam-backlinks-mode . turn-on-visual-line-mode) :commands (org-roam-buffer-toggle-display org-roam-find-file - org-roam-graph-show + org-roam-graph org-roam-insert org-roam-switch-to-buffer org-roam-dailies-date @@ -31,7 +31,7 @@ :prefix ("m" . "org-roam") "b" #'org-roam-switch-to-buffer "f" #'org-roam-find-file - "g" #'org-roam-graph-show + "g" #'org-roam-graph "i" #'org-roam-insert "m" #'org-roam (:prefix ("d" . "by date") From b681940cceeb0749aead6d2b6a8bdca7122f0db8 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 14:08:36 -0400 Subject: [PATCH 162/167] Prevent 'cannot find file: mu4e-meta' error For users with older versions of mu4e installed. --- modules/email/mu4e/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/email/mu4e/config.el b/modules/email/mu4e/config.el index 9b496e70c..54c5efb61 100644 --- a/modules/email/mu4e/config.el +++ b/modules/email/mu4e/config.el @@ -14,8 +14,8 @@ :commands mu4e mu4e-compose-new :init (provide 'html2text) ; disable obsolete package - (require 'mu4e-meta) - (when (version< mu4e-mu-version "1.4") + (when (or (not (require 'mu4e-meta nil t)) + (version< mu4e-mu-version "1.4")) (setq mu4e-maildir "~/.mail" mu4e-user-mail-address-list nil)) (setq mu4e-attachment-dir "~/.mail/.attachments") From 0c80ba122174a29b4df722c0d98d136728739187 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 14:09:06 -0400 Subject: [PATCH 163/167] Update plugin list in email/mu4e readme --- modules/email/mu4e/README.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/email/mu4e/README.org b/modules/email/mu4e/README.org index 0001c53c2..93f2ab37c 100644 --- a/modules/email/mu4e/README.org +++ b/modules/email/mu4e/README.org @@ -38,13 +38,13 @@ via IMAP) and ~mu~ (to index my mail into a format ~mu4e~ can understand). + ~+gmail~ Enables gmail-specific configuration. ** Plugins -+ [[https://github.com/agpchil/mu4e-maildirs-extension][mu4e-maildirs-extension]] +This module install no plugins. * Prerequisites This module requires: + Either ~mbsync~ (default) or ~offlineimap~ (to sync mail with) -+ ~mu~ (to index your downloaded messages) ++ ~mu~, to index your downloaded messages and to provide the ~mu4e~ package. ** MacOS #+BEGIN_SRC sh From e9b288744d41e152cee5ee2b1444e01cce2ce588 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 16:32:21 -0400 Subject: [PATCH 164/167] Support evil-collection-setup-minibuffer --- modules/editor/evil/init.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/editor/evil/init.el b/modules/editor/evil/init.el index 1674bceb4..439082071 100644 --- a/modules/editor/evil/init.el +++ b/modules/editor/evil/init.el @@ -258,6 +258,9 @@ and complains if a module is loaded too early (during startup)." (+evil-collection-init 'elisp-mode)) (add-transient-hook! 'occur-mode (+evil-collection-init '(occur replace))) + (add-transient-hook! 'minibuffer-setup-hook + (when evil-collection-setup-minibuffer + (+evil-collection-init 'minibuffer))) ;; HACK Do this ourselves because evil-collection break's `eval-after-load' ;; load order by loading their target plugin before applying keys. This From 9acba6b269a936921ef05be358c0a2bc3b6fac75 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 17:27:32 -0400 Subject: [PATCH 165/167] Speed up project root detection by resolving it less often Projectile can consume a lot of cycles, especially in indirect buffers or because of project-root-sensitive path segments in the modeline. This experimental fix should spare you that heartache. --- core/core-projects.el | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/core-projects.el b/core/core-projects.el index daca64c3a..ebb8d803e 100644 --- a/core/core-projects.el +++ b/core/core-projects.el @@ -40,6 +40,16 @@ Emacs.") :config (projectile-mode +1) + ;; REVIEW Resolve the project root once, when the file/buffer is opened. This + ;; speeds up projectile's project root resolution by leaps, but does + ;; put you at risk of having a stale project root. + (setq-hook! '(after-change-major-mode-hook + ;; In case the user saves the file to a new location + after-save-hook + ;; ...or makes external changes then returns to Emacs + focus-in-hook) + projectile-project-root (if default-directory (doom-project-root))) + ;; Projectile runs four functions to determine the root (in this order): ;; ;; + `projectile-root-local' -> checks the `projectile-project-root' variable From 3e67f8f801a1bc4e0553546cc8f9a63c30e8c9f0 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 17:30:23 -0400 Subject: [PATCH 166/167] Fix C-{S,M}-RET in tty Emacs --- modules/lang/org/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 86fc7beb9..587f6ed57 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -575,6 +575,9 @@ between the two." "C-c C-S-l" #'+org/remove-link "C-c C-i" #'org-toggle-inline-images ;; textmate-esque newline insertion + "C-RET" #'+org/insert-item-below + "C-S-RET" #'+org/insert-item-above + "C-M-RET" #'org-insert-subheading [C-return] #'+org/insert-item-below [C-S-return] #'+org/insert-item-above [C-M-return] #'org-insert-subheading From 82f9dc2566b00d10adacba8de60892e37ab11940 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 27 Apr 2020 17:43:29 -0400 Subject: [PATCH 167/167] Fix #2972: infinite recursion in org src blocks --- modules/lang/org/config.el | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 587f6ed57..4a2b58faa 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -168,12 +168,17 @@ This forces it to read the background before rendering." ("HOLD" . +org-todo-onhold) ("PROJ" . +org-todo-project))) - (defadvice! +org-display-link-in-eldoc-a (orig-fn &rest args) + (after! org-eldoc + ;; HACK Fix #2972: infinite recursion when eldoc kicks in in an 'org' src + ;; block. + ;; TODO Should be reported upstream! + (puthash "org" "ignore" org-eldoc-local-functions-cache)) + + (defadvice! +org-display-link-in-eldoc-a (&rest args) "Display full link in minibuffer when cursor/mouse is over it." - :around #'org-eldoc-documentation-function - (or (when-let (link (org-element-property :raw-link (org-element-context))) - (format "Link: %s" link)) - (apply orig-fn args))) + :before-until #'org-eldoc-documentation-function + (when-let (link (org-element-property :raw-link (org-element-context))) + (format "Link: %s" link))) ;; Automatic indent detection in org files is meaningless (add-to-list 'doom-detect-indentation-excluded-modes 'org-mode)