From: Han-Wen Nienhuys Date: Sat, 28 Oct 2006 21:14:22 +0000 (+0000) Subject: * emacsclient.patch: X-Git-Tag: release/2.10.0-2~42^2~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=00320a91755ec1dc638f58b422f277c2d51b8643;p=lilypond.git * emacsclient.patch: * server.el.patch: move server/emacsclient to elisp/ * buildscripts/git-update-changelog.py (Commit.note_del_file): apply patches too * elisp/server.el.patch: move emacs patches. * elisp/emacsclient.patch: emacsclient too. * buildscripts/git-update-changelog.py: ignore ChangeLog * ChangeLog: * buildscripts/git-update-changelog.py: script to update ChangeLog with Git messages. --- diff --git a/ChangeLog b/ChangeLog index 91a218320b..32038e168f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,23 @@ -2006-10-28 Han-Wen Nienhuys +2006-10-28 Han-Wen Nienhuys + + git commit e5d9c526aec8d0c7c7727068b13c346c475ac7c3 + + * emacsclient.patch: + * server.el.patch: + move server/emacsclient to elisp/ + + git commit f6191da666fd8897411e866594616cd0f7ae6350 + + * buildscripts/git-update-changelog.py (Commit.note_del_file): + apply patches too + + * elisp/server.el.patch: + move emacs patches. + + git commit 80844c903201b9df79ae81d4edcfbd299e08a9f7 + + * elisp/emacsclient.patch: + emacsclient too. git commit 64179afe25bf5723fe9bb5a6631799c050d12de2 diff --git a/buildscripts/git-update-changelog.py b/buildscripts/git-update-changelog.py index a2c3e5356e..2817ff31f7 100644 --- a/buildscripts/git-update-changelog.py +++ b/buildscripts/git-update-changelog.py @@ -8,6 +8,12 @@ import optparse def read_pipe (x): print 'pipe', x return os.popen (x).read () +def system (x): + print x + return os.system (x) + +class PatchFailed(Exception): + pass class Commit: def __init__ (self, dict): @@ -21,29 +27,49 @@ class Commit: self.date = ' '.join (self.date.split (' ')[:-1]) self.date = time.strptime (self.date, '%a %b %d %H:%M:%S %Y') - + m = re.search ('(.*)<(.*)>', self.author) - self.email = m.group (2) - self.name = m.group (1) - + self.email = m.group (2).strip () + self.name = m.group (1).strip () + self.diff = read_pipe ('git show %s' % self.committish) def touched_files (self): files = [] def note_file (x): files.append (x.group (1)) return '' - - diff = read_pipe ('git show %s' % self.committish) + re.sub ('\n--- a/([^\n]+)\n', - note_file, diff) + note_file, self.diff) re.sub('\n--- /dev/null\n\\+\\+\\+ b/([^\n]+)', - note_file, diff) + note_file, self.diff) return files -def parse_commit_log (log): - print log + def apply (self, add_del_files): + def note_add_file (x): + add_del_files.append (('add', x.group (1))) + return '' + + def note_del_file (x): + add_del_files.append (('del', x.group (1))) + return '' + + + re.sub('\n--- /dev/null\n\\+\\+\\+ b/([^\n]+)', + note_add_file, self.diff) + + re.sub('\n--- a/([^\n]+)\n\\+\\+\\+ /dev/null', + note_del_file, self.diff) + + p = os.popen ('patch -f -p1 ', 'w') + p.write (self.diff) + + if p.close (): + raise PatchFailed, self.committish + +def parse_commit_log (log): committish = re.search ('^([^\n]+)', log).group (1) author = re.search ('\nAuthor:\s+([^\n]+)', log).group (1) date_match = re.search ('\nDate:\s+([^\n]+)', log) @@ -67,6 +93,7 @@ def parse_add_changes (from_commit): return [] commits = map (parse_commit_log, re.split ('\ncommit ', log)) + commits.reverse () return commits @@ -97,12 +124,23 @@ def find_last_checked_in_commit (log): def main (): - p = optparse.OptionParser ("usage git-update-changelog.py --options") + p = optparse.OptionParser (usage="usage git-update-changelog.py [options]", + description=""" +Apply GIT patches and update change log. + +Run this file from the CVS directory, with --git-dir +""") p.add_option ("--start", action='store', default='', dest="start", help="start of log messages to merge.") + + p.add_option ("--git-dir", + action='store', + default='', + dest="gitdir", + help="the GIT directory to merge.") (options, args) = p.parse_args () @@ -114,6 +152,9 @@ def main (): print 'processing commits from ', id, options.start + if options.gitdir: + os.environ['GIT_DIR'] = options.gitdir + commits = parse_add_changes (options.start) if not commits: return @@ -124,8 +165,15 @@ def main (): first = header (commits[0]) + '\n' if first == log[:len (first)]: log = log[len (first):] - + + file_adddel = [] for c in commits: + print 'patch ', c.committish + try: + c.apply (file_adddel) + except PatchFailed: + break + if c.touched_files () == ['ChangeLog']: continue @@ -138,12 +186,19 @@ def main (): new_log += changelog_body (c) last_commit = c + for (op, f) in file_adddel: + if op == 'del': + system ('cvs remove %(f)s' % locals ()) + if op == 'add': + system ('cvs add %(f)s' % locals ()) + new_log = header (last_commit) + new_log + '\n' log = new_log + log + try: os.unlink ('ChangeLog~') - except IOError: + except OSError: pass os.rename ('ChangeLog', 'ChangeLog~') diff --git a/elisp/emacsclient.patch b/elisp/emacsclient.patch new file mode 100644 index 0000000000..e2df3ede6b --- /dev/null +++ b/elisp/emacsclient.patch @@ -0,0 +1,148 @@ +diff -ur emacs-20.5/lib-src/ChangeLog emacs-hanwen/lib-src/ChangeLog +--- emacs-20.5/lib-src/ChangeLog Fri Dec 10 17:25:36 1999 ++++ emacs-hanwen/lib-src/ChangeLog Sun Jul 16 23:00:54 2000 +@@ -1,3 +1,7 @@ ++2000-07-16 Han-Wen Nienhuys ++ ++ * emacsclient.c: Added support for +LINE:COLUMN style arguments. ++ + 1999-12-04 Gerd Moellmann + + * Version 20.5 released. +Only in emacs-hanwen/lib-src: ChangeLog~ +diff -ur emacs-20.5/lib-src/emacsclient.c emacs-hanwen/lib-src/emacsclient.c +--- emacs-20.5/lib-src/emacsclient.c Wed Nov 3 14:12:46 1999 ++++ emacs-hanwen/lib-src/emacsclient.c Sun Jul 16 22:10:35 2000 +@@ -27,6 +27,7 @@ + #undef close + #undef signal + ++#include + #include + #include + #ifdef STDC_HEADERS +@@ -323,7 +324,7 @@ + if (*argv[i] == '+') + { + char *p = argv[i] + 1; +- while (*p >= '0' && *p <= '9') p++; ++ while (isdigit (*p) || *p == ':') p++; + if (*p != 0) + fprintf (out, "%s/", quote_file_name (cwd)); + } +@@ -466,7 +467,8 @@ + if (*modified_arg == '+') + { + char *p = modified_arg + 1; +- while (*p >= '0' && *p <= '9') p++; ++ while (isdigit (*p) || *p == ':') ++ p++; + if (*p != 0) + need_cwd = 1; + } +Only in emacs-hanwen/lib-src: emacsclient.c~ +diff -ur emacs-20.5/lib-src/emacsserver.c emacs-hanwen/lib-src/emacsserver.c +--- emacs-20.5/lib-src/emacsserver.c Mon Feb 22 21:44:14 1999 ++++ emacs-hanwen/lib-src/emacsserver.c Sun Jul 16 22:09:52 2000 +@@ -61,6 +61,7 @@ + #include + #include + ++ + #ifdef HAVE_UNISTD_H + #include + #endif +Only in emacs-hanwen/lib-src: emacsserver.c~ +Only in emacs-hanwen/lib-src: suf.el~ +diff -ur emacs-20.5/lisp/ChangeLog emacs-hanwen/lisp/ChangeLog +--- emacs-20.5/lisp/ChangeLog Fri Dec 10 17:25:02 1999 ++++ emacs-hanwen/lisp/ChangeLog Sun Jul 16 23:00:04 2000 +@@ -1,3 +1,8 @@ ++2000-07-16 Han-Wen Nienhuys ++ ++ * server.el (server-process-filter,server-visit-files): add support for "LINE:COLUMN" ++ style emacsclient calls. ++ + 1999-12-04 Gerd Moellmann + + * Version 20.5 released. +Only in emacs-hanwen/lisp: ChangeLog~ +diff -ur emacs-20.5/lisp/server.el emacs-hanwen/lisp/server.el +--- emacs-20.5/lisp/server.el Sat Mar 13 01:20:25 1999 ++++ emacs-hanwen/lisp/server.el Sun Jul 16 23:04:41 2000 +@@ -215,7 +215,8 @@ + default-file-name-coding-system))) + client nowait + (files nil) +- (lineno 1)) ++ (lineno 1) ++ (columnno 0)) + ;; Remove this line from STRING. + (setq string (substring string (match-end 0))) + (if (string-match "^Error: " request) +@@ -232,9 +233,17 @@ + (setq request (substring request (match-end 0))) + (if (string-match "\\`-nowait" arg) + (setq nowait t) +- (if (string-match "\\`\\+[0-9]+\\'" arg) +- ;; ARG is a line number option. +- (setq lineno (read (substring arg 1))) ++ (cond ++ ;; ARG is a line number option. ++ ((string-match "\\`\\+[0-9]+\\'" arg) ++ (setq lineno (read (substring arg 1))) ++ ) ++ ;; ARG is line number / column option. ++ ((string-match "\\`\\+[0-9]+:[0-9]+\\'" arg) ++ (setq lineno (read (substring arg 1 (string-match ":" arg)))) ++ (setq columnno (read (substring arg (+ 1 (string-match ":" arg))))) ++ ) ++ (t + ;; ARG is a file name. + ;; Collapse multiple slashes to single slashes. + (setq arg (command-line-normalize-file-name arg)) +@@ -253,9 +262,11 @@ + (if coding-system + (setq arg (decode-coding-string arg coding-system))) + (setq files +- (cons (list arg lineno) ++ (cons (list arg lineno columnno) + files)) +- (setq lineno 1))))) ++ (setq lineno 1) ++ (setq columnno 0) ++ ))))) + (server-visit-files files client nowait) + ;; CLIENT is now a list (CLIENTNUM BUFFERS...) + (or nowait +@@ -267,9 +278,11 @@ + ;; Save for later any partial line that remains. + (setq server-previous-string string)) + ++ ++ + (defun server-visit-files (files client &optional nowait) + "Finds FILES and returns the list CLIENT with the buffers nconc'd. +-FILES is an alist whose elements are (FILENAME LINENUMBER). ++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." + ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries. +@@ -297,6 +310,7 @@ + (set-buffer (find-file-noselect filen)) + (run-hooks 'server-visit-hook))) + (goto-line (nth 1 (car files))) ++ (move-to-column (nth 2 (car files))) + (if (not nowait) + (setq server-buffer-clients + (cons (car client) server-buffer-clients))) +@@ -304,6 +318,7 @@ + (setq files (cdr files))) + (set-buffer obuf)) + (nconc client client-record))) ++ + + (defun server-buffer-done (buffer &optional for-killing) + "Mark BUFFER as \"done\" for its client(s). +Only in emacs-hanwen/lisp: server.el.orig +Only in emacs-hanwen/lisp: server.el~ 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 + + + + diff --git a/emacsclient.patch b/emacsclient.patch deleted file mode 100644 index e2df3ede6b..0000000000 --- a/emacsclient.patch +++ /dev/null @@ -1,148 +0,0 @@ -diff -ur emacs-20.5/lib-src/ChangeLog emacs-hanwen/lib-src/ChangeLog ---- emacs-20.5/lib-src/ChangeLog Fri Dec 10 17:25:36 1999 -+++ emacs-hanwen/lib-src/ChangeLog Sun Jul 16 23:00:54 2000 -@@ -1,3 +1,7 @@ -+2000-07-16 Han-Wen Nienhuys -+ -+ * emacsclient.c: Added support for +LINE:COLUMN style arguments. -+ - 1999-12-04 Gerd Moellmann - - * Version 20.5 released. -Only in emacs-hanwen/lib-src: ChangeLog~ -diff -ur emacs-20.5/lib-src/emacsclient.c emacs-hanwen/lib-src/emacsclient.c ---- emacs-20.5/lib-src/emacsclient.c Wed Nov 3 14:12:46 1999 -+++ emacs-hanwen/lib-src/emacsclient.c Sun Jul 16 22:10:35 2000 -@@ -27,6 +27,7 @@ - #undef close - #undef signal - -+#include - #include - #include - #ifdef STDC_HEADERS -@@ -323,7 +324,7 @@ - if (*argv[i] == '+') - { - char *p = argv[i] + 1; -- while (*p >= '0' && *p <= '9') p++; -+ while (isdigit (*p) || *p == ':') p++; - if (*p != 0) - fprintf (out, "%s/", quote_file_name (cwd)); - } -@@ -466,7 +467,8 @@ - if (*modified_arg == '+') - { - char *p = modified_arg + 1; -- while (*p >= '0' && *p <= '9') p++; -+ while (isdigit (*p) || *p == ':') -+ p++; - if (*p != 0) - need_cwd = 1; - } -Only in emacs-hanwen/lib-src: emacsclient.c~ -diff -ur emacs-20.5/lib-src/emacsserver.c emacs-hanwen/lib-src/emacsserver.c ---- emacs-20.5/lib-src/emacsserver.c Mon Feb 22 21:44:14 1999 -+++ emacs-hanwen/lib-src/emacsserver.c Sun Jul 16 22:09:52 2000 -@@ -61,6 +61,7 @@ - #include - #include - -+ - #ifdef HAVE_UNISTD_H - #include - #endif -Only in emacs-hanwen/lib-src: emacsserver.c~ -Only in emacs-hanwen/lib-src: suf.el~ -diff -ur emacs-20.5/lisp/ChangeLog emacs-hanwen/lisp/ChangeLog ---- emacs-20.5/lisp/ChangeLog Fri Dec 10 17:25:02 1999 -+++ emacs-hanwen/lisp/ChangeLog Sun Jul 16 23:00:04 2000 -@@ -1,3 +1,8 @@ -+2000-07-16 Han-Wen Nienhuys -+ -+ * server.el (server-process-filter,server-visit-files): add support for "LINE:COLUMN" -+ style emacsclient calls. -+ - 1999-12-04 Gerd Moellmann - - * Version 20.5 released. -Only in emacs-hanwen/lisp: ChangeLog~ -diff -ur emacs-20.5/lisp/server.el emacs-hanwen/lisp/server.el ---- emacs-20.5/lisp/server.el Sat Mar 13 01:20:25 1999 -+++ emacs-hanwen/lisp/server.el Sun Jul 16 23:04:41 2000 -@@ -215,7 +215,8 @@ - default-file-name-coding-system))) - client nowait - (files nil) -- (lineno 1)) -+ (lineno 1) -+ (columnno 0)) - ;; Remove this line from STRING. - (setq string (substring string (match-end 0))) - (if (string-match "^Error: " request) -@@ -232,9 +233,17 @@ - (setq request (substring request (match-end 0))) - (if (string-match "\\`-nowait" arg) - (setq nowait t) -- (if (string-match "\\`\\+[0-9]+\\'" arg) -- ;; ARG is a line number option. -- (setq lineno (read (substring arg 1))) -+ (cond -+ ;; ARG is a line number option. -+ ((string-match "\\`\\+[0-9]+\\'" arg) -+ (setq lineno (read (substring arg 1))) -+ ) -+ ;; ARG is line number / column option. -+ ((string-match "\\`\\+[0-9]+:[0-9]+\\'" arg) -+ (setq lineno (read (substring arg 1 (string-match ":" arg)))) -+ (setq columnno (read (substring arg (+ 1 (string-match ":" arg))))) -+ ) -+ (t - ;; ARG is a file name. - ;; Collapse multiple slashes to single slashes. - (setq arg (command-line-normalize-file-name arg)) -@@ -253,9 +262,11 @@ - (if coding-system - (setq arg (decode-coding-string arg coding-system))) - (setq files -- (cons (list arg lineno) -+ (cons (list arg lineno columnno) - files)) -- (setq lineno 1))))) -+ (setq lineno 1) -+ (setq columnno 0) -+ ))))) - (server-visit-files files client nowait) - ;; CLIENT is now a list (CLIENTNUM BUFFERS...) - (or nowait -@@ -267,9 +278,11 @@ - ;; Save for later any partial line that remains. - (setq server-previous-string string)) - -+ -+ - (defun server-visit-files (files client &optional nowait) - "Finds FILES and returns the list CLIENT with the buffers nconc'd. --FILES is an alist whose elements are (FILENAME LINENUMBER). -+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." - ;; Bind last-nonmenu-event to force use of keyboard, not mouse, for queries. -@@ -297,6 +310,7 @@ - (set-buffer (find-file-noselect filen)) - (run-hooks 'server-visit-hook))) - (goto-line (nth 1 (car files))) -+ (move-to-column (nth 2 (car files))) - (if (not nowait) - (setq server-buffer-clients - (cons (car client) server-buffer-clients))) -@@ -304,6 +318,7 @@ - (setq files (cdr files))) - (set-buffer obuf)) - (nconc client client-record))) -+ - - (defun server-buffer-done (buffer &optional for-killing) - "Mark BUFFER as \"done\" for its client(s). -Only in emacs-hanwen/lisp: server.el.orig -Only in emacs-hanwen/lisp: server.el~ diff --git a/server.el.patch b/server.el.patch deleted file mode 100644 index fb3c59f189..0000000000 --- a/server.el.patch +++ /dev/null @@ -1,165 +0,0 @@ -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 - - - -