終了時にemacsclientのpwdにcdする方法


0

emacsclientを終了するときに、ディレクトリをemacsclientの現在のディレクトリに変更するフックを提供できますか?

私はしばしばターミナル経由でいくつかのファイルに移動し、emacsclientを開いていくつかのファイルを編集し、次にemacsclientを終了して同じディレクトリ内のファイルでシェルコマンドを実行します。emacs(popshell、Mx!、multi termなどを含む)内で端末を開くことを含む他のいくつかのオプションよりも満足のいくものだと思います。

ただし、emacsclientの使用中に他のディレクトリのファイルにアクセスすることもあります。その後、emacsclientを終了して、ファイルを編集していたのと同じディレクトリからいくつかのシェルコマンドを実行します。ただし、emacsclientを終了すると、emacsclientを開いた元のディレクトリに戻り、cdを使用して同じディレクトリに移動する必要があります。これは不便であり、ディレクトリ内のファイル構造が類似/同一であるため、気づかないとエラーが発生します。

詳細な背景情報:emacs --daemonを起動し、現在の作業ディレクトリ内またはその近くで編集するクイックファイルがあるときに、ターミナルでemacsclient -nwを開きます。「Cx Cc」はemacsclientを終了しますが、emacsデーモンも強制終了するため、「Cx 5 0」または「Cx#」を使用してクライアントのみを終了します。

回答:


0

emacsclient は通常のシェルコマンドであるため、現在のディレクトリが何であるかというシェルの考え方を変更することはできません。

ただし、次のemacsclientように呼び出すことができます。

$ cd "$(emacsclient -e '(progn (find-file ....) (print default-directory))')"

つまり、emacsクライアントが戻ったときに新しいディレクトリ名を出力します。

正しくなるのは簡単ではなく、努力する価値はありません。

emacsclientで単純な編集以上のことを行う場合は、emacsとそのシェルを使用する必要があります。


あなたは私が何らかの形でemacsclientがemacsサーバー内で実行されていて、elispソリューションを望んでいると考えていたことは正しいです。おそらくあなたの提案を拡大したいと思いますが、どうすればいいかわかりません。コード例が機能しないことがわかっているようです。
raco 14

既存のツールを好きなように動作させることを教えるよりも、既存のツールを好む方が簡単な場合があります。
sds 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.