(progn
(set-process-sentinel server-process nil)
(condition-case () (delete-process server-process) (error nil))))
- (condition-case () (delete-file "~/.emacs_server") (error nil))
+ ;; Delete the socket files made by previous server invocations.
(let* ((sysname (system-name))
(dot-index (string-match "\\." sysname)))
+ (condition-case ()
+ (delete-file (format "~/.emacs-server-%s" sysname))
+ (error nil))
(condition-case ()
(delete-file (format "/tmp/esrv%d-%s" (user-uid) sysname))
(error nil))
;; In case the server file name was made with a domainless hostname,
;; try deleting that name too.
(if dot-index
- (condition-case ()
- (delete-file (format "/tmp/esrv%d-%s" (user-uid)
- (substring sysname 0 dot-index)))
- (error nil))))
- ;; If we already had a server, clear out associated status.
+ (let ((shortname (substring sysname 0 dot-index)))
+ (condition-case ()
+ (delete-file (format "~/.emacs-server-%s" shortname))
+ (error nil))
+ (condition-case ()
+ (delete-file (format "/tmp/esrv%d-%s" (user-uid) shortname))
+ (error nil)))))
+ ;; If this Emacs already had a server, clear out associated status.
(while server-clients
(let ((buffer (nth 1 (car server-clients))))
(server-buffer-done buffer)))
(setq request (substring request (match-end 0)))
(while (string-match "[^ ]+ " request)
(let ((arg
- (substring request (match-beginning 0) (1- (match-end 0)))))
+ (substring request (match-beginning 0) (1- (match-end 0))))
+ (pos 0))
(setq request (substring request (match-end 0)))
(if (string-match "\\`-nowait" arg)
(setq nowait t)
;; ARG is a file name.
;; Collapse multiple slashes to single slashes.
(setq arg (command-line-normalize-file-name arg))
- (setq pos 0)
;; Undo the quoting that emacsclient does
;; for certain special characters.
(while (string-match "&." arg pos)
(buffer-backed-up nil))
(save-buffer))
(if (and (buffer-modified-p)
+ buffer-file-name
(y-or-n-p (concat "Save file " buffer-file-name "? ")))
(save-buffer buffer)))
(server-buffer-done buffer)))))