diff --git a/lisp/cli/install.el b/lisp/cli/install.el index 3e1e4ef21..8eaec4abe 100644 --- a/lisp/cli/install.el +++ b/lisp/cli/install.el @@ -15,7 +15,8 @@ ;;; Commands (defcli! ((install i)) - (&flags + ((aot? ("--aot") "Enable ahead-of-time native-compilation (if available)") + &flags (config? ("--config" :yes) "Create `$DOOMDIR' or dummy files therein?") (envfile? ("--env" :yes) "(Re)generate an envvars file? (see `$ doom help env`)") (install? ("--install" :yes) "Auto-install packages?") @@ -91,6 +92,10 @@ Change `$DOOMDIR' with the `--doomdir' option, e.g. (when (or yes? (y-or-n-p "Generate an envvar file? (see `doom help env` for details)")) (call! '(env))))) + (when aot? + (after! straight + (setq straight--native-comp-available t))) + ;; Install Doom packages (if (eq install? :no) (print! (warn "Not installing plugins, as requested")) diff --git a/lisp/cli/sync.el b/lisp/cli/sync.el index ee18ccb54..b9877109e 100644 --- a/lisp/cli/sync.el +++ b/lisp/cli/sync.el @@ -28,6 +28,7 @@ (jobs ("-j" "--jobs" num) "How many threads to use for native compilation") (rebuild? ("-b" "--rebuild") "Rebuild all installed packages, unconditionally") (nobuild? ("-B") "Don't rebuild packages when hostname or Emacs version has changed") + (aot? ("--aot") "Natively compile packages ahead-of-time (if available)") &context context) "Synchronize your config with Doom Emacs. @@ -48,10 +49,17 @@ stale. OPTIONS: -j, --jobs Defaults to the maximum number of threads (or 1, if your CPU's threadcount - can't be determined)." + can't be determined). + --aot + Will only perform AOT native-compilation for packages updated/installed + during the execution of this command. Use --rebuild as well to do so for all + packages." :benchmark t (when (doom-profiles-bootloadable-p) (call! '(profiles sync "--reload"))) + (when aot? + (after! straight + (setq straight--native-comp-available t))) (when jobs (setq native-comp-async-jobs-number (truncate jobs))) (run-hooks 'doom-before-sync-hook) diff --git a/lisp/cli/upgrade.el b/lisp/cli/upgrade.el index 67f9f9897..e2eac21d2 100644 --- a/lisp/cli/upgrade.el +++ b/lisp/cli/upgrade.el @@ -19,7 +19,8 @@ ;;; Commands (defcli! ((upgrade up)) - ((packages? ("-p" "--packages") "Only upgrade packages, not Doom") + ((aot? ("--aot") "Natively compile packages ahead-of-time (if available)") + (packages? ("-p" "--packages") "Only upgrade packages, not Doom") (jobs ("-j" "--jobs" num) "How many CPUs to use for native compilation") (nobuild? ("-B") "Don't rebuild packages when hostname or Emacs version has changed") &context context) @@ -33,6 +34,7 @@ libraries. It is the equivalent of the following shell commands: $ doom sync -u" (let* ((force? (doom-cli-context-suppress-prompts-p context)) (sync-cmd (append '("sync" "-u") + (if aot? '("--aot")) (if nobuild? '("-B")) (if jobs `("-j" ,jobs))))) (cond @@ -57,6 +59,7 @@ libraries. It is the equivalent of the following shell commands: (print! (item "Reloading Doom Emacs")) (doom-cli-context-put context 'upgrading t) (exit! "doom" "upgrade" "-p" + (if aot? "--aot") (if nobuild? "-B") (if force? "--force") (if jobs (format "--jobs=%d" jobs)))) diff --git a/lisp/lib/docs.el b/lisp/lib/docs.el index ff7218684..1f7d90d28 100644 --- a/lisp/lib/docs.el +++ b/lisp/lib/docs.el @@ -485,6 +485,13 @@ This primes `org-mode' for reading." ("" 'warning)))) "Extra font-lock keywords for Doom documentation.") +(defvar doom-docs-org-mode-map + (let ((map (make-sparse-keymap)) + (cmd (cmds! buffer-read-only #'kill-current-buffer))) + (define-key map "q" cmd) + (define-key map [remap evil-record-macro] cmd) + map)) + ;;;###autoload (define-derived-mode doom-docs-org-mode org-mode "Doom Docs" "A derivative of `org-mode' for Doom's documentation files. diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index e677e610d..13b0b504a 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -799,19 +799,22 @@ via an indirect buffer." `org-mode' when they're switched to so they can grow up to be fully-fledged org-mode buffers." :around #'org-get-agenda-file-buffer - (let ((recentf-exclude (list (lambda (_file) t))) - (doom-inhibit-large-file-detection t) - org-startup-indented - org-startup-folded - vc-handled-backends - org-mode-hook - find-file-hook) - (let ((buf (funcall fn file))) - (if buf - (with-current-buffer buf - (add-hook 'doom-switch-buffer-hook #'+org--restart-mode-h - nil 'local))) - buf))) + (if-let (buf (org-find-base-buffer-visiting file)) + buf + (let ((recentf-exclude (list (lambda (_file) t))) + (doom-inhibit-large-file-detection t) + org-startup-indented + org-startup-folded + vc-handled-backends + org-mode-hook + enable-local-variables + find-file-hook) + (let ((buf (funcall fn file))) + (when buf + (with-current-buffer buf + (add-hook 'doom-switch-buffer-hook #'+org--restart-mode-h + nil 'local))) + buf)))) (defadvice! +org--fix-inconsistent-uuidgen-case-a (uuid) "Ensure uuidgen is always lowercase (consistent) regardless of system. diff --git a/modules/ui/hl-todo/packages.el b/modules/ui/hl-todo/packages.el index 2aa75ea9c..eb5b47ae5 100644 --- a/modules/ui/hl-todo/packages.el +++ b/modules/ui/hl-todo/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/hl-todo/packages.el -(package! hl-todo :pin "dd46d426c0501b5e8ed976a834d3e54ae85731f7") +(package! hl-todo :pin "82eba6b8f7b5a4cbcf22436d5c5b88fb3134f57e") diff --git a/modules/ui/minimap/packages.el b/modules/ui/minimap/packages.el index 9c5fa0251..f2d2972a8 100644 --- a/modules/ui/minimap/packages.el +++ b/modules/ui/minimap/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/minimap/packages.el -(package! minimap :pin "4898d277686c2829c2e91416082f4252c1bb0ceb") +(package! minimap :pin "5aa0df40bc0d587dffd23adf2e0873d671b0bebf") diff --git a/modules/ui/modeline/packages.el b/modules/ui/modeline/packages.el index 80248db36..2dd48595e 100644 --- a/modules/ui/modeline/packages.el +++ b/modules/ui/modeline/packages.el @@ -2,7 +2,7 @@ ;;; ui/modeline/packages.el (unless (modulep! +light) - (package! doom-modeline :pin "1505c13564b83e44d3187611e326a48b742cad3a")) + (package! doom-modeline :pin "9920ef511620e9fa5599cb357e48487f758b1bb1")) (package! anzu :pin "26fb50b429ee968eb944b0615dd0aed1dd66172c") (when (modulep! :editor evil) (package! evil-anzu :pin "d1e98ee6976437164627542909a25c6946497899")) diff --git a/modules/ui/tabs/packages.el b/modules/ui/tabs/packages.el index c5c95f5f3..9cfc9e931 100644 --- a/modules/ui/tabs/packages.el +++ b/modules/ui/tabs/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/tabs/packages.el -(package! centaur-tabs :pin "d6009c295a4363930247ae9a4d1125aea4d3fd74") +(package! centaur-tabs :pin "063534bd003850816ccd620e105619948785977b") diff --git a/modules/ui/treemacs/packages.el b/modules/ui/treemacs/packages.el index 8406d4d80..475c62412 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 "54ef590b7621032a76f8f3e307032fc13c802371") +(package! treemacs :pin "202d7f01d61359bb4b2a775d8d8eeb726d91a086") (package! treemacs-nerd-icons :pin "9876cb478145a0ec4e36f64ff6583f3de7126216") ;; These packages have no :pin because they're in the same repo (when (modulep! :editor evil +everywhere) @@ -13,4 +13,4 @@ (package! treemacs-persp)) (when (and (modulep! +lsp) (not (modulep! :tools lsp +eglot))) - (package! lsp-treemacs :pin "1d43e9e0307f84496a4a7ddf9dba481000391dbd")) + (package! lsp-treemacs :pin "fb1a07ae0a3d781dea8ac78da2933e0173eb48a4")) diff --git a/modules/ui/vc-gutter/packages.el b/modules/ui/vc-gutter/packages.el index 256314351..b1c02e038 100644 --- a/modules/ui/vc-gutter/packages.el +++ b/modules/ui/vc-gutter/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/vc-gutter/packages.el -(package! diff-hl :pin "57d9d4e3e17397bf178c3aa5c369b5edd24523e0") +(package! diff-hl :pin "b80ff9b4a772f7ea000e86fbf88175104ddf9557") diff --git a/modules/ui/workspaces/packages.el b/modules/ui/workspaces/packages.el index 8ed2e3c33..2279bfac5 100644 --- a/modules/ui/workspaces/packages.el +++ b/modules/ui/workspaces/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/workspaces/packages.el -(package! persp-mode :pin "345baaa520ab2d62205f85cc5f29d57d6063c141") +(package! persp-mode :pin "40e9993a9711cba5fb56dfec81a507fabeba9668")