Mercurial > emacs
changeset 49485:7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
author | Dave Love <fx@gnu.org> |
---|---|
date | Mon, 27 Jan 2003 11:36:08 +0000 |
parents | 4e26b69ee15d |
children | b8c5db4dbb2b |
files | lisp/dired-x.el |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/dired-x.el Mon Jan 27 09:40:40 2003 +0000 +++ b/lisp/dired-x.el Mon Jan 27 11:36:08 2003 +0000 @@ -1561,16 +1561,13 @@ ;;; Internal functions. -;; Fixme: This should probably be replaced with `thing-at-point', but -;; that needs checking for compatibility. -- fx +;; Fixme: This should probably use `thing-at-point'. -- fx (defun dired-filename-at-point () "Get the filename closest to point, but do not change position. Has a preference for looking backward when not directly on a symbol. Not perfect - point must be in middle of or end of filename." (let ((filename-chars "-.[:alnum:]_/:$+@") - (bol (save-excursion (beginning-of-line) (point))) - (eol (save-excursion (end-of-line) (point))) start end filename prefix) (save-excursion @@ -1585,16 +1582,19 @@ (if (string-match (concat "[" filename-chars "]") (char-to-string (following-char))) (progn - (skip-chars-backward filename-chars) + (if (re-search-backward (concat "[^" filename-chars "]") nil t) + (forward-char) + (goto-char (point-min))) (setq start (point)) (setq prefix - (and (string-match "^\\w+@" - (buffer-substring start eol)) + (and (string-match + "^\\w+@" + (buffer-substring start (line-beginning-position))) "/")) (goto-char start) (if (string-match "[/~]" (char-to-string (preceding-char))) (setq start (1- start))) - (skip-chars-forward filename-chars)) + (re-search-forward (concat "\\=[" filename-chars "]*") nil t)) (error "No file found around point!"))