diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2019-10-01 15:39:59 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2019-10-01 15:40:05 +0200 |
commit | ad33e3e549e24c48259c6bdfb069e41be0a31f98 (patch) | |
tree | c77263f9968d7cd85662d99b6de8a37627d57ea7 /lisp/emacs-lisp | |
parent | 7b87e73ddc007d1ddebd65effe8c1ac0d4eb5530 (diff) | |
download | emacs-ad33e3e549e24c48259c6bdfb069e41be0a31f98.tar.gz emacs-ad33e3e549e24c48259c6bdfb069e41be0a31f98.tar.bz2 emacs-ad33e3e549e24c48259c6bdfb069e41be0a31f98.zip |
Add a new command in *Compile-Log* buffers to re-byte-compile
* lisp/emacs-lisp/bytecomp.el (emacs-lisp-compilation-recompile):
New command (bug#4516).
(emacs-lisp-compilation--current-file)
(emacs-lisp-compilation-mode-map): New variables with new `g'
binding.
(byte-compile-log-file): Set variable so that `g' can recompile it.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 44a65ed4c6a..2b26390b180 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1045,8 +1045,26 @@ message buffer `default-directory'." :type '(repeat (choice (const :tag "Default" nil) (string :tag "Directory")))) +(defvar emacs-lisp-compilation-mode-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map compilation-minor-mode-map) + (define-key map "g" 'emacs-lisp-compilation-recompile) + map)) + +(defvar emacs-lisp-compilation--current-file nil) + (define-compilation-mode emacs-lisp-compilation-mode "elisp-compile" - "The variant of `compilation-mode' used for emacs-lisp compilation buffers.") + "The variant of `compilation-mode' used for emacs-lisp compilation buffers." + (setq-local emacs-lisp-compilation--current-file nil)) + +(defun emacs-lisp-compilation-recompile () + "Recompile the previously byte-compiled file." + (interactive) + (unless emacs-lisp-compilation--current-file + (error "No previously compiled file")) + (unless (stringp emacs-lisp-compilation--current-file) + (error "Only files can be recompiled")) + (byte-compile-file emacs-lisp-compilation--current-file)) (defvar byte-compile-current-form nil) (defvar byte-compile-dest-file nil) @@ -1236,6 +1254,7 @@ message buffer `default-directory'." ;; Do this after setting default-directory. (unless (derived-mode-p 'compilation-mode) (emacs-lisp-compilation-mode)) + (setq emacs-lisp-compilation--current-file byte-compile-current-file) (compilation-forget-errors) pt)))) |