[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dired-preview 3304286c17 04/67: Use an advice instead o
From: |
ELPA Syncer |
Subject: |
[elpa] externals/dired-preview 3304286c17 04/67: Use an advice instead of defining new commands; delete our keymap |
Date: |
Sat, 8 Jul 2023 15:57:51 -0400 (EDT) |
branch: externals/dired-preview
commit 3304286c175387602032a15a7d1888473ca054b0
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Use an advice instead of defining new commands; delete our keymap
This is the same ideas as in commit ae93720, except more generalised.
Instead of defining our own commands, we advise Dired to display a
preview after one of its standard commands is called. This way we
avoid the problem where the key remap mechanism does not actually
remap all keys associated with a given command.[1][2]
[1] Thanks to Peter Prevos for reporting this in issue 1 on the GitHub
mirror: <https://github.com/protesilaos/dired-preview/issues/1>.
[2] Thanks to Christian Tietze and Ed Hamilton for discussing this
with me on the mailing list:
<https://lists.sr.ht/~protesilaos/general-issues/%3Cm1zg4noej2.fsf%40christiantietze.de%3E>.
Commit ae93720 by Christian Tietze is based on this discussion.
---
dired-preview.el | 50 +++++++++++++-------------------------------------
1 file changed, 13 insertions(+), 37 deletions(-)
diff --git a/dired-preview.el b/dired-preview.el
index 9e6501c7bc..8c2e57bea9 100644
--- a/dired-preview.el
+++ b/dired-preview.el
@@ -242,62 +242,38 @@ Only do it with the current major mode is Dired."
(run-with-timer dired-preview-delay nil
#'dired-preview--display-buffer-action buffer)))
-(defun dired-preview--display-file (&optional file)
- "Display preview of file if appropriate.
-
-File is either FILE or the value of `dired-file-name-at-point'.
-
-Return buffer object of displayed buffer."
- (if-let* ((f (or file (dired-file-name-at-point)))
- (buffer (dired-preview--return-preview-buffer f)))
+(defun dired-preview-display-file (&rest _)
+ "Display preview of `dired-file-name-at-point' if appropriate.
+Return buffer object of displayed buffer. Ignore any arguments.
+
+Use this as advice after relevant Dired commands (see
+`dired-preview-enable-preview', `dired-preview-disable-preview')."
+ (if-let* ((file (dired-file-name-at-point))
+ (buffer (dired-preview--return-preview-buffer file)))
(dired-preview--display-buffer-with-delay buffer)
(dired-preview--close-previews)))
-(defun dired-preview--display-file-after-mark (&rest args)
- "Preview file at point in dired buffer after a mark was changed."
- (dired-preview--display-file))
-
(defun dired-preview-disable-preview ()
"Disable preview."
(unless (eq major-mode 'dired-mode)
(error "Can only use `dired-preview' in Dired"))
- (advice-remove #'dired-mark #'dired-preview--display-file-after-mark)
+ (dolist (command '(dired-next-line dired-previous-line dired-mark
dired-goto-file))
+ (advice-remove command #'dired-preview-display-file))
(dired-preview--close-previews))
(defun dired-preview-enable-preview ()
"Enable preview and store window configuration."
(unless (eq major-mode 'dired-mode)
(error "Can only use `dired-preview' in Dired"))
- (advice-add #'dired-mark :after #'dired-preview--display-file-after-mark)
+ (dolist (command '(dired-next-line dired-previous-line dired-mark
dired-goto-file))
+ (advice-add command :after #'dired-preview-display-file))
(add-hook 'post-command-hook #'dired-preview--close-previews-outside-dired
nil :local)
- (dired-preview--display-file))
-
-(defun dired-preview-next-file (number)
- "Preview next file in Dired.
-With optional numeric argument NUMBER move than many lines. Default is 1."
- (interactive "^p")
- (dired-next-line (or number 1))
- (dired-preview--display-file))
-
-(defun dired-preview-previous-file (number)
- "Preview previous file in Dired.
-With optional numeric argument NUMBER move than many lines. Default is 1."
- (interactive "^p")
- (dired-next-line (- (or number 1)))
- (dired-preview--display-file))
-
-(defvar dired-preview-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map [remap dired-next-line] #'dired-preview-next-file)
- (define-key map [remap dired-previous-line] #'dired-preview-previous-file)
- map)
- "Keymap for `dired-preview-mode'.")
+ (dired-preview-display-file))
;;;###autoload
(define-minor-mode dired-preview-mode
"Buffer-local mode to preview file at point in Dired."
:global nil
- :keymap dired-preview-mode-map
(if dired-preview-mode
(dired-preview-enable-preview)
(dired-preview-disable-preview)))
- [elpa] branch externals/dired-preview created (now 6673bb1cd3), ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 3304286c17 04/67: Use an advice instead of defining new commands; delete our keymap,
ELPA Syncer <=
- [elpa] externals/dired-preview 4dc5a9f430 06/67: Reorganise a couple of functions, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 5dd110bea6 02/67: Fix typo in backronym, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 36afd90371 01/67: Add initial version of dired-preview, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview c89b7ceb32 08/67: Delete negative space, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview caec7a973e 15/67: Add FIXME for the advice and minor mode setup, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 8f23847768 17/67: Remove the advice system to restore buffer-local mode, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview 6e10fd0381 19/67: Fix how delayed-mode-hooks are called, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview bf30367ffe 21/67: Add FIXME for dired-preview-set-up-preview-window, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview f422a2e2d9 07/67: Check if file exists for previewing, ELPA Syncer, 2023/07/08
- [elpa] externals/dired-preview ae937209cc 03/67: add advice to dired-mark to preview the current file, ELPA Syncer, 2023/07/08