ここで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"))))