LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2733|回复: 8

[求助]关于Emacs中路径设置问题

[复制链接]
发表于 2005-10-30 21:44:50 | 显示全部楼层 |阅读模式
看到一篇关于Emacs的文章 http://202.38.99.17/~huxw/emacs/ ... -5.html#node_chap_3
其中一段,觉得很有道理:

一般FAQ上给出的建议,是将自己下回来的elisp包,放在某一个名叫 site-lisp的目录之中。这是个不错的建议,不过问题在于大多数Linux的发布版厂商,习惯把他们自己维护的一些elisp资源包也扔到site-lisp这个目录里面去,这造成的结果就是,有一天你突然想备份自己的Emacs资源的时候,你突然发现分不清那些是自己想要的,哪些是不小心让系统装上去的垃圾。
所以,建议你还是在自己的$HOME目录底下建一个专门给Emacs用的目录,名字嘛,可以就叫emacs。$HOME/emacs这个目录里面至少可以分出两个子目录来,一个是config,我们从此就可以把所有Emacs配置的内容放到这个目录底下,并且分门别类起来;另一个叫package,里面就可以堆放各种从网络上下载回来的elisp资源。
所有扔到site-lisp目录里面的elisp文件夹,在emacs起动的时候都会自动被加入load-path列表,这是site-lisp/subdirs.el的功劳。我们的package/subdirs.el也要有这个功能。
(defun my-add-subdirs-to-load-path (dir)
(let ((default-directory (concat dir "/")))
  (setq load-path (cons dir load-path))
  (normal-top-level-add-subdirs-to-load-path)))
(my-add-subdirs-to-load-path "~/emacs/packages")
然后在.emacs文件中显式载入这个文件。
(load "~/emacs/packages/subdirs")

我在windows系统下安装Emacs到d:\Emacs,设置环境变量HOME=d:\Emacs\home;在home下建立两个空子目录config和package及package\subdirs.el文件;按文中所述加了上面的东西,不过路径改为"d:/Emacs/home/package"和"d:/Emacs/home/package/subdirs",可是Emacs报错
An error has occurred while loading `d:/Emacs/home/.emacs':
File error: Cannot open load file, d:/Emacs/home/packages/subdirs
将d:/Emacs/home改为~或将subdirs改为subdirs.el均不行。请教解决办法。
发表于 2005-10-30 23:06:47 | 显示全部楼层
Post by huow005
看到一篇关于Emacs的文章 http://202.38.99.17/~huxw/emacs/ ... -5.html#node_chap_3
其中一段,觉得很有道理:

一般FAQ上给出的建议,是将自己下回来的elisp包,放在某一个名叫 site-lisp的目录之中。这是个不错的建议,不过问题在于大多数Linux的发布版厂商,习惯把他们自己维护的一些elisp资源包也扔到site-lisp这个目录里面去,这造成的结果就是,有一天你突然想备份自己的Emacs资源的时候,你突然发现分不清那些是自己想要的,哪些是不小心让系统装上去的垃圾。
所以,建议你还是在自己的$HOME目录底下建一个专门给Emacs用的目录,名字嘛,可以就叫emacs。$HOME/emacs这个目录里面至少可以分出两个子目录来,一个是config,我们从此就可以把所有Emacs配置的内容放到这个目录底下,并且分门别类起来;另一个叫package,里面就可以堆放各种从网络上下载回来的elisp资源。
所有扔到site-lisp目录里面的elisp文件夹,在emacs起动的时候都会自动被加入load-path列表,这是site-lisp/subdirs.el的功劳。我们的package/subdirs.el也要有这个功能。
(defun my-add-subdirs-to-load-path (dir)
(let ((default-directory (concat dir "/")))
  (setq load-path (cons dir load-path))
  (normal-top-level-add-subdirs-to-load-path)))
(my-add-subdirs-to-load-path "~/emacs/packages")
然后在.emacs文件中显式载入这个文件。
(load "~/emacs/packages/subdirs")

我在windows系统下安装Emacs到d:\Emacs,设置环境变量HOME=d:\Emacs\home;在home下建立两个空子目录config和package及package\subdirs.el文件;按文中所述加了上面的东西,不过路径改为"d:/Emacs/home/package"和"d:/Emacs/home/package/subdirs",可是Emacs报错
An error has occurred while loading `d:/Emacs/home/.emacs':
File error: Cannot open load file, d:/Emacs/home/packages/subdirs
将d:/Emacs/home改为~或将subdirs改为subdirs.el均不行。请教解决办法。


