aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorJoakim Verona2012-04-26 11:52:04 +0200
committerJoakim Verona2012-04-26 11:52:04 +0200
commitab5b626f97ea7d71a98a06d8cc777fa925a1f716 (patch)
tree7961d0e6b583290e1480771cd0fabd00f4ea7f86 /lisp
parent2ec5843f029c7d55234dbe51d993003b2b3939ec (diff)
parentab036cd7bdd7b087047d241ffb5607d14942179e (diff)
downloademacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.tar.gz
emacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.zip
upstream partial out of memory
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog250
-rw-r--r--lisp/avoid.el63
-rw-r--r--lisp/battery.el107
-rw-r--r--lisp/calendar/holidays.el2
-rw-r--r--lisp/custom.el21
-rw-r--r--lisp/emacs-lisp/autoload.el3
-rw-r--r--lisp/emacs-lisp/lisp.el16
-rw-r--r--lisp/emulation/cua-base.el39
-rw-r--r--lisp/erc/ChangeLog5
-rw-r--r--lisp/erc/erc-services.el3
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/gnus/ChangeLog16
-rw-r--r--lisp/gnus/gnus-art.el4
-rw-r--r--lisp/gnus/gnus-msg.el8
-rw-r--r--lisp/gnus/gnus-start.el4
-rw-r--r--lisp/hexl.el110
-rw-r--r--lisp/imenu.el15
-rw-r--r--lisp/international/characters.el12
-rw-r--r--lisp/international/mule.el5
-rw-r--r--lisp/international/quail.el58
-rw-r--r--lisp/minibuffer.el20
-rw-r--r--lisp/misc.el15
-rw-r--r--lisp/net/browse-url.el8
-rw-r--r--lisp/net/rcirc.el38
-rw-r--r--lisp/obsolete/mailpost.el (renamed from lisp/mail/mailpost.el)1
-rw-r--r--lisp/obsolete/mouse-sel.el (renamed from lisp/mouse-sel.el)1
-rw-r--r--lisp/org/ChangeLog46
-rw-r--r--lisp/org/ob-C.el2
-rw-r--r--lisp/org/org-agenda.el14
-rw-r--r--lisp/org/org-clock.el15
-rw-r--r--lisp/org/org-footnote.el2
-rw-r--r--lisp/org/org-pcomplete.el4
-rw-r--r--lisp/org/org-special-blocks.el12
-rw-r--r--lisp/org/org-table.el13
-rw-r--r--lisp/org/org.el40
-rw-r--r--lisp/pcmpl-rpm.el16
-rw-r--r--lisp/progmodes/cc-engine.el5
-rw-r--r--lisp/progmodes/cc-menus.el41
-rw-r--r--lisp/progmodes/flymake.el8
-rw-r--r--lisp/progmodes/grep.el3
-rw-r--r--lisp/progmodes/hideshow.el11
-rw-r--r--lisp/progmodes/which-func.el11
-rw-r--r--lisp/simple.el6
-rw-r--r--lisp/startup.el37
-rw-r--r--lisp/subr.el114
-rw-r--r--lisp/textmodes/artist.el42
-rw-r--r--lisp/textmodes/flyspell.el9
-rw-r--r--lisp/textmodes/ispell.el3
-rw-r--r--lisp/tmm.el64
-rw-r--r--lisp/url/ChangeLog3
-rw-r--r--lisp/url/url-util.el11
-rw-r--r--lisp/vc/vc-annotate.el28
-rw-r--r--lisp/vc/vc-bzr.el122
-rw-r--r--lisp/vcursor.el7
-rw-r--r--lisp/window.el6
55 files changed, 924 insertions, 597 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fee5e34942c..858c4285c7a 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,12 +1,254 @@
12012-04-14 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * progmodes/which-func.el (which-func-modes): Change default.
4
52012-04-14 Kim F. Storm <storm@cua.dk>
6
7 * emulation/cua-base.el (cua-exchange-point-and-mark): Just call
8 exchange-point-and-mark if cua-enable-cua-keys is nil (Bug#11191).
9
102012-04-14 Chong Yidong <cyd@gnu.org>
11
12 * custom.el (custom-theme-set-variables): Doc fix.
13
142012-04-14 Glenn Morris <rgm@gnu.org>
15
16 * international/mule.el (set-auto-coding-for-load): Doc fix.
17
182012-04-14 Alan Mackenzie <acm@muc.de>
19
20 * progmodes/cc-menus.el (cc-imenu-objc-generic-expression): Make
21 imenu work again for Objective C Mode. Correct the *-index values,
22 these having been disturbed by a previous change in 2011-08.
23
24 * progmodes/cc-engine.el (c-before-change-check-<>-operators):
25 Correct two search limits.
26
272012-04-14 Stefan Monnier <monnier@iro.umontreal.ca>
28
29 * startup.el (command-line-1): Inhibit splash from daemon (bug#10996).
30
312012-04-14 Andreas Schwab <schwab@linux-m68k.org>
32
33 * international/characters.el: Fix sorting.
34
352012-04-14 Eli Zaretskii <eliz@gnu.org>
36
37 * international/characters.el: Add more missing Latin case pairs.
38
392012-04-14 Glenn Morris <rgm@gnu.org>
40
41 * files.el (dir-locals-set-class-variables): Doc fix.
42
432012-04-14 Eli Zaretskii <eliz@gnu.org>
44
45 * international/characters.el: Add set-case-syntax-pair call for
46 LATIN CAPITAL LETTER Y WITH DIAERESIS RET and its lower-case
47 counterpart. (Bug#11209)
48
49 * simple.el (shell-command-on-region): Doc fix. (Bug#11208)
50
512012-04-14 Glenn Morris <rgm@gnu.org>
52
53 * calendar/holidays.el (calendar-check-holidays): Doc fix.
54
552012-04-14 Eli Zaretskii <eliz@gnu.org>
56
57 * textmodes/ispell.el (ispell-dictionary-base-alist):
58 Add data for Hebrew.
59
602012-04-14 Chong Yidong <cyd@gnu.org>
61
62 * net/rcirc.el (rcirc-cmd-quit):
63 Revert 2012-03-18 change (Bug#11192).
64
652012-04-14 Glenn Morris <rgm@gnu.org>
66
67 * pcmpl-rpm.el (pcomplete/rpm): Handle -qf.
68
692012-04-14 Eli Zaretskii <eliz@gnu.org>
70
71 * minibuffer.el (completion-in-region-mode-map):
72 Bind completion-help-at-point to M-? rather than ?. (Bug#11182)
73
742012-04-13 Vivek Dasmohapatra <vivek@etla.org>
75
76 * hexl.el (hexl-insert-char): Make display sizes other than 16 work.
77
782012-04-13 Masatake YAMATO <yamato@redhat.com>
79
80 * minibuffer.el (minibuffer-local-filename-syntax): New variable
81 to allow `C-M-f' and `C-M-b' to move to the nearest path
82 separator (bug#9511).
83
842012-04-13 Lars Ingebrigtsen <larsi@gnus.org>
85
86 * avoid.el: Require cl when compiling. And also move the
87 `provide' to the end.
88
892012-04-13 Thierry Volpiatto <thierry.volpiatto@gmail.com>
90
91 * avoid.el (mouse-avoidance-banish-position): New variable.
92 (mouse-avoidance-banish-destination): Use it (bug#10165).
93
942012-04-13 Leo Liu <sdl.web@gmail.com>
95
96 * progmodes/which-func.el (which-func-modes): Add objc-mode.
97
982012-04-13 Ken Brown <kbrown@cornell.edu>
99
100 * net/browse-url.el (browse-url-file-url): Remove Cygwin hack;
101 this is no longer needed now that cygstart understands file:// URLs.
102 (browse-url-filename-alist): For the same reason, don't modify
103 file:// URLs on Cygwin.
104
1052012-04-13 Stefan Monnier <monnier@iro.umontreal.ca>
106
107 * emulation/cua-base.el (cua--pre-command-handler-1): Don't activate
108 the region on shift if the binding is already shifted (bug#11221).
109
1102012-04-12 Glenn Morris <rgm@gnu.org>
111
112 * mail/mailpost.el: Move to obsolete/.
113
1142012-04-12 Drew Adams <drew.adams@oracle.com>
115
116 * imenu.el (imenu--generic-function): Ignore invisible definitions
117 (bug#10123).
118
1192012-04-12 Vivek Dasmohapatra <vivek@etla.org>
120
121 * hexl.el (hexl-bits): New variable.
122 (hexl-options): Mention the variable in the doc string.
123 (hexl-rulerise): New function.
124 (hexl-line-displen): New function
125 (hexl-mode): Mention the new variable.
126 (hexl-mode, hexl-current-address, hexl-current-address): Use the
127 displen.
128 (hexl-ascii-start-column): New function.
129 (hexl-address-to-marker, hexl-beginning-of-line, hexl-options)
130 (hexl-insert-char, hexl-mode-ruler): Use the displen (bug#4941).
131
1322012-04-12 Agustín Martín Domingo <agustin.martin@hispalinux.es>
133
134 * textmodes/flyspell.el (flyspell-large-region): For hunspell, use
135 '("-i" ENCODING), in 2 separate command-line arguments, to specify
136 the encoding, as expected by hunspell.
137
1382012-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
139
140 * battery.el (battery--linux-sysfs-regexp): New const.
141 (battery-status-function): Use it. Remove yeeloong special case.
142 (battery-yeeloong-sysfs): Remove.
143 (battery-echo-area-format): Remove yeeloong special case.
144
1452012-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
146
147 * imenu.el (imenu-add-to-menubar): `current-local-map' can be nil.
148 Reported by Noah Friedman.
149
150 * subr.el (read-passwd): Use read-string.
151
1522012-04-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
153
154 * vcursor.el (vcursor-move): Increase the priority of the overlay
155 (bug#9663).
156
1572012-04-11 Deniz Dogan <deniz.a.m.dogan@gmail.com>
158
159 * net/rcirc.el (rcirc-kill-channel-buffers): New variable.
160 (rcirc-kill-buffer-hook): Use it to kill channel buffers (bug#5128).
161
1622012-04-11 William Stevenson <yhvh2000@gmail.com>
163
164 * textmodes/artist.el (artist-mode): Convert artist-mode to use
165 define-minor-mode (bug#10760).
166
1672012-04-11 Wolfgang Jenkner <wjenkner@inode.at> (tiny change)
168
169 * lisp/progmodes/grep.el (rgrep): Tweak the find command line so
170 that directories matching `grep-find-ignored-files' won't be
171 pruned (bug#10351).
172
1732012-04-11 Chong Yidong <cyd@gnu.org>
174
175 * startup.el (command-line): Remove support for long-obsolete
176 variable font-lock-face-attributes.
177
1782012-04-11 Glenn Morris <rgm@gnu.org>
179
180 * vc/vc-bzr.el (vc-bzr-status): Avoid condition-case-unless-debug.
181
1822012-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
183
184 * window.el (window--state-get-1): Obey window-point-insertion-type.
185
1862012-04-11 Lennart Borgman <lennart.borgman@gmail.com>
187
188 * emacs-lisp/lisp.el (narrow-to-defun): `beginning-of-defun' goes
189 to previous function when point is on the first character of a
190 function. Take care of that in `narrow-to-defun' (bug#6157).
191
1922012-04-11 Glenn Morris <rgm@gnu.org>
193
194 * vc/vc-bzr.el (vc-bzr-status): Handle all errors,
195 not just file-errors.
196
197 * vc/vc-bzr.el (vc-bzr-sha1-program, sha1-program): Remove.
198 (vc-bzr-sha1): Use internal sha1.
199
2002012-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
201
202 * progmodes/flymake.el (flymake-mode): Beware read-only dirs (bug#8954).
203
2042012-04-10 Sébastien Gross <seb@chezwam.org> (tiny change)
205
206 * progmodes/hideshow.el (hs-hide-all): Don't infloop on comments
207 that start in the middle of the line (bug#10496).
208
2092012-04-10 Dan Nicolaescu <dann@gnu.org>
210
211 * battery.el (battery-linux-proc-acpi): Only one battery is
212 discharged at a time, but that seems to confuse battery.el when
213 computing `rate-type' for the battery not being discharged
214 (bug#10332).
215
2162012-04-10 Stefan Monnier <monnier@iro.umontreal.ca>
217
218 * emacs-lisp/autoload.el (autoload-make-program): Remove, unused.
219
220 * international/quail.el: Use dolist and simplify.
221 (quail-define-package, quail-update-keyboard-layout)
222 (quail-define-rules): Use dolist.
223 (quail-insert-kbd-layout, quail-get-translation): CSE.
224
225 * tmm.el: Use dolist, remove left over hook.
226 (tmm-prompt, tmm-define-keys, tmm-shortcut, tmm-get-keybind):
227 Use dolist.
228 (calendar-load-hook): Don't mess with it.
229
230 * vc/vc-annotate.el (vc-annotate-show-diff-revision-at-line-internal):
231 Use derived-mode-p. Run the diff asynchronously.
232
2332012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
234
235 * obsolete/mouse-sel.el: Add an Obsolete-since header.
236
2372012-04-10 Juanma Barranquero <lekktu@gmail.com>
238
239 * misc.el: Display absolute path of loaded DLLs (bug#10424).
240 (list-dynamic-libraries--loaded): New function.
241 (list-dynamic-libraries--refresh): Use it.
242
12012-04-10 Nathan Weizenbaum <nweiz@google.com> 2432012-04-10 Nathan Weizenbaum <nweiz@google.com>
2 244
3 * progmodes/python.el (python-fill-paragraph): Make 245 * progmodes/python.el (python-fill-paragraph):
4 python-fill-region in a multiline string work when font-lock is 246 Make python-fill-region in a multiline string work when font-lock is
5 disabled (bug#7018). 247 disabled (bug#7018).
6 248
72012-04-10 Laimonas Vėbra <laimonas.vebra@gmail.com> (tiny change) 2492012-04-10 Laimonas Vėbra <laimonas.vebra@gmail.com> (tiny change)
8 250
9 * language/european.el (cp775): Added oem/legacy (en)coding on 251 * language/european.el (cp775): Add oem/legacy (en)coding on
10 DOS/MS Windows for the Baltic languages. There are still plenty of 252 DOS/MS Windows for the Baltic languages. There are still plenty of
11 texts written in this encoding/codepage (bug#6519). 253 texts written in this encoding/codepage (bug#6519).
12 254
@@ -17,7 +259,7 @@
17 259
182012-04-10 Florian Adamsky <florian@adamsky.it> (tiny change) 2602012-04-10 Florian Adamsky <florian@adamsky.it> (tiny change)
19 261
20 * recentf.el (recentf-dialog-mode-map): Added two keybindings for 262 * recentf.el (recentf-dialog-mode-map): Add two keybindings for
21 next-line "n" and previous-line "p" in order to make recentf more 263 next-line "n" and previous-line "p" in order to make recentf more
22 consistent with ibuffer, dired or org-mode (bug#9387). 264 consistent with ibuffer, dired or org-mode (bug#9387).
23 265
diff --git a/lisp/avoid.el b/lisp/avoid.el
index 17d99fd6517..eb8a4ad23a2 100644
--- a/lisp/avoid.el
+++ b/lisp/avoid.el
@@ -67,7 +67,7 @@
67 67
68;;; Code: 68;;; Code:
69 69
70(provide 'avoid) 70(eval-when-compile (require 'cl))
71 71
72(defgroup avoid nil 72(defgroup avoid nil
73 "Make mouse pointer stay out of the way of editing." 73 "Make mouse pointer stay out of the way of editing."
@@ -115,6 +115,23 @@ Only applies in Mouse Avoidance modes `animate' and `jump'."
115 :type 'integer 115 :type 'integer
116 :group 'avoid) 116 :group 'avoid)
117 117
118(defcustom mouse-avoidance-banish-position '((frame-or-window . frame)
119 (side . right)
120 (side-pos . 3)
121 (top-or-bottom . top)
122 (top-or-bottom-pos . 0))
123 "Position to which Mouse Avoidance mode `banish' moves the mouse.
124An alist where keywords mean:
125FRAME-OR-WINDOW: banish the mouse to corner of frame or window.
126SIDE: banish the mouse on right or left corner of frame or window.
127SIDE-POS: Distance from right or left edge of frame or window.
128TOP-OR-BOTTOM: banish the mouse to top or bottom of frame or window.
129TOP-OR-BOTTOM-POS: Distance from top or bottom edge of frame or window."
130 :group 'avoid
131 :type '(alist :key-type symbol :value-type symbol)
132 :options '(frame-or-window side (side-pos integer)
133 top-or-bottom (top-or-bottom-pos integer)))
134
118;; Internal variables 135;; Internal variables
119(defvar mouse-avoidance-state nil) 136(defvar mouse-avoidance-state nil)
120(defvar mouse-avoidance-pointer-shapes nil) 137(defvar mouse-avoidance-pointer-shapes nil)
@@ -183,13 +200,45 @@ Acceptable distance is defined by `mouse-avoidance-threshold'."
183 200
184(defun mouse-avoidance-banish-destination () 201(defun mouse-avoidance-banish-destination ()
185 "The position to which Mouse Avoidance mode `banish' moves the mouse. 202 "The position to which Mouse Avoidance mode `banish' moves the mouse.
186You can redefine this if you want the mouse banished to a different corner." 203
187 (let* ((pos (window-edges))) 204If you want the mouse banished to a different corner set
188 (cons (- (nth 2 pos) 2) 205`mouse-avoidance-banish-position' as you need."
189 (nth 1 pos)))) 206 (let* ((fra-or-win (assoc-default
207 'frame-or-window
208 mouse-avoidance-banish-position 'eq))
209 (list-values (case fra-or-win
210 (frame (list 0 0 (frame-width) (frame-height)))
211 (window (window-edges))))
212 (alist (loop for v in list-values
213 for k in '(left top right bottom)
214 collect (cons k v)))
215 (side (assoc-default
216 'side
217 mouse-avoidance-banish-position 'eq))
218 (side-dist (assoc-default
219 'side-pos
220 mouse-avoidance-banish-position 'eq))
221 (top-or-bottom (assoc-default
222 'top-or-bottom
223 mouse-avoidance-banish-position 'eq))
224 (top-or-bottom-dist (assoc-default
225 'top-or-bottom-pos
226 mouse-avoidance-banish-position 'eq))
227 (side-fn (case side
228 (left '+)
229 (right '-)))
230 (top-or-bottom-fn (case top-or-bottom
231 (top '+)
232 (bottom '-))))
233 (cons (funcall side-fn ; -/+
234 (assoc-default side alist 'eq) ; right or left
235 side-dist) ; distance from side
236 (funcall top-or-bottom-fn ; -/+
237 (assoc-default top-or-bottom alist 'eq) ; top/bottom
238 top-or-bottom-dist)))) ; distance from top/bottom
190 239
191(defun mouse-avoidance-banish-mouse () 240(defun mouse-avoidance-banish-mouse ()
192 ;; Put the mouse pointer in the upper-right corner of the current frame. 241 "Put the mouse pointer to `mouse-avoidance-banish-position'."
193 (mouse-avoidance-set-mouse-position (mouse-avoidance-banish-destination))) 242 (mouse-avoidance-set-mouse-position (mouse-avoidance-banish-destination)))
194 243
195(defsubst mouse-avoidance-delta (cur delta dist var min max) 244(defsubst mouse-avoidance-delta (cur delta dist var min max)
@@ -408,4 +457,6 @@ definition of \"random distance\".)"
408(if mouse-avoidance-mode 457(if mouse-avoidance-mode
409 (mouse-avoidance-mode mouse-avoidance-mode)) 458 (mouse-avoidance-mode mouse-avoidance-mode))
410 459
460(provide 'avoid)
461
411;;; avoid.el ends here 462;;; avoid.el ends here
diff --git a/lisp/battery.el b/lisp/battery.el
index 586be9e8938..78898534a47 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -39,6 +39,9 @@
39 :prefix "battery-" 39 :prefix "battery-"
40 :group 'hardware) 40 :group 'hardware)
41 41
42;; Either BATn or yeeloong-bat, basically.
43(defconst battery--linux-sysfs-regexp "[bB][aA][tT][0-9]?$")
44
42(defcustom battery-status-function 45(defcustom battery-status-function
43 (cond ((and (eq system-type 'gnu/linux) 46 (cond ((and (eq system-type 'gnu/linux)
44 (file-readable-p "/proc/apm")) 47 (file-readable-p "/proc/apm"))
@@ -48,12 +51,9 @@
48 'battery-linux-proc-acpi) 51 'battery-linux-proc-acpi)
49 ((and (eq system-type 'gnu/linux) 52 ((and (eq system-type 'gnu/linux)
50 (file-directory-p "/sys/class/power_supply/") 53 (file-directory-p "/sys/class/power_supply/")
51 (directory-files "/sys/class/power_supply/" nil "BAT[0-9]$")) 54 (directory-files "/sys/class/power_supply/" nil
55 battery--linux-sysfs-regexp))
52 'battery-linux-sysfs) 56 'battery-linux-sysfs)
53 ((and (eq system-type 'gnu/linux)
54 (file-directory-p "/sys/class/power_supply/yeeloong-bat/")
55 (directory-files "/sys/class/power_supply/yeeloong-bat/" nil "charge_"))
56 'battery-yeeloong-sysfs)
57 ((and (eq system-type 'darwin) 57 ((and (eq system-type 'darwin)
58 (condition-case nil 58 (condition-case nil
59 (with-temp-buffer 59 (with-temp-buffer
@@ -81,8 +81,6 @@ introduced by a `%' character in a control string."
81 "Power %L, battery %B (%p%% load)") 81 "Power %L, battery %B (%p%% load)")
82 ((eq battery-status-function 'battery-pmset) 82 ((eq battery-status-function 'battery-pmset)
83 "%L power, battery %B (%p%% load, remaining time %t)") 83 "%L power, battery %B (%p%% load, remaining time %t)")
84 ((eq battery-status-function 'battery-yeeloong-sysfs)
85 "%L power, battery %B (%p%% load, remaining time %t)")
86 (battery-status-function 84 (battery-status-function
87 "Power %L, battery %B (%p%% load, remaining time %t)")) 85 "Power %L, battery %B (%p%% load, remaining time %t)"))
88 "Control string formatting the string to display in the echo area. 86 "Control string formatting the string to display in the echo area.
@@ -344,14 +342,15 @@ The following %-sequences are provided:
344 (setq charging-state (match-string 1))) 342 (setq charging-state (match-string 1)))
345 (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$" 343 (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$"
346 nil t) 344 nil t)
347 (setq rate (+ (or rate 0) (string-to-number (match-string 1))) 345 (setq rate (+ (or rate 0) (string-to-number (match-string 1))))
348 rate-type (or (and rate-type 346 (when (> rate 0)
347 (setq rate-type (or (and rate-type
349 (if (string= rate-type (match-string 2)) 348 (if (string= rate-type (match-string 2))
350 rate-type 349 rate-type
351 (error 350 (error
352 "Inconsistent rate types (%s vs. %s)" 351 "Inconsistent rate types (%s vs. %s)"
353 rate-type (match-string 2)))) 352 rate-type (match-string 2))))
354 (match-string 2)))) 353 (match-string 2)))))
355 (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$" 354 (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$"
356 nil t) 355 nil t)
357 (setq capacity 356 (setq capacity
@@ -447,7 +446,8 @@ The following %-sequences are provided:
447 (with-temp-buffer 446 (with-temp-buffer
448 (dolist (dir (ignore-errors 447 (dolist (dir (ignore-errors
449 (directory-files 448 (directory-files
450 "/sys/class/power_supply/" t "BAT[0-9]$"))) 449 "/sys/class/power_supply/" t
450 battery--linux-sysfs-regexp)))
451 (erase-buffer) 451 (erase-buffer)
452 (ignore-errors (insert-file-contents 452 (ignore-errors (insert-file-contents
453 (expand-file-name "uevent" dir))) 453 (expand-file-name "uevent" dir)))
@@ -524,91 +524,6 @@ The following %-sequences are provided:
524 "AC" 524 "AC"
525 "BAT") 525 "BAT")
526 "N/A"))))) 526 "N/A")))))
527
528(defun battery-yeeloong-sysfs ()
529 "Get ACPI status information from Linux (the kernel).
530This function works only on the Lemote Yeeloong.
531
532The following %-sequences are provided:
533%c Current capacity (mAh)
534%r Current rate
535%B Battery status (verbose)
536%b Battery status, empty means high, `-' means low,
537 `!' means critical, and `+' means charging
538%L AC line status (verbose)
539%p Battery load percentage
540%m Remaining time (to charge or discharge) in minutes
541%h Remaining time (to charge or discharge) in hours
542%t Remaining time (to charge or discharge) in the form `h:min'"
543
544 (let (capacity
545 capacity-level
546 status
547 ac-online
548 hours
549 current-now
550 charge-full
551 charge-now)
552
553 (with-temp-buffer
554 (ignore-errors
555 (insert-file-contents "/sys/class/power_supply/yeeloong-bat/uevent")
556 (goto-char 1)
557 (search-forward "POWER_SUPPLY_CHARGE_NOW=")
558 (setq charge-now (read (current-buffer)))
559 (goto-char 1)
560 (search-forward "POWER_SUPPLY_CHARGE_FULL=")
561 (setq charge-full (read (current-buffer)))
562 (goto-char 1)
563 (search-forward "POWER_SUPPLY_CURRENT_NOW=")
564 (setq current-now (read (current-buffer)))
565 (goto-char 1)
566 (search-forward "POWER_SUPPLY_CAPACITY_LEVEL=")
567 (setq capacity-level (buffer-substring (point) (line-end-position)))
568 (goto-char 1)
569 (search-forward "POWER_SUPPLY_STATUS=")
570 (setq status (buffer-substring (point) (line-end-position))))
571
572 (erase-buffer)
573 (ignore-errors
574 (insert-file-contents
575 "/sys/class/power_supply/yeeloong-ac/online")
576 (goto-char 1)
577 (setq ac-online (read (current-buffer)))
578 (erase-buffer)))
579
580
581 (setq capacity (round (/ (* charge-now 100.0) charge-full)))
582 (when (and current-now (not (= current-now 0)))
583 (if (< current-now 0)
584 ;; Charging
585 (setq hours (/ (- charge-now charge-full) (+ 0.0 current-now)))
586 ;; Discharging
587 (setq hours (/ charge-now (+ 0.0 current-now)))))
588
589 (list (cons ?c (if charge-now
590 (number-to-string charge-now)
591 "N/A"))
592 (cons ?r current-now)
593 (cons ?B (cond ((equal capacity-level "Full") "full")
594 ((equal status "Charging") "charging")
595 ((equal capacity-level "Low") "low")
596 ((equal capacity-level "Critical") "critical")
597 (t "high")))
598 (cons ?b (cond ((equal capacity-level "Full") " ")
599 ((equal status "Charging") "+")
600 ((equal capacity-level "Low") "-")
601 ((equal capacity-level "Critical") "!")
602 (t " ")))
603 (cons ?h (if hours (number-to-string hours) "N/A"))
604 (cons ?m (if hours (number-to-string (* 60 hours)) "N/A"))
605 (cons ?t (if hours
606 (format "%d:%d"
607 (/ (round (* 60 hours)) 60)
608 (% (round (* 60 hours)) 60))
609 "N/A"))
610 (cons ?p (if capacity (number-to-string capacity) "N/A"))
611 (cons ?L (if (eq ac-online 1) "AC" "BAT")))))
612 527
613;;; `pmset' interface for Darwin (OS X). 528;;; `pmset' interface for Darwin (OS X).
614 529
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 37f511f7990..9edd353b889 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -634,7 +634,7 @@ The optional LABEL is used to label the buffer created."
634 "Check the list of holidays for any that occur on DATE. 634 "Check the list of holidays for any that occur on DATE.
635DATE is a list (month day year). This function considers the 635DATE is a list (month day year). This function considers the
636holidays from the list `calendar-holidays', and returns a list of 636holidays from the list `calendar-holidays', and returns a list of
637strings describing those holidays that apply on DATE." 637strings describing those holidays that apply on DATE, or nil if none do."
638 (let ((displayed-month (calendar-extract-month date)) 638 (let ((displayed-month (calendar-extract-month date))
639 (displayed-year (calendar-extract-year date)) 639 (displayed-year (calendar-extract-year date))
640 holiday-list) 640 holiday-list)
diff --git a/lisp/custom.el b/lisp/custom.el
index d8909f8be92..611d5688f30 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -936,16 +936,21 @@ Each of the arguments in ARGS should be a list of this form:
936 936
937 (SYMBOL EXP [NOW [REQUEST [COMMENT]]]) 937 (SYMBOL EXP [NOW [REQUEST [COMMENT]]])
938 938
939This stores EXP (without evaluating it) as the saved value for SYMBOL. 939SYMBOL is the variable name, and EXP is an expression which
940If NOW is present and non-nil, then also evaluate EXP and set 940evaluates to the customized value. EXP will also be stored,
941the default value for the SYMBOL to the value of EXP. 941without evaluating it, in SYMBOL's `saved-value' property, so
942that it can be restored via the Customize interface. It is also
943added to the alist in SYMBOL's `theme-value' property \(by
944calling `custom-push-theme').
942 945
943REQUEST is a list of features we must require in order to 946NOW, if present and non-nil, means to install the variable's
944handle SYMBOL properly. 947value directly now, even if its `defcustom' declaration has not
945COMMENT is a comment string about SYMBOL. 948been executed. This is for internal use only.
949
950REQUEST is a list of features to `require' (which are loaded
951prior to evaluating EXP).
946 952
947EXP itself is saved unevaluated as SYMBOL property `saved-value' and 953COMMENT is a comment string about SYMBOL."
948in SYMBOL's list property `theme-value' \(using `custom-push-theme')."
949 (custom-check-theme theme) 954 (custom-check-theme theme)
950 955
951 ;; Process all the needed autoloads before anything else, so that the 956 ;; Process all the needed autoloads before anything else, so that the
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 5af666b9ded..921b08b10a8 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -762,9 +762,6 @@ write its autoloads into the specified file instead."
762(define-obsolete-function-alias 'update-autoloads-from-directories 762(define-obsolete-function-alias 'update-autoloads-from-directories
763 'update-directory-autoloads "22.1") 763 'update-directory-autoloads "22.1")
764 764
765(defvar autoload-make-program (or (getenv "MAKE") "make")
766 "Name of the make program in use during the Emacs build process.")
767
768;;;###autoload 765;;;###autoload
769(defun batch-update-autoloads () 766(defun batch-update-autoloads ()
770 "Update loaddefs.el autoloads in batch mode. 767 "Update loaddefs.el autoloads in batch mode.
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 4efdc3240cd..bcb7fab026b 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -447,7 +447,21 @@ Optional ARG is ignored."
447 ;; Try first in this order for the sake of languages with nested 447 ;; Try first in this order for the sake of languages with nested
448 ;; functions where several can end at the same place as with 448 ;; functions where several can end at the same place as with
449 ;; the offside rule, e.g. Python. 449 ;; the offside rule, e.g. Python.
450 (beginning-of-defun) 450
451 ;; Finding the start of the function is a bit problematic since
452 ;; `beginning-of-defun' when we are on the first character of
453 ;; the function might go to the previous function.
454 ;;
455 ;; Therefore we first move one character forward and then call
456 ;; `beginning-of-defun'. However now we must check that we did
457 ;; not move into the next function.
458 (let ((here (point)))
459 (unless (eolp)
460 (forward-char))
461 (beginning-of-defun)
462 (when (< (point) here)
463 (goto-char here)
464 (beginning-of-defun)))
451 (setq beg (point)) 465 (setq beg (point))
452 (end-of-defun) 466 (end-of-defun)
453 (setq end (point)) 467 (setq end (point))
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index a918f298a4e..ba6127b4cba 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1002,15 +1002,21 @@ behavior, see `cua-paste-pop-rotate-temporarily'."
1002 (setq this-command 'cua-paste-pop)))) 1002 (setq this-command 'cua-paste-pop))))
1003 1003
1004(defun cua-exchange-point-and-mark (arg) 1004(defun cua-exchange-point-and-mark (arg)
1005 "Exchanges point and mark, but don't activate the mark. 1005 "Exchange point and mark.
1006Activates the mark if a prefix argument is given." 1006Don't activate the mark if `cua-enable-cua-keys' is non-nil.
1007Otherwise, just activate the mark if a prefix ARG is given.
1008
1009See also `exchange-point-and-mark'."
1007 (interactive "P") 1010 (interactive "P")
1008 (if arg 1011 (cond ((null cua-enable-cua-keys)
1009 (setq mark-active t) 1012 (exchange-point-and-mark arg))
1010 (let (mark-active) 1013 (arg
1011 (exchange-point-and-mark) 1014 (setq mark-active t))
1012 (if cua--rectangle 1015 (t
1013 (cua--rectangle-corner 0))))) 1016 (let (mark-active)
1017 (exchange-point-and-mark)
1018 (if cua--rectangle
1019 (cua--rectangle-corner 0))))))
1014 1020
1015;; Typed text that replaced the highlighted region. 1021;; Typed text that replaced the highlighted region.
1016(defvar cua--repeat-replace-text nil) 1022(defvar cua--repeat-replace-text nil)
@@ -1246,22 +1252,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1246 ;; (and region not started with C-SPC). 1252 ;; (and region not started with C-SPC).
1247 ;; If rectangle is active, expand rectangle in specified direction and 1253 ;; If rectangle is active, expand rectangle in specified direction and
1248 ;; ignore the movement. 1254 ;; ignore the movement.
1249 ((if window-system 1255 (this-command-keys-shift-translated
1250 ;; Shortcut for window-system, assuming that input-decode-map is empty.
1251 (memq 'shift (event-modifiers
1252 (aref (this-single-command-raw-keys) 0)))
1253 (or
1254 ;; Check if the final key-sequence was shifted.
1255 (memq 'shift (event-modifiers
1256 (aref (this-single-command-keys) 0)))
1257 ;; If not, maybe the raw key-sequence was mapped by input-decode-map
1258 ;; to a shifted key (and then mapped down to its unshifted form).
1259 (let* ((keys (this-single-command-raw-keys))
1260 (ev (lookup-key input-decode-map keys)))
1261 (or (and (vector ev) (memq 'shift (event-modifiers (aref ev 0))))
1262 ;; Or maybe, the raw key-sequence was not an escape sequence
1263 ;; and was shifted (and then mapped down to its unshifted form).
1264 (memq 'shift (event-modifiers (aref keys 0)))))))
1265 (unless mark-active 1256 (unless mark-active
1266 (push-mark-command nil t)) 1257 (push-mark-command nil t))
1267 (setq cua--last-region-shifted t) 1258 (setq cua--last-region-shifted t)
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 649ab7f3fc2..06c6d42ed39 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,8 @@
12012-04-11 Vivek Dasmohapatra <vivek@etla.org>
2
3 * erc-services.el (erc-nickserv-passwords): Don't display the
4 password (bug#4459).
5
12012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org> 62012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 7
3 * erc-join.el (erc-server-join-channel): New function to look up 8 * erc-join.el (erc-server-join-channel): New function to look up
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 66eb341b47a..5986d81efed 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -195,7 +195,8 @@ Example of use:
195 (repeat :tag "Nickname and password" 195 (repeat :tag "Nickname and password"
196 (cons :tag "Identity" 196 (cons :tag "Identity"
197 (string :tag "Nick") 197 (string :tag "Nick")
198 (string :tag "Password")))))) 198 (string :tag "Password"
199 :secret ?*))))))
199 200
200;; Variables: 201;; Variables:
201 202
diff --git a/lisp/files.el b/lisp/files.el
index e623bc66080..fb4662e7ea8 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3523,7 +3523,7 @@ LIST is a list of the form accepted by the function.
3523When a file is visited, the file's class is found. A directory 3523When a file is visited, the file's class is found. A directory
3524may be assigned a class using `dir-locals-set-directory-class'. 3524may be assigned a class using `dir-locals-set-directory-class'.
3525Then variables are set in the file's buffer according to the 3525Then variables are set in the file's buffer according to the
3526class' LIST. The list is processed in order. 3526VARIABLES list of the class. The list is processed in order.
3527 3527
3528* If the element is of the form (MAJOR-MODE . ALIST), and the 3528* If the element is of the form (MAJOR-MODE . ALIST), and the
3529 buffer's major mode is derived from MAJOR-MODE (as determined 3529 buffer's major mode is derived from MAJOR-MODE (as determined
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index ef0f1c5c852..23e800e0f3f 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,19 @@
12012-04-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * gnus-msg.el (gnus-inews-insert-gcc): Don't do the alist stuff when we
4 don't have a current group.
5
6 * gnus-msg.el (gnus-inews-insert-gcc): Protect against when we don't
7 have a group name.
8
9 * gnus-art.el (article-wash-html): Ensure that we insert the HTML into
10 a multibyte buffer (bug#7410).
11 (article-wash-html): Parse the original article buffer to get the
12 unencoded data (bug#7410).
13
14 * gnus-start.el (gnus-read-newsrc-el-file): Protect against broken
15 .newsrc.el files.
16
12012-03-22 Lars Magne Ingebrigtsen <larsi@gnus.org> 172012-03-22 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 18
3 * auth-source.el (auth-source-netrc-create): Quote tokens that contain 19 * auth-source.el (auth-source-netrc-create): Quote tokens that contain
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 048f8956567..b04615dc5a9 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2754,9 +2754,11 @@ If READ-CHARSET, ask for a coding system."
2754 (let ((handles nil) 2754 (let ((handles nil)
2755 (buffer-read-only nil)) 2755 (buffer-read-only nil))
2756 (when (gnus-buffer-live-p gnus-original-article-buffer) 2756 (when (gnus-buffer-live-p gnus-original-article-buffer)
2757 (setq handles (mm-dissect-buffer t t))) 2757 (with-current-buffer gnus-original-article-buffer
2758 (setq handles (mm-dissect-buffer t t))))
2758 (article-goto-body) 2759 (article-goto-body)
2759 (delete-region (point) (point-max)) 2760 (delete-region (point) (point-max))
2761 (mm-enable-multibyte)
2760 (mm-inline-text-html handles))) 2762 (mm-inline-text-html handles)))
2761 2763
2762(defvar gnus-article-browse-html-temp-list nil 2764(defvar gnus-article-browse-html-temp-list nil
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 500ace9e8ff..815bd9e44a6 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -1664,17 +1664,19 @@ this is a reply."
1664 ((functionp var) 1664 ((functionp var)
1665 ;; A function. 1665 ;; A function.
1666 (funcall var group)) 1666 (funcall var group))
1667 (t 1667 (group
1668 ;; An alist of regexps/functions/forms. 1668 ;; An alist of regexps/functions/forms.
1669 (while (and var 1669 (while (and var
1670 (not 1670 (not
1671 (setq result 1671 (setq result
1672 (cond 1672 (cond
1673 ((stringp (caar var)) 1673 ((and group
1674 (stringp (caar var)))
1674 ;; Regexp. 1675 ;; Regexp.
1675 (when (string-match (caar var) group) 1676 (when (string-match (caar var) group)
1676 (cdar var))) 1677 (cdar var)))
1677 ((functionp (car var)) 1678 ((and group
1679 (functionp (car var)))
1678 ;; Function. 1680 ;; Function.
1679 (funcall (car var) group)) 1681 (funcall (car var) group))
1680 (t 1682 (t
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index bb7dd76d590..f025960c348 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -2442,7 +2442,9 @@ If FORCE is non-nil, the .newsrc file is read."
2442 (when gnus-newsrc-assoc 2442 (when gnus-newsrc-assoc
2443 (setq gnus-newsrc-alist gnus-newsrc-assoc)))) 2443 (setq gnus-newsrc-alist gnus-newsrc-assoc))))
2444 (dolist (elem gnus-newsrc-alist) 2444 (dolist (elem gnus-newsrc-alist)
2445 (setcar elem (mm-string-as-unibyte (car elem)))) 2445 ;; Protect against broken .newsrc.el files.
2446 (when (car elem)
2447 (setcar elem (mm-string-as-unibyte (car elem)))))
2446 (gnus-make-hashtable-from-newsrc-alist) 2448 (gnus-make-hashtable-from-newsrc-alist)
2447 (when (file-newer-than-file-p file ding-file) 2449 (when (file-newer-than-file-p file ding-file)
2448 ;; Old format quick file 2450 ;; Old format quick file
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 538d218e38e..6c4d8d6dc34 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -51,6 +51,14 @@
51 "Edit a file in a hex dump format using the hexl filter." 51 "Edit a file in a hex dump format using the hexl filter."
52 :group 'data) 52 :group 'data)
53 53
54(defcustom hexl-bits 16
55 "The bit grouping that hexl will use."
56 :type '(choice (const 8 )
57 (const 16)
58 (const 32)
59 (const 64))
60 :group 'hexl
61 :version "24.2")
54 62
55(defcustom hexl-program "hexl" 63(defcustom hexl-program "hexl"
56 "The program that will hexlify and dehexlify its stdin. 64 "The program that will hexlify and dehexlify its stdin.
@@ -67,7 +75,9 @@ and \"-de\" when dehexlifying a buffer."
67 75
68(defcustom hexl-options (format "-hex %s" hexl-iso) 76(defcustom hexl-options (format "-hex %s" hexl-iso)
69 "Space separated options to `hexl-program' that suit your needs. 77 "Space separated options to `hexl-program' that suit your needs.
70Quoting cannot be used, so the arguments cannot themselves contain spaces." 78Quoting cannot be used, so the arguments cannot themselves contain spaces.
79If you wish to set the `-group-by-X-bits' options, set `hexl-bits' instead,
80as that will override any bit grouping options set here."
71 :type 'string 81 :type 'string
72 :group 'hexl) 82 :group 'hexl)
73 83
@@ -212,10 +222,34 @@ Quoting cannot be used, so the arguments cannot themselves contain spaces."
212 (2 'hexl-ascii-region t t))) 222 (2 'hexl-ascii-region t t)))
213 "Font lock keywords used in `hexl-mode'.") 223 "Font lock keywords used in `hexl-mode'.")
214 224
225(defun hexl-rulerise (string bits)
226 (let ((size (/ bits 4)) (strlen (length string)) (pos 0) (ruler ""))
227 (while (< pos strlen)
228 (setq ruler (concat ruler " " (substring string pos (+ pos size))))
229 (setq pos (+ pos size)))
230 (substring ruler 1) ))
231
232(defvar hexl-rulers
233 (mapcar
234 (lambda (bits)
235 (cons bits
236 (concat " 87654321 "
237 (hexl-rulerise "00112233445566778899aabbccddeeff" bits)
238 " 0123456789abcdef")))
239 '(8 16 32 64)))
215;; routines 240;; routines
216 241
217(put 'hexl-mode 'mode-class 'special) 242(put 'hexl-mode 'mode-class 'special)
218 243
244;; 10 chars for the "address: "
245;; 32 chars for the hexlified bytes
246;; 1 char for the space
247;; 16 chars for the character display
248;; X chars for the spaces (128 bits divided by the hexl-bits)
249;; 1 char for the newline.
250(defun hexl-line-displen ()
251 "The length of a hexl display line (varies with `hexl-bits')."
252 (+ 60 (/ 128 (or hexl-bits 16))))
219 253
220(defun hexl-mode--minor-mode-p (var) 254(defun hexl-mode--minor-mode-p (var)
221 (memq var '(ruler-mode hl-line-mode))) 255 (memq var '(ruler-mode hl-line-mode)))
@@ -248,7 +282,7 @@ using the function `hexlify-buffer'.
248Each line in the buffer has an \"address\" (displayed in hexadecimal) 282Each line in the buffer has an \"address\" (displayed in hexadecimal)
249representing the offset into the file that the characters on this line 283representing the offset into the file that the characters on this line
250are at and 16 characters from the file (displayed as hexadecimal 284are at and 16 characters from the file (displayed as hexadecimal
251values grouped every 16 bits) and as their ASCII values. 285values grouped every `hexl-bits' bits) and as their ASCII values.
252 286
253If any of the characters (displayed as ASCII characters) are 287If any of the characters (displayed as ASCII characters) are
254unprintable (control or meta characters) they will be replaced as 288unprintable (control or meta characters) they will be replaced as
@@ -330,10 +364,7 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode.
330 (hexlify-buffer) 364 (hexlify-buffer)
331 (restore-buffer-modified-p modified)) 365 (restore-buffer-modified-p modified))
332 (set (make-local-variable 'hexl-max-address) 366 (set (make-local-variable 'hexl-max-address)
333 (let* ((full-lines (/ (buffer-size) 68)) 367 (+ (* (/ (1- (buffer-size)) (hexl-line-displen)) 16) 15))
334 (last-line (% (buffer-size) 68))
335 (last-line-bytes (% last-line 52)))
336 (+ last-line-bytes (* full-lines 16) -1)))
337 (condition-case nil 368 (condition-case nil
338 (hexl-goto-address original-point) 369 (hexl-goto-address original-point)
339 (error nil))) 370 (error nil)))
@@ -510,17 +541,20 @@ Ask the user for confirmation."
510(defun hexl-current-address (&optional validate) 541(defun hexl-current-address (&optional validate)
511 "Return current hexl-address." 542 "Return current hexl-address."
512 (interactive) 543 (interactive)
513 (let ((current-column (- (% (- (point) (point-min) -1) 68) 11)) 544 (let ((current-column
545 (- (% (- (point) (point-min) -1) (hexl-line-displen)) 11))
514 (hexl-address 0)) 546 (hexl-address 0))
515 (if (< current-column 0) 547 (if (< current-column 0)
516 (if validate 548 (if validate
517 (error "Point is not on a character in the file") 549 (error "Point is not on a character in the file")
518 (setq current-column 0))) 550 (setq current-column 0)))
519 (setq hexl-address 551 (setq hexl-address
520 (+ (* (/ (- (point) (point-min) -1) 68) 16) 552 (+ (* (/ (- (point) (point-min) -1)
521 (if (>= current-column 41) 553 (hexl-line-displen)) 16)
522 (- current-column 41) 554 (if (>= current-column (- (hexl-ascii-start-column) 10))
523 (/ (- current-column (/ current-column 5)) 2)))) 555 (- current-column (- (hexl-ascii-start-column) 10))
556 (/ (- current-column
557 (/ current-column (1+ (/ hexl-bits 4)))) 2))))
524 (when (called-interactively-p 'interactive) 558 (when (called-interactively-p 'interactive)
525 (message "Current address is %d/0x%08x" hexl-address hexl-address)) 559 (message "Current address is %d/0x%08x" hexl-address hexl-address))
526 hexl-address)) 560 hexl-address))
@@ -531,10 +565,18 @@ This function is intended to be used as eldoc callback."
531 (let ((addr (hexl-current-address))) 565 (let ((addr (hexl-current-address)))
532 (format "Current address is %d/0x%08x" addr addr))) 566 (format "Current address is %d/0x%08x" addr addr)))
533 567
568(defun hexl-ascii-start-column ()
569 "Column at which the ascii portion of the hexl display starts."
570 (+ 43 (/ 128 hexl-bits)))
571
534(defun hexl-address-to-marker (address) 572(defun hexl-address-to-marker (address)
535 "Return buffer position for ADDRESS." 573 "Return buffer position for ADDRESS."
536 (interactive "nAddress: ") 574 (interactive "nAddress: ")
537 (+ (* (/ address 16) 68) 10 (point-min) (/ (* (% address 16) 5) 2))) 575 (let ((N (* (% address 16) 2)))
576 (+ (* (/ address 16) (hexl-line-displen)) ; hexl line no * display length
577 10 ; 10 chars for the "address: " prefix
578 (point-min) ; base offset (point usually starts at 1, not 0)
579 (+ N (/ N (/ hexl-bits 4))) )) ) ; char offset into hexl display line
538 580
539(defun hexl-goto-address (address) 581(defun hexl-goto-address (address)
540 "Go to hexl-mode (decimal) address ADDRESS. 582 "Go to hexl-mode (decimal) address ADDRESS.
@@ -700,7 +742,7 @@ With prefix arg N, puts point N bytes of the way from the true beginning."
700(defun hexl-beginning-of-line () 742(defun hexl-beginning-of-line ()
701 "Goto beginning of line in hexl mode." 743 "Goto beginning of line in hexl mode."
702 (interactive) 744 (interactive)
703 (goto-char (+ (* (/ (point) 68) 68) 11))) 745 (goto-char (+ (* (/ (point) (hexl-line-displen)) (hexl-line-displen)) 11)))
704 746
705(defun hexl-end-of-line () 747(defun hexl-end-of-line ()
706 "Goto end of line in hexl mode." 748 "Goto end of line in hexl mode."
@@ -776,6 +818,17 @@ You may also type octal digits, to insert a character with that code."
776 818
777;00000000: 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF 819;00000000: 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF
778 820
821(defun hexl-options (&optional test)
822 "Combine `hexl-bits' with `hexl-options', altering `hexl-options' as needed
823to produce the command line options to pass to the hexl command."
824 (let ((opts (or test hexl-options)))
825 (when (memq hexl-bits '(8 16 32 64))
826 (when (string-match "\\(.*\\)-group-by-[0-9]+-bits\\(.*\\)" opts)
827 (setq opts (concat (match-string 1 opts)
828 (match-string 2 opts))))
829 (setq opts (format "%s -group-by-%d-bits " opts hexl-bits)) )
830 opts))
831
779;;;###autoload 832;;;###autoload
780(defun hexlify-buffer () 833(defun hexlify-buffer ()
781 "Convert a binary buffer to hexl format. 834 "Convert a binary buffer to hexl format.
@@ -798,7 +851,7 @@ This discards the buffer's undo information."
798 (mapcar (lambda (s) 851 (mapcar (lambda (s)
799 (if (not (multibyte-string-p s)) s 852 (if (not (multibyte-string-p s)) s
800 (encode-coding-string s locale-coding-system))) 853 (encode-coding-string s locale-coding-system)))
801 (split-string hexl-options))) 854 (split-string (hexl-options))))
802 (if (> (point) (hexl-address-to-marker hexl-max-address)) 855 (if (> (point) (hexl-address-to-marker hexl-max-address))
803 (hexl-goto-address hexl-max-address)))) 856 (hexl-goto-address hexl-max-address))))
804 857
@@ -815,7 +868,7 @@ This discards the buffer's undo information."
815 (buffer-undo-list t)) 868 (buffer-undo-list t))
816 (apply 'call-process-region (point-min) (point-max) 869 (apply 'call-process-region (point-min) (point-max)
817 (expand-file-name hexl-program exec-directory) 870 (expand-file-name hexl-program exec-directory)
818 t t nil "-de" (split-string hexl-options)))) 871 t t nil "-de" (split-string (hexl-options)))))
819 872
820(defun hexl-char-after-point () 873(defun hexl-char-after-point ()
821 "Return char for ASCII hex digits at point." 874 "Return char for ASCII hex digits at point."
@@ -911,13 +964,12 @@ CH must be a unibyte character whose value is between 0 and 255."
911 (error "Invalid character 0x%x -- must be in the range [0..255]" ch)) 964 (error "Invalid character 0x%x -- must be in the range [0..255]" ch))
912 (let ((address (hexl-current-address t))) 965 (let ((address (hexl-current-address t)))
913 (while (> num 0) 966 (while (> num 0)
914 (let ((hex-position 967 (let ((hex-position (hexl-address-to-marker address))
915 (+ (* (/ address 16) 68)
916 10 (point-min)
917 (* 2 (% address 16))
918 (/ (% address 16) 2)))
919 (ascii-position 968 (ascii-position
920 (+ (* (/ address 16) 68) 51 (point-min) (% address 16))) 969 (+ (* (/ address 16) (hexl-line-displen))
970 (hexl-ascii-start-column)
971 (point-min)
972 (% address 16)))
921 at-ascii-position) 973 at-ascii-position)
922 (if (= (point) ascii-position) 974 (if (= (point) ascii-position)
923 (setq at-ascii-position t)) 975 (setq at-ascii-position t))
@@ -933,7 +985,7 @@ CH must be a unibyte character whose value is between 0 and 255."
933 (if at-ascii-position 985 (if at-ascii-position
934 (progn 986 (progn
935 (beginning-of-line) 987 (beginning-of-line)
936 (forward-char 51) 988 (forward-char (hexl-ascii-start-column))
937 (forward-char (% address 16))))) 989 (forward-char (% address 16)))))
938 (setq num (1- num))))) 990 (setq num (1- num)))))
939 991
@@ -1041,7 +1093,7 @@ This function is assumed to be used as callback function for `hl-line-mode'."
1041 1093
1042(defun hexl-follow-ascii-find () 1094(defun hexl-follow-ascii-find ()
1043 "Find and highlight the ASCII element corresponding to current point." 1095 "Find and highlight the ASCII element corresponding to current point."
1044 (let ((pos (+ 51 1096 (let ((pos (+ (hexl-ascii-start-column)
1045 (- (point) (current-column)) 1097 (- (point) (current-column))
1046 (mod (hexl-current-address) 16)))) 1098 (mod (hexl-current-address) 16))))
1047 (move-overlay hexl-ascii-overlay pos (1+ pos)) 1099 (move-overlay hexl-ascii-overlay pos (1+ pos))
@@ -1050,7 +1102,7 @@ This function is assumed to be used as callback function for `hl-line-mode'."
1050(defun hexl-mode-ruler () 1102(defun hexl-mode-ruler ()
1051 "Return a string ruler for hexl mode." 1103 "Return a string ruler for hexl mode."
1052 (let* ((highlight (mod (hexl-current-address) 16)) 1104 (let* ((highlight (mod (hexl-current-address) 16))
1053 (s " 87654321 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789abcdef") 1105 (s (cdr (assq hexl-bits hexl-rulers)))
1054 (pos 0)) 1106 (pos 0))
1055 (set-text-properties 0 (length s) nil s) 1107 (set-text-properties 0 (length s) nil s)
1056 ;; Turn spaces in the header into stretch specs so they work 1108 ;; Turn spaces in the header into stretch specs so they work
@@ -1062,12 +1114,12 @@ This function is assumed to be used as callback function for `hl-line-mode'."
1062 `(space :align-to ,(1- pos)) 1114 `(space :align-to ,(1- pos))
1063 s)) 1115 s))
1064 ;; Highlight the current column. 1116 ;; Highlight the current column.
1065 (put-text-property (+ 11 (/ (* 5 highlight) 2)) 1117 (let ( (offset (+ (* 2 highlight) (/ (* 8 highlight) hexl-bits))) )
1066 (+ 13 (/ (* 5 highlight) 2)) 1118 (put-text-property (+ 11 offset) (+ 13 offset) 'face 'highlight s))
1067 'face 'highlight s)
1068 ;; Highlight the current ascii column 1119 ;; Highlight the current ascii column
1069 (put-text-property (+ 13 39 highlight) (+ 13 40 highlight) 1120 (put-text-property (+ (hexl-ascii-start-column) highlight 1)
1070 'face 'highlight s) 1121 (+ (hexl-ascii-start-column) highlight 2)
1122 'face 'highlight s)
1071 s)) 1123 s))
1072 1124
1073;; startup stuff. 1125;; startup stuff.
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 8363956355b..08e6338b39e 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -800,7 +800,17 @@ depending on PATTERNS."
800 (goto-char (point-max)) 800 (goto-char (point-max))
801 (while (and (if (functionp regexp) 801 (while (and (if (functionp regexp)
802 (funcall regexp) 802 (funcall regexp)
803 (re-search-backward regexp nil t)) 803 (and
804 (re-search-backward regexp nil t)
805 ;; Do not count invisible definitions.
806 (let ((invis (invisible-p (point))))
807 (or (not invis)
808 (progn
809 (while (and invis
810 (not (bobp)))
811 (setq invis (not (re-search-backward
812 regexp nil 'move))))
813 (not invis))))))
804 ;; Exit the loop if we get an empty match, 814 ;; Exit the loop if we get an empty match,
805 ;; because it means a bad regexp was specified. 815 ;; because it means a bad regexp was specified.
806 (not (= (match-beginning 0) (match-end 0)))) 816 (not (= (match-beginning 0) (match-end 0))))
@@ -963,7 +973,8 @@ See the command `imenu' for more information."
963 imenu-generic-expression 973 imenu-generic-expression
964 (not (eq imenu-create-index-function 974 (not (eq imenu-create-index-function
965 'imenu-default-create-index-function))) 975 'imenu-default-create-index-function)))
966 (unless (keymapp (lookup-key (current-local-map) [menu-bar index])) 976 (unless (and (current-local-map)
977 (keymapp (lookup-key (current-local-map) [menu-bar index])))
967 (let ((newmap (make-sparse-keymap))) 978 (let ((newmap (make-sparse-keymap)))
968 (set-keymap-parent newmap (current-local-map)) 979 (set-keymap-parent newmap (current-local-map))
969 (setq imenu--last-menubar-index-alist nil) 980 (setq imenu--last-menubar-index-alist nil)
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 1739b1f9ea3..c75ca8106ac 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -576,9 +576,7 @@ with L, LRE, or LRO Unicode bidi character type.")
576 (set-case-syntax-pair from (1+ from) tbl) 576 (set-case-syntax-pair from (1+ from) tbl)
577 (setq from (+ from 2)))))) 577 (setq from (+ from 2))))))
578 578
579 (set-case-syntax-pair #x178 #x0ff tbl) 579 (set-case-syntax-pair ?Ÿ ?ÿ tbl)
580 (set-case-syntax-pair #x189 #x256 tbl)
581 (set-case-syntax-pair #x18A #x257 tbl)
582 580
583 ;; In some languages, such as Turkish, U+0049 LATIN CAPITAL LETTER I 581 ;; In some languages, such as Turkish, U+0049 LATIN CAPITAL LETTER I
584 ;; and U+0131 LATIN SMALL LETTER DOTLESS I make a case pair, and so 582 ;; and U+0131 LATIN SMALL LETTER DOTLESS I make a case pair, and so
@@ -594,6 +592,8 @@ with L, LRE, or LRO Unicode bidi character type.")
594 592
595 (set-case-syntax-pair ?Ɓ ?ɓ tbl) 593 (set-case-syntax-pair ?Ɓ ?ɓ tbl)
596 (set-case-syntax-pair ?Ɔ ?ɔ tbl) 594 (set-case-syntax-pair ?Ɔ ?ɔ tbl)
595 (set-case-syntax-pair ?Ɖ ?ɖ tbl)
596 (set-case-syntax-pair ?Ɗ ?ɗ tbl)
597 (set-case-syntax-pair ?Ǝ ?ǝ tbl) 597 (set-case-syntax-pair ?Ǝ ?ǝ tbl)
598 (set-case-syntax-pair ?Ə ?ə tbl) 598 (set-case-syntax-pair ?Ə ?ə tbl)
599 (set-case-syntax-pair ?Ɛ ?ɛ tbl) 599 (set-case-syntax-pair ?Ɛ ?ɛ tbl)
@@ -622,6 +622,12 @@ with L, LRE, or LRO Unicode bidi character type.")
622 (set-case-syntax-pair ?Dz ?dz tbl) 622 (set-case-syntax-pair ?Dz ?dz tbl)
623 (set-case-syntax-pair ?Ƕ ?ƕ tbl) 623 (set-case-syntax-pair ?Ƕ ?ƕ tbl)
624 (set-case-syntax-pair ?Ƿ ?ƿ tbl) 624 (set-case-syntax-pair ?Ƿ ?ƿ tbl)
625 (set-case-syntax-pair ?Ⱥ ?ⱥ tbl)
626 (set-case-syntax-pair ?Ƚ ?ƚ tbl)
627 (set-case-syntax-pair ?Ⱦ ?ⱦ tbl)
628 (set-case-syntax-pair ?Ƀ ?ƀ tbl)
629 (set-case-syntax-pair ?Ʉ ?ʉ tbl)
630 (set-case-syntax-pair ?Ʌ ?ʌ tbl)
625 631
626 ;; Latin Extended Additional 632 ;; Latin Extended Additional
627 (modify-category-entry '(#x1e00 . #x1ef9) ?l) 633 (modify-category-entry '(#x1e00 . #x1ef9) ?l)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 7bf15009687..1f88df52fd4 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1754,8 +1754,9 @@ functions, so they won't be called at all."
1754 :type '(repeat function)) 1754 :type '(repeat function))
1755 1755
1756(defvar set-auto-coding-for-load nil 1756(defvar set-auto-coding-for-load nil
1757 "Non-nil means look for `load-coding' property instead of `coding'. 1757 "Non-nil means respect a \"unibyte: t\" entry in file local variables.
1758This is used for loading and byte-compiling Emacs Lisp files.") 1758Emacs binds this variable to t when loading or byte-compiling Emacs Lisp
1759files.")
1759 1760
1760(defun auto-coding-alist-lookup (filename) 1761(defun auto-coding-alist-lookup (filename)
1761 "Return the coding system specified by `auto-coding-alist' for FILENAME." 1762 "Return the coding system specified by `auto-coding-alist' for FILENAME."
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index 70e6d4b69cb..4d69e2fdbcb 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -486,19 +486,15 @@ non-Quail commands."
486 (setq translation-keymap (copy-keymap 486 (setq translation-keymap (copy-keymap
487 (if simple quail-simple-translation-keymap 487 (if simple quail-simple-translation-keymap
488 quail-translation-keymap))) 488 quail-translation-keymap)))
489 (while translation-keys 489 (dolist (trans translation-keys)
490 (define-key translation-keymap 490 (define-key translation-keymap (car trans) (cdr trans))))
491 (car (car translation-keys)) (cdr (car translation-keys)))
492 (setq translation-keys (cdr translation-keys))))
493 (setq translation-keymap 491 (setq translation-keymap
494 (if simple quail-simple-translation-keymap 492 (if simple quail-simple-translation-keymap
495 quail-translation-keymap))) 493 quail-translation-keymap)))
496 (when conversion-keys 494 (when conversion-keys
497 (setq conversion-keymap (copy-keymap quail-conversion-keymap)) 495 (setq conversion-keymap (copy-keymap quail-conversion-keymap))
498 (while conversion-keys 496 (dolist (conv conversion-keys)
499 (define-key conversion-keymap 497 (define-key conversion-keymap (car conv) (cdr conv))))
500 (car (car conversion-keys)) (cdr (car conversion-keys)))
501 (setq conversion-keys (cdr conversion-keys))))
502 (quail-add-package 498 (quail-add-package
503 (list name title (list nil) guidance (or docstring "") 499 (list name title (list nil) guidance (or docstring "")
504 translation-keymap 500 translation-keymap
@@ -720,12 +716,11 @@ The command `quail-set-keyboard-layout' usually sets this variable."
720 (setq quail-keyboard-layout-substitution subst-list) 716 (setq quail-keyboard-layout-substitution subst-list)
721 ;; If there are additional key locations, map them to missing 717 ;; If there are additional key locations, map them to missing
722 ;; key locations. 718 ;; key locations.
723 (while missing-list 719 (dolist (missing missing-list)
724 (while (and subst-list (cdr (car subst-list))) 720 (while (and subst-list (cdr (car subst-list)))
725 (setq subst-list (cdr subst-list))) 721 (setq subst-list (cdr subst-list)))
726 (if subst-list 722 (if subst-list
727 (setcdr (car subst-list) (car missing-list))) 723 (setcdr (car subst-list) missing))))))
728 (setq missing-list (cdr missing-list))))))
729 724
730(defcustom quail-keyboard-layout-type "standard" 725(defcustom quail-keyboard-layout-type "standard"
731 "Type of keyboard layout used in Quail base input method. 726 "Type of keyboard layout used in Quail base input method.
@@ -806,9 +801,10 @@ The format of KBD-LAYOUT is the same as `quail-keyboard-layout'."
806 (if translation 801 (if translation
807 (progn 802 (progn
808 (if (consp translation) 803 (if (consp translation)
809 (if (> (length (cdr translation)) 0) 804 (setq translation
810 (setq translation (aref (cdr translation) 0)) 805 (if (> (length (cdr translation)) 0)
811 (setq translation " "))) 806 (aref (cdr translation) 0)
807 " ")))
812 (setq done-list (cons translation done-list))) 808 (setq done-list (cons translation done-list)))
813 (setq translation (aref kbd-layout i))) 809 (setq translation (aref kbd-layout i)))
814 (aset layout i translation)) 810 (aset layout i translation))
@@ -834,17 +830,19 @@ The format of KBD-LAYOUT is the same as `quail-keyboard-layout'."
834 (if (< (if (stringp lower) (string-width lower) (char-width lower)) 2) 830 (if (< (if (stringp lower) (string-width lower) (char-width lower)) 2)
835 (insert " ")) 831 (insert " "))
836 (if (characterp lower) 832 (if (characterp lower)
837 (if (eq (get-char-code-property lower 'general-category) 'Mn) 833 (setq lower
838 ;; Pad the left and right of non-spacing characters. 834 (if (eq (get-char-code-property lower 'general-category) 'Mn)
839 (setq lower (compose-string (string lower) 0 1 835 ;; Pad the left and right of non-spacing characters.
840 (format "\t%c\t" lower))) 836 (compose-string (string lower) 0 1
841 (setq lower (string lower)))) 837 (format "\t%c\t" lower))
838 (string lower))))
842 (if (characterp upper) 839 (if (characterp upper)
843 (if (eq (get-char-code-property upper 'general-category) 'Mn) 840 (setq upper
844 ;; Pad the left and right of non-spacing characters. 841 (if (eq (get-char-code-property upper 'general-category) 'Mn)
845 (setq upper (compose-string (string upper) 0 1 842 ;; Pad the left and right of non-spacing characters.
846 (format "\t%c\t" upper))) 843 (compose-string (string upper) 0 1
847 (setq upper (string upper)))) 844 (format "\t%c\t" upper))
845 (string upper))))
848 (insert (bidi-string-mark-left-to-right lower) 846 (insert (bidi-string-mark-left-to-right lower)
849 (propertize " " 'invisible t) 847 (propertize " " 'invisible t)
850 (bidi-string-mark-left-to-right upper)) 848 (bidi-string-mark-left-to-right upper))
@@ -1032,8 +1030,8 @@ the following annotation types are supported.
1032 (let ((map (list nil)) 1030 (let ((map (list nil))
1033 (decode-map (if (not no-decode-map) (list 'decode-map))) 1031 (decode-map (if (not no-decode-map) (list 'decode-map)))
1034 key trans) 1032 key trans)
1035 (while l 1033 (dolist (el l)
1036 (setq key (car (car l)) trans (car (cdr (car l))) l (cdr l)) 1034 (setq key (car el) trans (car (cdr el)))
1037 (quail-defrule-internal key trans map t decode-map props)) 1035 (quail-defrule-internal key trans map t decode-map props))
1038 `(if (prog1 (quail-decode-map) 1036 `(if (prog1 (quail-decode-map)
1039 (quail-install-map ',map)) 1037 (quail-install-map ',map))
@@ -1201,7 +1199,7 @@ function `quail-define-rules' for the detail."
1201 (if (stringp trans) 1199 (if (stringp trans)
1202 (setq trans (string-to-vector trans)))) 1200 (setq trans (string-to-vector trans))))
1203 (let ((new (quail-vunion prevchars trans))) 1201 (let ((new (quail-vunion prevchars trans)))
1204 (setq trans 1202 (setq trans
1205 (if (equal new prevchars) 1203 (if (equal new prevchars)
1206 ;; Nothing to change, get back to orig value. 1204 ;; Nothing to change, get back to orig value.
1207 prev 1205 prev
@@ -1215,10 +1213,8 @@ where VECTOR is a vector of candidates (character or string) for
1215the translation, and INDEX points into VECTOR to specify the currently 1213the translation, and INDEX points into VECTOR to specify the currently
1216selected translation." 1214selected translation."
1217 (if (and def (symbolp def)) 1215 (if (and def (symbolp def))
1218 (if (functionp def) 1216 ;; DEF is a symbol of a function which returns valid translation.
1219 ;; DEF is a symbol of a function which returns valid translation. 1217 (setq def (if (functionp def) (funcall def key len))))
1220 (setq def (funcall def key len))
1221 (setq def nil)))
1222 (if (and (consp def) (not (vectorp (cdr def)))) 1218 (if (and (consp def) (not (vectorp (cdr def))))
1223 (setq def (car def))) 1219 (setq def (car def)))
1224 1220
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index bcc6a808d22..c7e14ca481b 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1506,7 +1506,7 @@ exit."
1506 (let ((map (make-sparse-keymap))) 1506 (let ((map (make-sparse-keymap)))
1507 ;; FIXME: Only works if completion-in-region-mode was activated via 1507 ;; FIXME: Only works if completion-in-region-mode was activated via
1508 ;; completion-at-point called directly. 1508 ;; completion-at-point called directly.
1509 (define-key map "?" 'completion-help-at-point) 1509 (define-key map "\M-?" 'completion-help-at-point)
1510 (define-key map "\t" 'completion-at-point) 1510 (define-key map "\t" 'completion-at-point)
1511 map) 1511 map)
1512 "Keymap activated during `completion-in-region'.") 1512 "Keymap activated during `completion-in-region'.")
@@ -2045,6 +2045,21 @@ and `read-file-name-function'."
2045 (funcall (or read-file-name-function #'read-file-name-default) 2045 (funcall (or read-file-name-function #'read-file-name-default)
2046 prompt dir default-filename mustmatch initial predicate)) 2046 prompt dir default-filename mustmatch initial predicate))
2047 2047
2048(defvar minibuffer-local-filename-syntax
2049 (let ((table (make-syntax-table))
2050 (punctuation (car (string-to-syntax "."))))
2051 ;; Convert all punctuation entries to symbol.
2052 (map-char-table (lambda (c syntax)
2053 (when (eq (car syntax) punctuation)
2054 (modify-syntax-entry c "_" table)))
2055 table)
2056 (mapc
2057 (lambda (c)
2058 (modify-syntax-entry c "." table))
2059 '(?/ ?: ?\\))
2060 table)
2061 "Syntax table to be used in minibuffer for reading file name.")
2062
2048;; minibuffer-completing-file-name is a variable used internally in minibuf.c 2063;; minibuffer-completing-file-name is a variable used internally in minibuf.c
2049;; to determine whether to use minibuffer-local-filename-completion-map or 2064;; to determine whether to use minibuffer-local-filename-completion-map or
2050;; minibuffer-local-completion-map. It shouldn't be exported to Elisp. 2065;; minibuffer-local-completion-map. It shouldn't be exported to Elisp.
@@ -2113,7 +2128,8 @@ See `read-file-name' for the meaning of the arguments."
2113 (lambda () 2128 (lambda ()
2114 (with-current-buffer 2129 (with-current-buffer
2115 (window-buffer (minibuffer-selected-window)) 2130 (window-buffer (minibuffer-selected-window))
2116 (read-file-name--defaults dir initial))))) 2131 (read-file-name--defaults dir initial))))
2132 (set-syntax-table minibuffer-local-filename-syntax))
2117 (completing-read prompt 'read-file-name-internal 2133 (completing-read prompt 'read-file-name-internal
2118 pred mustmatch insdef 2134 pred mustmatch insdef
2119 'file-name-history default-filename))) 2135 'file-name-history default-filename)))
diff --git a/lisp/misc.el b/lisp/misc.el
index 4706c918db3..cb52ecbd36e 100644
--- a/lisp/misc.el
+++ b/lisp/misc.el
@@ -138,6 +138,19 @@ variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'."
138(defvar list-dynamic-libraries--loaded-only-p) 138(defvar list-dynamic-libraries--loaded-only-p)
139(make-variable-buffer-local 'list-dynamic-libraries--loaded-only-p) 139(make-variable-buffer-local 'list-dynamic-libraries--loaded-only-p)
140 140
141(defun list-dynamic-libraries--loaded (from)
142 "Compute the \"Loaded from\" column.
143Internal use only."
144 (if from
145 (let ((name (car from))
146 (path (or (cdr from) "<unknown>")))
147 ;; This is a roundabout way to change the tooltip without
148 ;; having to replace the default printer function
149 (propertize name
150 'display (propertize name
151 'help-echo (concat "Loaded from: " path))))
152 ""))
153
141(defun list-dynamic-libraries--refresh () 154(defun list-dynamic-libraries--refresh ()
142 "Recompute the list of dynamic libraries. 155 "Recompute the list of dynamic libraries.
143Internal use only." 156Internal use only."
@@ -159,7 +172,7 @@ Internal use only."
159 (when (or from 172 (when (or from
160 (not list-dynamic-libraries--loaded-only-p)) 173 (not list-dynamic-libraries--loaded-only-p))
161 (push (list id (vector (symbol-name id) 174 (push (list id (vector (symbol-name id)
162 (or from "") 175 (list-dynamic-libraries--loaded from)
163 (mapconcat 'identity (cdr lib) ", "))) 176 (mapconcat 'identity (cdr lib) ", ")))
164 tabulated-list-entries))))) 177 tabulated-list-entries)))))
165 178
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 490419a59a8..38ce0b612cc 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -467,7 +467,7 @@ commands reverses the effect of this variable. Requires Netscape version
467 ;; it in anonymous cases. If it's not anonymous the next regexp 467 ;; it in anonymous cases. If it's not anonymous the next regexp
468 ;; applies. 468 ;; applies.
469 ("^/\\([^:@]+@\\)?\\([^:]+\\):/*" . "ftp://\\1\\2/") 469 ("^/\\([^:@]+@\\)?\\([^:]+\\):/*" . "ftp://\\1\\2/")
470 ,@(if (memq system-type '(windows-nt ms-dos cygwin)) 470 ,@(if (memq system-type '(windows-nt ms-dos))
471 '(("^\\([a-zA-Z]:\\)[\\/]" . "file:///\\1/") 471 '(("^\\([a-zA-Z]:\\)[\\/]" . "file:///\\1/")
472 ("^[\\/][\\/]+" . "file://"))) 472 ("^[\\/][\\/]+" . "file://")))
473 ("^/+" . "file:///")) 473 ("^/+" . "file:///"))
@@ -725,12 +725,6 @@ interactively. Turn the filename into a URL with function
725(defun browse-url-file-url (file) 725(defun browse-url-file-url (file)
726 "Return the URL corresponding to FILE. 726 "Return the URL corresponding to FILE.
727Use variable `browse-url-filename-alist' to map filenames to URLs." 727Use variable `browse-url-filename-alist' to map filenames to URLs."
728 ;; De-munge Cygwin filenames before passing them to Windows browser.
729 (if (eq system-type 'cygwin)
730 (let ((winfile (with-output-to-string
731 (call-process "cygpath" nil standard-output
732 nil "-m" file))))
733 (setq file (substring winfile 0 -1))))
734 (let ((coding (and (default-value 'enable-multibyte-characters) 728 (let ((coding (and (default-value 'enable-multibyte-characters)
735 (or file-name-coding-system 729 (or file-name-coding-system
736 default-file-name-coding-system)))) 730 default-file-name-coding-system))))
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 9d7e8664542..485af6e1b5e 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -361,6 +361,14 @@ of a line. The string is passed as the first argument to
361 :type 'string 361 :type 'string
362 :group 'rcirc) 362 :group 'rcirc)
363 363
364(defcustom rcirc-kill-channel-buffers nil
365 "When non-nil, kill channel buffers when the server buffer is killed.
366Only the channel buffers associated with the server in question
367will be killed."
368 :version "24.2"
369 :type 'boolean
370 :group 'rcirc)
371
364(defvar rcirc-nick nil) 372(defvar rcirc-nick nil)
365 373
366(defvar rcirc-prompt-start-marker nil) 374(defvar rcirc-prompt-start-marker nil)
@@ -1088,12 +1096,20 @@ Logfiles are kept in `rcirc-log-directory'."
1088 :group 'rcirc) 1096 :group 'rcirc)
1089 1097
1090(defun rcirc-kill-buffer-hook () 1098(defun rcirc-kill-buffer-hook ()
1091 "Part the channel when killing an rcirc buffer." 1099 "Part the channel when killing an rcirc buffer.
1100
1101If `rcirc-kill-channel-buffers' is non-nil and the killed buffer
1102is a server buffer, kills all of the channel buffers associated
1103with it."
1092 (when (eq major-mode 'rcirc-mode) 1104 (when (eq major-mode 'rcirc-mode)
1093 (when (and rcirc-log-flag 1105 (when (and rcirc-log-flag
1094 rcirc-log-directory) 1106 rcirc-log-directory)
1095 (rcirc-log-write)) 1107 (rcirc-log-write))
1096 (rcirc-clean-up-buffer "Killed buffer"))) 1108 (rcirc-clean-up-buffer "Killed buffer")
1109 (when (and rcirc-buffer-alist ;; it's a server buffer
1110 rcirc-kill-channel-buffers)
1111 (dolist (channel rcirc-buffer-alist)
1112 (kill-buffer (cdr channel))))))
1097 1113
1098(defun rcirc-change-major-mode-hook () 1114(defun rcirc-change-major-mode-hook ()
1099 "Part the channel when changing the major-mode." 1115 "Part the channel when changing the major-mode."
@@ -2165,17 +2181,13 @@ CHANNELS is a comma- or space-separated string of channel names."
2165 (let ((channel (if (> (length channel) 0) channel target))) 2181 (let ((channel (if (> (length channel) 0) channel target)))
2166 (rcirc-send-string process (concat "PART " channel " :" rcirc-id-string)))) 2182 (rcirc-send-string process (concat "PART " channel " :" rcirc-id-string))))
2167 2183
2168(defun-rcirc-command quit (reason all) 2184(defun-rcirc-command quit (reason)
2169 "Send a quit message to server with REASON. 2185 "Send a quit message to server with REASON."
2170When called with prefix, quit all servers." 2186 (interactive "sQuit reason: ")
2171 (interactive "sQuit reason: \nP") 2187 (rcirc-send-string process (concat "QUIT :"
2172 (dolist (p (if all 2188 (if (not (zerop (length reason)))
2173 (rcirc-process-list) 2189 reason
2174 (list process))) 2190 rcirc-id-string))))
2175 (rcirc-send-string p (concat "QUIT :"
2176 (if (not (zerop (length reason)))
2177 reason
2178 rcirc-id-string)))))
2179 2191
2180(defun-rcirc-command nick (nick) 2192(defun-rcirc-command nick (nick)
2181 "Change nick to NICK." 2193 "Change nick to NICK."
diff --git a/lisp/mail/mailpost.el b/lisp/obsolete/mailpost.el
index 7c4bea830d8..158523e8ef2 100644
--- a/lisp/mail/mailpost.el
+++ b/lisp/obsolete/mailpost.el
@@ -9,6 +9,7 @@
9;; Maintainer: FSF 9;; Maintainer: FSF
10;; Created: 13 Jan 1986 10;; Created: 13 Jan 1986
11;; Keywords: mail 11;; Keywords: mail
12;; Obsolete-since: 24.2
12 13
13;;; Commentary: 14;;; Commentary:
14 15
diff --git a/lisp/mouse-sel.el b/lisp/obsolete/mouse-sel.el
index 773302246dc..45396d30ea5 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/obsolete/mouse-sel.el
@@ -4,6 +4,7 @@
4 4
5;; Author: Mike Williams <mdub@bigfoot.com> 5;; Author: Mike Williams <mdub@bigfoot.com>
6;; Keywords: mouse 6;; Keywords: mouse
7;; Obsolete-since: 24.2
7 8
8;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
9 10
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 618d5753a46..86f493a0a5b 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,49 @@
12012-04-14 Bastien Guerry <bzg@gnu.org>
2
3 * org.el (org-point-at-end-of-empty-headline): Only try to match
4 `org-todo-line-regexp' when the value is non-nil, e.g. in non-org
5 modes.
6 (org-fontify-meta-lines-and-blocks-1): Prevent errors when trying
7 to fontify beyond (point-max).
8
9 * org-clock.el (org-clock-task-overrun-text)
10 (org-task-overrun, org-clock-get-clock-string)
11 (org-clock-update-mode-line)
12 (org-clock-notify-once-if-expired): Rename `org-task-overrun'
13 and `org-task-overrun-text' to `org-clock-task-overrun' and
14 `org-clock-task-overrun-text' respectively.
15 (org-task-overrun-text): New alias.
16
17 * org-table.el (org-table-eval-formula): Fix bug about handling
18 remote references as durations.
19 (org-table-get-range): Fix bug: make sure references to $0 are
20 correctly handled.
21
22 * org-pcomplete.el (pcomplete/org-mode/file-option):
23 Fix bug in `pcomplete/org-mode/file-option'.
24 (org-thing-at-point): Also match line options like LATEX_CLASS
25 when pcompleting from LATEX_.
26
27 * org-agenda.el (org-agenda-filter-make-matcher)
28 (org-agenda-filter-apply): Allow filtering entries out by
29 category. Using `C-u <' from the agenda view will redisplay
30 the agenda without entries from categories of the current line.
31
322012-04-14 Eric Schulte <eric.schulte@gmx.com>
33
34 * ob-C.el (org-babel-C-ensure-main-wrap):
35 Add an explicit return to automatically generated main methods.
36
372012-04-14 Matt Lundin <mdl@imapmail.org>
38
39 * org.el (org-after-todo-state-change-hook):
40 Fix docstring to reflect name change of state to `org-state'.
41
422012-04-14 Mike Sperber <sperber@deinprogramm.de> (tiny change)
43
44 * org-footnote.el (org-footnote-normalize):
45 Correctly pass keyword arguments to `org-export-preprocess-string'.
46
12012-04-03 Bastien Guerry <bzg@gnu.org> 472012-04-03 Bastien Guerry <bzg@gnu.org>
2 48
3 * org.el (org-todo): Fix regression: rename `state' to 49 * org.el (org-todo): Fix regression: rename `state' to
diff --git a/lisp/org/ob-C.el b/lisp/org/ob-C.el
index 5f6c1cb1dd1..583510ac618 100644
--- a/lisp/org/ob-C.el
+++ b/lisp/org/ob-C.el
@@ -152,7 +152,7 @@ it's header arguments."
152 "Wrap body in a \"main\" function call if none exists." 152 "Wrap body in a \"main\" function call if none exists."
153 (if (string-match "^[ \t]*[intvod]+[ \t\n\r]*main[ \t]*(.*)" body) 153 (if (string-match "^[ \t]*[intvod]+[ \t\n\r]*main[ \t]*(.*)" body)
154 body 154 body
155 (format "int main() {\n%s\n}\n" body))) 155 (format "int main() {\n%s\nreturn(0);\n}\n" body)))
156 156
157(defun org-babel-prep-session:C (session params) 157(defun org-babel-prep-session:C (session params)
158 "This function does nothing as C is a compiled language with no 158 "This function does nothing as C is a compiled language with no
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 324ddd27f9a..3bb0fc84897 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -6365,7 +6365,9 @@ to switch to narrowing."
6365 (dolist (x (delete-dups 6365 (dolist (x (delete-dups
6366 (append (get 'org-agenda-category-filter 6366 (append (get 'org-agenda-category-filter
6367 :preset-filter) org-agenda-category-filter))) 6367 :preset-filter) org-agenda-category-filter)))
6368 (setq f1 (list 'equal (substring x 1) 'cat)) 6368 (if (equal "-" (substring x 0 1))
6369 (setq f1 (list 'not (list 'equal (substring x 1) 'cat)))
6370 (setq f1 (list 'equal (substring x 1) 'cat)))
6369 (push f1 f)) 6371 (push f1 f))
6370 (cons 'and (nreverse f)))) 6372 (cons 'and (nreverse f))))
6371 6373
@@ -6396,9 +6398,13 @@ If the line does not have an effort defined, return nil."
6396 (let (tags cat) 6398 (let (tags cat)
6397 (if (eq type 'tag) 6399 (if (eq type 'tag)
6398 (setq org-agenda-tag-filter filter) 6400 (setq org-agenda-tag-filter filter)
6399 (setq org-agenda-category-filter filter 6401 (setq org-agenda-category-filter filter))
6400 org-agenda-filtered-by-category t))
6401 (setq org-agenda-filter-form (org-agenda-filter-make-matcher)) 6402 (setq org-agenda-filter-form (org-agenda-filter-make-matcher))
6403 (if (and (eq type 'category)
6404 (not (equal (substring (car filter) 0 1) "-")))
6405 ;; Only set `org-agenda-filtered-by-category' to t
6406 ;; when a unique category is used as the filter
6407 (setq org-agenda-filtered-by-category t))
6402 (org-agenda-set-mode-name) 6408 (org-agenda-set-mode-name)
6403 (save-excursion 6409 (save-excursion
6404 (goto-char (point-min)) 6410 (goto-char (point-min))
@@ -6412,7 +6418,7 @@ If the line does not have an effort defined, return nil."
6412 (beginning-of-line 2)) 6418 (beginning-of-line 2))
6413 (beginning-of-line 2)))) 6419 (beginning-of-line 2))))
6414 (if (get-char-property (point) 'invisible) 6420 (if (get-char-property (point) 'invisible)
6415 (org-agenda-previous-line)))) 6421 (ignore-errors (org-agenda-previous-line)))))
6416 6422
6417(defun org-agenda-filter-hide-line (type) 6423(defun org-agenda-filter-hide-line (type)
6418 (let (ov) 6424 (let (ov)
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 7105bfe13dc..434f6a1d5f6 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -219,7 +219,8 @@ auto Automatically, either `all', or `repeat' for repeating tasks"
219 (const :tag "All task time" all) 219 (const :tag "All task time" all)
220 (const :tag "Automatically, `all' or since `repeat'" auto))) 220 (const :tag "Automatically, `all' or since `repeat'" auto)))
221 221
222(defcustom org-task-overrun-text nil 222(defvaralias 'org-task-overrun-text 'org-clock-task-overrun-text)
223(defcustom org-clock-task-overrun-text nil
223 "The extra modeline text that should indicate that the clock is overrun. 224 "The extra modeline text that should indicate that the clock is overrun.
224The can be nil to indicate that instead of adding text, the clock time 225The can be nil to indicate that instead of adding text, the clock time
225should get a different face (`org-mode-line-clock-overrun'). 226should get a different face (`org-mode-line-clock-overrun').
@@ -495,7 +496,7 @@ pointing to it."
495 (insert (format "[%c] %-15s %s\n" i cat task)) 496 (insert (format "[%c] %-15s %s\n" i cat task))
496 (cons i marker))))) 497 (cons i marker)))))
497 498
498(defvar org-task-overrun nil 499(defvar org-clock-task-overrun nil
499 "Internal flag indicating if the clock has overrun the planned time.") 500 "Internal flag indicating if the clock has overrun the planned time.")
500(defvar org-clock-update-period 60 501(defvar org-clock-update-period 60
501 "Number of seconds between mode line clock string updates.") 502 "Number of seconds between mode line clock string updates.")
@@ -516,7 +517,7 @@ If not, show simply the clocked time like 01:50."
516 (work-done-str 517 (work-done-str
517 (org-propertize 518 (org-propertize
518 (format org-time-clocksum-format h m) 519 (format org-time-clocksum-format h m)
519 'face (if (and org-task-overrun (not org-task-overrun-text)) 520 'face (if (and org-clock-task-overrun (not org-clock-task-overrun-text))
520 'org-mode-line-clock-overrun 'org-mode-line-clock))) 521 'org-mode-line-clock-overrun 'org-mode-line-clock)))
521 (effort-str (format org-time-clocksum-format effort-h effort-m)) 522 (effort-str (format org-time-clocksum-format effort-h effort-m))
522 (clockstr (org-propertize 523 (clockstr (org-propertize
@@ -532,7 +533,7 @@ If not, show simply the clocked time like 01:50."
532(defun org-clock-update-mode-line () 533(defun org-clock-update-mode-line ()
533 (if org-clock-effort 534 (if org-clock-effort
534 (org-clock-notify-once-if-expired) 535 (org-clock-notify-once-if-expired)
535 (setq org-task-overrun nil)) 536 (setq org-clock-task-overrun nil))
536 (setq org-mode-line-string 537 (setq org-mode-line-string
537 (org-propertize 538 (org-propertize
538 (let ((clock-string (org-clock-get-clock-string)) 539 (let ((clock-string (org-clock-get-clock-string))
@@ -546,10 +547,10 @@ If not, show simply the clocked time like 01:50."
546 'local-map org-clock-mode-line-map 547 'local-map org-clock-mode-line-map
547 'mouse-face (if (featurep 'xemacs) 'highlight 'mode-line-highlight) 548 'mouse-face (if (featurep 'xemacs) 'highlight 'mode-line-highlight)
548 )) 549 ))
549 (if (and org-task-overrun org-task-overrun-text) 550 (if (and org-clock-task-overrun org-clock-task-overrun-text)
550 (setq org-mode-line-string 551 (setq org-mode-line-string
551 (concat (org-propertize 552 (concat (org-propertize
552 org-task-overrun-text 553 org-clock-task-overrun-text
553 'face 'org-mode-line-clock-overrun) org-mode-line-string))) 554 'face 'org-mode-line-clock-overrun) org-mode-line-string)))
554 (force-mode-line-update)) 555 (force-mode-line-update))
555 556
@@ -606,7 +607,7 @@ Notification is shown only once."
606 (when (org-clocking-p) 607 (when (org-clocking-p)
607 (let ((effort-in-minutes (org-duration-string-to-minutes org-clock-effort)) 608 (let ((effort-in-minutes (org-duration-string-to-minutes org-clock-effort))
608 (clocked-time (org-clock-get-clocked-time))) 609 (clocked-time (org-clock-get-clocked-time)))
609 (if (setq org-task-overrun 610 (if (setq org-clock-task-overrun
610 (if (or (null effort-in-minutes) (zerop effort-in-minutes)) 611 (if (or (null effort-in-minutes) (zerop effort-in-minutes))
611 nil 612 nil
612 (>= clocked-time effort-in-minutes))) 613 (>= clocked-time effort-in-minutes)))
diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el
index 34fc31f39d6..9319e0813c0 100644
--- a/lisp/org/org-footnote.el
+++ b/lisp/org/org-footnote.el
@@ -704,7 +704,7 @@ Additional note on `org-footnote-insert-pos-for-preprocessor':
704 (org-combine-plists 704 (org-combine-plists
705 export-props 705 export-props
706 '(:todo-keywords t :tags t :priority t)))) 706 '(:todo-keywords t :tags t :priority t))))
707 (org-export-preprocess-string def parameters)) 707 (apply #'org-export-preprocess-string def parameters))
708 def) 708 def)
709 ;; Reference beginning position is a marker 709 ;; Reference beginning position is a marker
710 ;; to preserve it during further buffer 710 ;; to preserve it during further buffer
diff --git a/lisp/org/org-pcomplete.el b/lisp/org/org-pcomplete.el
index 0ca8777878c..5950d8e26da 100644
--- a/lisp/org/org-pcomplete.el
+++ b/lisp/org/org-pcomplete.el
@@ -69,7 +69,7 @@ The return value is a string naming the thing at point."
69 (re-search-backward "^[ \t]*#\\+\\([A-Z_]+\\):.*" 69 (re-search-backward "^[ \t]*#\\+\\([A-Z_]+\\):.*"
70 (line-beginning-position) t)) 70 (line-beginning-position) t))
71 (cons "file-option" (match-string-no-properties 1))) 71 (cons "file-option" (match-string-no-properties 1)))
72 ((string-match "\\`[ \t]*#\\+[a-zA-Z]*\\'" line-to-here) 72 ((string-match "\\`[ \t]*#\\+[a-zA-Z_]*\\'" line-to-here)
73 (cons "file-option" nil)) 73 (cons "file-option" nil))
74 ((equal (char-before beg) ?\[) 74 ((equal (char-before beg) ?\[)
75 (cons "link" nil)) 75 (cons "link" nil))
@@ -144,7 +144,7 @@ When completing for #+STARTUP, for example, this function returns
144 (if (string-match "^#\\+\\([A-Z_]+:?\\)" x) 144 (if (string-match "^#\\+\\([A-Z_]+:?\\)" x)
145 (match-string 1 x))) 145 (match-string 1 x)))
146 (org-split-string (org-get-current-options) "\n")) 146 (org-split-string (org-get-current-options) "\n"))
147 org-additional-option-like-keywords))))) 147 (copy-sequence org-additional-option-like-keywords))))))
148 (substring pcomplete-stub 2))) 148 (substring pcomplete-stub 2)))
149 149
150(defvar org-startup-options) 150(defvar org-startup-options)
diff --git a/lisp/org/org-special-blocks.el b/lisp/org/org-special-blocks.el
index 5bf8362357f..43b37c64016 100644
--- a/lisp/org/org-special-blocks.el
+++ b/lisp/org/org-special-blocks.el
@@ -80,17 +80,17 @@ seen. This is run after a few special cases are taken care of."
80(add-hook 'org-export-latex-after-blockquotes-hook 80(add-hook 'org-export-latex-after-blockquotes-hook
81 'org-special-blocks-convert-latex-special-cookies) 81 'org-special-blocks-convert-latex-special-cookies)
82 82
83(defvar org-special-blocks-line) 83(defvar line)
84(defun org-special-blocks-convert-html-special-cookies () 84(defun org-special-blocks-convert-html-special-cookies ()
85 "Converts the special cookies into div blocks." 85 "Converts the special cookies into div blocks."
86 ;; Uses the dynamically-bound variable `org-special-blocks-line'. 86 ;; Uses the dynamically-bound variable `line'.
87 (when (string-match "^ORG-\\(.*\\)-\\(START\\|END\\)$" org-special-blocks-line) 87 (when (string-match "^ORG-\\(.*\\)-\\(START\\|END\\)$" line)
88 (message "%s" (match-string 1)) 88 (message "%s" (match-string 1))
89 (when (equal (match-string 2 org-special-blocks-line) "START") 89 (when (equal (match-string 2 line) "START")
90 (org-close-par-maybe) 90 (org-close-par-maybe)
91 (insert "\n<div class=\"" (match-string 1 org-special-blocks-line) "\">") 91 (insert "\n<div class=\"" (match-string 1 line) "\">")
92 (org-open-par)) 92 (org-open-par))
93 (when (equal (match-string 2 org-special-blocks-line) "END") 93 (when (equal (match-string 2 line) "END")
94 (org-close-par-maybe) 94 (org-close-par-maybe)
95 (insert "\n</div>") 95 (insert "\n</div>")
96 (org-open-par)) 96 (org-open-par))
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index ae12cee2abe..08981b57e49 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -2526,8 +2526,13 @@ not overwrite the stored one."
2526 (replace-match 2526 (replace-match
2527 (save-match-data 2527 (save-match-data
2528 (org-table-make-reference 2528 (org-table-make-reference
2529 (org-table-get-remote-range 2529 (let ((rmtrng (org-table-get-remote-range
2530 (match-string 1 form) (match-string 2 form)) 2530 (match-string 1 form) (match-string 2 form))))
2531 (if duration
2532 (if (listp rmtrng)
2533 (mapcar (lambda(x) (org-table-time-string-to-seconds x)) rmtrng)
2534 (org-table-time-string-to-seconds rmtrng))
2535 rmtrng))
2531 keep-empty numbers lispp)) 2536 keep-empty numbers lispp))
2532 t t form))) 2537 t t form)))
2533 ;; Insert complex ranges 2538 ;; Insert complex ranges
@@ -2663,8 +2668,8 @@ in the buffer and column1 and column2 are table column numbers."
2663; (setq r2 (or r2 r1) c2 (or c2 c1)) 2668; (setq r2 (or r2 r1) c2 (or c2 c1))
2664 (if (not r1) (setq r1 thisline)) 2669 (if (not r1) (setq r1 thisline))
2665 (if (not r2) (setq r2 thisline)) 2670 (if (not r2) (setq r2 thisline))
2666 (if (not c1) (setq c1 col)) 2671 (if (or (not c1) (= 0 c1)) (setq c1 col))
2667 (if (not c2) (setq c2 col)) 2672 (if (or (not c2) (= 0 c2)) (setq c2 col))
2668 (if (and (not corners-only) 2673 (if (and (not corners-only)
2669 (or (not rangep) (and (= r1 r2) (= c1 c2)))) 2674 (or (not rangep) (and (= r1 r2) (= c1 c2))))
2670 ;; just one field 2675 ;; just one field
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 0f13223d0c1..c2cc2354439 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -6,7 +6,7 @@
6;; Maintainer: Bastien Guerry <bzg at gnu dot org> 6;; Maintainer: Bastien Guerry <bzg at gnu dot org>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: http://orgmode.org
9;; Version: 7.8.08 9;; Version: 7.8.09
10;; 10;;
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12;; 12;;
@@ -206,7 +206,7 @@ identifier."
206 206
207;;; Version 207;;; Version
208 208
209(defconst org-version "7.8.08" 209(defconst org-version "7.8.09"
210 "The version number of the file org.el.") 210 "The version number of the file org.el.")
211 211
212;;;###autoload 212;;;###autoload
@@ -2225,7 +2225,7 @@ property and include the word \"recursive\" into the value."
2225(defcustom org-after-todo-state-change-hook nil 2225(defcustom org-after-todo-state-change-hook nil
2226 "Hook which is run after the state of a TODO item was changed. 2226 "Hook which is run after the state of a TODO item was changed.
2227The new state (a string with a TODO keyword, or nil) is available in the 2227The new state (a string with a TODO keyword, or nil) is available in the
2228Lisp variable `state'." 2228Lisp variable `org-state'."
2229 :group 'org-todo 2229 :group 'org-todo
2230 :type 'hook) 2230 :type 'hook)
2231 2231
@@ -5427,7 +5427,8 @@ will be prompted for."
5427 (when (re-search-forward 5427 (when (re-search-forward
5428 (concat "^[ \t]*#\\+end" (match-string 4) "\\>.*") 5428 (concat "^[ \t]*#\\+end" (match-string 4) "\\>.*")
5429 nil t) ;; on purpose, we look further than LIMIT 5429 nil t) ;; on purpose, we look further than LIMIT
5430 (setq end (match-end 0) end1 (1- (match-beginning 0))) 5430 (setq end (min (point-max) (match-end 0))
5431 end1 (min (point-max) (1- (match-beginning 0))))
5431 (setq block-end (match-beginning 0)) 5432 (setq block-end (match-beginning 0))
5432 (when quoting 5433 (when quoting
5433 (remove-text-properties beg end 5434 (remove-text-properties beg end
@@ -5455,11 +5456,12 @@ will be prompted for."
5455 '(face org-block))) ; end of source block 5456 '(face org-block))) ; end of source block
5456 ((not org-fontify-quote-and-verse-blocks)) 5457 ((not org-fontify-quote-and-verse-blocks))
5457 ((string= block-type "quote") 5458 ((string= block-type "quote")
5458 (add-text-properties beg1 (1+ end1) '(face org-quote))) 5459 (add-text-properties beg1 (min (point-max) (1+ end1)) '(face org-quote)))
5459 ((string= block-type "verse") 5460 ((string= block-type "verse")
5460 (add-text-properties beg1 (1+ end1) '(face org-verse)))) 5461 (add-text-properties beg1 (min (point-max) (1+ end1)) '(face org-verse))))
5461 (add-text-properties beg beg1 '(face org-block-begin-line)) 5462 (add-text-properties beg beg1 '(face org-block-begin-line))
5462 (add-text-properties (1+ end) (1+ end1) '(face org-block-end-line)) 5463 (add-text-properties (min (point-max) (1+ end)) (min (point-max) (1+ end1))
5464 '(face org-block-end-line))
5463 t)) 5465 t))
5464 ((member dc1 '("title:" "author:" "email:" "date:")) 5466 ((member dc1 '("title:" "author:" "email:" "date:"))
5465 (add-text-properties 5467 (add-text-properties
@@ -5475,7 +5477,7 @@ will be prompted for."
5475 ((not (member (char-after beg) '(?\ ?\t))) 5477 ((not (member (char-after beg) '(?\ ?\t)))
5476 ;; just any other in-buffer setting, but not indented 5478 ;; just any other in-buffer setting, but not indented
5477 (add-text-properties 5479 (add-text-properties
5478 beg (1+ (match-end 0)) 5480 beg (match-end 0)
5479 '(font-lock-fontified t face org-meta-line)) 5481 '(font-lock-fontified t face org-meta-line))
5480 t) 5482 t)
5481 ((or (member dc1 '("begin:" "end:" "caption:" "label:" 5483 ((or (member dc1 '("begin:" "end:" "caption:" "label:"
@@ -13422,8 +13424,7 @@ With prefix ARG, realign all tags in headings in the current buffer."
13422 ;; Get a new set of tags from the user 13424 ;; Get a new set of tags from the user
13423 (save-excursion 13425 (save-excursion
13424 (setq table (append org-tag-persistent-alist 13426 (setq table (append org-tag-persistent-alist
13425 org-tag-alist 13427 (or org-tag-alist (org-get-buffer-tags))
13426 (org-get-buffer-tags)
13427 (and 13428 (and
13428 org-complete-tags-always-offer-all-agenda-tags 13429 org-complete-tags-always-offer-all-agenda-tags
13429 (org-global-tags-completion-table 13430 (org-global-tags-completion-table
@@ -13725,11 +13726,9 @@ Returns the new tags string, or nil to not change the current settings."
13725 (condition-case nil 13726 (condition-case nil
13726 (setq tg (org-icompleting-read 13727 (setq tg (org-icompleting-read
13727 "Tag: " 13728 "Tag: "
13728 (delete-dups 13729 (or buffer-tags
13729 (append (or buffer-tags 13730 (with-current-buffer buf
13730 (with-current-buffer buf 13731 (org-get-buffer-tags)))))
13731 (mapcar 'car (org-get-buffer-tags))))
13732 (mapcar 'car table)))))
13733 (quit (setq tg ""))) 13732 (quit (setq tg "")))
13734 (when (string-match "\\S-" tg) 13733 (when (string-match "\\S-" tg)
13735 (add-to-list 'buffer-tags (list tg)) 13734 (add-to-list 'buffer-tags (list tg))
@@ -20775,11 +20774,12 @@ This version does not only check the character property, but also
20775If the heading only contains a TODO keyword, it is still still considered 20774If the heading only contains a TODO keyword, it is still still considered
20776empty." 20775empty."
20777 (and (looking-at "[ \t]*$") 20776 (and (looking-at "[ \t]*$")
20778 (save-excursion 20777 (when org-todo-line-regexp
20779 (beginning-of-line 1) 20778 (save-excursion
20780 (let ((case-fold-search nil)) 20779 (beginning-of-line 1)
20781 (looking-at org-todo-line-regexp))) 20780 (let ((case-fold-search nil))
20782 (string= (match-string 3) ""))) 20781 (looking-at org-todo-line-regexp)
20782 (string= (match-string 3) ""))))))
20783 20783
20784(defun org-at-heading-or-item-p () 20784(defun org-at-heading-or-item-p ()
20785 (or (org-at-heading-p) (org-at-item-p))) 20785 (or (org-at-heading-p) (org-at-item-p)))
diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el
index 8019b876562..f28469d791b 100644
--- a/lisp/pcmpl-rpm.el
+++ b/lisp/pcmpl-rpm.el
@@ -1,6 +1,6 @@
1;;; pcmpl-rpm.el --- functions for dealing with rpm completions 1;;; pcmpl-rpm.el --- functions for dealing with rpm completions
2 2
3;; Copyright (C) 1999-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1999-2012 Free Software Foundation, Inc.
4 4
5;; Package: pcomplete 5;; Package: pcomplete
6 6
@@ -29,6 +29,13 @@
29 29
30;; Functions: 30;; Functions:
31 31
32;; FIXME rpm -qa can be slow, so:
33;; Adding --nodigest --nosignature is MUCH faster.
34;; (Probably need to test --help for those options though.)
35;; Consider caching the result (cf woman).
36;; Consider printing an explanatory message before running -qa.
37;;
38;; Seems pointless for this to be a defsubst.
32(defsubst pcmpl-rpm-packages () 39(defsubst pcmpl-rpm-packages ()
33 (split-string (pcomplete-process-result "rpm" "-q" "-a"))) 40 (split-string (pcomplete-process-result "rpm" "-q" "-a")))
34 41
@@ -92,6 +99,7 @@
92 '("--changelog" 99 '("--changelog"
93 "--dbpath" 100 "--dbpath"
94 "--dump" 101 "--dump"
102 "--file"
95 "--ftpport" ;nyi for the next four 103 "--ftpport" ;nyi for the next four
96 "--ftpproxy" 104 "--ftpproxy"
97 "--httpport" 105 "--httpport"
@@ -112,6 +120,8 @@
112 (pcomplete-here*)) 120 (pcomplete-here*))
113 ((pcomplete-test "--rcfile") 121 ((pcomplete-test "--rcfile")
114 (pcomplete-here* (pcomplete-entries))) 122 (pcomplete-here* (pcomplete-entries)))
123 ((pcomplete-test "--file")
124 (pcomplete-here* (pcomplete-entries)))
115 ((pcomplete-test "--root") 125 ((pcomplete-test "--root")
116 (pcomplete-here* (pcomplete-dirs))) 126 (pcomplete-here* (pcomplete-dirs)))
117 ((pcomplete-test "--scripts") 127 ((pcomplete-test "--scripts")
@@ -129,7 +139,9 @@
129 (pcomplete-opt "af.p(pcmpl-rpm-files)ilsdcvR") 139 (pcomplete-opt "af.p(pcmpl-rpm-files)ilsdcvR")
130 (if (pcomplete-test "-[^-]*p" 'first 1) 140 (if (pcomplete-test "-[^-]*p" 'first 1)
131 (pcomplete-here (pcmpl-rpm-files)) 141 (pcomplete-here (pcmpl-rpm-files))
132 (pcomplete-here (pcmpl-rpm-packages)))))) 142 (if (pcomplete-test "-[^-]*f" 'first 1)
143 (pcomplete-here* (pcomplete-entries))
144 (pcomplete-here (pcmpl-rpm-packages)))))))
133 ((pcomplete-test "--pipe") 145 ((pcomplete-test "--pipe")
134 (pcomplete-here* (funcall pcomplete-command-completion-function))) 146 (pcomplete-here* (funcall pcomplete-command-completion-function)))
135 ((pcomplete-test "--rmsource") 147 ((pcomplete-test "--rmsource")
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index cf38001c123..65e28c11e21 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -5382,7 +5382,7 @@ comment at the start of cc-engine.el for more info."
5382 new-beg new-end need-new-beg need-new-end) 5382 new-beg new-end need-new-beg need-new-end)
5383 ;; Locate the barrier before the changed region 5383 ;; Locate the barrier before the changed region
5384 (goto-char (if beg-lit-limits (car beg-lit-limits) beg)) 5384 (goto-char (if beg-lit-limits (car beg-lit-limits) beg))
5385 (c-syntactic-skip-backward "^;{}" (max (- beg 2048) (point-min))) 5385 (c-syntactic-skip-backward "^;{}" (c-determine-limit 512))
5386 (setq new-beg (point)) 5386 (setq new-beg (point))
5387 5387
5388 ;; Remove the syntax-table properties from each pertinent <...> pair. 5388 ;; Remove the syntax-table properties from each pertinent <...> pair.
@@ -5393,8 +5393,7 @@ comment at the start of cc-engine.el for more info."
5393 5393
5394 ;; Locate the barrier after END. 5394 ;; Locate the barrier after END.
5395 (goto-char (if end-lit-limits (cdr end-lit-limits) end)) 5395 (goto-char (if end-lit-limits (cdr end-lit-limits) end))
5396 (c-syntactic-re-search-forward "[;{}]" 5396 (c-syntactic-re-search-forward "[;{}]" (c-determine-+ve-limit 512) 'end)
5397 (min (+ end 2048) (point-max)) 'end)
5398 (setq new-end (point)) 5397 (setq new-end (point))
5399 5398
5400 ;; Remove syntax-table properties from the remaining pertinent <...> 5399 ;; Remove syntax-table properties from the remaining pertinent <...>
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el
index f57fcbff5ca..a53d65f6307 100644
--- a/lisp/progmodes/cc-menus.el
+++ b/lisp/progmodes/cc-menus.el
@@ -63,6 +63,20 @@ For example:
63 63
64A sample value might look like: `\\(_P\\|_PROTO\\)'.") 64A sample value might look like: `\\(_P\\|_PROTO\\)'.")
65 65
66;; *Warning for cc-mode developers*
67;;
68;; `cc-imenu-objc-generic-expression' elements depend on
69;; `cc-imenu-c++-generic-expression'. So if you change this
70;; expression, you need to change following variables,
71;; `cc-imenu-objc-generic-expression-*-index',
72;; too. `cc-imenu-objc-function' uses these *-index variables, in
73;; order to know where the each regexp *group \\(foobar\\)* elements
74;; are started.
75;;
76;; *-index variables are initialized during `cc-imenu-objc-generic-expression'
77;; being initialized.
78;;
79
66(defvar cc-imenu-c++-generic-expression 80(defvar cc-imenu-c++-generic-expression
67 `( 81 `(
68 ;; Try to match ::operator definitions first. Otherwise `X::operator new ()' 82 ;; Try to match ::operator definitions first. Otherwise `X::operator new ()'
@@ -187,23 +201,8 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
187 ")" 201 ")"
188 "[.," c-alnum " \t\n\r]*" 202 "[.," c-alnum " \t\n\r]*"
189 "{" 203 "{"
190 )) 1)) 204 )) 1))
191 "Imenu generic expression for Java mode. See 205 "Imenu generic expression for Java mode. See `imenu-generic-expression'.")
192`imenu-generic-expression'.")
193
194;; *Warning for cc-mode developers*
195;;
196;; `cc-imenu-objc-generic-expression' elements depend on
197;; `cc-imenu-c++-generic-expression'. So if you change this
198;; expression, you need to change following variables,
199;; `cc-imenu-objc-generic-expression-*-index',
200;; too. `cc-imenu-objc-function' uses these *-index variables, in
201;; order to know where the each regexp *group \\(foobar\\)* elements
202;; are started.
203;;
204;; *-index variables are initialized during `cc-imenu-objc-generic-expression'
205;; being initialized.
206;;
207 206
208;; Internal variables 207;; Internal variables
209(defvar cc-imenu-objc-generic-expression-noreturn-index nil) 208(defvar cc-imenu-objc-generic-expression-noreturn-index nil)
@@ -224,7 +223,7 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
224 "\\|" 223 "\\|"
225 ;; > General function name regexp 224 ;; > General function name regexp
226 ;; Pick a token by (match-string 3) 225 ;; Pick a token by (match-string 3)
227 (car (cdr (nth 2 cc-imenu-c++-generic-expression))) ; -> index += 5 226 (car (cdr (nth 2 cc-imenu-c++-generic-expression))) ; -> index += 6
228 (prog2 (setq cc-imenu-objc-generic-expression-general-func-index 3) "") 227 (prog2 (setq cc-imenu-objc-generic-expression-general-func-index 3) "")
229 ;; > Special case for definitions using phony prototype macros like: 228 ;; > Special case for definitions using phony prototype macros like:
230 ;; > `int main _PROTO( (int argc,char *argv[]) )'. 229 ;; > `int main _PROTO( (int argc,char *argv[]) )'.
@@ -233,11 +232,11 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
233 (concat 232 (concat
234 "\\|" 233 "\\|"
235 (car (cdr (nth 3 cc-imenu-c++-generic-expression))) ; -> index += 1 234 (car (cdr (nth 3 cc-imenu-c++-generic-expression))) ; -> index += 1
236 (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 9) "") 235 (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 10) "")
237 ) 236 )
238 (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 8) "") 237 (prog2 (setq cc-imenu-objc-generic-expression-objc-base-index 9) "")
239 "") ; -> index += 0 238 "") ; -> index += 0
240 (prog2 (setq cc-imenu-objc-generic-expression-proto-index 8) "") 239 (prog2 (setq cc-imenu-objc-generic-expression-proto-index 9) "")
241 ;; 240 ;;
242 ;; For Objective-C 241 ;; For Objective-C
243 ;; Pick a token by (match-string 8 or 9) 242 ;; Pick a token by (match-string 8 or 9)
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 07393c6954d..ed8eb81932e 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1356,8 +1356,12 @@ if ARG is omitted or nil."
1356 (setq flymake-timer 1356 (setq flymake-timer
1357 (run-at-time nil 1 'flymake-on-timer-event (current-buffer))) 1357 (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
1358 1358
1359 (when flymake-start-syntax-check-on-find-file 1359 (when (and flymake-start-syntax-check-on-find-file
1360 (flymake-start-syntax-check))))) 1360 ;; Since we write temp files in current dir, there's no point
1361 ;; trying if the directory is read-only (bug#8954).
1362 (file-writable-p (file-name-directory buffer-file-name)))
1363 (with-demoted-errors
1364 (flymake-start-syntax-check))))))
1361 1365
1362 ;; Turning the mode OFF. 1366 ;; Turning the mode OFF.
1363 (t 1367 (t
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index d41364547f2..569e864a1c6 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -1024,7 +1024,8 @@ to specify a command to run."
1024 (shell-quote-argument ")") 1024 (shell-quote-argument ")")
1025 " -prune -o ")) 1025 " -prune -o "))
1026 (and grep-find-ignored-files 1026 (and grep-find-ignored-files
1027 (concat (shell-quote-argument "(") 1027 (concat (shell-quote-argument "!") " -type d "
1028 (shell-quote-argument "(")
1028 ;; we should use shell-quote-argument here 1029 ;; we should use shell-quote-argument here
1029 " -name " 1030 " -name "
1030 (mapconcat 1031 (mapconcat
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index e2016e206a8..b6d2b5e319c 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -802,12 +802,15 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments."
802 (forward-comment (point-max))) 802 (forward-comment (point-max)))
803 (re-search-forward re (point-max) t)) 803 (re-search-forward re (point-max) t))
804 (if (match-beginning 1) 804 (if (match-beginning 1)
805 ;; we have found a block beginning 805 ;; We have found a block beginning.
806 (progn 806 (progn
807 (goto-char (match-beginning 1)) 807 (goto-char (match-beginning 1))
808 (if hs-hide-all-non-comment-function 808 (unless (if hs-hide-all-non-comment-function
809 (funcall hs-hide-all-non-comment-function) 809 (funcall hs-hide-all-non-comment-function)
810 (hs-hide-block-at-point t))) 810 (hs-hide-block-at-point t))
811 ;; Go to end of matched data to prevent from getting stuck
812 ;; with an endless loop.
813 (goto-char (match-end 0))))
811 ;; found a comment, probably 814 ;; found a comment, probably
812 (let ((c-reg (hs-inside-comment-p))) 815 (let ((c-reg (hs-inside-comment-p)))
813 (when (and c-reg (car c-reg)) 816 (when (and c-reg (car c-reg))
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 721c610517a..bacc542a388 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -1,6 +1,6 @@
1;;; which-func.el --- print current function in mode line 1;;; which-func.el --- print current function in mode line
2 2
3;; Copyright (C) 1994, 1997-1998, 2001-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1997-1998, 2001-2012 Free Software Foundation, Inc.
4 4
5;; Author: Alex Rezinsky <alexr@msil.sps.mot.com> 5;; Author: Alex Rezinsky <alexr@msil.sps.mot.com>
6;; (doesn't seem to be responsive any more) 6;; (doesn't seem to be responsive any more)
@@ -72,14 +72,15 @@
72 :group 'tools 72 :group 'tools
73 :version "20.3") 73 :version "20.3")
74 74
75(defcustom which-func-modes 75(defcustom which-func-modes t
76 '(emacs-lisp-mode c-mode c++-mode perl-mode cperl-mode python-mode 76 ;; '(emacs-lisp-mode c-mode c++-mode objc-mode perl-mode cperl-mode python-mode
77 makefile-mode sh-mode fortran-mode f90-mode ada-mode 77 ;; makefile-mode sh-mode fortran-mode f90-mode ada-mode
78 diff-mode) 78 ;; diff-mode)
79 "List of major modes for which Which Function mode should be used. 79 "List of major modes for which Which Function mode should be used.
80For other modes it is disabled. If this is equal to t, 80For other modes it is disabled. If this is equal to t,
81then Which Function mode is enabled in any major mode that supports it." 81then Which Function mode is enabled in any major mode that supports it."
82 :group 'which-func 82 :group 'which-func
83 :version "24.2" ; added objc-mode
83 :type '(choice (const :tag "All modes" t) 84 :type '(choice (const :tag "All modes" t)
84 (repeat (symbol :tag "Major mode")))) 85 (repeat (symbol :tag "Major mode"))))
85 86
diff --git a/lisp/simple.el b/lisp/simple.el
index 54005ebd2b3..b8422f9923a 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2464,9 +2464,9 @@ COMMAND.
2464To specify a coding system for converting non-ASCII characters 2464To specify a coding system for converting non-ASCII characters
2465in the input and output to the shell command, use \\[universal-coding-system-argument] 2465in the input and output to the shell command, use \\[universal-coding-system-argument]
2466before this command. By default, the input (from the current buffer) 2466before this command. By default, the input (from the current buffer)
2467is encoded in the same coding system that will be used to save the file, 2467is encoded using coding-system specified by `process-coding-system-alist',
2468`buffer-file-coding-system'. If the output is going to replace the region, 2468falling back to `default-process-coding-system' if no match for COMMAND
2469then it is decoded from that same coding system. 2469is found in `process-coding-system-alist'.
2470 2470
2471The noninteractive arguments are START, END, COMMAND, 2471The noninteractive arguments are START, END, COMMAND,
2472OUTPUT-BUFFER, REPLACE, ERROR-BUFFER, and DISPLAY-ERROR-BUFFER. 2472OUTPUT-BUFFER, REPLACE, ERROR-BUFFER, and DISPLAY-ERROR-BUFFER.
diff --git a/lisp/startup.el b/lisp/startup.el
index 518b53ccdf1..4a8af55af2f 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1169,38 +1169,6 @@ the `--debug-init' option to view a complete error backtrace."
1169 (or mail-host-address 1169 (or mail-host-address
1170 (system-name)))))) 1170 (system-name))))))
1171 1171
1172 ;; Originally face attributes were specified via
1173 ;; `font-lock-face-attributes'. Users then changed the default
1174 ;; face attributes by setting that variable. However, we try and
1175 ;; be back-compatible and respect its value if set except for
1176 ;; faces where M-x customize has been used to save changes for the
1177 ;; face.
1178 (when (boundp 'font-lock-face-attributes)
1179 (let ((face-attributes font-lock-face-attributes))
1180 (while face-attributes
1181 (let* ((face-attribute (pop face-attributes))
1182 (face (car face-attribute)))
1183 ;; Rustle up a `defface' SPEC from a
1184 ;; `font-lock-face-attributes' entry.
1185 (unless (get face 'saved-face)
1186 (let ((foreground (nth 1 face-attribute))
1187 (background (nth 2 face-attribute))
1188 (bold-p (nth 3 face-attribute))
1189 (italic-p (nth 4 face-attribute))
1190 (underline-p (nth 5 face-attribute))
1191 face-spec)
1192 (when foreground
1193 (setq face-spec (cons ':foreground (cons foreground face-spec))))
1194 (when background
1195 (setq face-spec (cons ':background (cons background face-spec))))
1196 (when bold-p
1197 (setq face-spec (append '(:weight bold) face-spec)))
1198 (when italic-p
1199 (setq face-spec (append '(:slant italic) face-spec)))
1200 (when underline-p
1201 (setq face-spec (append '(:underline t) face-spec)))
1202 (face-spec-set face (list (list t face-spec)) nil)))))))
1203
1204 ;; If parameter have been changed in the init file which influence 1172 ;; If parameter have been changed in the init file which influence
1205 ;; face realization, clear the face cache so that new faces will 1173 ;; face realization, clear the face cache so that new faces will
1206 ;; be realized. 1174 ;; be realized.
@@ -2348,6 +2316,7 @@ A fancy display is used on graphic displays, normal otherwise."
2348 (if (or inhibit-startup-screen 2316 (if (or inhibit-startup-screen
2349 initial-buffer-choice 2317 initial-buffer-choice
2350 noninteractive 2318 noninteractive
2319 (daemonp)
2351 inhibit-x-resources) 2320 inhibit-x-resources)
2352 2321
2353 ;; Not displaying a startup screen. If 3 or more files 2322 ;; Not displaying a startup screen. If 3 or more files
@@ -2390,9 +2359,7 @@ A fancy display is used on graphic displays, normal otherwise."
2390 ;; (with-no-warnings 2359 ;; (with-no-warnings
2391 ;; (setq menubar-bindings-done t)) 2360 ;; (setq menubar-bindings-done t))
2392 2361
2393 (if (> file-count 0) 2362 (display-startup-screen (> file-count 0)))))
2394 (display-startup-screen t)
2395 (display-startup-screen nil)))))
2396 2363
2397(defun command-line-normalize-file-name (file) 2364(defun command-line-normalize-file-name (file)
2398 "Collapse multiple slashes to one, to handle non-Emacs file names." 2365 "Collapse multiple slashes to one, to handle non-Emacs file names."
diff --git a/lisp/subr.el b/lisp/subr.el
index a6ad67283be..0cd00995f45 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -871,6 +871,7 @@ The normal global definition of the character C-x indirects to this keymap.")
871(defsubst eventp (obj) 871(defsubst eventp (obj)
872 "True if the argument is an event object." 872 "True if the argument is an event object."
873 (or (and (integerp obj) 873 (or (and (integerp obj)
874 ;; FIXME: Why bother?
874 ;; Filter out integers too large to be events. 875 ;; Filter out integers too large to be events.
875 ;; M is the biggest modifier. 876 ;; M is the biggest modifier.
876 (zerop (logand obj (lognot (1- (lsh ?\M-\^@ 1))))) 877 (zerop (logand obj (lognot (1- (lsh ?\M-\^@ 1)))))
@@ -1989,6 +1990,10 @@ obey the input decoding and translations usually done by `read-key-sequence'.
1989So escape sequences and keyboard encoding are taken into account. 1990So escape sequences and keyboard encoding are taken into account.
1990When there's an ambiguity because the key looks like the prefix of 1991When there's an ambiguity because the key looks like the prefix of
1991some sort of escape sequence, the ambiguity is resolved via `read-key-delay'." 1992some sort of escape sequence, the ambiguity is resolved via `read-key-delay'."
1993 ;; This overriding-terminal-local-map binding also happens to
1994 ;; disable quail's input methods, so although read-key-sequence
1995 ;; always inherits the input method, in practice read-key does not
1996 ;; inherit the input method (at least not if it's based on quail).
1992 (let ((overriding-terminal-local-map read-key-empty-map) 1997 (let ((overriding-terminal-local-map read-key-empty-map)
1993 (overriding-local-map nil) 1998 (overriding-local-map nil)
1994 (echo-keystrokes 0) 1999 (echo-keystrokes 0)
@@ -2093,77 +2098,45 @@ Optional DEFAULT is a default password to use instead of empty input.
2093 2098
2094This function echoes `.' for each character that the user types. 2099This function echoes `.' for each character that the user types.
2095 2100
2096The user ends with RET, LFD, or ESC. DEL or C-h rubs out.
2097C-y yanks the current kill. C-u kills line.
2098C-g quits; if `inhibit-quit' was non-nil around this function,
2099then it returns nil if the user types C-g, but `quit-flag' remains set.
2100
2101Once the caller uses the password, it can erase the password 2101Once the caller uses the password, it can erase the password
2102by doing (clear-string STRING)." 2102by doing (clear-string STRING)."
2103 (with-local-quit 2103 (if confirm
2104 (if confirm 2104 (let (success)
2105 (let (success) 2105 (while (not success)
2106 (while (not success) 2106 (let ((first (read-passwd prompt nil default))
2107 (let ((first (read-passwd prompt nil default)) 2107 (second (read-passwd "Confirm password: " nil default)))
2108 (second (read-passwd "Confirm password: " nil default))) 2108 (if (equal first second)
2109 (if (equal first second) 2109 (progn
2110 (progn 2110 (and (arrayp second) (clear-string second))
2111 (and (arrayp second) (clear-string second)) 2111 (setq success first))
2112 (setq success first)) 2112 (and (arrayp first) (clear-string first))
2113 (and (arrayp first) (clear-string first)) 2113 (and (arrayp second) (clear-string second))
2114 (and (arrayp second) (clear-string second)) 2114 (message "Password not repeated accurately; please start over")
2115 (message "Password not repeated accurately; please start over") 2115 (sit-for 1))))
2116 (sit-for 1)))) 2116 success)
2117 success) 2117 (let (minibuf)
2118 (let ((pass nil) 2118 (minibuffer-with-setup-hook
2119 ;; Copy it so that add-text-properties won't modify 2119 (lambda ()
2120 ;; the object that was passed in by the caller. 2120 (setq minibuf (current-buffer))
2121 (prompt (copy-sequence prompt)) 2121 ;; Turn off electricity.
2122 (c 0) 2122 (set (make-local-variable 'post-self-insert-hook) nil)
2123 (echo-keystrokes 0) 2123 (add-hook 'after-change-functions
2124 (cursor-in-echo-area t) 2124 (lambda (beg end len)
2125 (message-log-max nil) 2125 (clear-this-command-keys)
2126 (stop-keys (list 'return ?\r ?\n ?\e)) 2126 (setq beg (min end (max (minibuffer-prompt-end)
2127 (rubout-keys (list 'backspace ?\b ?\177))) 2127 beg)))
2128 (add-text-properties 0 (length prompt) 2128 (dotimes (i (- end beg))
2129 minibuffer-prompt-properties prompt) 2129 (put-text-property (+ i beg) (+ 1 i beg)
2130 (while (progn (message "%s%s" 2130 'display (string ?.))))
2131 prompt 2131 nil t))
2132 (make-string (length pass) ?.)) 2132 (unwind-protect
2133 (setq c (read-key)) 2133 (read-string prompt nil
2134 (not (memq c stop-keys))) 2134 (let ((sym (make-symbol "forget-history")))
2135 (clear-this-command-keys) 2135 (set sym nil)
2136 (cond ((memq c rubout-keys) ; rubout 2136 sym)
2137 (when (> (length pass) 0) 2137 default)
2138 (let ((new-pass (substring pass 0 -1))) 2138 (when (buffer-live-p minibuf)
2139 (and (arrayp pass) (clear-string pass)) 2139 (with-current-buffer minibuf (erase-buffer))))))))
2140 (setq pass new-pass))))
2141 ((eq c ?\C-g) (keyboard-quit))
2142 ((not (numberp c)))
2143 ((= c ?\C-u) ; kill line
2144 (and (arrayp pass) (clear-string pass))
2145 (setq pass ""))
2146 ((= c ?\C-y) ; yank
2147 (let* ((str (condition-case nil
2148 (current-kill 0)
2149 (error nil)))
2150 new-pass)
2151 (when str
2152 (setq new-pass
2153 (concat pass
2154 (substring-no-properties str)))
2155 (and (arrayp pass) (clear-string pass))
2156 (setq c ?\0)
2157 (setq pass new-pass))))
2158 ((characterp c) ; insert char
2159 (let* ((new-char (char-to-string c))
2160 (new-pass (concat pass new-char)))
2161 (and (arrayp pass) (clear-string pass))
2162 (clear-string new-char)
2163 (setq c ?\0)
2164 (setq pass new-pass)))))
2165 (message nil)
2166 (or pass default "")))))
2167 2140
2168;; This should be used by `call-interactively' for `n' specs. 2141;; This should be used by `call-interactively' for `n' specs.
2169(defun read-number (prompt &optional default) 2142(defun read-number (prompt &optional default)
@@ -3557,8 +3530,7 @@ of STRING.
3557To replace only the first match (if any), make REGEXP match up to \\' 3530To replace only the first match (if any), make REGEXP match up to \\'
3558and replace a sub-expression, e.g. 3531and replace a sub-expression, e.g.
3559 (replace-regexp-in-string \"\\\\(foo\\\\).*\\\\'\" \"bar\" \" foo foo\" nil nil 1) 3532 (replace-regexp-in-string \"\\\\(foo\\\\).*\\\\'\" \"bar\" \" foo foo\" nil nil 1)
3560 => \" bar foo\" 3533 => \" bar foo\""
3561"
3562 3534
3563 ;; To avoid excessive consing from multiple matches in long strings, 3535 ;; To avoid excessive consing from multiple matches in long strings,
3564 ;; don't just call `replace-match' continually. Walk down the 3536 ;; don't just call `replace-match' continually. Walk down the
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index dedbfcbf338..76d03dd164f 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -1197,9 +1197,9 @@ PREV-OP-ARG are used when invoked recursively during the build-up."
1197;;; --------------------------------- 1197;;; ---------------------------------
1198 1198
1199;;;###autoload 1199;;;###autoload
1200(defun artist-mode (&optional state) 1200(define-minor-mode artist-mode
1201 "Toggle Artist mode. 1201 "Toggle Artist mode.
1202With argument STATE, turn Artist mode on if STATE is positive. 1202With argument ARG, turn Artist mode on if ARG is positive.
1203Artist lets you draw lines, squares, rectangles and poly-lines, 1203Artist lets you draw lines, squares, rectangles and poly-lines,
1204ellipses and circles with your mouse and/or keyboard. 1204ellipses and circles with your mouse and/or keyboard.
1205 1205
@@ -1388,36 +1388,24 @@ Variables
1388 1388
1389Hooks 1389Hooks
1390 1390
1391 When entering artist-mode, the hook `artist-mode-init-hook' is called. 1391 Turning the mode on or off runs `artist-mode-hook'.
1392 When quitting artist-mode, the hook `artist-mode-exit-hook' is called.
1393 1392
1394 1393
1395Keymap summary 1394Keymap summary
1396 1395
1397\\{artist-mode-map}" 1396\\{artist-mode-map}"
1398 (interactive) 1397 :init-value nil :group 'artist :lighter artist-mode-name
1399 (if (setq artist-mode 1398 :keymap artist-mode-map
1400 (if (null state) (not artist-mode) 1399 (cond ((null artist-mode)
1401 (> (prefix-numeric-value state) 0))) 1400 ;; Turn mode off
1402 (artist-mode-init) 1401 (artist-mode-exit))
1403 (artist-mode-exit))) 1402 (t
1404 1403 ;; Turn mode on
1405;; insert our minor mode string 1404 (artist-mode-init))))
1406(or (assq 'artist-mode minor-mode-alist)
1407 (setq minor-mode-alist
1408 (cons '(artist-mode artist-mode-name)
1409 minor-mode-alist)))
1410
1411;; insert our minor mode keymap
1412(or (assq 'artist-mode minor-mode-map-alist)
1413 (setq minor-mode-map-alist
1414 (cons (cons 'artist-mode artist-mode-map)
1415 minor-mode-map-alist)))
1416
1417 1405
1418;; Init and exit 1406;; Init and exit
1419(defun artist-mode-init () 1407(defun artist-mode-init ()
1420 "Init Artist mode. This will call the hook `artist-mode-init-hook'." 1408 "Init Artist mode. This will call the hook `artist-mode-hook'."
1421 ;; Set up a conversion table for mapping tabs and new-lines to spaces. 1409 ;; Set up a conversion table for mapping tabs and new-lines to spaces.
1422 ;; the last case, 0, is for the last position in buffer/region, where 1410 ;; the last case, 0, is for the last position in buffer/region, where
1423 ;; the `following-char' function returns 0. 1411 ;; the `following-char' function returns 0.
@@ -1459,15 +1447,13 @@ Keymap summary
1459 (progn 1447 (progn
1460 (picture-mode) 1448 (picture-mode)
1461 (message ""))) 1449 (message "")))
1462 (run-hooks 'artist-mode-init-hook)
1463 (artist-mode-line-show-curr-operation artist-key-is-drawing)) 1450 (artist-mode-line-show-curr-operation artist-key-is-drawing))
1464 1451
1465(defun artist-mode-exit () 1452(defun artist-mode-exit ()
1466 "Exit Artist mode. This will call the hook `artist-mode-exit-hook'." 1453 "Exit Artist mode. This will call the hook `artist-mode-hook'."
1467 (if (and artist-picture-compatibility (eq major-mode 'picture-mode)) 1454 (if (and artist-picture-compatibility (eq major-mode 'picture-mode))
1468 (picture-mode-exit)) 1455 (picture-mode-exit))
1469 (kill-local-variable 'next-line-add-newlines) 1456 (kill-local-variable 'next-line-add-newlines))
1470 (run-hooks 'artist-mode-exit-hook))
1471 1457
1472(defun artist-mode-off () 1458(defun artist-mode-off ()
1473 "Turn Artist mode off." 1459 "Turn Artist mode off."
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 24967ded154..72a3eb474f8 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -1576,10 +1576,11 @@ The buffer to mark them in is `flyspell-large-region-buffer'."
1576 (if ispell-encoding8-command 1576 (if ispell-encoding8-command
1577 (setq args 1577 (setq args
1578 (append args 1578 (append args
1579 (list 1579 (if ispell-really-hunspell
1580 (concat ispell-encoding8-command 1580 (list ispell-encoding8-command
1581 (symbol-name 1581 (upcase (symbol-name encoding)))
1582 encoding)))))) 1582 (list (concat ispell-encoding8-command
1583 (symbol-name encoding)))))))
1583 1584
1584 (let ((process-coding-system-alist (list (cons "\\.*" encoding)))) 1585 (let ((process-coding-system-alist (list (cons "\\.*" encoding))))
1585 (setq c (apply 'ispell-call-process-region beg 1586 (setq c (apply 'ispell-call-process-region beg
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 74c32817734..37311b7337d 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -684,7 +684,8 @@ re-start Emacs."
684 ("svenska" ; Swedish mode 684 ("svenska" ; Swedish mode
685 "[A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" 685 "[A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]"
686 "[^A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" 686 "[^A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]"
687 "[']" nil ("-C") "~list" iso-8859-1)) 687 "[']" nil ("-C") "~list" iso-8859-1)
688 ("hebrew" "[\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\367\366\365\370\371\372]" "[^\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\367\366\365\370\371\372]" "" nil ("-B") nil cp1255))
688 "Base value for `ispell-dictionary-alist'.") 689 "Base value for `ispell-dictionary-alist'.")
689 690
690(defvar ispell-dictionary-alist nil 691(defvar ispell-dictionary-alist nil
diff --git a/lisp/tmm.el b/lisp/tmm.el
index 2a0d1d3d7de..776e4335376 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -165,14 +165,13 @@ Its value should be an event that has a binding in MENU."
165 ;; tmm-km-list is an alist of (STRING . MEANING). 165 ;; tmm-km-list is an alist of (STRING . MEANING).
166 ;; It has no other elements. 166 ;; It has no other elements.
167 ;; The order of elements in tmm-km-list is the order of the menu bar. 167 ;; The order of elements in tmm-km-list is the order of the menu bar.
168 (mapc (lambda (elt) 168 (dolist (elt menu)
169 (cond 169 (cond
170 ((stringp elt) (setq gl-str elt)) 170 ((stringp elt) (setq gl-str elt))
171 ((listp elt) (tmm-get-keymap elt not-menu)) 171 ((listp elt) (tmm-get-keymap elt not-menu))
172 ((vectorp elt) 172 ((vectorp elt)
173 (dotimes (i (length elt)) 173 (dotimes (i (length elt))
174 (tmm-get-keymap (cons i (aref elt i)) not-menu))))) 174 (tmm-get-keymap (cons i (aref elt i)) not-menu)))))
175 menu)
176 ;; Choose an element of tmm-km-list; put it in choice. 175 ;; Choose an element of tmm-km-list; put it in choice.
177 (if (and not-menu (= 1 (length tmm-km-list))) 176 (if (and not-menu (= 1 (length tmm-km-list)))
178 ;; If this is the top-level of an x-popup-menu menu, 177 ;; If this is the top-level of an x-popup-menu menu,
@@ -313,15 +312,13 @@ Stores a list of all the shortcuts in the free variable `tmm-short-cuts'."
313(defun tmm-define-keys (minibuffer) 312(defun tmm-define-keys (minibuffer)
314 (let ((map (make-sparse-keymap))) 313 (let ((map (make-sparse-keymap)))
315 (suppress-keymap map t) 314 (suppress-keymap map t)
316 (mapc 315 (dolist (c tmm-short-cuts)
317 (lambda (c) 316 (if (listp tmm-shortcut-style)
318 (if (listp tmm-shortcut-style) 317 (define-key map (char-to-string c) 'tmm-shortcut)
319 (define-key map (char-to-string c) 'tmm-shortcut) 318 ;; only one kind of letters are shortcuts, so map both upcase and
320 ;; only one kind of letters are shortcuts, so map both upcase and 319 ;; downcase input to the same
321 ;; downcase input to the same 320 (define-key map (char-to-string (downcase c)) 'tmm-shortcut)
322 (define-key map (char-to-string (downcase c)) 'tmm-shortcut) 321 (define-key map (char-to-string (upcase c)) 'tmm-shortcut)))
323 (define-key map (char-to-string (upcase c)) 'tmm-shortcut)))
324 tmm-short-cuts)
325 (if minibuffer 322 (if minibuffer
326 (progn 323 (progn
327 (define-key map [pageup] 'tmm-goto-completions) 324 (define-key map [pageup] 'tmm-goto-completions)
@@ -401,14 +398,13 @@ Stores a list of all the shortcuts in the free variable `tmm-short-cuts'."
401 (choose-completion)) 398 (choose-completion))
402 ;; In minibuffer 399 ;; In minibuffer
403 (delete-region (minibuffer-prompt-end) (point-max)) 400 (delete-region (minibuffer-prompt-end) (point-max))
404 (mapc (lambda (elt) 401 (dolist (elt tmm-km-list)
405 (if (string= 402 (if (string=
406 (substring (car elt) 0 403 (substring (car elt) 0
407 (min (1+ (length tmm-mid-prompt)) 404 (min (1+ (length tmm-mid-prompt))
408 (length (car elt)))) 405 (length (car elt))))
409 (concat (char-to-string c) tmm-mid-prompt)) 406 (concat (char-to-string c) tmm-mid-prompt))
410 (setq s (car elt)))) 407 (setq s (car elt))))
411 tmm-km-list)
412 (insert s) 408 (insert s)
413 (exit-minibuffer))))) 409 (exit-minibuffer)))))
414 410
@@ -540,20 +536,16 @@ of `menu-bar-final-items'."
540 (setq allbind (cons globalbind (cons localbind minorbind))) 536 (setq allbind (cons globalbind (cons localbind minorbind)))
541 537
542 ;; Merge all the elements of ALLBIND into one keymap. 538 ;; Merge all the elements of ALLBIND into one keymap.
543 (mapc (lambda (in) 539 (dolist (in allbind)
544 (if (and (symbolp in) (keymapp in)) 540 (if (and (symbolp in) (keymapp in))
545 (setq in (symbol-function in))) 541 (setq in (symbol-function in)))
546 (and in (keymapp in) 542 (and in (keymapp in)
547 (if (keymapp bind) 543 (setq bind (if (keymapp bind)
548 (setq bind (nconc bind (copy-sequence (cdr in)))) 544 (nconc bind (copy-sequence (cdr in)))
549 (setq bind (copy-sequence in))))) 545 (copy-sequence in)))))
550 allbind)
551 ;; Return that keymap. 546 ;; Return that keymap.
552 bind)))) 547 bind))))
553 548
554;; Huh? What's that about? --Stef
555(add-hook 'calendar-load-hook (lambda () (require 'cal-menu)))
556
557(provide 'tmm) 549(provide 'tmm)
558 550
559;;; tmm.el ends here 551;;; tmm.el ends here
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 6dcafb49bd6..3c9313e3e7d 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -10,9 +10,6 @@
10 10
112012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org> 112012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
12 12
13 * url-util.el (url-unhex-string): Add an optional CODING-SYSTEM
14 parameter (bug#6252).
15
16 * url-domsurf.el: New file (bug#1401). 13 * url-domsurf.el: New file (bug#1401).
17 14
18 * url-cookie.el (url-cookie-two-dot-domains): Remove. 15 * url-cookie.el (url-cookie-two-dot-domains): Remove.
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index c62b820c2e7..d12bd5447fa 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -308,13 +308,11 @@ Will not do anything if `url-show-status' is nil."
308;; str)) 308;; str))
309 309
310;;;###autoload 310;;;###autoload
311(defun url-unhex-string (str &optional allow-newlines coding-system) 311(defun url-unhex-string (str &optional allow-newlines)
312 "Remove %XX embedded spaces, etc in a URL. 312 "Remove %XX embedded spaces, etc in a URL.
313If optional second argument ALLOW-NEWLINES is non-nil, then allow the 313If optional second argument ALLOW-NEWLINES is non-nil, then allow the
314decoding of carriage returns and line feeds in the string, which is normally 314decoding of carriage returns and line feeds in the string, which is normally
315forbidden in URL encoding. 315forbidden in URL encoding."
316If CODING-SYSTEM is non-nil, interpret the unhexed string as
317being encoded in that coding system."
318 (setq str (or str "")) 316 (setq str (or str ""))
319 (let ((tmp "") 317 (let ((tmp "")
320 (case-fold-search t)) 318 (case-fold-search t))
@@ -332,10 +330,7 @@ being encoded in that coding system."
332 " ") 330 " ")
333 (t (byte-to-string code)))) 331 (t (byte-to-string code))))
334 str (substring str (match-end 0))))) 332 str (substring str (match-end 0)))))
335 (setq tmp (concat tmp str)) 333 (concat tmp str)))
336 (if coding-system
337 (decode-coding-string tmp coding-system)
338 tmp)))
339 334
340(defconst url-unreserved-chars 335(defconst url-unreserved-chars
341 '( 336 '(
diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el
index a1dd807d828..f4964ef85cc 100644
--- a/lisp/vc/vc-annotate.el
+++ b/lisp/vc/vc-annotate.el
@@ -522,12 +522,12 @@ the file in question, search for the log entry required and move point."
522 (car rev-at-line) t 1))))))) 522 (car rev-at-line) t 1)))))))
523 523
524(defun vc-annotate-show-diff-revision-at-line-internal (filediff) 524(defun vc-annotate-show-diff-revision-at-line-internal (filediff)
525 (if (not (equal major-mode 'vc-annotate-mode)) 525 (if (not (derived-mode-p 'vc-annotate-mode))
526 (message "Cannot be invoked outside of a vc annotate buffer") 526 (message "Cannot be invoked outside of a vc annotate buffer")
527 (let* ((rev-at-line (vc-annotate-extract-revision-at-line)) 527 (let* ((rev-at-line (vc-annotate-extract-revision-at-line))
528 (prev-rev nil) 528 (prev-rev nil)
529 (rev (car rev-at-line)) 529 (rev (car rev-at-line))
530 (fname (cdr rev-at-line))) 530 (fname (cdr rev-at-line)))
531 (if (not rev-at-line) 531 (if (not rev-at-line)
532 (message "Cannot extract revision number from the current line") 532 (message "Cannot extract revision number from the current line")
533 (setq prev-rev 533 (setq prev-rev
@@ -535,17 +535,15 @@ the file in question, search for the log entry required and move point."
535 (if filediff fname nil) rev)) 535 (if filediff fname nil) rev))
536 (if (not prev-rev) 536 (if (not prev-rev)
537 (message "Cannot diff from any revision prior to %s" rev) 537 (message "Cannot diff from any revision prior to %s" rev)
538 (save-window-excursion 538 (vc-diff-internal
539 (vc-diff-internal 539 t
540 nil 540 ;; The value passed here should follow what
541 ;; The value passed here should follow what 541 ;; `vc-deduce-fileset' returns.
542 ;; `vc-deduce-fileset' returns. 542 (list vc-annotate-backend
543 (list vc-annotate-backend 543 (if filediff
544 (if filediff 544 (list fname)
545 (list fname) 545 nil))
546 nil)) 546 prev-rev rev))))))
547 prev-rev rev))
548 (switch-to-buffer "*vc-diff*"))))))
549 547
550(defun vc-annotate-show-diff-revision-at-line () 548(defun vc-annotate-show-diff-revision-at-line ()
551 "Visit the diff of the revision at line from its previous revision." 549 "Visit the diff of the revision at line from its previous revision."
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 798131236d5..505e40f46ba 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -37,7 +37,6 @@
37;; are bzr-versioned, `vc-bzr` presently runs `bzr status` on the 37;; are bzr-versioned, `vc-bzr` presently runs `bzr status` on the
38;; symlink, thereby not detecting whether the actual contents 38;; symlink, thereby not detecting whether the actual contents
39;; (that is, the target contents) are changed. 39;; (that is, the target contents) are changed.
40;; See https://bugs.launchpad.net/vc-bzr/+bug/116607
41 40
42;;; Properties of the backend 41;;; Properties of the backend
43 42
@@ -65,14 +64,6 @@
65 :group 'vc-bzr 64 :group 'vc-bzr
66 :type 'string) 65 :type 'string)
67 66
68(defcustom vc-bzr-sha1-program '("sha1sum")
69 "Name of program to compute SHA1.
70It must be a string \(program name\) or list of strings \(name and its args\)."
71 :type '(repeat string)
72 :group 'vc-bzr)
73
74(define-obsolete-variable-alias 'sha1-program 'vc-bzr-sha1-program "24.1")
75
76(defcustom vc-bzr-diff-switches nil 67(defcustom vc-bzr-diff-switches nil
77 "String or list of strings specifying switches for bzr diff under VC. 68 "String or list of strings specifying switches for bzr diff under VC.
78If nil, use the value of `vc-diff-switches'. If t, use no switches." 69If nil, use the value of `vc-diff-switches'. If t, use no switches."
@@ -190,20 +181,15 @@ in the repository root directory of FILE."
190(defun vc-bzr-sha1 (file) 181(defun vc-bzr-sha1 (file)
191 (with-temp-buffer 182 (with-temp-buffer
192 (set-buffer-multibyte nil) 183 (set-buffer-multibyte nil)
193 (let ((prog vc-bzr-sha1-program) 184 (insert-file-contents-literally file)
194 (args nil) 185 (sha1 (current-buffer))))
195 process-file-side-effects)
196 (when (consp prog)
197 (setq args (cdr prog))
198 (setq prog (car prog)))
199 (apply 'process-file prog (file-relative-name file) t nil args)
200 (buffer-substring (point-min) (+ (point-min) 40)))))
201 186
202(defun vc-bzr-state-heuristic (file) 187(defun vc-bzr-state-heuristic (file)
203 "Like `vc-bzr-state' but hopefully without running Bzr." 188 "Like `vc-bzr-state' but hopefully without running Bzr."
204 ;; `bzr status' was excruciatingly slow with large histories and 189 ;; `bzr status' could be slow with large histories and pending merges,
205 ;; pending merges, so try to avoid using it until they fix their 190 ;; so this tries to avoid calling it if possible. bzr status is
206 ;; performance problems. 191 ;; faster now, so this is not as important as it was.
192 ;;
207 ;; This function tries first to parse Bzr internal file 193 ;; This function tries first to parse Bzr internal file
208 ;; `checkout/dirstate', but it may fail if Bzr internal file format 194 ;; `checkout/dirstate', but it may fail if Bzr internal file format
209 ;; has changed. As a safeguard, the `checkout/dirstate' file is 195 ;; has changed. As a safeguard, the `checkout/dirstate' file is
@@ -299,10 +285,7 @@ in the repository root directory of FILE."
299 'up-to-date) 285 'up-to-date)
300 (t 'edited)) 286 (t 'edited))
301 'unregistered)))) 287 'unregistered))))
302 ;; Either the dirstate file can't be read, or the sha1 288 ;; The dirstate file can't be read, or some other problem.
303 ;; executable is missing, or ...
304 ;; In either case, recent versions of Bzr aren't that slow
305 ;; any more.
306 (error (vc-bzr-state file))))))) 289 (error (vc-bzr-state file)))))))
307 290
308 291
@@ -417,49 +400,56 @@ string or nil, and STATUS is one of the symbols: `added',
417`ignored', `kindchanged', `modified', `removed', `renamed', `unknown', 400`ignored', `kindchanged', `modified', `removed', `renamed', `unknown',
418which directly correspond to `bzr status' output, or 'unchanged 401which directly correspond to `bzr status' output, or 'unchanged
419for files whose copy in the working tree is identical to the one 402for files whose copy in the working tree is identical to the one
420in the branch repository, or nil for files that are not 403in the branch repository (or whose status not be determined)."
421registered with Bzr. 404;; Doc used to also say the following, but AFAICS, it has never been true.
422 405;;
423If any error occurred in running `bzr status', then return nil." 406;; ", or nil for files that are not registered with Bzr.
407;; If any error occurred in running `bzr status', then return nil."
408;;
409;; Rather than returning nil in case of an error, it returns
410;; (unchanged . WARNING). FIXME unchanged is not the best status to
411;; return in case of error.
424 (with-temp-buffer 412 (with-temp-buffer
425 (let ((ret (condition-case nil 413 ;; This is with-demoted-errors without the condition-case-unless-debug
426 (vc-bzr-command "status" t 0 file) 414 ;; annoyance, which makes it fail during ert testing.
427 (file-error nil))) ; vc-bzr-program not found. 415 (let (err)
428 (status 'unchanged)) 416 (condition-case err (vc-bzr-command "status" t 0 file)
429 ;; the only secure status indication in `bzr status' output 417 (error (message "Error: %S" err) nil)))
430 ;; is a couple of lines following the pattern:: 418 (let ((status 'unchanged))
431 ;; | <status>: 419 ;; the only secure status indication in `bzr status' output
432 ;; | <file name> 420 ;; is a couple of lines following the pattern::
433 ;; if the file is up-to-date, we get no status report from `bzr', 421 ;; | <status>:
434 ;; so if the regexp search for the above pattern fails, we consider 422 ;; | <file name>
435 ;; the file to be up-to-date. 423 ;; if the file is up-to-date, we get no status report from `bzr',
436 (goto-char (point-min)) 424 ;; so if the regexp search for the above pattern fails, we consider
437 (when (re-search-forward 425 ;; the file to be up-to-date.
438 ;; bzr prints paths relative to the repository root. 426 (goto-char (point-min))
439 (concat "^\\(" vc-bzr-state-words "\\):[ \t\n]+" 427 (when (re-search-forward
440 (regexp-quote (vc-bzr-file-name-relative file)) 428 ;; bzr prints paths relative to the repository root.
441 ;; Bzr appends a '/' to directory names and 429 (concat "^\\(" vc-bzr-state-words "\\):[ \t\n]+"
442 ;; '*' to executable files 430 (regexp-quote (vc-bzr-file-name-relative file))
443 (if (file-directory-p file) "/?" "\\*?") 431 ;; Bzr appends a '/' to directory names and
444 "[ \t\n]*$") 432 ;; '*' to executable files
445 nil t) 433 (if (file-directory-p file) "/?" "\\*?")
446 (lexical-let ((statusword (match-string 1))) 434 "[ \t\n]*$")
447 ;; Erase the status text that matched. 435 nil t)
448 (delete-region (match-beginning 0) (match-end 0)) 436 (lexical-let ((statusword (match-string 1)))
449 (setq status 437 ;; Erase the status text that matched.
450 (intern (replace-regexp-in-string " " "" statusword))))) 438 (delete-region (match-beginning 0) (match-end 0))
451 (when status 439 (setq status
452 (goto-char (point-min)) 440 (intern (replace-regexp-in-string " " "" statusword)))))
453 (skip-chars-forward " \n\t") ;Throw away spaces. 441 (when status
454 (cons status 442 (goto-char (point-min))
455 ;; "bzr" will output warnings and informational messages to 443 (skip-chars-forward " \n\t") ;Throw away spaces.
456 ;; stderr; due to Emacs's `vc-do-command' (and, it seems, 444 (cons status
457 ;; `start-process' itself) limitations, we cannot catch stderr 445 ;; "bzr" will output warnings and informational messages to
458 ;; and stdout into different buffers. So, if there's anything 446 ;; stderr; due to Emacs's `vc-do-command' (and, it seems,
459 ;; left in the buffer after removing the above status 447 ;; `start-process' itself) limitations, we cannot catch stderr
460 ;; keywords, let us just presume that any other message from 448 ;; and stdout into different buffers. So, if there's anything
461 ;; "bzr" is a user warning, and display it. 449 ;; left in the buffer after removing the above status
462 (unless (eobp) (buffer-substring (point) (point-max)))))))) 450 ;; keywords, let us just presume that any other message from
451 ;; "bzr" is a user warning, and display it.
452 (unless (eobp) (buffer-substring (point) (point-max))))))))
463 453
464(defun vc-bzr-state (file) 454(defun vc-bzr-state (file)
465 (lexical-let ((result (vc-bzr-status file))) 455 (lexical-let ((result (vc-bzr-status file)))
diff --git a/lisp/vcursor.el b/lisp/vcursor.el
index 95928ebe87a..19cb7a9df8d 100644
--- a/lisp/vcursor.el
+++ b/lisp/vcursor.el
@@ -656,12 +656,13 @@ another window. With LEAVE-W, use the current `vcursor-window'."
656 (or window-system 656 (or window-system
657 (display-color-p) 657 (display-color-p)
658 (overlay-put vcursor-overlay 'before-string vcursor-string)) 658 (overlay-put vcursor-overlay 'before-string vcursor-string))
659 (overlay-put vcursor-overlay 'face 'vcursor)) 659 (overlay-put vcursor-overlay 'face 'vcursor)
660 ;; 200 is purely an arbitrary "high" number. See bug#9663.
661 (overlay-put vcursor-overlay 'priority 200))
660 (or leave-w (vcursor-find-window nil t)) 662 (or leave-w (vcursor-find-window nil t))
661 ;; vcursor-window now contains the right buffer 663 ;; vcursor-window now contains the right buffer
662 (or (pos-visible-in-window-p pt vcursor-window) 664 (or (pos-visible-in-window-p pt vcursor-window)
663 (set-window-point vcursor-window pt))) 665 (set-window-point vcursor-window pt))))
664 )
665 666
666(defun vcursor-insert (text) 667(defun vcursor-insert (text)
667 "Insert TEXT, respecting `vcursor-interpret-input'." 668 "Insert TEXT, respecting `vcursor-interpret-input'."
diff --git a/lisp/window.el b/lisp/window.el
index c9e2469b0d2..ca2cc9e7950 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -3643,7 +3643,11 @@ specific buffers."
3643 (scroll-bars . ,(window-scroll-bars window)) 3643 (scroll-bars . ,(window-scroll-bars window))
3644 (vscroll . ,(window-vscroll window)) 3644 (vscroll . ,(window-vscroll window))
3645 (dedicated . ,(window-dedicated-p window)) 3645 (dedicated . ,(window-dedicated-p window))
3646 (point . ,(if writable point (copy-marker point))) 3646 (point . ,(if writable point
3647 (copy-marker point
3648 (buffer-local-value
3649 'window-point-insertion-type
3650 buffer))))
3647 (start . ,(if writable start (copy-marker start))))))))) 3651 (start . ,(if writable start (copy-marker start)))))))))
3648 (tail 3652 (tail
3649 (when (memq type '(vc hc)) 3653 (when (memq type '(vc hc))