]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a new `server-edit-abort' command
authorHarald Hanche-Olsen <harald.hanche-olsen@ntnu.no>
Fri, 4 Jun 2021 09:09:46 +0000 (11:09 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 4 Jun 2021 09:09:46 +0000 (11:09 +0200)
* doc/emacs/misc.texi (Invoking emacsclient): Document it (bug#11358).

* lisp/server.el (server-edit): Mention it in the doc string.
(server-edit-abort): New command.

Copyright-paperwork-exempt: yes

doc/emacs/misc.texi
etc/NEWS
lisp/server.el

index c8027792505b3c9a2edf477f70f6296d4e1a8fc2..aed9fa9c6653c672321cbc7dc5fb269b4b657b40 100644 (file)
@@ -1864,6 +1864,12 @@ it to exit.  Programs that use @env{EDITOR} usually wait for the
 editor---in this case @command{emacsclient}---to exit before doing
 something else.
 
+@findex server-edit-abort
+  If you want to abandon the edit instead, use the @kbd{M-x
+server-edit-abort} command.  This sends a message back to the
+@command{emacsclient} program, telling it to exit, but doesn't save
+any files.
+
   You can also call @command{emacsclient} with multiple file name
 arguments: @samp{emacsclient @var{file1} @var{file2} ...} tells the
 Emacs server to visit @var{file1}, @var{file2}, and so forth.  Emacs
index 675925906cb8c20abde9f1cc0a133d4ba7f0fc15..c272d279b8ee7152f15baa585af98e2818db0a0d 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -510,6 +510,12 @@ When emacsclient connects, Emacs will (by default) output a message
 about how to exit the client frame.  If 'server-client-instructions'
 is set to nil, this message is inhibited.
 
++++
+*** New command 'server-edit-abort'.
+This command (not bound to any key by default) can be used to abort
+an edit instead of marking it as "Done" (which the 'C-x #' command
+does).
+
 ** Perl mode
 
 ---
index 17332a2b0a16501ad8d2fd3478c2f6cfdcd4a27b..3205ba182eefe0658f9d3ec6f0dcee78db661f70 100644 (file)
@@ -1603,7 +1603,9 @@ prevent a backup for it.)  The variable `server-temp-file-regexp' controls
 which filenames are considered temporary.
 
 If invoked with a prefix argument, or if there is no server process running,
-starts server process and that is all.  Invoked by \\[server-edit]."
+starts server process and that is all.  Invoked by \\[server-edit].
+
+To abort an edit instead of saying \"Done\", use \\[server-edit-abort]."
   (interactive "P")
   (cond
    ((or arg
@@ -1613,6 +1615,17 @@ starts server process and that is all.  Invoked by \\[server-edit]."
    (server-clients (apply #'server-switch-buffer (server-done)))
    (t (message "No server editing buffers exist"))))
 
+(defun server-edit-abort ()
+  "Abort editing the current client buffer."
+  (interactive)
+  (if server-clients
+      (mapc (lambda (proc)
+              (server-send-string
+               proc (concat "-error "
+                            (server-quote-arg "Aborted by the user"))))
+            server-clients)
+    (message "This buffer has no clients")))
+
 (defun server-switch-buffer (&optional next-buffer killed-one filepos
                                        this-frame-only)
   "Switch to another buffer, preferably one that has a client.