环境变量HOME=d:\Emacs\home配置错误,重新配置一下,
eg. HOME=d:\Emacs\bin
其他的基本保持不变。
我的NTEMACS不用设置就可以挂许多el文件了。原来的site-lisp中的东西本身就少,省得再让我进行配置了。
回复 支持 反对

使用道具 举报

发表于 2005-10-30 23:08:20 | 显示全部楼层
Post by huow005
看到一篇关于Emacs的文章 http://202.38.99.17/~huxw/emacs/ ... -5.html#node_chap_3
其中一段,觉得很有道理:

一般FAQ上给出的建议,是将自己下回来的elisp包,放在某一个名叫 site-lisp的目录之中。这是个不错的建议,不过问题在于大多数Linux的发布版厂商,习惯把他们自己维护的一些elisp资源包也扔到site-lisp这个目录里面去,这造成的结果就是,有一天你突然想备份自己的Emacs资源的时候,你突然发现分不清那些是自己想要的,哪些是不小心让系统装上去的垃圾。
所以,建议你还是在自己的$HOME目录底下建一个专门给Emacs用的目录,名字嘛,可以就叫emacs。$HOME/emacs这个目录里面至少可以分出两个子目录来,一个是config,我们从此就可以把所有Emacs配置的内容放到这个目录底下,并且分门别类起来;另一个叫package,里面就可以堆放各种从网络上下载回来的elisp资源。
所有扔到site-lisp目录里面的elisp文件夹,在emacs起动的时候都会自动被加入load-path列表,这是site-lisp/subdirs.el的功劳。我们的package/subdirs.el也要有这个功能。
(defun my-add-subdirs-to-load-path (dir)
(let ((default-directory (concat dir "/")))
  (setq load-path (cons dir load-path))
  (normal-top-level-add-subdirs-to-load-path)))
(my-add-subdirs-to-load-path "~/emacs/packages")
然后在.emacs文件中显式载入这个文件。
(load "~/emacs/packages/subdirs")

