From: Dave Love Date: Mon, 27 Jan 2003 11:36:08 +0000 (+0000) Subject: (dired-filename-at-point): Fix last change and tidy up. X-Git-Tag: ttn-vms-21-2-B4~11445 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1e56daa587d05f88a2be97160401be9b94c61f59;p=emacs.git (dired-filename-at-point): Fix last change and tidy up. --- diff --git a/lisp/dired-x.el b/lisp/dired-x.el index 256064a3d6f..0cc9c43b2fe 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el @@ -1561,16 +1561,13 @@ to test if that file exists. Use minibuffer after snatching filename." ;;; 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 @@ perfect - point must be in middle of or end of filename." (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!"))