annotate lisp/userlock.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 1d1d5d9bd884
children 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
1 ;;; userlock.el --- handle file access contention between multiple users
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
2
74442
b2e5081b9320 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74258
diff changeset
3 ;; Copyright (C) 1985, 1986, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105994
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 812
diff changeset
5
812
485e82a8acb5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
6 ;; Maintainer: FSF
485e82a8acb5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: internal
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
8
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; (at your option) any later version.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
23
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
24 ;;; Commentary:
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
25
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
26 ;; This file is autoloaded to handle certain conditions
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
27 ;; detected by the file-locking code within Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
28 ;; The two entry points are `ask-user-about-lock' and
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
29 ;; `ask-user-about-supersession-threat'.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
31 ;;; Code:
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
32
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33 (put 'file-locked 'error-conditions '(file-locked file-error error))
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
34 (put 'file-locked 'error-message "File is locked")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
35
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
36 ;;;###autoload
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
37 (defun ask-user-about-lock (file opponent)
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
38 "Ask user what to do when he wants to edit FILE but it is locked by OPPONENT.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
39 This function has a choice of three things to do:
26281
d4ba91022b7a (ask-user-about-lock): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 19676
diff changeset
40 do (signal 'file-locked (list FILE OPPONENT))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
41 to refrain from editing the file
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
42 return t (grab the lock on the file)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
43 return nil (edit the file even though it is locked).
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
44 You can redefine this function to choose among those three alternatives
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
45 in any way you like."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
46 (discard-input)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
47 (save-window-excursion
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
48 (let (answer short-opponent short-file)
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
49 (setq short-file
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
50 (if (> (length file) 22)
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
51 (concat "..." (substring file (- (length file) 22)))
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
52 file))
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
53 (setq short-opponent
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
54 (if (> (length opponent) 25)
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
55 (save-match-data
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
56 (string-match " (pid [0-9]+)" opponent)
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
57 (concat (substring opponent 0 13) "..."
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
58 (match-string 0 opponent)))
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
59 opponent))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
60 (while (null answer)
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
61 (message "%s locked by %s: (s, q, p, ?)? "
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
62 short-file short-opponent)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
63 (let ((tem (let ((inhibit-quit t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
64 (cursor-in-echo-area t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
65 (prog1 (downcase (read-char))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66 (setq quit-flag nil)))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
67 (if (= tem help-char)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
68 (ask-user-about-lock-help)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
69 (setq answer (assoc tem '((?s . t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
70 (?q . yield)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
71 (?\C-g . yield)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
72 (?p . nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
73 (?? . help))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
74 (cond ((null answer)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
75 (beep)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
76 (message "Please type q, s, or p; or ? for help")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
77 (sit-for 3))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
78 ((eq (cdr answer) 'help)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
79 (ask-user-about-lock-help)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
80 (setq answer nil))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
81 ((eq (cdr answer) 'yield)
19676
2f47e06ef5a3 (ask-user-about-lock): Abbreviate file name and locking user's name.
Richard M. Stallman <rms@gnu.org>
parents: 15571
diff changeset
82 (signal 'file-locked (list file opponent)))))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
83 (cdr answer))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
84
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
85 (defun ask-user-about-lock-help ()
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
86 (with-output-to-temp-buffer "*Help*"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
87 (princ "It has been detected that you want to modify a file that someone else has
74258
26cf15a2cb37 (ask-user-about-lock-help): Fix typos in output message.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
88 already started modifying in Emacs.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
89
74258
26cf15a2cb37 (ask-user-about-lock-help): Fix typos in output message.
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
90 You can <s>teal the file; the other user becomes the
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
91 intruder if (s)he ever unmodifies the file and then changes it again.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
92 You can <p>roceed; you edit at your own (and the other user's) risk.
9843
f96b7683e3c5 (ask-user-about-lock-help, ask-user-about-supersession-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 4566
diff changeset
93 You can <q>uit; don't modify this file.")
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
94 (with-current-buffer standard-output
9843
f96b7683e3c5 (ask-user-about-lock-help, ask-user-about-supersession-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 4566
diff changeset
95 (help-mode))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
96
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
97 (put
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
98 'file-supersession 'error-conditions '(file-supersession file-error error))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
99
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
100 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
101 (defun ask-user-about-supersession-threat (fn)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
102 "Ask a user who is about to modify an obsolete buffer what to do.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
103 This function has two choices: it can return, in which case the modification
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
104 of the buffer will proceed, or it can (signal 'file-supersession (file)),
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
105 in which case the proposed buffer modification will not be made.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
106
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
107 You can rewrite this to use any criterion you like to choose which one to do.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
108 The buffer in question is current when this function is called."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
109 (discard-input)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
110 (save-window-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
111 (let (answer)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
112 (while (null answer)
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
113 (message "%s changed on disk; really edit the buffer? (y, n, r or C-h) "
4566
14d8646c61c4 (ask-user-about-supersession-threat): Mention file name when asking question.
Richard M. Stallman <rms@gnu.org>
parents: 841
diff changeset
114 (file-name-nondirectory fn))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
115 (let ((tem (downcase (let ((cursor-in-echo-area t))
47651
0c66d7531f3e (ask-user-about-supersession-threat): Don't abort when the user hits mouse-2.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26281
diff changeset
116 (read-char-exclusive)))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
117 (setq answer
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
118 (if (= tem help-char)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
119 'help
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
120 (cdr (assoc tem '((?n . yield)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
121 (?\C-g . yield)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
122 (?y . proceed)
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
123 (?r . revert)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
124 (?? . help))))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
125 (cond ((null answer)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
126 (beep)
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
127 (message "Please type y, n or r; or ? for help")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
128 (sit-for 3))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
129 ((eq answer 'help)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
130 (ask-user-about-supersession-help)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
131 (setq answer nil))
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
132 ((eq answer 'revert)
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
133 (revert-buffer nil (not (buffer-modified-p)))
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
134 ; ask confirmation if buffer modified
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
135 (signal 'file-supersession
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
136 (list "File reverted" fn)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
137 ((eq answer 'yield)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
138 (signal 'file-supersession
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
139 (list "File changed on disk" fn))))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
140 (message
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
141 "File on disk now will become a backup file if you save these changes.")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
142 (setq buffer-backed-up nil))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
143
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
144 (defun ask-user-about-supersession-help ()
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
145 (with-output-to-temp-buffer "*Help*"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
146 (princ "You want to modify a buffer whose disk file has changed
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
147 since you last read it in or saved it with this buffer.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
148
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
149 If you say `y' to go ahead and modify this buffer,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
150 you risk ruining the work of whoever rewrote the file.
15571
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
151 If you say `r' to revert, the contents of the buffer are refreshed
d99336533cc0 (ask-user-about-supersession-help): Change help text.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
152 from the file on disk.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
153 If you say `n', the change you started to make will be aborted.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
154
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
155 Usually, you should type `n' and then `M-x revert-buffer',
9843
f96b7683e3c5 (ask-user-about-lock-help, ask-user-about-supersession-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 4566
diff changeset
156 to get the latest version of the file, then make the change again.")
105994
009383a57ce8 * x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
157 (with-current-buffer standard-output
9843
f96b7683e3c5 (ask-user-about-lock-help, ask-user-about-supersession-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 4566
diff changeset
158 (help-mode))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
159
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
160 ;; arch-tag: a61c5b60-e1c8-44fd-894a-c617f4dfc639
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
161 ;;; userlock.el ends here