我不确定apply这里是否推荐使用.是否有更好的/标准的解决方案来动态设置主模式?我找不到任何其他的.
背景:
每当我得到
X has auto save data; consider M-x recover-this-file
在Emacs中的消息,我想知道当前文件和自动保存版本之间的区别是什么.由于大部分时间我都不能费心去查找,所以我尝试自动完成任务:
(defun ediff-auto-save ()
"Ediff current file and its auto-save pendant."
(interactive)
(let ((auto-file-name (make-auto-save-file-name))
(file-major-mode major-mode))
(ediff-files buffer-file-name auto-file-name)
(switch-to-buffer-other-window (file-name-nondirectory auto-file-name))
(apply file-major-mode '())
(other-window 1))) ;; back to ediff panel
Run Code Online (Sandbox Code Playgroud)
代码执行我想要的操作,它会打开自动保存文件并启动ediff.我还将自动保存文件的主要模式设置为原始文件的主要模式,以实现一致的字体锁定.
虽然apply肯定可以用于此,但funcall可能更适合
(funcall file-major-mode)
Run Code Online (Sandbox Code Playgroud)
它与apply的不同之处在于它不接受参数列表,只接受参数.以下两者都是等效的:
(funcall '+ 1 2)
(apply '+ '(1 2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |