3

Ubuntuでemacsを使用しています

a.txtを編集したい場合は、emacs アイコンをクリックするか、

$ emacs  --geometry 10x10 --fullscreen --no-splash ~/a.txt &

バッシュから。私の .emacs ファイルは emacs サーバーを起動します。

コマンドラインから別のファイルを編集したい場合は、

$ emacsclient -n ~/b.txt

ファイルを既存のemacsにロードします。

しかし、私はそれを誤解し続けており、すべての地獄がさまざまな方法で解き放たれています。

emacs サーバーがすでに実行されているかどうかを確認し、適切なコマンドを実行するbash コマンド「e 」を作成するにはどうすればよいですか?

このスイッチを使用しようとすると、emacsclient -a常に望ましくない判断不能な動作が発生します。

コンソールでも実行したときに「正しいことを行う」ことができれば、余分なポイント。

4

1 に答える 1

3

これまでのところ、 .bashrc のこの関数定義は完璧な解決策のようです:

function e #open emacs in background and disown it, or if already running use emacsclient
{
 echo "emacs function backgrounds and disowns emacs, or calls client if server already running; see .bashrc";
 local FLUFFY="$@";
 local SERVERSOCKET=/tmp/emacs${UID}/server ;
 echo "trying to open: " $FLUFFY 
 echo " checking: " $SERVERSOCKET "for emacs server " ;
 # test for existence of emacs server socket 
 if [ -e $SERVERSOCKET ]; then
     echo "using emacsclient"
     emacsclient -n $FLUFFY;
 else
     echo "starting emacs: make tea..."
     emacs  --geometry 10x10 --fullscreen --no-splash $FLUFFY & disown ;
 fi;
}

この呪文から派生したもの:

FLUFFY=~/b.txt ; if [ -e /tmp/emacs1000/server ]; then emacsclient -n $FLUFFY; else emacs  --geometry 10x10 --fullscreen --no-splash $FLUFFY & fi;

ユーザー1000のemacsサーバーソケットの存在をチェックすることで、私が望むことを行います.

于 2014-07-23T13:06:41.713 に答える