我在这里找到了替换 filen 的功能,但它似乎无法正常工作:http ://www.emacswiki.org/emacs/InsertFileName 。它正确地找到了文件点,但替换似乎采用了您输入的文件,而不是从我所看到的最初检测到的文件。我不知道如何解决这个问题。
如果我在 /home/testfile 上运行该函数
首先它说要替换的文件,例如:/home/secondfile 然后它说将'/home/secondfile'替换为:/home/secondfile 然后它说:此时没有文件
有任何想法吗??
这是功能:
(autoload 'ffap-guesser "ffap")
(autoload 'ffap-read-file-or-url "ffap")
(defun my-replace-file-at-point (currfile newfile)
"Replace CURRFILE at point with NEWFILE.
When interactive, CURRFILE will need to be confirmed by user
and will need to exist on the file system to be recognized,
unless it is a URL.
NEWFILE does not need to exist. However, Emacs's minibuffer
completion can help if it needs to be.
"
(interactive
(let ((currfile (ffap-read-file-or-url "Replace filename: "
(ffap-guesser))))
(list currfile
(ffap-read-file-or-url (format "Replace `%s' with: "
currfile) currfile))))
(save-match-data
(if (or (looking-at (regexp-quote currfile))
(let ((filelen (length currfile))
(opoint (point))
(limit (+ (point) (length currfile))))
(save-excursion
(goto-char (1- filelen))
(and (search-forward currfile limit
'noerror)
(< (match-beginning 0) opoint))
(>= (match-end 0) opoint))))
(replace-match newfile)
(error "No file at point to replace"))))