有时候直接修改FTP的远程文件,选择用emacs打开,貌似要打开2个窗口,一个是刚启动的样子,一个才是载入了文件后的编辑窗口。 2个问题: 1、每次新载入emacs比较慢,我上了spacemacs的,有没有办法加快载入速度呢? 2、能否像Atom等其他编辑器,编辑文件时候直接打开编辑窗口,而不是先启动一个再新开一个窗口做编辑?
多谢。
有时候直接修改FTP的远程文件,选择用emacs打开,貌似要打开2个窗口,一个是刚启动的样子,一个才是载入了文件后的编辑窗口。 2个问题: 1、每次新载入emacs比较慢,我上了spacemacs的,有没有办法加快载入速度呢? 2、能否像Atom等其他编辑器,编辑文件时候直接打开编辑窗口,而不是先启动一个再新开一个窗口做编辑?
多谢。
搜索 daemon 和 Emacsclient。可能要用到一点 Apple Script
然后对重度Emacs用户来说比较合理的做法是直接用Emacs内置的文件管理系统搜索并打开文件,在作业时完全脱离外在图形界面环境的文件管理系统。 也就是说,一直开着一个Emacs。
你的这两个问题基本上是关联的…
第一个的解决方法是保持后台一直开着 Emacs,这样下次再打开的时候可以在这个 Emacs 里直接打开或者开新的 frame,速度自然就变快了…
而如何保持… 第二个问题,官方的 NS port 现在是什么状况我不是很清楚,毕竟有段时间没用了。Mac port 在这种情况下不会打开新 frame,而是会直接在已有的 frame 内打开,至少我是比较接受这个特性的。
更 "Mac"一点的做法是在最后一个 frame 也被关闭的时候 App 并不直接退出,而是在后台继续运行(Cmd-q
的时候才会真正退出);下次被用来打开文件的时候再开新 frame。
这个我见过做的最好的实现是 Aquamacs,不过很难以 patch 的形式移植到主线和其他分支上;而 Aquamacs 因为设计思想的关系似乎喜欢的人不是很多。Mac port 的作者很明确的表示他完全没有思路要怎么实现这个… 官方的 NS port 配合 emacsclient 和 emacs --daemon 勉强能有类似的功能但是好像 bug 不少。
有人折腾过一个 Emacs Pseudo-Daemon,我也曾经把它移植到 Mac port 过,讲真,重度使用的时候并不是特别好用_(:_」∠)_
我目前的做法是稍微改变一下自己的使用习惯:
Cmd-h
隐藏窗口 (if window-system
(setq confirm-kill-emacs 'y-or-n-p)
)
我可能明白楼主的意思,每次打开新的文件保证在同一个窗口(Frame)下,而不是新开一个窗口。下面是我的解决方法。
(use-package server
:ensure nil
:defer t
:config
(autoload 'server-running-p "server")
(unless (server-running-p) (server-start)))
这样就算是从Emacs.app启动,也会自动开一个服务了
用automator 新建一个App,/bin/bash pass input as arguments
for f in "[email protected]"
do
/usr/local/bin/emacsclient -n "$f"
done
不加-c,就能连接到已经存在的那个Frame,不新开了
这样就行了,还有一点点缺陷,比如当Emacs.app没有启动的时候文件双击不能打开什么的,但是基本的使用没啥问题了。
我本来想提的解决方案里面是这样的:
tell application "Terminal"
try
set frameVisible to do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -e '(<= 2 (length (visible-frame-list)))'"
if frameVisible is not "t" then
do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -c -n"
end if
on error
do shell script "/Applications/Emacs.app/Contents/MacOS/Emacs --daemon"
do shell script "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -c -n"
end try
end tell
tell application "Emacs" to activate
很明显就不会有这个问题了
当然不怕开机速度变慢可以直接用lauchd
开机启动Emacs。
明白了,感谢各位。