I use a window batch file to open files in an already running instance of Emacs using emacsclientw.exe. However, any file opened this way opens in server mode, which means that I have to use Cx # to kill it, and not regular Cx k. How to change this behavior?
using:
D:\> emacsclientw -n foo.txt
-n says no waiting. This is in GNU Emacs 22.2.1 (i386-mingw-nt5.1.2600) from 2008-03-26 on RELEASE (and many previous versions, IIRC).
My solution was to restore it (well, actually, Mw):
(lambda () (interactive) (if server-buffer-clients (server-edit) (kill-this-buffer)))
[edit: , , ( , ). server-edit ( ), . , , ( , emacsclient), , . -kill-buffer, .]
.emacs, :
(add-hook 'server-switch-hook (lambda () (local-set-key (kbd "C-x k") '(lambda () (interactive) (if server-buffer-clients (server-edit) (ido-kill-buffer))))))
Cx k , emacsclient ( ido-kill-buffer), emacsclient, Cx k , ido-kill-buffer ( emacsclient -n).
, ... , , , emacs , .
, :
emacsclient --eval '(find-file "/path/to/file")'
, emacs , emacsclient, , .
Edit:
, , , :
(global-set-key (kbd "C-x k") (lambda () (interactive) (server-kill-buffer (current-buffer))))
(global-set-key (kbd "C-x k") '(lambda () (interactive) (if server-buffer-clients (server-done) (kill-this-buffer))))
( IvanAndrus, jrockway keybinding.)
, . - (, kill-ring-save kill-buffer).
BTW, EmacsWiki - KillKey KillingBuffer - , ( KillKey "-"...).
, windows, linux emacs -daemon . , . , , emacsclient, .
, , 23.0.60.1 CVS.