相关疑难解决方法(0)

Emacs shell脚本 - 如何将初始选项放入脚本?

受Stack Overflow问题的启发问题Emacs中的文本Idomatic批处理?我尝试了一个带有以下标题的Emacs shell脚本:

#!/usr/bin/emacs --script 
Run Code Online (Sandbox Code Playgroud)

我在其中放入了一些Emacs Lisp代码,并将其保存为textfile rcat.

由于--script选项不会阻止加载site-start文件,因此我有很多

Loading /etc/emacs/site-start.d/20apel.el (source)...
Loading /etc/emacs23/site-start.d/35elib-startup.el (source)...
Loading /etc/emacs23/site-start.d/50auctex.el (source)...
Run Code Online (Sandbox Code Playgroud)

Bash shell中的消息(stdout).我可以通过打电话来阻止

rcat --no-site-file
Run Code Online (Sandbox Code Playgroud)

要么

rcat -Q
Run Code Online (Sandbox Code Playgroud)

但不是通过更改脚本中的标题:

 #!/usr/bin/emacs --script --no-site-file
Run Code Online (Sandbox Code Playgroud)

有没有办法在这样的脚本文件中将其他选项传递给Emacs,而不是稍后在命令行上执行?

emacs shell command-line elisp options

18
推荐指数
3
解决办法
2807
查看次数

Emacs中文本的惯用批处理?

在Python中,你可能会做类似的事情

fout = open('out','w')
fin = open('in')
for line in fin:
    fout.write(process(line)+"\n")
fin.close()
fout.close()
Run Code Online (Sandbox Code Playgroud)

(我认为它在许多其他语言中也会类似).在Emacs Lisp中,你会做类似的事吗?

(find-file 'out')
(setq fout (current-buffer)
(find-file 'in')
(setq fin (current-buffer)
(while moreLines
 (setq begin (point))
 (move-end-of-line 1)
 (setq line (buffer-substring-no-properties begin (point))
 ;; maybe
 (print (process line) fout)
 ;; or
 (save-excursion 
  (set-buffer fout)
  (insert (process line)))
 (setq moreLines (= 0 (forward-line 1))))
(kill-buffer fin)
(kill-buffer fout)
Run Code Online (Sandbox Code Playgroud)

我从Emacs Lisp获得灵感(和代码):逐行处理文件.或者我应该尝试完全不同的东西?以及如何""从print语句中删除?

emacs elisp

11
推荐指数
2
解决办法
2546
查看次数

在命令行上评估emacs lisp表达式

我是emacs的新手.我在redhat linux上使用emacs-24.1,并试图评估一个elisp表达式.我想要emacs做的是评估elisp表达式而不启动emacs本身.我正在尝试不同的事情

emacs --eval '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)

我不知道emacs是否正在评估表达式,但结果未显示在控制台上,并且emacs窗口出现.接下来我尝试了这个

emacsclient --eval '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)

Emacs客户端期待服务器.它找不到服务器,因此抛出错误(无法找到socket.启动服务器等).所以我启动了一个服务器(服务器名称是SERVER)并再次运行emacsclient

emacsclient --server-file=SERVER -e '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)

这次,emacs评估表达式并在控制台上打印结果.这是因为emacs正在使用现有服务器来评估表达式.现在,当服务器未运行时,我遇到了问题.

emacsclient --server-file=ANOTHER_SERVER -e '(+ 2 3)' -a emacs
Run Code Online (Sandbox Code Playgroud)

这一次,我在控制台上没有收到任何错误.Emacs正在启动一个新窗口,因为-a(我的.emacs中有(server-start)命令,server-name设置为ANOTHER_SERVER).但emacs正在尝试编辑该文件(+ 2 3).它显示在模式行上.我糊涂了.emacsclient --help向我展示了这个

-e, --eval              Evaluate the FILE arguments as ELisp expressions
Run Code Online (Sandbox Code Playgroud)

和emacs手册说这个.

'-e'
'--eval'
Tell Emacs to evaluate some Emacs Lisp code, instead of visiting some files.
When this option is given, the arguments to emacsclient are interpreted as a
list of expressions to evaluate, not as a list …
Run Code Online (Sandbox Code Playgroud)

emacs elisp emacsclient

8
推荐指数
2
解决办法
4900
查看次数

emacs 是唯一的 elisp 解释器吗?

我最近开始使用 emacs 并用 elisp 扩展它。这让我想知道:emacs 是唯一可以计算 elisp 表达式的程序还是存在专用的 elisp 解释器?

emacs elisp

3
推荐指数
1
解决办法
324
查看次数

标签 统计

elisp ×4

emacs ×4

command-line ×1

emacsclient ×1

options ×1

shell ×1