Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ Or you can bind it globally to replace `goto-line`:
(global-set-key [remap goto-line] 'goto-line-preview)
```

## Optional Variables ##

##### `goto-line-preview-ensure-line-number-mode` #####

This can be the symbol of a line-number-mode that should always be
enabled for the duration of `goto-line-preview`. This is useful if you
are in a buffer that is not showing line numbers but would like to see
then when you invoke `goto-line-preview`.

Modes known to work are `display-line-numbers-mode`, `linum-mode`,
and `nlinum-mode`. The default value is `nil`.

## Contribution ##
If you would like to contribute to this project, you may either
Expand Down
16 changes: 16 additions & 0 deletions goto-line-preview.el
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@
:group 'tools
:link '(url-link :tag "Repository" "https://github.com/jcs090218/goto-line-preview"))

(defcustom goto-line-preview-ensure-line-number-mode nil
"Optional symbol of a line-number-mode to ensure is enabled for the duration of
`goto-line-preview'. Modes known to work are `display-line-numbers-mode',
`linum-mode', and `nlinum-mode'."
:group 'goto-line-preview
:type 'symbol
:options '(display-line-numbers-mode linum-mode nlinum-mode))

(defvar goto-line-preview-prev-buffer nil
"Record down the previous buffer before we do `goto-line-preview-goto-line' command.")
Expand Down Expand Up @@ -70,6 +77,10 @@ LINE-NUM : Target line number to navigate to."
(goto-char (point-min))
(forward-line (1- line-num))))

(defun goto-line-preview-line-number-mode-not-showing ()
(and goto-line-preview-ensure-line-number-mode
(or (not (boundp goto-line-preview-ensure-line-number-mode))
(not (symbol-value goto-line-preview-ensure-line-number-mode)))))

;;;###autoload
(defun goto-line-preview ()
Expand All @@ -78,11 +89,16 @@ LINE-NUM : Target line number to navigate to."
(interactive)
(let ((window (selected-window))
(window-point (window-point))
(line-numbers-not-showing (goto-line-preview-line-number-mode-not-showing))
jumped)
(when goto-line-preview-ensure-line-number-mode
(funcall goto-line-preview-ensure-line-number-mode 1))
(unwind-protect
(let ((goto-line-preview-prev-buffer (buffer-name))
(goto-line-preview-prev-line-num (line-number-at-pos)))
(setq jumped (read-number "Goto line: ")))
(when (and goto-line-preview-ensure-line-number-mode line-numbers-not-showing)
(funcall goto-line-preview-ensure-line-number-mode -1))
(if jumped
(call-interactively #'recenter)
(set-window-point window window-point)))))
Expand Down