【发布时间】:2012-08-03 22:22:46
【问题描述】:
我在这里找到了替换 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"))))
【问题讨论】: