aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2013-04-16 17:10:51 +0300
committerEli Zaretskii2013-04-16 17:10:51 +0300
commit83b9062422faef46592618bed64e5df47fe13670 (patch)
tree964e529ab141daefa7b8a4f3e1788885e967f987
parent895591043f735398ad3930d12f82c0b9dfe07730 (diff)
parenta7bef505860dc15dd9fc1513e45a1ec71417471e (diff)
downloademacs-83b9062422faef46592618bed64e5df47fe13670.tar.gz
emacs-83b9062422faef46592618bed64e5df47fe13670.zip
Merge from trunk.
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/tips.texi16
-rw-r--r--doc/misc/ChangeLog5
-rw-r--r--doc/misc/tramp.texi22
-rw-r--r--etc/ChangeLog5
-rw-r--r--etc/NEWS6
-rw-r--r--lisp/ChangeLog91
-rw-r--r--lisp/doc-view.el4
-rw-r--r--lisp/emacs-lisp/nadvice.el17
-rw-r--r--lisp/gnus/ChangeLog7
-rw-r--r--lisp/gnus/shr.el17
-rw-r--r--lisp/minibuffer.el7
-rw-r--r--lisp/progmodes/cc-langs.el4
-rw-r--r--lisp/progmodes/cc-menus.el159
-rw-r--r--lisp/progmodes/cc-mode.el9
-rw-r--r--lisp/progmodes/ruby-mode.el25
-rw-r--r--lisp/term/ns-win.el2
-rw-r--r--lisp/term/w32-win.el2
-rw-r--r--src/ChangeLog12
-rw-r--r--src/minibuf.c2
-rw-r--r--test/automated/ruby-mode-tests.el36
21 files changed, 356 insertions, 97 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index f65c2e85461..31e4f791350 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12013-04-15 Christopher Schmidt <christopher@ch.ristopher.com>
2
3 * tips.texi (Coding Conventions): Mention separation of package
4 descriptor and name of internal symbols by two hyphens.
5
12013-04-13 Stephen Berman <stephen.berman@gmx.net> 62013-04-13 Stephen Berman <stephen.berman@gmx.net>
2 7
3 * windows.texi (Splitting Windows): Change category of 8 * windows.texi (Splitting Windows): Change category of
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 4c443da3af8..c40ae408f7f 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -51,13 +51,15 @@ don't postpone it.
51 51
52@item 52@item
53You should choose a short word to distinguish your program from other 53You should choose a short word to distinguish your program from other
54Lisp programs. The names of all global variables, constants, and 54Lisp programs. The names of all global symbols in your program, that
55functions in your program should begin with that chosen prefix. 55is the names of variables, constants, and functions, should begin with
56Separate the prefix from the rest of the name with a hyphen, @samp{-}. 56that chosen prefix. Separate the prefix from the rest of the name
57This practice helps avoid name conflicts, since all global variables 57with a hyphen, @samp{-}. Use two hyphens if the symbol is not meant
58in Emacs Lisp share the same name space, and all functions share 58to be used by other packages. This practice helps avoid name
59another name space@footnote{The benefits of a Common Lisp-style 59conflicts, since all global variables in Emacs Lisp share the same
60package system are considered not to outweigh the costs.}. 60name space, and all functions share another name space@footnote{The
61benefits of a Common Lisp-style package system are considered not to
62outweigh the costs.}.
61 63
62Occasionally, for a command name intended for users to use, it is more 64Occasionally, for a command name intended for users to use, it is more
63convenient if some words come before the package's name prefix. And 65convenient if some words come before the package's name prefix. And
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index a5b2edbc26f..5e9840a86b7 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,8 @@
12013-04-16 Michael Albinus <michael.albinus@gmx.de>
2
3 * tramp.texi (Frequently Asked Questions): Precise, how to define
4 an own ControlPath.
5
12013-04-15 Michael Albinus <michael.albinus@gmx.de> 62013-04-15 Michael Albinus <michael.albinus@gmx.de>
2 7
3 * tramp.texi (Frequently Asked Questions): New item for 8 * tramp.texi (Frequently Asked Questions): New item for
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 42a3156c1e9..4c3740f02f7 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -3139,6 +3139,28 @@ already an @command{ssh} connection to that host. Further
3139process on that host, will reuse that initial @command{ssh} 3139process on that host, will reuse that initial @command{ssh}
3140connection. 3140connection.
3141 3141
3142If your @command{ssh} version supports the @code{ControlPersist}
3143option, you could customize the variable
3144@code{tramp-ssh-controlmaster-options} to use your @code{ControlPath},
3145for example:
3146
3147@lisp
3148(setq tramp-ssh-controlmaster-options
3149 (concat
3150 "-o ControlPath=/tmp/ssh-ControlPath-%%r@@%%h:%%p "
3151 "-o ControlMaster=auto -o ControlPersist=yes"))
3152@end lisp
3153
3154Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and
3155"%%p", respectively. The entries of @code{ControlPath},
3156@code{ControlMaster} and @code{ControlPersist} can be removed from
3157this setting, if they are configured properly in your
3158@file{~/.ssh/config}:
3159
3160@lisp
3161(setq tramp-ssh-controlmaster-options "")
3162@end lisp
3163
3142 3164
3143@item 3165@item
3144File name completion does not work with @value{tramp} 3166File name completion does not work with @value{tramp}
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 31d14b96d94..2b7534dc1e7 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,8 @@
12013-04-15 Christopher Schmidt <christopher@ch.ristopher.com>
2
3 * NEWS: Mention separation of package descriptor and name of
4 internal symbols by two hyphens.
5
12013-04-13 Stephen Berman <stephen.berman@gmx.net> 62013-04-13 Stephen Berman <stephen.berman@gmx.net>
2 7
3 * NEWS: Mention fixing `split-window' to be non-interactive. 8 * NEWS: Mention fixing `split-window' to be non-interactive.
diff --git a/etc/NEWS b/etc/NEWS
index 1e072afaaf1..0830a7be469 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -409,6 +409,12 @@ used in place of the 9th element of `file-attributes'.
409`preserve-extended-attributes' as it now handles both SELinux context 409`preserve-extended-attributes' as it now handles both SELinux context
410and ACL entries. 410and ACL entries.
411 411
412** Changes to the Emacs Lisp Coding Conventions in Emacs 24.4
413
414*** The package descriptor and name of global variables, constants,
415and functions should be separated by two hypens if the symbol is not
416meant to be used by other packages.
417
412 418
413* Changes in Emacs 24.4 on Non-Free Operating Systems 419* Changes in Emacs 24.4 on Non-Free Operating Systems
414 420
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2231d96a757..f62dff32008 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,65 @@
12013-04-16 Juanma Barranquero <lekktu@gmail.com>
2
3 * minibuffer.el (completion--twq-all):
4 * term/ns-win.el (ns-initialize-window-system):
5 * term/w32-win.el (w32-initialize-window-system): Silence byte-compiler.
6
72013-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
8
9 * emacs-lisp/nadvice.el (add-function): Default simple vars to their
10 global bindings.
11
12 * doc-view.el (doc-view-start-process): Handle url-handler directories.
13
142013-04-15 Dmitry Gutov <dgutov@yandex.ru>
15
16 * progmodes/ruby-mode.el (ruby-beginning-of-defun)
17 (ruby-end-of-defun, ruby-move-to-block): Bind `case-fold-search'
18 to nil.
19 (ruby-end-of-defun): Remove the unused arg, change the docstring
20 to reflect that this function is only used as the value of
21 `end-of-defun-function'.
22 (ruby-beginning-of-defun): Remove "top-level" from the docstring,
23 to reflect an earlier change that beginning/end-of-defun functions
24 jump between methods in a class definition, as well as top-level
25 functions.
26
272013-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
28
29 * minibuffer.el (minibuffer-complete): Don't just scroll
30 a *Completions* that's been iconified.
31 (minibuffer-force-complete): Make sure repetitions do cycle when going
32 through completion-in-region -> minibuffer-complete.
33
342013-04-15 Alan Mackenzie <acm@muc.de>
35
36 Correct the placement of c-cpp-delimiters when there're #s not at
37 col 0.
38
39 * progmodes/cc-langs.el (c-anchored-cpp-prefix): Reformulate and
40 place a submatch around the #.
41 * progmodes/cc-mode.el(c-neutralize-syntax-in-and-mark-CPP):
42 Start a search at BOL. Put the c-cpp-delimiter category text propertiy
43 on the #, not BOL.
44
452013-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
46
47 * emacs-lisp/nadvice.el: Properly test names when adding advice.
48 (advice--member-p): New arg `name'.
49 (advice--add-function, advice-member-p): Use it (bug#14202).
50
512013-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
52
53 Reformulate java imenu-generic-expression.
54 The old expression contained ill formed regexps.
55
56 * progmodes/cc-menus.el (cc-imenu-java-ellipsis-regexp)
57 (cc-imenu-java-type-spec-regexp, cc-imenu-java-comment-regexp)
58 (cc-imenu-java-method-arg-regexp): New defconsts.
59 (cc-imenu-java-build-type-args-regex): New defun.
60 (cc-imenu-java-generic-expression): Fix, to remove "ambiguous"
61 handling of spaces in the regexp.
62
12013-03-15 Agustín Martín Domingo <agustin.martin@hispalinux.es> 632013-03-15 Agustín Martín Domingo <agustin.martin@hispalinux.es>
2 64
3 * textmodes/ispell.el (ispell-command-loop): Remove 65 * textmodes/ispell.el (ispell-command-loop): Remove
@@ -150,7 +212,7 @@
150 * whitespace.el (whitespace-color-on, whitespace-color-off): 212 * whitespace.el (whitespace-color-on, whitespace-color-off):
151 Only call `font-lock-fontify-buffer' when `font-lock-mode' is on. 213 Only call `font-lock-fontify-buffer' when `font-lock-mode' is on.
152 214
1532013-04-05 Jacek ChrzÄ…szcz <chrzaszcz@mimuw.edu.pl> (tiny change) 2152013-04-05 Jacek ChrzÄ…szcz <chrzaszcz@mimuw.edu.pl> (tiny change)
154 216
155 * ispell.el (ispell-set-spellchecker-params): 217 * ispell.el (ispell-set-spellchecker-params):
156 Really set `ispell-args' for all equivs. 218 Really set `ispell-args' for all equivs.
@@ -327,7 +389,7 @@
3272013-03-27 Aidan Gauland <aidalgol@no8wireless.co.nz> 3892013-03-27 Aidan Gauland <aidalgol@no8wireless.co.nz>
328 390
329 * eshell/em-unix.el: Move su and sudo to... 391 * eshell/em-unix.el: Move su and sudo to...
330 * eshell/em-tramp.el: ...Eshell tramp module 392 * eshell/em-tramp.el: ...Eshell tramp module.
331 393
3322013-03-26 Stefan Monnier <monnier@iro.umontreal.ca> 3942013-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
333 395
@@ -1322,7 +1384,6 @@
1322 * emacs-lisp/eieio-opt.el (eieio-class-button, eieio-describe-generic) 1384 * emacs-lisp/eieio-opt.el (eieio-class-button, eieio-describe-generic)
1323 (eieio-browse-tree, eieio-browse): Use eieio--check-type. 1385 (eieio-browse-tree, eieio-browse): Use eieio--check-type.
1324 1386
1325
13262013-02-18 Aidan Gauland <aidalgol@no8wireless.co.nz> 13872013-02-18 Aidan Gauland <aidalgol@no8wireless.co.nz>
1327 1388
1328 * eshell/em-cmpl.el: Correct "context-related help" keybinding in 1389 * eshell/em-cmpl.el: Correct "context-related help" keybinding in
@@ -1529,7 +1590,7 @@
1529 [scpc, rsyncc]: Remove methods. 1590 [scpc, rsyncc]: Remove methods.
1530 (top): Remove completion functions for "scpc", "rsyncc", "ssh1_old" 1591 (top): Remove completion functions for "scpc", "rsyncc", "ssh1_old"
1531 and "ssh2_old". 1592 and "ssh2_old".
1532 (tramp-do-copy-or-rename-file-out-of-band): Change trace level. 1593 (tramp-do-copy-or-rename-file-out-of-band): Change trace level.
1533 (tramp-maybe-open-connection): Reuse tmpfile for ControlPath. 1594 (tramp-maybe-open-connection): Reuse tmpfile for ControlPath.
1534 1595
15352013-02-13 Stefan Monnier <monnier@iro.umontreal.ca> 15962013-02-13 Stefan Monnier <monnier@iro.umontreal.ca>
@@ -1538,7 +1599,7 @@
1538 1599
15392013-02-13 Jambunathan K <kjambunathan@gmail.com> 16002013-02-13 Jambunathan K <kjambunathan@gmail.com>
1540 1601
1541 * icomplete.el (icomplete-hide-common-prefix): New user option. 1602 * icomplete.el (icomplete-hide-common-prefix): New user option.
1542 (icomplete-first-match): New face. 1603 (icomplete-first-match): New face.
1543 (icomplete-completions): Correct handling of "complete but not 1604 (icomplete-completions): Correct handling of "complete but not
1544 unique" (Bug#12638). 1605 unique" (Bug#12638).
@@ -1821,7 +1882,7 @@
1821 instead passing extra parameter HERE to several functions. 1882 instead passing extra parameter HERE to several functions.
1822 Remove 'BOD strategy. 1883 Remove 'BOD strategy.
1823 1884
18242013-02-06 Nicolas Richard <theonewiththeevillook@yahoo.fr> (tiny change) 18852013-02-06 Nicolas Richard <theonewiththeevillook@yahoo.fr> (tiny change)
1825 1886
1826 * emacs-lisp/package.el (describe-package-1): Tell what archive is 1887 * emacs-lisp/package.el (describe-package-1): Tell what archive is
1827 used to install the package. 1888 used to install the package.
@@ -2213,7 +2274,7 @@
2213 2274
2214 * xml.el (xml-entity-or-char-ref-re): Fix regexp. 2275 * xml.el (xml-entity-or-char-ref-re): Fix regexp.
2215 2276
22162013-01-24 Aaron Ecay <aaronecay@gmail.com> (tiny change) 22772013-01-24 Aaron Ecay <aaronecay@gmail.com> (tiny change)
2217 2278
2218 * paren.el (show-paren-function): Make sure to set 'priority and 2279 * paren.el (show-paren-function): Make sure to set 'priority and
2219 'face only if the overlay does exist. 2280 'face only if the overlay does exist.
@@ -2373,7 +2434,7 @@
2373 2434
23742013-01-15 Michael R. Mauger <mmaug@yahoo.com> 24352013-01-15 Michael R. Mauger <mmaug@yahoo.com>
2375 2436
2376 * progmodes/sql.el: (sql-imenu-generic-expression): 2437 * progmodes/sql.el (sql-imenu-generic-expression):
2377 (sql-mode-font-lock-object-name): Match schema qualified names. 2438 (sql-mode-font-lock-object-name): Match schema qualified names.
2378 (sql-connect): Use string keys. 2439 (sql-connect): Use string keys.
2379 (sql-product-interactive): Wait for interpreter prompt. 2440 (sql-product-interactive): Wait for interpreter prompt.
@@ -2992,7 +3053,7 @@
2992 * calc/calc-forms.el (math-parse-date): Try using 3053 * calc/calc-forms.el (math-parse-date): Try using
2993 `math-parse-iso-date' when it looks like it might be needed. 3054 `math-parse-iso-date' when it looks like it might be needed.
2994 Allow times of 24:00. 3055 Allow times of 24:00.
2995 (math-parse-date-validate, math-parse-iso-date-validate): Allow times 3056 (math-parse-date-validate, math-parse-iso-date-validate): Allow times
2996 of 24:00. 3057 of 24:00.
2997 3058
29982012-12-30 Glenn Morris <rgm@gnu.org> 30592012-12-30 Glenn Morris <rgm@gnu.org>
@@ -3155,7 +3216,7 @@
3155 (tramp-adb-get-toolbox): New defun. Check for remote shell 3216 (tramp-adb-get-toolbox): New defun. Check for remote shell
3156 implementation (BusyBox or Toolbox). 3217 implementation (BusyBox or Toolbox).
3157 3218
31582012-12-24 Constantin Kulikov <zxnotdead@gmail.com> (tiny change) 32192012-12-24 Constantin Kulikov <zxnotdead@gmail.com> (tiny change)
3159 3220
3160 * startup.el (initial-buffer-choice): Allow function as value 3221 * startup.el (initial-buffer-choice): Allow function as value
3161 (Bug#13251). 3222 (Bug#13251).
@@ -3302,7 +3363,7 @@
3302 Add `file-acl' and `set-file-acl' handlers. 3363 Add `file-acl' and `set-file-acl' handlers.
3303 (tramp-smb-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES. 3364 (tramp-smb-handle-copy-file): Handle PRESERVE-EXTENDED-ATTRIBUTES.
3304 3365
33052012-12-17 Kelly Dean <kellydeanch@yahoo.com> (tiny change) 33662012-12-17 Kelly Dean <kellydeanch@yahoo.com> (tiny change)
3306 3367
3307 * help-macro.el (make-help-screen): Instead of switch-to-buffer 3368 * help-macro.el (make-help-screen): Instead of switch-to-buffer
3308 use pop-to-buffer with NORECORD argument t. As buffer name, use 3369 use pop-to-buffer with NORECORD argument t. As buffer name, use
@@ -3503,7 +3564,7 @@
3503 3564
35042012-12-11 Jay Belanger <jay.p.belanger@gmail.com> 35652012-12-11 Jay Belanger <jay.p.belanger@gmail.com>
3505 3566
3506 * calc/calc.el (calc-standard-date-formats): Add more date 3567 * calc/calc.el (calc-standard-date-formats): Add more date
3507 formats. 3568 formats.
3508 * calc/calc-forms.el (math-parse-iso-date): New function. 3569 * calc/calc-forms.el (math-parse-iso-date): New function.
3509 (math-parse-date): Use `math-parse-iso-date' when appropriate. 3570 (math-parse-date): Use `math-parse-iso-date' when appropriate.
@@ -3537,7 +3598,7 @@
3537 3598
3538 * subr.el (inotify-event-p, inotify-handle-event): New functions. 3599 * subr.el (inotify-event-p, inotify-handle-event): New functions.
3539 3600
35402012-12-10 Dani Moncayo <dmoncayo@gmail.com> 36012012-12-10 Dani Moncayo <dmoncayo@gmail.com>
3541 3602
3542 * simple.el (just-one-space): Doc fix. 3603 * simple.el (just-one-space): Doc fix.
3543 3604
@@ -4375,7 +4436,7 @@
4375 4436
43762012-11-19 Jay Belanger <jay.p.belanger@gmail.com> 44372012-11-19 Jay Belanger <jay.p.belanger@gmail.com>
4377 4438
4378 * calc/calc-forms.el (math-leap-year-p): Fix formula for negative 4439 * calc/calc-forms.el (math-leap-year-p): Fix formula for negative
4379 year numbers. 4440 year numbers.
4380 (math-date-to-julian-dt): Adjust the initial approximation for the 4441 (math-date-to-julian-dt): Adjust the initial approximation for the
4381 year to deal with the new definition of the DATE. 4442 year to deal with the new definition of the DATE.
@@ -5460,7 +5521,7 @@
5460 Recover input meta mode when the new coding system doesn not use 8-bit. 5521 Recover input meta mode when the new coding system doesn not use 8-bit.
5461 Supply TERMINAL arg to set-input-meta-mode. 5522 Supply TERMINAL arg to set-input-meta-mode.
5462 5523
54632012-10-17 Michael Heerdegen <michael_heerdegen@web.de> 55242012-10-17 Michael Heerdegen <michael_heerdegen@web.de>
5464 5525
5465 * wdired.el (wdired-old-marks): New variable. 5526 * wdired.el (wdired-old-marks): New variable.
5466 (wdired-change-to-wdired-mode): Locally set wdired-old-marks. 5527 (wdired-change-to-wdired-mode): Locally set wdired-old-marks.
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 6217f5d0a3f..b1f399d5b73 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -881,8 +881,8 @@ Should be invoked when the cached images aren't up-to-date."
881(defun doc-view-start-process (name program args callback) 881(defun doc-view-start-process (name program args callback)
882 ;; Make sure the process is started in an existing directory, (rather than 882 ;; Make sure the process is started in an existing directory, (rather than
883 ;; some file-name-handler-managed dir, for example). 883 ;; some file-name-handler-managed dir, for example).
884 (let* ((default-directory (if (file-readable-p default-directory) 884 (let* ((default-directory (or (unhandled-file-name-directory
885 default-directory 885 default-directory)
886 (expand-file-name "~/"))) 886 (expand-file-name "~/")))
887 (proc (apply 'start-process name doc-view-conversion-buffer 887 (proc (apply 'start-process name doc-view-conversion-buffer
888 program args))) 888 program args)))
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 0632c7d2fc0..6c09ddfb8cf 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -158,11 +158,12 @@ WHERE is a symbol to select an entry in `advice--where-alist'."
158 (advice--make-1 (nth 1 desc) (nth 2 desc) 158 (advice--make-1 (nth 1 desc) (nth 2 desc)
159 function main props))) 159 function main props)))
160 160
161(defun advice--member-p (function definition) 161(defun advice--member-p (function name definition)
162 (let ((found nil)) 162 (let ((found nil))
163 (while (and (not found) (advice--p definition)) 163 (while (and (not found) (advice--p definition))
164 (if (or (equal function (advice--car definition)) 164 (if (or (equal function (advice--car definition))
165 (equal function (cdr (assq 'name (advice--props definition))))) 165 (when name
166 (equal name (cdr (assq 'name (advice--props definition))))))
166 (setq found t) 167 (setq found t)
167 (setq definition (advice--cdr definition)))) 168 (setq definition (advice--cdr definition))))
168 found)) 169 found))
@@ -235,9 +236,8 @@ PROPS is an alist of additional properties, among which the following have
235a special meaning: 236a special meaning:
236- `name': a string or symbol. It can be used to refer to this piece of advice. 237- `name': a string or symbol. It can be used to refer to this piece of advice.
237 238
238PLACE cannot be a simple variable. Instead it should either be 239If PLACE is a simple variable, only its global value will be affected.
239\(default-value 'VAR) or (local 'VAR) depending on whether FUNCTION 240Use (local 'VAR) if you want to apply FUNCTION to VAR buffer-locally.
240should be applied to VAR buffer-locally or globally.
241 241
242If one of FUNCTION or OLDFUN is interactive, then the resulting function 242If one of FUNCTION or OLDFUN is interactive, then the resulting function
243is also interactive. There are 3 cases: 243is also interactive. There are 3 cases:
@@ -250,12 +250,13 @@ is also interactive. There are 3 cases:
250 (cond ((eq 'local (car-safe place)) 250 (cond ((eq 'local (car-safe place))
251 (setq place `(advice--buffer-local ,@(cdr place)))) 251 (setq place `(advice--buffer-local ,@(cdr place))))
252 ((symbolp place) 252 ((symbolp place)
253 (error "Use (default-value '%S) or (local '%S)" place place))) 253 (setq place `(default-value ',place))))
254 `(advice--add-function ,where (gv-ref ,place) ,function ,props)) 254 `(advice--add-function ,where (gv-ref ,place) ,function ,props))
255 255
256;;;###autoload 256;;;###autoload
257(defun advice--add-function (where ref function props) 257(defun advice--add-function (where ref function props)
258 (unless (advice--member-p function (gv-deref ref)) 258 (unless (advice--member-p function (cdr (assq 'name props))
259 (gv-deref ref))
259 (setf (gv-deref ref) 260 (setf (gv-deref ref)
260 (advice--make where function (gv-deref ref) props)))) 261 (advice--make where function (gv-deref ref) props))))
261 262
@@ -396,7 +397,7 @@ of the piece of advice."
396 "Return non-nil if ADVICE has been added to FUNCTION-NAME. 397 "Return non-nil if ADVICE has been added to FUNCTION-NAME.
397Instead of ADVICE being the actual function, it can also be the `name' 398Instead of ADVICE being the actual function, it can also be the `name'
398of the piece of advice." 399of the piece of advice."
399 (advice--member-p advice 400 (advice--member-p advice advice
400 (or (get function-name 'advice--pending) 401 (or (get function-name 'advice--pending)
401 (advice--strip-macro 402 (advice--strip-macro
402 (if (fboundp function-name) 403 (if (fboundp function-name)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index cc7897accb6..144b6482b9d 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,10 @@
12013-04-16 David Edmondson <dme@dme.org>
2
3 Support <img src="data:...">.
4
5 * shr.el (shr-image-from-data): New function.
6 (shr-tag-img): Use it.
7
12013-04-14 Andrew Cohen <cohen@bu.edu> 82013-04-14 Andrew Cohen <cohen@bu.edu>
2 9
3 * nnir.el (nnir-request-set-mark): Make sure we are in the right 10 * nnir.el (nnir-request-set-mark): Make sure we are in the right
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 5df5297ba8a..293ba2445e9 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -593,6 +593,17 @@ size, and full-buffer size."
593 (put-text-property start (point) type value)))))))))) 593 (put-text-property start (point) type value))))))))))
594 (kill-buffer image-buffer))) 594 (kill-buffer image-buffer)))
595 595
596(defun shr-image-from-data (data)
597 "Return an image from the data: URI content DATA."
598 (when (string-match
599 "\\(\\([^/;,]+\\(/[^;,]+\\)?\\)\\(;[^;,]+\\)*\\)?,\\(.*\\)"
600 data)
601 (let ((param (match-string 4 data))
602 (payload (url-unhex-string (match-string 5 data))))
603 (when (string-match "^.*\\(;[ \t]*base64\\)$" param)
604 (setq payload (base64-decode-string payload)))
605 payload)))
606
596(defun shr-put-image (data alt &optional flags) 607(defun shr-put-image (data alt &optional flags)
597 "Put image DATA with a string ALT. Return image." 608 "Put image DATA with a string ALT. Return image."
598 (if (display-graphic-p) 609 (if (display-graphic-p)
@@ -983,6 +994,12 @@ ones, in case fg and bg are nil."
983 ;; Ignore zero-sized or single-pixel images. 994 ;; Ignore zero-sized or single-pixel images.
984 ) 995 )
985 ((and (not shr-inhibit-images) 996 ((and (not shr-inhibit-images)
997 (string-match "\\`data:" url))
998 (let ((image (shr-image-from-data (substring url (match-end 0)))))
999 (if image
1000 (funcall shr-put-image-function image alt)
1001 (insert alt))))
1002 ((and (not shr-inhibit-images)
986 (string-match "\\`cid:" url)) 1003 (string-match "\\`cid:" url))
987 (let ((url (substring url (match-end 0))) 1004 (let ((url (substring url (match-end 0)))
988 image) 1005 image)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 016b16d0740..06ac7a91bea 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -525,7 +525,7 @@ for use at QPOS."
525 (eq t (compare-strings s1 nil nil s2 nil nil 'ignore-case))) 525 (eq t (compare-strings s1 nil nil s2 nil nil 'ignore-case)))
526 526
527(defun completion--twq-all (string ustring completions boundary 527(defun completion--twq-all (string ustring completions boundary
528 unquote requote) 528 _unquote requote)
529 (when completions 529 (when completions
530 (pcase-let* 530 (pcase-let*
531 ((prefix 531 ((prefix
@@ -1043,7 +1043,8 @@ scroll the window of possible completions."
1043 (cond 1043 (cond
1044 ;; If there's a fresh completion window with a live buffer, 1044 ;; If there's a fresh completion window with a live buffer,
1045 ;; and this command is repeated, scroll that window. 1045 ;; and this command is repeated, scroll that window.
1046 ((window-live-p minibuffer-scroll-window) 1046 ((and (window-live-p minibuffer-scroll-window)
1047 (eq t (frame-visible-p (window-frame minibuffer-scroll-window))))
1047 (let ((window minibuffer-scroll-window)) 1048 (let ((window minibuffer-scroll-window))
1048 (with-current-buffer (window-buffer window) 1049 (with-current-buffer (window-buffer window)
1049 (if (pos-visible-in-window-p (point-max) window) 1050 (if (pos-visible-in-window-p (point-max) window)
@@ -1140,6 +1141,7 @@ scroll the window of possible completions."
1140 "Complete the minibuffer to an exact match. 1141 "Complete the minibuffer to an exact match.
1141Repeated uses step through the possible completions." 1142Repeated uses step through the possible completions."
1142 (interactive) 1143 (interactive)
1144 (setq minibuffer-scroll-window nil)
1143 ;; FIXME: Need to deal with the extra-size issue here as well. 1145 ;; FIXME: Need to deal with the extra-size issue here as well.
1144 ;; FIXME: ~/src/emacs/t<M-TAB>/lisp/minibuffer.el completes to 1146 ;; FIXME: ~/src/emacs/t<M-TAB>/lisp/minibuffer.el completes to
1145 ;; ~/src/emacs/trunk/ and throws away lisp/minibuffer.el. 1147 ;; ~/src/emacs/trunk/ and throws away lisp/minibuffer.el.
@@ -1162,6 +1164,7 @@ Repeated uses step through the possible completions."
1162 (completion--done (buffer-substring-no-properties start (point)) 'sole) 1164 (completion--done (buffer-substring-no-properties start (point)) 'sole)
1163 ;; Set cycling after modifying the buffer since the flush hook resets it. 1165 ;; Set cycling after modifying the buffer since the flush hook resets it.
1164 (setq completion-cycling t) 1166 (setq completion-cycling t)
1167 (setq this-command 'completion-at-point) ;For minibuffer-complete.
1165 ;; If completing file names, (car all) may be a directory, so we'd now 1168 ;; If completing file names, (car all) may be a directory, so we'd now
1166 ;; have a new set of possible completions and might want to reset 1169 ;; have a new set of possible completions and might want to reset
1167 ;; completion-all-sorted-completions to nil, but we prefer not to, 1170 ;; completion-all-sorted-completions to nil, but we prefer not to,
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index ba9c42e4c89..af52ad53aad 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -812,8 +812,8 @@ Assumed to not contain any submatches or \\| operators."
812(c-lang-defconst c-anchored-cpp-prefix 812(c-lang-defconst c-anchored-cpp-prefix
813 "Regexp matching the prefix of a cpp directive anchored to BOL, 813 "Regexp matching the prefix of a cpp directive anchored to BOL,
814in the languages that have a macro preprocessor." 814in the languages that have a macro preprocessor."
815 t (if (c-lang-const c-opt-cpp-prefix) 815 t "^\\s *\\(#\\)\\s *"
816 (concat "^" (c-lang-const c-opt-cpp-prefix)))) 816 (java awk) nil)
817(c-lang-defvar c-anchored-cpp-prefix (c-lang-const c-anchored-cpp-prefix)) 817(c-lang-defvar c-anchored-cpp-prefix (c-lang-const c-anchored-cpp-prefix))
818 818
819(c-lang-defconst c-opt-cpp-start 819(c-lang-defconst c-opt-cpp-start
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el
index a06eaf566d8..067a4df13dd 100644
--- a/lisp/progmodes/cc-menus.el
+++ b/lisp/progmodes/cc-menus.el
@@ -161,49 +161,132 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
161 cc-imenu-c++-generic-expression 161 cc-imenu-c++-generic-expression
162 "Imenu generic expression for C mode. See `imenu-generic-expression'.") 162 "Imenu generic expression for C mode. See `imenu-generic-expression'.")
163 163
164(defvar cc-imenu-java-generic-expression 164
165;; Auxiliary regexps for Java try to match their trailing whitespace where
166;; appropriate, but _not_ starting whitespace.
167
168(defconst cc-imenu-java-ellipsis-regexp
169 (concat
170 "\\.\\{3\\}"
171 "[ \t\n\r]*"))
172
173(defun cc-imenu-java-build-type-args-regex (depth)
174 "Builds regexp for type arguments list with DEPTH allowed
175nested angle brackets constructs."
176 (if (> depth 0)
177 (concat "<"
178 "[][.," c-alnum "_? \t\n\r]+"
179 (if (> depth 1)
180 "\\(")
181 (cc-imenu-java-build-type-args-regex (1- depth))
182 (if (> depth 1)
183 (concat "[][.," c-alnum "_? \t\n\r]*"
184 "\\)*"))
185 ">")))
186
187(defconst cc-imenu-java-type-spec-regexp
188 (concat
189 ;; zero or more identifiers followed by a dot
190 "\\("
191 "[" c-alpha "_][" c-alnum "_]*\\."
192 "\\)*"
193 ;; a single mandatory identifier without a dot
194 "[" c-alpha "_][" c-alnum "_]*"
195 ;; then choice:
196 "\\("
197 ;; (option 1) type arguments list which _may_ be followed with brackets
198 ;; and/or spaces, then optional variable arity
199 "[ \t\n\r]*"
200 (cc-imenu-java-build-type-args-regex 3)
201 "[][ \t\n\r]*"
202 "\\(" cc-imenu-java-ellipsis-regexp "\\)?"
203 "\\|"
204 ;; (option 2) just brackets and/or spaces (there should be at least one),
205 ;; then optional variable arity
206 "[][ \t\n\r]+"
207 "\\(" cc-imenu-java-ellipsis-regexp "\\)?"
208 "\\|"
209 ;; (option 3) just variable arity
210 cc-imenu-java-ellipsis-regexp
211 "\\)"))
212
213(defconst cc-imenu-java-comment-regexp
214 (concat
215 "/"
216 "\\("
217 ;; a traditional comment
218 "\\*"
219 "\\("
220 "[^*]"
221 "\\|"
222 "\\*+[^/*]"
223 "\\)*"
224 "\\*+/"
225 "\\|"
226 ;; an end-of-line comment
227 "/[^\n\r]*[\n\r]"
228 "\\)"
229 "[ \t\n\r]*"
230 ))
231
232;; Comments are allowed before the argument, after any of the
233;; modifiers and after the identifier.
234(defconst cc-imenu-java-method-arg-regexp
235 (concat
236 "\\(" cc-imenu-java-comment-regexp "\\)*"
237 ;; optional modifiers
238 "\\("
239 ;; a modifier is either an annotation or "final"
240 "\\("
241 "@[" c-alpha "_]"
242 "[" c-alnum "._]*"
243 ;; TODO support element-value pairs!
244 "\\|"
245 "final"
246 "\\)"
247 ;; a modifier ends with comments and/or ws
248 "\\("
249 "\\(" cc-imenu-java-comment-regexp "\\)+"
250 "\\|"
251 "[ \t\n\r]+"
252 "\\(" cc-imenu-java-comment-regexp "\\)*"
253 "\\)"
254 "\\)*"
255 ;; type spec
256 cc-imenu-java-type-spec-regexp
257 ;; identifier
258 "[" c-alpha "_]"
259 "[" c-alnum "_]*"
260 ;; optional comments and/or ws
261 "[ \t\n\r]*"
262 "\\(" cc-imenu-java-comment-regexp "\\)*"
263 ))
264
265(defconst cc-imenu-java-generic-expression
165 `((nil 266 `((nil
166 ,(concat 267 ,(concat
167 "[" c-alpha "_][\]\[." c-alnum "_<> ]+[ \t\n\r]+" ; type spec 268 cc-imenu-java-type-spec-regexp
168 "\\([" c-alpha "_][" c-alnum "_]*\\)" ; method name 269 "\\(" ; method name which gets captured
270 ; into index
271 "[" c-alpha "_]"
272 "[" c-alnum "_]*"
273 "\\)"
169 "[ \t\n\r]*" 274 "[ \t\n\r]*"
170 ;; An argument list htat is either empty or contains any number 275 ;; An argument list that contains zero or more arguments.
171 ;; of arguments. An argument is any number of annotations 276 (concat
172 ;; followed by a type spec followed by a word. A word is an 277 "("
173 ;; identifier. A type spec is an identifier, possibly followed 278 "[ \t\n\r]*"
174 ;; by < typespec > possibly followed by []. 279 "\\("
175 (concat "(" 280 "\\(" cc-imenu-java-method-arg-regexp ",[ \t\n\r]*\\)*"
176 "\\(" 281 cc-imenu-java-method-arg-regexp
177 "[ \t\n\r]*" 282 "\\)?"
178 "\\(" 283 ")"
179 "@" 284 "[.,_" c-alnum " \t\n\r]*" ; throws etc.
180 "[" c-alpha "_]" 285 "{"
181 "[" c-alnum "._]""*" 286 )) 7))
182 "[ \t\n\r]+"
183 "\\)*"
184 "\\("
185 "[" c-alpha "_]"
186 "[\]\[" c-alnum "_.]*"
187 "\\("
188
189 "<"
190 "[ \t\n\r]*"
191 "[\]\[.," c-alnum "_<> \t\n\r]*"
192 ">"
193 "\\)?"
194 "\\(\\[\\]\\)?"
195 "[ \t\n\r]+"
196 "\\)"
197 "[" c-alpha "_]"
198 "[" c-alnum "_]*"
199 "[ \t\n\r,]*"
200 "\\)*"
201 ")"
202 "[.," c-alnum " \t\n\r]*"
203 "{"
204 )) 1))
205 "Imenu generic expression for Java mode. See `imenu-generic-expression'.") 287 "Imenu generic expression for Java mode. See `imenu-generic-expression'.")
206 288
289
207;; Internal variables 290;; Internal variables
208(defvar cc-imenu-objc-generic-expression-noreturn-index nil) 291(defvar cc-imenu-objc-generic-expression-noreturn-index nil)
209(defvar cc-imenu-objc-generic-expression-general-func-index nil) 292(defvar cc-imenu-objc-generic-expression-general-func-index nil)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 3c3a5766582..17e80b8b25b 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -936,7 +936,8 @@ Note that the style variables are always made local to the buffer."
936 936
937 ;; Add needed properties to each CPP construct in the region. 937 ;; Add needed properties to each CPP construct in the region.
938 (goto-char c-new-BEG) 938 (goto-char c-new-BEG)
939 (let ((pps-position c-new-BEG) pps-state mbeg) 939 (skip-chars-backward " \t")
940 (let ((pps-position (point)) pps-state mbeg)
940 (while (and (< (point) c-new-END) 941 (while (and (< (point) c-new-END)
941 (search-forward-regexp c-anchored-cpp-prefix c-new-END t)) 942 (search-forward-regexp c-anchored-cpp-prefix c-new-END t))
942 ;; If we've found a "#" inside a string/comment, ignore it. 943 ;; If we've found a "#" inside a string/comment, ignore it.
@@ -945,14 +946,12 @@ Note that the style variables are always made local to the buffer."
945 pps-position (point)) 946 pps-position (point))
946 (unless (or (nth 3 pps-state) ; in a string? 947 (unless (or (nth 3 pps-state) ; in a string?
947 (nth 4 pps-state)) ; in a comment? 948 (nth 4 pps-state)) ; in a comment?
948 (goto-char (match-beginning 0)) 949 (goto-char (match-beginning 1))
949 (setq mbeg (point)) 950 (setq mbeg (point))
950 (if (> (c-syntactic-end-of-macro) mbeg) 951 (if (> (c-syntactic-end-of-macro) mbeg)
951 (progn 952 (progn
952 (c-neutralize-CPP-line mbeg (point)) 953 (c-neutralize-CPP-line mbeg (point))
953 (c-set-cpp-delimiters mbeg (point)) 954 (c-set-cpp-delimiters mbeg (point)))
954 ;(setq pps-position (point))
955 )
956 (forward-line)) ; no infinite loop with, e.g., "#//" 955 (forward-line)) ; no infinite loop with, e.g., "#//"
957 ))))) 956 )))))
958 957
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 6e471d1aa2a..631badac34c 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -847,22 +847,24 @@ Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'."
847 indent)))) 847 indent))))
848 848
849(defun ruby-beginning-of-defun (&optional arg) 849(defun ruby-beginning-of-defun (&optional arg)
850 "Move backward to the beginning of the current top-level defun. 850 "Move backward to the beginning of the current defun.
851With ARG, move backward multiple defuns. Negative ARG means 851With ARG, move backward multiple defuns. Negative ARG means
852move forward." 852move forward."
853 (interactive "p") 853 (interactive "p")
854 (and (re-search-backward (concat "^\\s *" ruby-defun-beg-re "\\_>") 854 (let (case-fold-search)
855 nil t (or arg 1)) 855 (and (re-search-backward (concat "^\\s *" ruby-defun-beg-re "\\_>")
856 (beginning-of-line))) 856 nil t (or arg 1))
857 857 (beginning-of-line))))
858(defun ruby-end-of-defun (&optional arg) 858
859 "Move forward to the end of the current top-level defun. 859(defun ruby-end-of-defun ()
860With ARG, move forward multiple defuns. Negative ARG means 860 "Move point to the end of the current defun.
861move backward." 861The defun begins at or after the point. This function is called
862by `end-of-defun'."
862 (interactive "p") 863 (interactive "p")
863 (ruby-forward-sexp) 864 (ruby-forward-sexp)
864 (when (looking-back (concat "^\\s *" ruby-block-end-re)) 865 (let (case-fold-search)
865 (forward-line 1))) 866 (when (looking-back (concat "^\\s *" ruby-block-end-re))
867 (forward-line 1))))
866 868
867(defun ruby-beginning-of-indent () 869(defun ruby-beginning-of-indent ()
868 "Backtrack to a line which can be used as a reference for 870 "Backtrack to a line which can be used as a reference for
@@ -881,6 +883,7 @@ current block, a sibling block, or an outer block. Do that (abs N) times."
881 (depth (or (nth 2 (ruby-parse-region (line-beginning-position) 883 (depth (or (nth 2 (ruby-parse-region (line-beginning-position)
882 (line-end-position))) 884 (line-end-position)))
883 0)) 885 0))
886 case-fold-search
884 down done) 887 down done)
885 (when (< (* depth signum) 0) 888 (when (< (* depth signum) 0)
886 ;; Moving end -> end or beginning -> beginning. 889 ;; Moving end -> end or beginning -> beginning.
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index 5617c31beff..0d4d3aaa26b 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -895,7 +895,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
895 895
896;; Do the actual Nextstep Windows setup here; the above code just 896;; Do the actual Nextstep Windows setup here; the above code just
897;; defines functions and variables that we use now. 897;; defines functions and variables that we use now.
898(defun ns-initialize-window-system (&optional display) 898(defun ns-initialize-window-system (&optional _display)
899 "Initialize Emacs for Nextstep (Cocoa / GNUstep) windowing." 899 "Initialize Emacs for Nextstep (Cocoa / GNUstep) windowing."
900 (cl-assert (not ns-initialized)) 900 (cl-assert (not ns-initialized))
901 901
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index b0f65812eab..acadb0fad43 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -246,7 +246,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
246(declare-function x-parse-geometry "frame.c" (string)) 246(declare-function x-parse-geometry "frame.c" (string))
247(defvar x-command-line-resources) 247(defvar x-command-line-resources)
248 248
249(defun w32-initialize-window-system (&optional display) 249(defun w32-initialize-window-system (&optional _display)
250 "Initialize Emacs for W32 GUI frames." 250 "Initialize Emacs for W32 GUI frames."
251 (cl-assert (not w32-initialized)) 251 (cl-assert (not w32-initialized))
252 252
diff --git a/src/ChangeLog b/src/ChangeLog
index 11b82f57108..04a6c353619 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12013-04-16 Juanma Barranquero <lekktu@gmail.com>
2
3 * minibuf.c (Ftest_completion): Silence compiler warning.
4
12013-04-15 Eli Zaretskii <eliz@gnu.org> 52013-04-15 Eli Zaretskii <eliz@gnu.org>
2 6
3 * w32fns.c (w32_wnd_proc): Add more assertions to investigate 7 * w32fns.c (w32_wnd_proc): Add more assertions to investigate
@@ -1257,7 +1261,7 @@
1257 (Fcommand_execute): Remove, replace by an Elisp implementation. 1261 (Fcommand_execute): Remove, replace by an Elisp implementation.
1258 (syms_of_keyboard): Adjust accordingly. 1262 (syms_of_keyboard): Adjust accordingly.
1259 1263
12602013-02-19 Daniel Colascione <dancol@dancol.org> 12642013-02-19 Daniel Colascione <dancol@dancol.org>
1261 1265
1262 * sheap.c (report_sheap_usage): Use message, not message1, so 1266 * sheap.c (report_sheap_usage): Use message, not message1, so
1263 that we don't try to create a buffer while we're in the middle 1267 that we don't try to create a buffer while we're in the middle
@@ -12081,9 +12085,9 @@
12081 to denote vector blocks. Adjust users (live_vector_p, 12085 to denote vector blocks. Adjust users (live_vector_p,
12082 mark_maybe_pointer, valid_lisp_object_p) accordingly. 12086 mark_maybe_pointer, valid_lisp_object_p) accordingly.
12083 (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG. 12087 (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG.
12084 (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES), 12088 (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES)
12085 (VBLOCK_BYTES_MIN, VBLOCK_BYTES_MAX, VECTOR_MAX_FREE_LIST_INDEX), 12089 (VBLOCK_BYTES_MIN, VBLOCK_BYTES_MAX, VECTOR_MAX_FREE_LIST_INDEX)
12086 (VECTOR_FREE_LIST_FLAG, ADVANCE, VINDEX, SETUP_ON_FREE_LIST), 12090 (VECTOR_FREE_LIST_FLAG, ADVANCE, VINDEX, SETUP_ON_FREE_LIST)
12087 (VECTOR_SIZE, VECTOR_IN_BLOCK): New macros. 12091 (VECTOR_SIZE, VECTOR_IN_BLOCK): New macros.
12088 (roundup_size): New constant. 12092 (roundup_size): New constant.
12089 (struct vector_block): New data type. 12093 (struct vector_block): New data type.
diff --git a/src/minibuf.c b/src/minibuf.c
index 4cc1f8d435a..b96d27e0742 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1799,8 +1799,8 @@ the values STRING, PREDICATE and `lambda'. */)
1799 else if (HASH_TABLE_P (collection)) 1799 else if (HASH_TABLE_P (collection))
1800 { 1800 {
1801 struct Lisp_Hash_Table *h = XHASH_TABLE (collection); 1801 struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
1802 i = hash_lookup (h, string, NULL);
1803 Lisp_Object key = Qnil; 1802 Lisp_Object key = Qnil;
1803 i = hash_lookup (h, string, NULL);
1804 if (i >= 0) 1804 if (i >= 0)
1805 tem = HASH_KEY (h, i); 1805 tem = HASH_KEY (h, i);
1806 else 1806 else
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
index 0ebe6d44e34..23dc45ad509 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/automated/ruby-mode-tests.el
@@ -487,6 +487,42 @@ VALUES-PLIST is a list with alternating index and value elements."
487 (ruby-beginning-of-block) 487 (ruby-beginning-of-block)
488 (should (= 1 (line-number-at-pos))))) 488 (should (= 1 (line-number-at-pos)))))
489 489
490(ert-deftest ruby-move-to-block-does-not-fold-case ()
491 (ruby-with-temp-buffer
492 (ruby-test-string
493 "foo do
494 | Module.to_s
495 |end")
496 (end-of-buffer)
497 (let ((case-fold-search t))
498 (ruby-beginning-of-block))
499 (should (= 1 (line-number-at-pos)))))
500
501(ert-deftest ruby-beginning-of-defun-does-not-fold-case ()
502 (ruby-with-temp-buffer
503 (ruby-test-string
504 "class C
505 | def bar
506 | Class.to_s
507 | end
508 |end")
509 (goto-line 4)
510 (let ((case-fold-search t))
511 (beginning-of-defun))
512 (should (= 2 (line-number-at-pos)))))
513
514(ert-deftest ruby-end-of-defun-skips-to-next-line-after-the-method ()
515 (ruby-with-temp-buffer
516 (ruby-test-string
517 "class D
518 | def tee
519 | 'ho hum'
520 | end
521 |end")
522 (goto-line 2)
523 (end-of-defun)
524 (should (= 5 (line-number-at-pos)))))
525
490(provide 'ruby-mode-tests) 526(provide 'ruby-mode-tests)
491 527
492;;; ruby-mode-tests.el ends here 528;;; ruby-mode-tests.el ends here