Skip to content

Commit a9a04bd

Browse files
committed
Added relative preview.
1 parent efd4333 commit a9a04bd

File tree

1 file changed

+31
-15
lines changed

1 file changed

+31
-15
lines changed

goto-line-preview.el

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,20 @@
5050
:type 'hook)
5151

5252
(defvar goto-line-preview--prev-window nil
53-
"Record down the previous window before we do `goto-line-preview-goto-line' command.")
53+
"Record down the previous window before we do preivew display.")
5454

5555
(defvar goto-line-preview--prev-line-num nil
56-
"Record down the previous line number before we do `goto-line-preview-goto-line' command.")
56+
"Record down the previous line number before we do preivew display.")
57+
58+
(defvar goto-line-preview--relative-p nil
59+
"Flag to see if this command relative.")
60+
61+
(defun goto-line-preview--do (line-num)
62+
"Do goto LINE-NUM."
63+
(save-selected-window
64+
(select-window goto-line-preview--prev-window)
65+
(goto-char (point-min))
66+
(forward-line (1- line-num))))
5767

5868
(defun goto-line-preview--do-preview ()
5969
"Do the goto line preview action."
@@ -63,38 +73,44 @@
6373
(select-window goto-line-preview--prev-window)
6474
(if line-num-str
6575
(let ((line-num (string-to-number line-num-str)))
76+
(when goto-line-preview--relative-p
77+
(setq line-num (+ goto-line-preview--prev-line-num line-num)))
6678
(unless (zerop line-num) (goto-line-preview--do line-num)))
6779
(goto-line-preview--do goto-line-preview--prev-line-num))))))
6880

69-
(defun goto-line-preview--do (line-num)
70-
"Do goto LINE-NUM."
71-
(save-selected-window
72-
(select-window goto-line-preview--prev-window)
73-
(goto-char (point-min))
74-
(forward-line (1- line-num))))
75-
7681
;;;###autoload
7782
(defun goto-line-preview ()
7883
"Preview goto line."
7984
(interactive)
80-
(let ((window (selected-window))
85+
(let ((goto-line-preview--prev-window (selected-window))
8186
(window-point (window-point))
87+
(goto-line-preview--prev-line-num (line-number-at-pos))
8288
jumped)
8389
(run-hooks 'goto-line-preview-before-hook)
8490
(unwind-protect
85-
(let ((goto-line-preview--prev-window (selected-window))
86-
(goto-line-preview--prev-line-num (line-number-at-pos)))
87-
(setq jumped (read-number "Goto line: ")))
91+
(setq jumped (read-number
92+
(if goto-line-preview--relative-p
93+
"Goto line relative: "
94+
"Goto line: ")))
8895
(unless jumped
89-
(set-window-point window window-point))
96+
(set-window-point goto-line-preview--prev-window window-point))
9097
(run-hooks 'goto-line-preview-after-hook))))
9198

99+
;;;###autoload
100+
(defun goto-line-preview-relative ()
101+
"Preview goto line relative."
102+
(interactive)
103+
(let ((goto-line-preview--relative-p t))
104+
(goto-line-preview)))
105+
92106
;;;###autoload
93107
(define-obsolete-function-alias 'goto-line-preview-goto-line 'goto-line-preview)
94108

95109
(defun goto-line-preview--minibuffer-setup ()
96110
"Locally set up preview hooks for this minibuffer command."
97-
(when (memq this-command '(goto-line-preview goto-line-preview-goto-line))
111+
(when (memq this-command '(goto-line-preview
112+
goto-line-preview-goto-line
113+
goto-line-preview-relative))
98114
(add-hook 'post-command-hook #'goto-line-preview--do-preview nil t)))
99115

100116
(add-hook 'minibuffer-setup-hook 'goto-line-preview--minibuffer-setup)

0 commit comments

Comments
 (0)