diff options
| author | Joakim Verona | 2012-04-26 11:52:04 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-04-26 11:52:04 +0200 |
| commit | ab5b626f97ea7d71a98a06d8cc777fa925a1f716 (patch) | |
| tree | 7961d0e6b583290e1480771cd0fabd00f4ea7f86 /lisp | |
| parent | 2ec5843f029c7d55234dbe51d993003b2b3939ec (diff) | |
| parent | ab036cd7bdd7b087047d241ffb5607d14942179e (diff) | |
| download | emacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.tar.gz emacs-ab5b626f97ea7d71a98a06d8cc777fa925a1f716.zip | |
upstream partial out of memory
Diffstat (limited to 'lisp')
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 @@ | |||
| 1 | 2012-04-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * progmodes/which-func.el (which-func-modes): Change default. | ||
| 4 | |||
| 5 | 2012-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 | |||
| 10 | 2012-04-14 Chong Yidong <cyd@gnu.org> | ||
| 11 | |||
| 12 | * custom.el (custom-theme-set-variables): Doc fix. | ||
| 13 | |||
| 14 | 2012-04-14 Glenn Morris <rgm@gnu.org> | ||
| 15 | |||
| 16 | * international/mule.el (set-auto-coding-for-load): Doc fix. | ||
| 17 | |||
| 18 | 2012-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 | |||
| 27 | 2012-04-14 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 28 | |||
| 29 | * startup.el (command-line-1): Inhibit splash from daemon (bug#10996). | ||
| 30 | |||
| 31 | 2012-04-14 Andreas Schwab <schwab@linux-m68k.org> | ||
| 32 | |||
| 33 | * international/characters.el: Fix sorting. | ||
| 34 | |||
| 35 | 2012-04-14 Eli Zaretskii <eliz@gnu.org> | ||
| 36 | |||
| 37 | * international/characters.el: Add more missing Latin case pairs. | ||
| 38 | |||
| 39 | 2012-04-14 Glenn Morris <rgm@gnu.org> | ||
| 40 | |||
| 41 | * files.el (dir-locals-set-class-variables): Doc fix. | ||
| 42 | |||
| 43 | 2012-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 | |||
| 51 | 2012-04-14 Glenn Morris <rgm@gnu.org> | ||
| 52 | |||
| 53 | * calendar/holidays.el (calendar-check-holidays): Doc fix. | ||
| 54 | |||
| 55 | 2012-04-14 Eli Zaretskii <eliz@gnu.org> | ||
| 56 | |||
| 57 | * textmodes/ispell.el (ispell-dictionary-base-alist): | ||
| 58 | Add data for Hebrew. | ||
| 59 | |||
| 60 | 2012-04-14 Chong Yidong <cyd@gnu.org> | ||
| 61 | |||
| 62 | * net/rcirc.el (rcirc-cmd-quit): | ||
| 63 | Revert 2012-03-18 change (Bug#11192). | ||
| 64 | |||
| 65 | 2012-04-14 Glenn Morris <rgm@gnu.org> | ||
| 66 | |||
| 67 | * pcmpl-rpm.el (pcomplete/rpm): Handle -qf. | ||
| 68 | |||
| 69 | 2012-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 | |||
| 74 | 2012-04-13 Vivek Dasmohapatra <vivek@etla.org> | ||
| 75 | |||
| 76 | * hexl.el (hexl-insert-char): Make display sizes other than 16 work. | ||
| 77 | |||
| 78 | 2012-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 | |||
| 84 | 2012-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 | |||
| 89 | 2012-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 | |||
| 94 | 2012-04-13 Leo Liu <sdl.web@gmail.com> | ||
| 95 | |||
| 96 | * progmodes/which-func.el (which-func-modes): Add objc-mode. | ||
| 97 | |||
| 98 | 2012-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 | |||
| 105 | 2012-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 | |||
| 110 | 2012-04-12 Glenn Morris <rgm@gnu.org> | ||
| 111 | |||
| 112 | * mail/mailpost.el: Move to obsolete/. | ||
| 113 | |||
| 114 | 2012-04-12 Drew Adams <drew.adams@oracle.com> | ||
| 115 | |||
| 116 | * imenu.el (imenu--generic-function): Ignore invisible definitions | ||
| 117 | (bug#10123). | ||
| 118 | |||
| 119 | 2012-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 | |||
| 132 | 2012-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 | |||
| 138 | 2012-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 | |||
| 145 | 2012-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 | |||
| 152 | 2012-04-11 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 153 | |||
| 154 | * vcursor.el (vcursor-move): Increase the priority of the overlay | ||
| 155 | (bug#9663). | ||
| 156 | |||
| 157 | 2012-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 | |||
| 162 | 2012-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 | |||
| 167 | 2012-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 | |||
| 173 | 2012-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 | |||
| 178 | 2012-04-11 Glenn Morris <rgm@gnu.org> | ||
| 179 | |||
| 180 | * vc/vc-bzr.el (vc-bzr-status): Avoid condition-case-unless-debug. | ||
| 181 | |||
| 182 | 2012-04-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 183 | |||
| 184 | * window.el (window--state-get-1): Obey window-point-insertion-type. | ||
| 185 | |||
| 186 | 2012-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 | |||
| 192 | 2012-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 | |||
| 200 | 2012-04-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 201 | |||
| 202 | * progmodes/flymake.el (flymake-mode): Beware read-only dirs (bug#8954). | ||
| 203 | |||
| 204 | 2012-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 | |||
| 209 | 2012-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 | |||
| 216 | 2012-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 | |||
| 233 | 2012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 234 | |||
| 235 | * obsolete/mouse-sel.el: Add an Obsolete-since header. | ||
| 236 | |||
| 237 | 2012-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 | |||
| 1 | 2012-04-10 Nathan Weizenbaum <nweiz@google.com> | 243 | 2012-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 | ||
| 7 | 2012-04-10 Laimonas Vėbra <laimonas.vebra@gmail.com> (tiny change) | 249 | 2012-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 | ||
| 18 | 2012-04-10 Florian Adamsky <florian@adamsky.it> (tiny change) | 260 | 2012-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. | ||
| 124 | An alist where keywords mean: | ||
| 125 | FRAME-OR-WINDOW: banish the mouse to corner of frame or window. | ||
| 126 | SIDE: banish the mouse on right or left corner of frame or window. | ||
| 127 | SIDE-POS: Distance from right or left edge of frame or window. | ||
| 128 | TOP-OR-BOTTOM: banish the mouse to top or bottom of frame or window. | ||
| 129 | TOP-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. |
| 186 | You can redefine this if you want the mouse banished to a different corner." | 203 | |
| 187 | (let* ((pos (window-edges))) | 204 | If 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). | ||
| 530 | This function works only on the Lemote Yeeloong. | ||
| 531 | |||
| 532 | The 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. |
| 635 | DATE is a list (month day year). This function considers the | 635 | DATE is a list (month day year). This function considers the |
| 636 | holidays from the list `calendar-holidays', and returns a list of | 636 | holidays from the list `calendar-holidays', and returns a list of |
| 637 | strings describing those holidays that apply on DATE." | 637 | strings 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 | ||
| 939 | This stores EXP (without evaluating it) as the saved value for SYMBOL. | 939 | SYMBOL is the variable name, and EXP is an expression which |
| 940 | If NOW is present and non-nil, then also evaluate EXP and set | 940 | evaluates to the customized value. EXP will also be stored, |
| 941 | the default value for the SYMBOL to the value of EXP. | 941 | without evaluating it, in SYMBOL's `saved-value' property, so |
| 942 | that it can be restored via the Customize interface. It is also | ||
| 943 | added to the alist in SYMBOL's `theme-value' property \(by | ||
| 944 | calling `custom-push-theme'). | ||
| 942 | 945 | ||
| 943 | REQUEST is a list of features we must require in order to | 946 | NOW, if present and non-nil, means to install the variable's |
| 944 | handle SYMBOL properly. | 947 | value directly now, even if its `defcustom' declaration has not |
| 945 | COMMENT is a comment string about SYMBOL. | 948 | been executed. This is for internal use only. |
| 949 | |||
| 950 | REQUEST is a list of features to `require' (which are loaded | ||
| 951 | prior to evaluating EXP). | ||
| 946 | 952 | ||
| 947 | EXP itself is saved unevaluated as SYMBOL property `saved-value' and | 953 | COMMENT is a comment string about SYMBOL." |
| 948 | in 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. |
| 1006 | Activates the mark if a prefix argument is given." | 1006 | Don't activate the mark if `cua-enable-cua-keys' is non-nil. |
| 1007 | Otherwise, just activate the mark if a prefix ARG is given. | ||
| 1008 | |||
| 1009 | See 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 @@ | |||
| 1 | 2012-04-11 Vivek Dasmohapatra <vivek@etla.org> | ||
| 2 | |||
| 3 | * erc-services.el (erc-nickserv-passwords): Don't display the | ||
| 4 | password (bug#4459). | ||
| 5 | |||
| 1 | 2012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org> | 6 | 2012-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. | |||
| 3523 | When a file is visited, the file's class is found. A directory | 3523 | When a file is visited, the file's class is found. A directory |
| 3524 | may be assigned a class using `dir-locals-set-directory-class'. | 3524 | may be assigned a class using `dir-locals-set-directory-class'. |
| 3525 | Then variables are set in the file's buffer according to the | 3525 | Then variables are set in the file's buffer according to the |
| 3526 | class' LIST. The list is processed in order. | 3526 | VARIABLES 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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-03-22 Lars Magne Ingebrigtsen <larsi@gnus.org> | 17 | 2012-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. |
| 70 | Quoting cannot be used, so the arguments cannot themselves contain spaces." | 78 | Quoting cannot be used, so the arguments cannot themselves contain spaces. |
| 79 | If you wish to set the `-group-by-X-bits' options, set `hexl-bits' instead, | ||
| 80 | as 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'. | |||
| 248 | Each line in the buffer has an \"address\" (displayed in hexadecimal) | 282 | Each line in the buffer has an \"address\" (displayed in hexadecimal) |
| 249 | representing the offset into the file that the characters on this line | 283 | representing the offset into the file that the characters on this line |
| 250 | are at and 16 characters from the file (displayed as hexadecimal | 284 | are at and 16 characters from the file (displayed as hexadecimal |
| 251 | values grouped every 16 bits) and as their ASCII values. | 285 | values grouped every `hexl-bits' bits) and as their ASCII values. |
| 252 | 286 | ||
| 253 | If any of the characters (displayed as ASCII characters) are | 287 | If any of the characters (displayed as ASCII characters) are |
| 254 | unprintable (control or meta characters) they will be replaced as | 288 | unprintable (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 | ||
| 823 | to 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. |
| 1758 | This is used for loading and byte-compiling Emacs Lisp files.") | 1758 | Emacs binds this variable to t when loading or byte-compiling Emacs Lisp |
| 1759 | files.") | ||
| 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 | |||
| 1215 | the translation, and INDEX points into VECTOR to specify the currently | 1213 | the translation, and INDEX points into VECTOR to specify the currently |
| 1216 | selected translation." | 1214 | selected 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. | ||
| 143 | Internal 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. |
| 143 | Internal use only." | 156 | Internal 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. |
| 727 | Use variable `browse-url-filename-alist' to map filenames to URLs." | 727 | Use 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. | ||
| 366 | Only the channel buffers associated with the server in question | ||
| 367 | will 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 | |||
| 1101 | If `rcirc-kill-channel-buffers' is non-nil and the killed buffer | ||
| 1102 | is a server buffer, kills all of the channel buffers associated | ||
| 1103 | with 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." |
| 2170 | When 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 @@ | |||
| 1 | 2012-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 | |||
| 32 | 2012-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 | |||
| 37 | 2012-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 | |||
| 42 | 2012-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 | |||
| 1 | 2012-04-03 Bastien Guerry <bzg@gnu.org> | 47 | 2012-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. |
| 224 | The can be nil to indicate that instead of adding text, the clock time | 225 | The can be nil to indicate that instead of adding text, the clock time |
| 225 | should get a different face (`org-mode-line-clock-overrun'). | 226 | should 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. |
| 2227 | The new state (a string with a TODO keyword, or nil) is available in the | 2227 | The new state (a string with a TODO keyword, or nil) is available in the |
| 2228 | Lisp variable `state'." | 2228 | Lisp 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 | |||
| 20775 | If the heading only contains a TODO keyword, it is still still considered | 20774 | If the heading only contains a TODO keyword, it is still still considered |
| 20776 | empty." | 20775 | empty." |
| 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 | ||
| 64 | A sample value might look like: `\\(_P\\|_PROTO\\)'.") | 64 | A 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. |
| 80 | For other modes it is disabled. If this is equal to t, | 80 | For other modes it is disabled. If this is equal to t, |
| 81 | then Which Function mode is enabled in any major mode that supports it." | 81 | then 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. | |||
| 2464 | To specify a coding system for converting non-ASCII characters | 2464 | To specify a coding system for converting non-ASCII characters |
| 2465 | in the input and output to the shell command, use \\[universal-coding-system-argument] | 2465 | in the input and output to the shell command, use \\[universal-coding-system-argument] |
| 2466 | before this command. By default, the input (from the current buffer) | 2466 | before this command. By default, the input (from the current buffer) |
| 2467 | is encoded in the same coding system that will be used to save the file, | 2467 | is encoded using coding-system specified by `process-coding-system-alist', |
| 2468 | `buffer-file-coding-system'. If the output is going to replace the region, | 2468 | falling back to `default-process-coding-system' if no match for COMMAND |
| 2469 | then it is decoded from that same coding system. | 2469 | is found in `process-coding-system-alist'. |
| 2470 | 2470 | ||
| 2471 | The noninteractive arguments are START, END, COMMAND, | 2471 | The noninteractive arguments are START, END, COMMAND, |
| 2472 | OUTPUT-BUFFER, REPLACE, ERROR-BUFFER, and DISPLAY-ERROR-BUFFER. | 2472 | OUTPUT-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'. | |||
| 1989 | So escape sequences and keyboard encoding are taken into account. | 1990 | So escape sequences and keyboard encoding are taken into account. |
| 1990 | When there's an ambiguity because the key looks like the prefix of | 1991 | When there's an ambiguity because the key looks like the prefix of |
| 1991 | some sort of escape sequence, the ambiguity is resolved via `read-key-delay'." | 1992 | some 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 | ||
| 2094 | This function echoes `.' for each character that the user types. | 2099 | This function echoes `.' for each character that the user types. |
| 2095 | 2100 | ||
| 2096 | The user ends with RET, LFD, or ESC. DEL or C-h rubs out. | ||
| 2097 | C-y yanks the current kill. C-u kills line. | ||
| 2098 | C-g quits; if `inhibit-quit' was non-nil around this function, | ||
| 2099 | then it returns nil if the user types C-g, but `quit-flag' remains set. | ||
| 2100 | |||
| 2101 | Once the caller uses the password, it can erase the password | 2101 | Once the caller uses the password, it can erase the password |
| 2102 | by doing (clear-string STRING)." | 2102 | by 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. | |||
| 3557 | To replace only the first match (if any), make REGEXP match up to \\' | 3530 | To replace only the first match (if any), make REGEXP match up to \\' |
| 3558 | and replace a sub-expression, e.g. | 3531 | and 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. |
| 1202 | With argument STATE, turn Artist mode on if STATE is positive. | 1202 | With argument ARG, turn Artist mode on if ARG is positive. |
| 1203 | Artist lets you draw lines, squares, rectangles and poly-lines, | 1203 | Artist lets you draw lines, squares, rectangles and poly-lines, |
| 1204 | ellipses and circles with your mouse and/or keyboard. | 1204 | ellipses and circles with your mouse and/or keyboard. |
| 1205 | 1205 | ||
| @@ -1388,36 +1388,24 @@ Variables | |||
| 1388 | 1388 | ||
| 1389 | Hooks | 1389 | Hooks |
| 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 | ||
| 1395 | Keymap summary | 1394 | Keymap 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 | ||
| 11 | 2012-04-10 Lars Magne Ingebrigtsen <larsi@gnus.org> | 11 | 2012-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. |
| 313 | If optional second argument ALLOW-NEWLINES is non-nil, then allow the | 313 | If optional second argument ALLOW-NEWLINES is non-nil, then allow the |
| 314 | decoding of carriage returns and line feeds in the string, which is normally | 314 | decoding of carriage returns and line feeds in the string, which is normally |
| 315 | forbidden in URL encoding. | 315 | forbidden in URL encoding." |
| 316 | If CODING-SYSTEM is non-nil, interpret the unhexed string as | ||
| 317 | being 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. | ||
| 70 | It 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. |
| 78 | If nil, use the value of `vc-diff-switches'. If t, use no switches." | 69 | If 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', |
| 418 | which directly correspond to `bzr status' output, or 'unchanged | 401 | which directly correspond to `bzr status' output, or 'unchanged |
| 419 | for files whose copy in the working tree is identical to the one | 402 | for files whose copy in the working tree is identical to the one |
| 420 | in the branch repository, or nil for files that are not | 403 | in the branch repository (or whose status not be determined)." |
| 421 | registered with Bzr. | 404 | ;; Doc used to also say the following, but AFAICS, it has never been true. |
| 422 | 405 | ;; | |
| 423 | If 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)) |