branch: externals/diff-hl
commit 3cfd44c727903be0de94c5485254b9e6966e6473
Author: Jimmy Yuen Ho Wong <[email protected]>
Commit: Jimmy Yuen Ho Wong <[email protected]>

    Make ignorable commands customizable
---
 diff-hl-show-hunk-inline.el |  1 +
 diff-hl-show-hunk.el        | 38 ++++++++++++++++++++++++--------------
 2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/diff-hl-show-hunk-inline.el b/diff-hl-show-hunk-inline.el
index ae2704d4a4..9b2a2de42a 100644
--- a/diff-hl-show-hunk-inline.el
+++ b/diff-hl-show-hunk-inline.el
@@ -222,6 +222,7 @@ to scroll in the popup")
 (defun diff-hl-show-hunk-inline--post-command-hook ()
   "Called each time a command is executed."
   (let ((allowed-command (or
+                          (diff-hl-show-hunk-ignorable-command-p this-command)
                           (string-match-p "diff-hl-show-hunk-inline-" 
(symbol-name this-command))
                           (diff-hl-show-hunk-inline--ignorable-command-p 
this-command))))
     (unless allowed-command
diff --git a/diff-hl-show-hunk.el b/diff-hl-show-hunk.el
index bc1ed4dae2..c23ccb5caf 100644
--- a/diff-hl-show-hunk.el
+++ b/diff-hl-show-hunk.el
@@ -38,6 +38,29 @@
 
 (require 'diff-hl)
 
+(defgroup diff-hl-show-hunk nil
+  "Show vc diffs in a posframe or popup."
+  :group 'diff-hl)
+
+(defcustom diff-hl-show-hunk-ignorable-commands
+  '(ignore
+    diff-hl-show-hunk
+    handle-switch-frame
+    diff-hl-show-hunk--click)
+  "Commands that will keep the hunk shown.
+Any command not on this list will cause the hunk to be hidden."
+  :type '(repeat function)
+  :group 'diff-hl-show-hunk)
+
+(defcustom diff-hl-show-hunk-function 'diff-hl-show-hunk-inline
+  "The function used to render the hunk.
+The function receives as first parameter a buffer with the
+contents of the hunk, and as second parameter the line number
+corresponding to the clicked line in the original buffer."
+  :type '(choice
+          (const :tag "Show inline" diff-hl-show-hunk-inline)
+          (const :tag "Show using posframe" diff-hl-show-hunk-posframe)))
+
 (defvar diff-hl-show-hunk-mouse-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map (kbd "<left-margin> <mouse-1>") 'diff-hl-show-hunk--click)
@@ -65,22 +88,9 @@
 (defvar diff-hl-show-hunk--original-overlay nil
   "Copy of the diff-hl hunk overlay.")
 
-(defgroup diff-hl-show-hunk nil
-  "Show vc diffs in a posframe or popup."
-  :group 'diff-hl)
-
 (defconst diff-hl-show-hunk-boundary "^@@.*@@")
 (defconst diff-hl-show-hunk--no-lines-removed-message (list "<<no lines 
removed>>"))
 
-(defcustom diff-hl-show-hunk-function 'diff-hl-show-hunk-inline
-  "The function used to render the hunk.
-The function receives as first parameter a buffer with the
-contents of the hunk, and as second parameter the line number
-corresponding to the clicked line in the original buffer."
-  :type '(choice
-          (const :tag "Show inline" diff-hl-show-hunk-inline)
-          (const :tag "Show using posframe" diff-hl-show-hunk-posframe)))
-
 (defvar diff-hl-show-hunk--hide-function nil
   "Function to call to close the shown hunk.")
 
@@ -111,7 +121,7 @@ corresponding to the clicked line in the original buffer."
 
 (defun diff-hl-show-hunk-ignorable-command-p (command)
   "Decide if COMMAND is a command allowed while showing the current hunk."
-  (member command '(ignore diff-hl-show-hunk handle-switch-frame 
diff-hl-show-hunk--click)))
+  (member command diff-hl-show-hunk-ignorable-commands))
 
 (defun diff-hl-show-hunk--compute-diffs ()
   "Compute diffs using functions of diff-hl.

Reply via email to