[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil 1379ab42c4: evil-find-file-at-point-with-line: Suppor
|
From: |
ELPA Syncer |
|
Subject: |
[nongnu] elpa/evil 1379ab42c4: evil-find-file-at-point-with-line: Support format path(line, col). (#1789) |
|
Date: |
Tue, 9 May 2023 13:00:24 -0400 (EDT) |
branch: elpa/evil
commit 1379ab42c4090b2c677381b3911fec7ede47a4ad
Author: Quentin Barbe <forty@everteam.org>
Commit: GitHub <noreply@github.com>
evil-find-file-at-point-with-line: Support format path(line,col). (#1789)
Co-authored-by: Tom Dalziel <tom_dl@hotmail.com>
---
evil-commands.el | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/evil-commands.el b/evil-commands.el
index 82a9817169..0a340a1115 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -3647,22 +3647,32 @@ If FORCE is non-nil and MARKS is blank, all local marks
except 0-9 are removed."
(eval-when-compile (require 'ffap))
(evil-define-command evil-find-file-at-point-with-line ()
- "Open the file at point and go to position if present."
+ "Open the file at point and go to position if present.
+ Support positions in the following formats: path:line path(line)
path:line:col and path(line,col)"
(require 'ffap)
(let ((fname (with-no-warnings (ffap-file-at-point))))
(unless fname
(user-error "File does not exist."))
- (let* ((line-number-pattern ":\\([0-9]+\\)\\=" )
- (line-and-column-numbers-pattern ":\\([0-9]+\\):\\([0-9]+\\)\\=")
- (get-number (lambda (pattern match-number)
+ (let* ((line-number-pattern ":\\([0-9]+\\)\\=" ) ; path:line format
+ (line-number-pattern-alt "\\=(\\([0-9]+\\))") ; path(line) format
+ (line-and-column-numbers-pattern ":\\([0-9]+\\):\\([0-9]+\\)\\=") ;
path:line:col format
+ (line-and-column-numbers-pattern-alt
"\\=(\\([0-9]+\\),\\([0-9]+\\))") ; file(line,col) format
+ (get-number (lambda (pattern match-number backward)
(save-excursion
(goto-char (cadr ffap-string-at-point-region))
- (and (re-search-backward pattern
(line-beginning-position) t)
+ (and (if backward
+ (re-search-backward pattern
(line-beginning-position) t)
+ (re-search-forward pattern
(line-end-position) t))
(string-to-number (match-string
match-number))))))
- (line-number (or (funcall get-number
line-and-column-numbers-pattern 1)
- (funcall get-number line-number-pattern 1)))
- (column-number (funcall get-number line-and-column-numbers-pattern
2)))
- (message "line: %s, column: %s" line-number column-number)
+ (line-number (or (funcall get-number
line-and-column-numbers-pattern 1 t)
+ (funcall get-number
line-and-column-numbers-pattern-alt 1 nil)
+ (funcall get-number line-number-pattern 1 t)
+ (funcall get-number line-number-pattern-alt 1
nil)))
+ (column-number (or (funcall get-number
line-and-column-numbers-pattern 2 t)
+ (funcall get-number
line-and-column-numbers-pattern-alt 2 nil))))
+ (message "%s, %s"
+ (if line-number (format "line: %s" line-number) "no line")
+ (if column-number (format "column: %s" column-number) "no
column"))
(with-no-warnings (find-file-at-point fname))
(when line-number
(goto-char (point-min))
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/evil 1379ab42c4: evil-find-file-at-point-with-line: Support format path(line, col). (#1789),
ELPA Syncer <=