[emacs][wip] a/async-babel-tangle: add option to byte-recompile-file
[~bandali/configs] / init.org
index 42487ee..3cf7343 100644 (file)
--- a/init.org
+++ b/init.org
@@ -296,6 +296,8 @@ and without compromising on performance.
           debug-on-error t)
   (setq use-package-verbose nil
         use-package-expand-minimally t))
           debug-on-error t)
   (setq use-package-verbose nil
         use-package-expand-minimally t))
+
+(setq use-package-always-defer t)
 #+end_src
 
 *** COMMENT Epkg
 #+end_src
 
 *** COMMENT Epkg
@@ -727,6 +729,7 @@ for this.
 ** Bindings
 
 #+begin_src emacs-lisp
 ** Bindings
 
 #+begin_src emacs-lisp
+(require 'bind-key)
 (bind-keys
  ("C-c a i" . ielm)
 
 (bind-keys
  ("C-c a i" . ielm)
 
@@ -894,9 +897,12 @@ file.
   (defvar a/show-async-tangle-time nil
     "Show the time spent tangling the file.")
 
   (defvar a/show-async-tangle-time nil
     "Show the time spent tangling the file.")
 
-  (defvar a/async-tangle-post-compile "make ti"
+  (defvar a/async-tangle-post-compile nil
     "If non-nil, pass to `compile' after successful tangle.")
 
     "If non-nil, pass to `compile' after successful tangle.")
 
+  (defvar a/async-tangle-byte-recompile t
+    "If non-nil, byte-recompile the file on successful tangle.")
+
   (defun a/async-babel-tangle ()
     "Tangle org file asynchronously."
     (interactive)
   (defun a/async-babel-tangle ()
     "Tangle org file asynchronously."
     (interactive)
@@ -904,7 +910,7 @@ file.
            (file (buffer-file-name))
            (file-nodir (file-name-nondirectory file))
            ;; (async-quiet-switch "-q")
            (file (buffer-file-name))
            (file-nodir (file-name-nondirectory file))
            ;; (async-quiet-switch "-q")
-           )
+           (file-noext (file-name-sans-extension file)))
       (async-start
        `(lambda ()
           (require 'org)
       (async-start
        `(lambda ()
           (require 'org)
@@ -913,6 +919,7 @@ file.
          `(lambda (result)
             (if result
                 (progn
          `(lambda (result)
             (if result
                 (progn
+                  (setq byte-compile-warnings '(not noruntime unresolved))
                   (message "Tangled %s%s"
                            ,file-nodir
                            (if a/show-async-tangle-time
                   (message "Tangled %s%s"
                            ,file-nodir
                            (if a/show-async-tangle-time
@@ -921,7 +928,9 @@ file.
                                                                   ',file-tangle-start-time)))
                              ""))
                   (when a/async-tangle-post-compile
                                                                   ',file-tangle-start-time)))
                              ""))
                   (when a/async-tangle-post-compile
-                    (compile a/async-tangle-post-compile)))
+                    (compile a/async-tangle-post-compile))
+                  (when a/async-tangle-byte-recompile
+                    (byte-recompile-file (concat ,file-noext ".el"))))
               (message "Tangling %s failed" ,file-nodir))))))))
 
 (add-to-list
               (message "Tangling %s failed" ,file-nodir))))))))
 
 (add-to-list
@@ -978,8 +987,7 @@ A smart M-x enhancement for Emacs.
 Mostly because =counsel= needs it to remember history.
 
 #+begin_src emacs-lisp
 Mostly because =counsel= needs it to remember history.
 
 #+begin_src emacs-lisp
-(use-package smex
-  :defer t)
+(use-package smex)
 #+end_src
 
 *** [[https://github.com/abo-abo/swiper][Ivy]] (and friends)
 #+end_src
 
 *** [[https://github.com/abo-abo/swiper][Ivy]] (and friends)
@@ -1080,7 +1088,6 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-feature ibuffer
 
 #+begin_src emacs-lisp
 (use-feature ibuffer
-  :defer t
   :bind
   (("C-x C-b" . ibuffer-other-window)
    :map ibuffer-mode-map
   :bind
   (("C-x C-b" . ibuffer-other-window)
    :map ibuffer-mode-map
@@ -1151,7 +1158,6 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-feature outline
 
 #+begin_src emacs-lisp
 (use-feature outline
-  :defer t
   :hook (prog-mode . outline-minor-mode)
   :bind
   (:map
   :hook (prog-mode . outline-minor-mode)
   :bind
   (:map
@@ -1176,7 +1182,6 @@ There's no way I could top that, so I won't attempt to.
   :custom (ls-lisp-dirs-first t))
 
 (use-feature dired
   :custom (ls-lisp-dirs-first t))
 
 (use-feature dired
-  :defer t
   :config
   (setq dired-listing-switches "-alh"
         ls-lisp-use-insert-directory-program nil)
   :config
   (setq dired-listing-switches "-alh"
         ls-lisp-use-insert-directory-program nil)
@@ -1185,6 +1190,7 @@ There's no way I could top that, so I won't attempt to.
   ;; https://oremacs.com/2017/03/18/dired-ediff/
   (defun dired-ediff-files ()
     (interactive)
   ;; https://oremacs.com/2017/03/18/dired-ediff/
   (defun dired-ediff-files ()
     (interactive)
+    (require 'dired-aux)
     (defvar ediff-after-quit-hook-internal)
     (let ((files (dired-get-marked-files))
           (wnd (current-window-configuration)))
     (defvar ediff-after-quit-hook-internal)
     (let ((files (dired-get-marked-files))
           (wnd (current-window-configuration)))
@@ -1204,6 +1210,7 @@ There's no way I could top that, so I won't attempt to.
                         (set-window-configuration wnd))))
         (error "no more than 2 files should be marked"))))
   :bind (:map dired-mode-map
                         (set-window-configuration wnd))))
         (error "no more than 2 files should be marked"))))
   :bind (:map dired-mode-map
+              ("b"  . dired-up-directory)
               ("e"  . dired-ediff-files)
               ("E"  . dired-toggle-read-only)
               ("\\" . dired-hide-details-mode)
               ("e"  . dired-ediff-files)
               ("E"  . dired-toggle-read-only)
               ("\\" . dired-hide-details-mode)
@@ -1217,7 +1224,6 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-feature help
 
 #+begin_src emacs-lisp
 (use-feature help
-  :defer t
   :config
   (temp-buffer-resize-mode)
   (setq help-window-select t))
   :config
   (temp-buffer-resize-mode)
   (setq help-window-select t))
@@ -1227,7 +1233,6 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-feature tramp
 
 #+begin_src emacs-lisp
 (use-feature tramp
-  :defer t
   :config
   (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
   (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil))
   :config
   (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:"))
   (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil))
@@ -1239,7 +1244,6 @@ There's no way I could top that, so I won't attempt to.
 
 #+begin_src emacs-lisp
 (use-package dash
 
 #+begin_src emacs-lisp
 (use-package dash
-  :defer t
   :config (dash-enable-font-lock))
 #+end_src
 
   :config (dash-enable-font-lock))
 #+end_src
 
@@ -1401,15 +1405,13 @@ Automatically save place in each file.
 #+begin_src emacs-lisp
 (use-package alloy-mode
   :straight (:host github :repo "dwwmmn/alloy-mode")
 #+begin_src emacs-lisp
 (use-package alloy-mode
   :straight (:host github :repo "dwwmmn/alloy-mode")
-  :defer t
   :config (setq alloy-basic-offset 2))
 #+end_src
 
 ** [[https://coq.inria.fr][Coq]] (with [[https://github.com/ProofGeneral/PG][Proof General]])
 
 #+begin_src emacs-lisp
   :config (setq alloy-basic-offset 2))
 #+end_src
 
 ** [[https://coq.inria.fr][Coq]] (with [[https://github.com/ProofGeneral/PG][Proof General]])
 
 #+begin_src emacs-lisp
-(use-package proof-general
-  :defer t)
+(use-package proof-general)
 #+end_src
 
 ** [[https://leanprover.github.io][Lean]] (with [[https://github.com/leanprover/lean-mode][lean-mode]])
 #+end_src
 
 ** [[https://leanprover.github.io][Lean]] (with [[https://github.com/leanprover/lean-mode][lean-mode]])
@@ -1436,7 +1438,6 @@ Automatically save place in each file.
 
 #+begin_src emacs-lisp
 (use-package haskell-mode
 
 #+begin_src emacs-lisp
 (use-package haskell-mode
-  :defer t
   :config
   (setq haskell-indentation-layout-offset 4
         haskell-indentation-left-offset 4
   :config
   (setq haskell-indentation-layout-offset 4
         haskell-indentation-left-offset 4
@@ -1625,7 +1626,6 @@ instead.
 
 #+begin_src emacs-lisp
 (use-package sgml-mode
 
 #+begin_src emacs-lisp
 (use-package sgml-mode
-  :defer t
   :config
   (setq sgml-basic-offset 2))
 #+end_src
   :config
   (setq sgml-basic-offset 2))
 #+end_src
@@ -1634,7 +1634,6 @@ instead.
 
 #+begin_src emacs-lisp
 (use-package css-mode
 
 #+begin_src emacs-lisp
 (use-package css-mode
-  :defer t
   :config
   (setq css-indent-offset 2))
 #+end_src
   :config
   (setq css-indent-offset 2))
 #+end_src
@@ -1643,7 +1642,6 @@ instead.
 
 #+begin_src emacs-lisp
 (use-package web-mode
 
 #+begin_src emacs-lisp
 (use-package web-mode
-  :defer t
   :mode "\\.html\\'"
   :config
   (a/setq-every 2
   :mode "\\.html\\'"
   :config
   (a/setq-every 2
@@ -1771,7 +1769,6 @@ treemacs
 
 #+begin_src emacs-lisp
 (use-feature man
 
 #+begin_src emacs-lisp
 (use-feature man
-  :defer t
   :config (setq Man-width 80))
 #+end_src
 
   :config (setq Man-width 80))
 #+end_src
 
@@ -1842,6 +1839,7 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package smart-mode-line
 
 #+begin_src emacs-lisp
 (use-package smart-mode-line
+  :commands (sml/apply-theme)
   :config
   (sml/setup))
 #+end_src
   :config
   (sml/setup))
 #+end_src
@@ -1903,7 +1901,6 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package projectile
 
 #+begin_src emacs-lisp
 (use-package projectile
-  :defer t
   :bind-keymap ("C-c p" . projectile-command-map)
   :config
   (projectile-mode)
   :bind-keymap ("C-c p" . projectile-command-map)
   :config
   (projectile-mode)
@@ -2327,7 +2324,7 @@ Convenient footnotes in =message-mode=.
 
 #+begin_src emacs-lisp
 (use-package ebdb
 
 #+begin_src emacs-lisp
 (use-package ebdb
-  :defer 1
+  :after gnus
   :bind (:map gnus-group-mode-map ("e" . ebdb))
   :config
   (setq ebdb-sources (no-littering-expand-var-file-name "ebdb"))
   :bind (:map gnus-group-mode-map ("e" . ebdb))
   :config
   (setq ebdb-sources (no-littering-expand-var-file-name "ebdb"))
@@ -2441,6 +2438,6 @@ Display how long it took to load the init file.
 
 * COMMENT Local Variables                                           :ARCHIVE:
 # Local Variables:
 
 * COMMENT Local Variables                                           :ARCHIVE:
 # Local Variables:
-# eval: ;; (add-hook 'after-save-hook #'a/async-babel-tangle 'append 'local)
+# eval: (add-hook 'after-save-hook #'a/async-babel-tangle 'append 'local)
 # eval: (typo-mode -1)
 # End:
 # eval: (typo-mode -1)
 # End: