大佬教程收集整理的这篇文章主要介绍了Emacs elisp在Windows上展开文件名行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最后一个emacs 24.1.50上的autoload.el包含以下功能:
(defun autoload-generated-file () (expand-file-name generated-autoload-file ;; File-local setTings of generated-autoload-file should ;; bE interpreted relative to the file's LOCATIOn,;; of course. (if (not (local-variable-p 'generated-autoload-filE)) (expand-file-name "lisp" source-directory))))
在我的例子中,generated-autoload文件是:
"/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/srecode/loaddefs.el"
因为我有$HOME $环境变量指向C:/ home / ngulyamov.在这种情况下,上面的函数返回
"d:/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/srecode/loaddefs.el"
由于源目录包含:
"d:/devel/emacs/emacs-bzr/trunk_jenkins/".
正如您所看到的,它将驱动器号从C:更改为D:.
同时在emacs 23.3上,此函数返回半正确值,因为source-directory包含值:
"c:/Users/Sean/Downloads/emacs-23.3/".
根据expand-file-name函数说明:
(expand-file-name NAME& optional DEFAULT-DIRECTORY)
将文件名NAME转换为绝对值,并将其规范化.
如果NAME是相对的,则第二个arg DEFAULT-DIRECTORY是要开始的目录
(不以斜线或波浪线开头);如果DEFAULT-DIRECTORY为零或缺失,
使用当前缓冲区的“default-directory”值.
Windows上的路径永远不会从斜线或波浪线开始.
现在我的问题:
1.在Windows上,expand-file-name函数行为是否正确?
2.为什么source-directory包含开发人员路径的值?
我们可以将expand-file-name视为Windows上的bug吗?或者它在autoload.el中被错误地使用了?
先感谢您.
C:\home\ngulyamov\.emacs.d\el-get\cedet>\gnuwin32\bin\make all Removing loaddefs.el files from subprojects. Generating autoloads. make[1]: Entering directory `C:/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet' > autoloads Wrote C:/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/loaddefs.el Loading vc-bzr... Generating autoloads for C:/home/ngulyamov/.emacs.d/el-get/cedet/lisp/cedet/cedet-android.el... Memory exhausted--use C-x s then exit and restart Emacs make[1]: *** [autoloads] Error 127
所以脏修复是在autoload.el本身中指定source-directory,如:
(setq-default source-directory "C:/home/ngulyamov/.emacs.d/")
无论如何,为什么source-directory指向开发人员的计算机路径仍然是开放的.
以上是大佬教程为你收集整理的Emacs elisp在Windows上展开文件名行为全部内容,希望文章能够帮你解决Emacs elisp在Windows上展开文件名行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。