From d086ae4604c4170a7bcc17824283e70758ac341c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 28 Oct 2006 22:55:17 +0200 Subject: [PATCH] move emacs patches. --- elisp/server.el.patch | 165 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 elisp/server.el.patch diff --git a/elisp/server.el.patch b/elisp/server.el.patch new file mode 100644 index 0000000000..fb3c59f189 --- /dev/null +++ b/elisp/server.el.patch @@ -0,0 +1,165 @@ +From: Jan Nieuwenhuizen +Subject: Bugfix and feature for server.el +To: emacs-devel@gnu.org +cc: Han-Wen +Date: Sat, 10 Aug 2002 17:46:22 +0200 +Organization: Jan at Peder + + +Find the following fix attached. We had a problem with our +application that uses `emacslient --no-wait' to edit input files. + +Emacs-21.2 (unlike previous versions), when invoked through +`emacsclient --no-wait', wants to revert buffers whenever they have +been edited, and does allow any editing, which is annoying. When +invoking with --no-wait, we are typically `moving around' and editing +the same file all the time; and do not want to revert. + +When it does revert the buffer, it does not use the column argument of +emacsclient; this is now fixed. + +Greetings, +Han-Wen and Jan. + + +Btw: this message was sent to bug-gnu-emacs about three weeks ago, but + that list seems to be slightly foobarred? We both have current + disclaimers with GNU. + + +ChangeLog: +2002-07-21 Jan Nieuwenhuizen + + * server.el (server-process-filter): Cleanup stray if. Add + 'no-revert to file list entry when emacsclient was invoked with + '--no-wait'. + (server-visit-files): New function goto-line-column. Accept + 'no-revert option. Bugfix: also goto column when reverting + buffer. + +--- server.el.~1.78.~ 2001-12-18 17:42:38.000000000 +0100 ++++ server.el 2002-08-10 17:32:10.000000000 +0200 +@@ -251,40 +251,43 @@ Prefix arg means just kill any existing + (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) +- (cond +- ;; ARG is a line number option. +- ((string-match "\\`\\+[0-9]+\\'" arg) ++ (cond ++ ((string-match "\\`-nowait" arg) ++ (setq nowait t)) ++ ;; ARG is a line number option. ++ ((string-match "\\`\\+[0-9]+\\'" arg) + (setq lineno (string-to-int (substring arg 1)))) +- ;; ARG is line number:column option. +- ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg) +- (setq lineno (string-to-int (match-string 1 arg)) +- columnno (string-to-int (match-string 2 arg)))) +- (t +- ;; ARG is a file name. +- ;; Collapse multiple slashes to single slashes. +- (setq arg (command-line-normalize-file-name arg)) +- ;; 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)))))) +- ;; Now decode the file name if necessary. +- (if coding-system +- (setq arg (decode-coding-string arg coding-system))) +- (setq files +- (cons (list arg lineno columnno) +- files)) +- (setq lineno 1) +- (setq columnno 0)))))) +- (run-hooks 'pre-command-hook) ++ ;; ARG is line number:column option. ++ ((string-match "\\`+\\([0-9]+\\):\\([0-9]+\\)\\'" arg) ++ (setq lineno (string-to-int (match-string 1 arg)) ++ columnno (string-to-int (match-string 2 arg)))) ++ (t ++ ;; ARG is a file name. ++ ;; Collapse multiple slashes to single slashes. ++ (setq arg (command-line-normalize-file-name arg)) ++ ;; 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)))))) ++ ;; Now decode the file name if necessary. ++ (if coding-system ++ (setq arg (decode-coding-string arg coding-system))) ++ (setq files ++ ;; When invoking emacsclient with --no-wait, we are ++ ;; typically `moving around' and editing the same file; ++ ;; and do not want to revert. Should make --no-revert ++ ;; option for emacsclient? ++ (cons (list arg lineno columnno (if nowait 'no-revert nil)) ++ files)) ++ (setq lineno 1) ++ (setq columnno 0))))) + (server-visit-files files client nowait) + (run-hooks 'post-command-hook) + ;; CLIENT is now a list (CLIENTNUM BUFFERS...) +@@ -309,6 +312,13 @@ Prefix arg means just kill any existing + FILES is an alist whose elements are (FILENAME LINENUMBER COLUMNNUMBER). + NOWAIT non-nil means this client is not waiting for the results, + so don't mark these buffers specially, just visit them normally." ++ ++ (defun goto-line-column (file-line-col) ++ (goto-line (nth 1 file-line-col)) ++ (let ((column-number (nth 2 file-line-col))) ++ (if (> column-number 0) ++ (move-to-column (1- column-number))))) ++ + ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries. + (let (client-record (last-nonmenu-event t) (obuf (current-buffer))) + ;; Restore the current buffer afterward, but not using save-excursion, +@@ -322,7 +332,8 @@ so don't mark these buffers specially, j + (let* ((filen (car (car files))) + (obuf (get-file-buffer filen))) + (push filen file-name-history) +- (if (and obuf (set-buffer obuf)) ++ (if (and obuf (set-buffer obuf) ++ (not (memq 'no-revert (car files)))) + (progn + (cond ((file-exists-p filen) + (if (or (not (verify-visited-file-modtime obuf)) +@@ -335,12 +346,9 @@ so don't mark these buffers specially, j + ", write buffer to file? ")) + (write-file filen)))) + (setq server-existing-buffer t) +- (goto-line (nth 1 (car files)))) ++ (goto-line-column (car files))) + (set-buffer (find-file-noselect filen)) +- (goto-line (nth 1 (car files))) +- (let ((column-number (nth 2 (car files)))) +- (when (> column-number 0) +- (move-to-column (1- column-number)))) ++ (goto-line-column (car files)) + (run-hooks 'server-visit-hook))) + (if (not nowait) + (setq server-buffer-clients + +-- +Jan Nieuwenhuizen | GNU LilyPond - The music typesetter +http://www.xs4all.nl/~jantien | http://www.lilypond.org + + + + -- 2.39.2