我在windows系统下安装Emacs到d:\Emacs,设置环境变量HOME=d:\Emacs\home;在home下建立两个空子目录config和package及package\subdirs.el文件;按文中所述加了上面的东西,不过路径改为"d:/Emacs/home/package"和"d:/Emacs/home/package/subdirs",可是Emacs报错
An error has occurred while loading `d:/Emacs/home/.emacs':
File error: Cannot open load file, d:/Emacs/home/packages/subdirs
将d:/Emacs/home改为~或将subdirs改为subdirs.el均不行。请教解决办法。


环境变量HOME=d:\Emacs\home配置错误,重新配置一下,
eg. HOME=d:\Emacs\bin
其他的基本保持不变。
我的NTEMACS不用设置就可以挂许多el文件了。原来的site-lisp中的东西本身就少,省得再让我进行配置了。你再看看你的emacs装在什么地方就知道如何处理了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-31 00:36:44 | 显示全部楼层
个人以为,环境变量配置不是大问题。我设环境变量HOME=d:\Emacs\home,那么在d:\Emacs\home下会自动生成一个名为.emacs.d的文件夹;若设HOME=d:\Emacs\bin,同样在d:\Emacs\bin会自动生成一个名为.emacs.d的文件夹,而这时.emacs文件就不是在home下必须放在bin下了,而我的.emacs文件是放在home下的。能讲一下你的理由吗?
另外,我选择的是GNU Emacs 22.0.50 (CVS check-out on 2005-10-18),带AUCTeX的版本,在设置浏览pdf时用
(add-to-list 'TeX-command-list
(list "View pdf" "C:/Program Files/Adobe/Acrobat 7.0/Acrobat/Acrobat.exe"
'TeX-run-command nil t)
)
路径中有空格也出错。最后好不容易搜到
(add-to-list 'TeX-command-list
(list "View pdf" "start .\\\"%s.pdf\""
'TeX-run-command nil t)
)
解决了问题。为什么,能解释一下吗?
还望大家援手,帮忙解决这两个问题,谢谢!!!
回复 支持 反对

使用道具 举报

发表于 2005-10-31 10:25:03 | 显示全部楼层
第一个问题,HOME变量跟这个没有关系。subdir.el文件里只有两句话,没有provide的语句,估计直接load是不符合emacs规范,所以出错了。 我估计所需的
(defun my-add-subdirs-to-load-path (dir)
(let ((default-directory (concat dir "/")))
(setq load-path (cons dir load-path))
(normal-top-level-add-subdirs-to-load-path)))
(my-add-subdirs-to-load-path "~/emacs/packages")
是定义在.emacs里,(normal-top-level-add-subdirs-to-load-path) 应该作了扫描subdir的工作,而不需要额外load subdirs。

第二个问题,start语句启动了新的进程,而且路径使用双引号括了起来,不必担心空格,所以就可以引导acrobat了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-31 12:46:25 | 显示全部楼层
谢谢指教,还是问题1:实在是不太明白Emacs的装载机制,如果问题愚蠢,请不要在意,还望耐心答复。.emacs在home里,而自己的subdir.el文件在home/packages下,定义在.emacs里的这一句(normal-top-level-add-subdirs-to-load-path) 会自动扫描subdir吗?因为现在config和package是空的,无法检验。
准备将自己需要的(configure).el分门别类以不同的名称放入config下,现在建立了个mytex.el作为自己的tex配置,其内容是抄别人.emacs里的,若单将其放到自己的site-start.el里,没有问题,放到.emacs里就出现问题。现独立出来为mytex.el:
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
;调用aucTex
(require 'tex-mik)
(require 'tex-site)
;调用refTex,不用安装refTex,21.3版的已经内置了
(autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(autoload 'reftex-citation "reftex-cite" "Make citation" nil)
(autoload 'reftex-index-phrase-mode "reftex-index" "hrase mode" t)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
;设置AucTex用选项src-special的latex命令编译,这样才能支持Yap的反向搜索
(setq TeX-source-specials-mode t)
;在AucTex的command菜单下增加自己的编译命令
(require 'tex)
;使用gsview32浏览编译后的ps文件
(add-to-list 'TeX-command-list
(list "Ghostview" "gsview32.exe %s.ps"
'TeX-run-command nil t)
)
;; Run necessary combinations of latex, bibtex, makeindex etc.
(add-to-list 'TeX-command-list
(list "All" "texify --tex-opt=--src %s.tex"
'TeX-run-command nil t)
)
;;清除临时文件,可以根据需要自己修改
(add-to-list 'TeX-command-list
(list "Clean" "del /s *.log *.aux %s.out %s.exa %s.ilg %s.idx %s.ind %s.lof %s.lot %s.toc %s.bbl %s.blg ctextemp_*.*"
'TeX-run-command nil t)
)
;;生成pdf文件
(add-to-list 'TeX-command-list
(list "All pdf" "texify --pdf %s.tex"
'TeX-run-command nil t)
)
;;浏览pdf文件,需要将你的acrbat reader的可执行文件的路径加入到你的path中
(add-to-list 'TeX-command-list
(list "View pdf" "start .\\\"%s.pdf\""
'TeX-run-command nil t)
)
;;调用pdflatex命令
(add-to-list 'TeX-command-list
(list "pdf Latex" "pdflatex %s.tex"
'TeX-run-command nil t)
)
;;调用dvipdfmx命令
(add-to-list 'TeX-command-list
(list "dvi2pdf" "dvipdfmx %s.dvi"
'TeX-run-command nil t)
)
(set-background-color "Gray")
(set-foreground-color "White")
;;设置默认工作目录
(setq default-directory "E:/documents/Dokumente")
(setq auto-mode-alist
(append '(("\\.mf\\'" . metafont-mode)
("\\.mp\\'" . metapost-mode)
("\\.tex\\'". latex-mode)
auto-mode-alist))
我的.emacs里只有这几句:
(normal-top-level-add-subdirs-to-load-path)
(setq load-path (cons "d:/Emacs/home/config" load-path))
(load "mytex")
Emacs报错:
An error has occurred while loading `d:/Emacs/home/.emacs':
End of file during parsing: d:/Emacs/home/config/mytex.el
另外,auctex和preview是这个Emacs版本预装的。请问,路径应当如何设置?我现在头都大了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-31 16:07:45 | 显示全部楼层
请诸位援手,实在折腾不出来。谢谢!!!
回复 支持 反对

使用道具 举报

发表于 2005-10-31 22:45:01 | 显示全部楼层
如果是安装latex就不要自己折腾了,请参考这个网站:http://www.math.aau.dk/~dethlef/Tips/introduction.html  按照他的做法一步步来,写的很详细。
另外如果需要一些emacs的增强插件你可以参考这个站点:http://www.ntu.edu.sg/home5/pg04878518/EmacsTools.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-1 00:12:27 | 显示全部楼层
谢谢!自己再折腾吧,主要是不想将什么东西都写入.emacs,看起来太乱了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表