Skip to content

Commit 7fe39f0

Browse files
committed
If two windows had opened the same buffer, 'goto-line-preview' command would not work correctly, Fixed this by recording the window instead of recroding the buffer.
1 parent c1b5abc commit 7fe39f0

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

goto-line-preview.el

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
;; Author: Shen, Jen-Chieh <[email protected]>
77
;; Description: Preview line when executing `goto-line` command.
88
;; Keyword: line navigation
9-
;; Version: 0.0.3
9+
;; Version: 0.0.4
1010
;; Package-Requires: ((emacs "25"))
1111
;; URL: https://github.com/jcs090218/goto-line-preview
1212

@@ -41,20 +41,30 @@
4141
:link '(url-link :tag "Repository" "https://github.com/jcs090218/goto-line-preview"))
4242

4343

44-
(defvar goto-line-preview-prev-buffer nil
45-
"Record down the previous buffer before we do `goto-line-preview-goto-line' command.")
44+
(defvar goto-line-preview-prev-window nil
45+
"Record down the previous window before we do `goto-line-preview-goto-line' command.")
4646

4747
(defvar goto-line-preview-prev-line-num nil
4848
"Record down the previous line number before we do `goto-line-preview-goto-line' command.")
4949

50+
(defcustom goto-line-preview-before-hook nil
51+
"Hooks run before `goto-line-preview' is run."
52+
:group 'goto-line-preview
53+
:type 'hook)
54+
55+
(defcustom goto-line-preview-after-hook nil
56+
"Hooks run after `goto-line-preview' is run."
57+
:group 'goto-line-preview
58+
:type 'hook)
59+
5060

5161
(defun goto-line-preview-do-preview ()
5262
"Do the goto line preview action."
5363
(save-selected-window
54-
(when goto-line-preview-prev-buffer
64+
(when goto-line-preview-prev-window
5565
(let ((line-num-str (thing-at-point 'line)))
5666

57-
(switch-to-buffer goto-line-preview-prev-buffer)
67+
(select-window goto-line-preview-prev-window)
5868

5969
(if line-num-str
6070
(let ((line-num (string-to-number line-num-str)))
@@ -66,7 +76,7 @@
6676
"Do goto line.
6777
LINE-NUM : Target line number to navigate to."
6878
(save-selected-window
69-
(switch-to-buffer goto-line-preview-prev-buffer)
79+
(select-window goto-line-preview-prev-window)
7080
(goto-char (point-min))
7181
(forward-line (1- line-num))))
7282

@@ -79,12 +89,14 @@ LINE-NUM : Target line number to navigate to."
7989
(let ((window (selected-window))
8090
(window-point (window-point))
8191
jumped)
92+
(run-hooks 'goto-line-preview-before-hook)
8293
(unwind-protect
83-
(let ((goto-line-preview-prev-buffer (buffer-name))
94+
(let ((goto-line-preview-prev-window (selected-window))
8495
(goto-line-preview-prev-line-num (line-number-at-pos)))
8596
(setq jumped (read-number "Goto line: ")))
8697
(unless jumped
87-
(set-window-point window window-point)))))
98+
(set-window-point window window-point))
99+
(run-hooks 'goto-line-preview-after-hook))))
88100

89101
;;;###autoload
90102
(define-obsolete-function-alias 'goto-line-preview-goto-line 'goto-line-preview)

0 commit comments

Comments
 (0)