summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/server.el13
1 files changed, 12 insertions, 1 deletions
diff --git a/lisp/server.el b/lisp/server.el
index d614e9c789b..dbadb63418c 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -197,7 +197,6 @@ Prefix arg means just kill any existing server communications subprocess."
(setq request (substring request (match-end 0)))
(setq client (list (substring request 0 (string-match " " request))))
(setq request (substring request (match-end 0)))
- (setq foofoo request)
(while (string-match "[^ ]+ " request)
(let ((arg
(substring request (match-beginning 0) (1- (match-end 0)))))
@@ -210,6 +209,18 @@ Prefix arg means just kill any existing server communications subprocess."
;; 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)
+ (setq pos (1+ (match-beginning 0)))
+ (let ((nextchar (aref arg pos)))
+ (cond ((= nextchar ?\\)
+ (setq arg (replace-match "\\" t t arg)))
+ ((= nextchar ?-)
+ (setq arg (replace-match "-" t t arg)))
+ (t
+ (setq arg (replace-match " " t t arg))))))
(setq files
(cons (list arg lineno)
files))