Merge from trunk.
This commit is contained in:
commit
0d8de0fd0a
29 changed files with 607 additions and 404 deletions
|
@ -123,132 +123,136 @@ names of the people who have checked it.
|
|||
|
||||
SECTION READERS
|
||||
----------------------------------
|
||||
etc/TUTORIAL rgm (but see Bug#3783)
|
||||
etc/TUTORIAL.bg
|
||||
etc/TUTORIAL.cn
|
||||
etc/TUTORIAL.cs
|
||||
etc/TUTORIAL.de Werner Lemberg
|
||||
etc/TUTORIAL.eo
|
||||
etc/TUTORIAL.es
|
||||
etc/TUTORIAL.fr
|
||||
etc/TUTORIAL.it
|
||||
etc/TUTORIAL.ja
|
||||
etc/TUTORIAL.ko
|
||||
etc/TUTORIAL.nl
|
||||
etc/TUTORIAL.pl
|
||||
etc/TUTORIAL.pt_BR
|
||||
etc/TUTORIAL.ro
|
||||
etc/TUTORIAL.ru
|
||||
etc/TUTORIAL.sk
|
||||
etc/TUTORIAL.sl
|
||||
etc/TUTORIAL.sv
|
||||
etc/TUTORIAL.th
|
||||
etc/TUTORIAL.zh
|
||||
TUTORIAL
|
||||
TUTORIAL.bg
|
||||
TUTORIAL.cn
|
||||
TUTORIAL.cs
|
||||
TUTORIAL.de
|
||||
TUTORIAL.eo
|
||||
TUTORIAL.es
|
||||
TUTORIAL.fr
|
||||
TUTORIAL.he
|
||||
TUTORIAL.it
|
||||
TUTORIAL.ja
|
||||
TUTORIAL.ko
|
||||
TUTORIAL.nl
|
||||
TUTORIAL.pl
|
||||
TUTORIAL.pt_BR
|
||||
TUTORIAL.ro
|
||||
TUTORIAL.ru
|
||||
TUTORIAL.sk
|
||||
TUTORIAL.sl
|
||||
TUTORIAL.sv
|
||||
TUTORIAL.th
|
||||
TUTORIAL.zh
|
||||
|
||||
** Check the manual.
|
||||
|
||||
abbrevs.texi -- cyd
|
||||
ack.texi -- rgm
|
||||
abbrevs.texi
|
||||
ack.texi
|
||||
anti.texi
|
||||
arevert-xtra.texi
|
||||
basic.texi -- cyd
|
||||
buffers.texi -- cyd
|
||||
building.texi -- cyd
|
||||
calendar.texi -- rgm
|
||||
cal-xtra.texi -- rgm
|
||||
cmdargs.texi -- cyd
|
||||
commands.texi -- cyd
|
||||
custom.texi -- cyd
|
||||
dired.texi -- cyd
|
||||
basic.texi
|
||||
buffers.texi
|
||||
building.texi
|
||||
calendar.texi
|
||||
cal-xtra.texi
|
||||
cmdargs.texi
|
||||
commands.texi
|
||||
custom.texi
|
||||
dired.texi
|
||||
dired-xtra.texi
|
||||
display.texi -- cyd
|
||||
emacs.texi -- cyd
|
||||
display.texi
|
||||
emacs.texi
|
||||
emacs-xtra.texi
|
||||
emerge-xtra.texi
|
||||
entering.texi -- cyd
|
||||
files.texi -- cyd
|
||||
fixit.texi -- cyd
|
||||
fortran-xtra.texi -- rgm
|
||||
frames.texi -- cyd
|
||||
entering.texi
|
||||
files.texi
|
||||
fixit.texi
|
||||
fortran-xtra.texi
|
||||
frames.texi
|
||||
glossary.texi
|
||||
help.texi -- cyd
|
||||
indent.texi -- cyd
|
||||
killing.texi -- cyd
|
||||
kmacro.texi -- cyd
|
||||
macos.texi -- davidswelt
|
||||
maintaining.texi -- cyd
|
||||
major.texi -- cyd
|
||||
mark.texi -- cyd
|
||||
mini.texi -- cyd
|
||||
misc.texi -- cyd
|
||||
msdog.texi -- eliz
|
||||
msdog-xtra.texi -- eliz
|
||||
mule.texi -- cyd
|
||||
m-x.texi -- cyd
|
||||
programs.texi -- cyd
|
||||
regs.texi -- cyd
|
||||
rmail.texi -- rgm
|
||||
screen.texi -- cyd
|
||||
search.texi -- cyd
|
||||
sending.texi -- rgm (maybe needs some brief mailclient.el details in
|
||||
"Mail Sending" section?)
|
||||
text.texi -- cyd
|
||||
trouble.texi -- cyd
|
||||
windows.texi -- rudalics
|
||||
xresources.texi -- cyd
|
||||
help.texi
|
||||
indent.texi
|
||||
killing.texi
|
||||
kmacro.texi
|
||||
macos.texi
|
||||
maintaining.texi
|
||||
major.texi
|
||||
mark.texi
|
||||
mini.texi
|
||||
misc.texi
|
||||
msdog.texi
|
||||
msdog-xtra.texi
|
||||
mule.texi
|
||||
m-x.texi
|
||||
picture-xtra.texi
|
||||
programs.texi
|
||||
regs.texi
|
||||
rmail.texi
|
||||
screen.texi
|
||||
search.texi
|
||||
sending.texi
|
||||
text.texi
|
||||
trouble.texi
|
||||
vc-xtra.texi
|
||||
vc1-xtra.texi
|
||||
windows.texi
|
||||
xresources.texi
|
||||
|
||||
** Check the Lisp manual.
|
||||
|
||||
abbrevs.texi -- cyd
|
||||
advice.texi -- cyd
|
||||
anti.texi -- cyd
|
||||
abbrevs.texi
|
||||
advice.texi
|
||||
anti.texi
|
||||
back.texi
|
||||
backups.texi -- cyd
|
||||
buffers.texi -- cyd
|
||||
commands.texi -- cyd
|
||||
compile.texi -- cyd
|
||||
control.texi -- cyd
|
||||
customize.texi -- cyd
|
||||
debugging.texi -- cyd
|
||||
display.texi -- cyd
|
||||
backups.texi
|
||||
buffers.texi
|
||||
commands.texi
|
||||
compile.texi
|
||||
control.texi
|
||||
customize.texi
|
||||
debugging.texi
|
||||
display.texi
|
||||
edebug.texi
|
||||
elisp.texi
|
||||
errors.texi -- cyd
|
||||
eval.texi -- cyd
|
||||
files.texi -- cyd
|
||||
frames.texi -- cyd
|
||||
functions.texi -- cyd
|
||||
hash.texi -- cyd
|
||||
help.texi -- cyd
|
||||
hooks.texi -- cyd
|
||||
errors.texi
|
||||
eval.texi
|
||||
files.texi
|
||||
frames.texi
|
||||
functions.texi
|
||||
hash.texi
|
||||
help.texi
|
||||
hooks.texi
|
||||
index.texi
|
||||
internals.texi -- cyd
|
||||
intro.texi -- cyd
|
||||
keymaps.texi -- cyd
|
||||
lists.texi -- cyd
|
||||
loading.texi -- cyd
|
||||
locals.texi -- cyd
|
||||
macros.texi -- cyd
|
||||
maps.texi -- cyd
|
||||
markers.texi -- cyd
|
||||
minibuf.texi -- cyd
|
||||
modes.texi -- cyd
|
||||
nonascii.texi -- cyd
|
||||
numbers.texi -- cyd
|
||||
objects.texi -- cyd
|
||||
os.texi -- cyd
|
||||
positions.texi -- cyd
|
||||
internals.texi
|
||||
intro.texi
|
||||
keymaps.texi
|
||||
lists.texi
|
||||
loading.texi
|
||||
locals.texi
|
||||
macros.texi
|
||||
maps.texi
|
||||
markers.texi
|
||||
minibuf.texi
|
||||
modes.texi
|
||||
nonascii.texi
|
||||
numbers.texi
|
||||
objects.texi
|
||||
os.texi
|
||||
package.texi
|
||||
positions.texi
|
||||
processes.texi
|
||||
searching.texi -- cyd
|
||||
sequences.texi -- cyd
|
||||
streams.texi -- cyd
|
||||
strings.texi -- cyd
|
||||
symbols.texi -- cyd
|
||||
syntax.texi -- cyd
|
||||
text.texi -- cyd
|
||||
tips.texi -- cyd
|
||||
variables.texi -- cyd
|
||||
windows.texi -- rudalics
|
||||
searching.texi
|
||||
sequences.texi
|
||||
streams.texi
|
||||
strings.texi
|
||||
symbols.texi
|
||||
syntax.texi
|
||||
text.texi
|
||||
tips.texi
|
||||
variables.texi
|
||||
windows.texi
|
||||
|
||||
* PLANNED ADDITIONS
|
||||
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
2011-07-18 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* charsets/GB180302.map: Update to 2005 edition.
|
||||
* charsets/GB180304.map: Likewise.
|
||||
|
||||
2011-07-17 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.93.
|
||||
|
||||
* NEWS, MH-E-NEWS: Update for MH-E release 8.2.93.
|
||||
|
||||
2011-07-16 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.92.
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
Copyright (C) 2001-2011 Free Software Foundation, Inc.
|
||||
See the end of the file for license conditions.
|
||||
|
||||
* Changes in MH-E 8.2.93
|
||||
|
||||
Version 8.2.93 reverts back to using `switch-to-buffer' which the
|
||||
Emacs developers decided was fine to call from programs after all.
|
||||
|
||||
* Changes in MH-E 8.2.92
|
||||
|
||||
Version 8.2.92 actually corrects the error in the modeline glyph when
|
||||
|
|
7
etc/NEWS
7
etc/NEWS
|
@ -488,7 +488,7 @@ $ESHELL nor variable `explicit-shell-file-name' is set.
|
|||
|
||||
** MH-E
|
||||
|
||||
*** Upgraded to MH-E version 8.2.92. See MH-E-NEWS for details.
|
||||
*** Upgraded to MH-E version 8.2.93. See MH-E-NEWS for details.
|
||||
|
||||
** comint and modes derived from it use the generic completion code.
|
||||
|
||||
|
@ -1077,6 +1077,11 @@ syntactic rules.
|
|||
** Syntax tables support a new "comment style c" additionally to style b.
|
||||
** frame-local variables cannot be let-bound any more.
|
||||
** prog-mode is a new major-mode meant to be the parent of programming mode.
|
||||
The prog-mode-hook it defines can be used to enable features for
|
||||
programming modes. For example:
|
||||
(add-hook 'prog-mode-hook 'flyspell-prog-mode)
|
||||
enables on the fly spell checking for comments and strings for
|
||||
programming modes.
|
||||
** define-minor-mode accepts a new keyword :variable.
|
||||
|
||||
** `delete-file' and `delete-directory' now accept optional arg TRASH.
|
||||
|
|
|
@ -2048,17 +2048,20 @@
|
|||
0xA6B9-0xA6C0 0xE785
|
||||
0xA6C1-0xA6D1 0x03B1
|
||||
0xA6D2-0xA6D8 0x03C3
|
||||
0xA6D9-0xA6DF 0xE78D
|
||||
0xA6D9 0xFE10
|
||||
0xA6DA 0xFE12
|
||||
0xA6DB 0xFE11
|
||||
0xA6DC-0xA6DF 0xFE13
|
||||
0xA6E0-0xA6E1 0xFE35
|
||||
0xA6E2-0xA6E3 0xFE39
|
||||
0xA6E4-0xA6E5 0xFE3F
|
||||
0xA6E6-0xA6E7 0xFE3D
|
||||
0xA6E8-0xA6EB 0xFE41
|
||||
0xA6EC-0xA6ED 0xE794
|
||||
0xA6EC-0xA6ED 0xFE17
|
||||
0xA6EE-0xA6EF 0xFE3B
|
||||
0xA6F0-0xA6F1 0xFE37
|
||||
0xA6F2 0xFE31
|
||||
0xA6F3 0xE796
|
||||
0xA6F3 0xFE19
|
||||
0xA6F4-0xA6F5 0xFE33
|
||||
0xA6F6-0xA6FE 0xE797
|
||||
0xA740-0xA77E 0xE706
|
||||
|
@ -2124,7 +2127,7 @@
|
|||
0xA8B9 0x00FC
|
||||
0xA8BA 0x00EA
|
||||
0xA8BB 0x0251
|
||||
0xA8BC 0xE7C7
|
||||
0xA8BC 0x1E3F
|
||||
0xA8BD 0x0144
|
||||
0xA8BE 0x0148
|
||||
0xA8BF 0x01F9
|
||||
|
@ -10385,13 +10388,15 @@
|
|||
0xFE4B-0xFE4C 0xFA23
|
||||
0xFE4D-0xFE4F 0xFA27
|
||||
0xFE50 0x2E81
|
||||
0xFE51-0xFE53 0xE816
|
||||
0xFE51 0x00020087
|
||||
0xFE52 0x00020089
|
||||
0xFE53 0x000200CC
|
||||
0xFE54 0x2E84
|
||||
0xFE55 0x3473
|
||||
0xFE56 0x3447
|
||||
0xFE57 0x2E88
|
||||
0xFE58 0x2E8B
|
||||
0xFE59 0xE81E
|
||||
0xFE59 0x9FB4
|
||||
0xFE5A 0x359E
|
||||
0xFE5B 0x361A
|
||||
0xFE5C 0x360E
|
||||
|
@ -10399,17 +10404,18 @@
|
|||
0xFE5E 0x2E97
|
||||
0xFE5F 0x396E
|
||||
0xFE60 0x3918
|
||||
0xFE61 0xE826
|
||||
0xFE61 0x9FB5
|
||||
0xFE62 0x39CF
|
||||
0xFE63 0x39DF
|
||||
0xFE64 0x3A73
|
||||
0xFE65 0x39D0
|
||||
0xFE66-0xFE67 0xE82B
|
||||
0xFE66-0xFE67 0x9FB6
|
||||
0xFE68 0x3B4E
|
||||
0xFE69 0x3C6E
|
||||
0xFE6A 0x3CE0
|
||||
0xFE6B 0x2EA7
|
||||
0xFE6C-0xFE6D 0xE831
|
||||
0xFE6C 0x000215D7
|
||||
0xFE6D 0x9FB8
|
||||
0xFE6E 0x2EAA
|
||||
0xFE6F 0x4056
|
||||
0xFE70 0x415F
|
||||
|
@ -10417,7 +10423,7 @@
|
|||
0xFE72 0x4337
|
||||
0xFE73 0x2EB3
|
||||
0xFE74-0xFE75 0x2EB6
|
||||
0xFE76 0xE83B
|
||||
0xFE76 0x0002298F
|
||||
0xFE77 0x43B1
|
||||
0xFE78 0x43AC
|
||||
0xFE79 0x2EBB
|
||||
|
@ -10425,7 +10431,7 @@
|
|||
0xFE7B 0x44D6
|
||||
0xFE7C 0x4661
|
||||
0xFE7D 0x464C
|
||||
0xFE7E 0xE843
|
||||
0xFE7E 0x9FB9
|
||||
0xFE80 0x4723
|
||||
0xFE81 0x4729
|
||||
0xFE82 0x477C
|
||||
|
@ -10440,12 +10446,13 @@
|
|||
0xFE8D 0x499B
|
||||
0xFE8E 0x49B7
|
||||
0xFE8F 0x49B6
|
||||
0xFE90-0xFE91 0xE854
|
||||
0xFE90 0x9FBA
|
||||
0xFE91 0x000241FE
|
||||
0xFE92 0x4CA3
|
||||
0xFE93-0xFE95 0x4C9F
|
||||
0xFE96 0x4C77
|
||||
0xFE97 0x4CA2
|
||||
0xFE98-0xFE9E 0x4D13
|
||||
0xFE9F 0x4DAE
|
||||
0xFEA0 0xE864
|
||||
0xFEA0 0x9FBB
|
||||
0xFEA1-0xFEFE 0xE468
|
||||
|
|
|
@ -40,7 +40,8 @@
|
|||
0x8130CC30-0x8130D134 0x03CA
|
||||
0x8130D135-0x8130D238 0x0402
|
||||
0x8130D239 0x0450
|
||||
0x8130D330-0x8136A531 0x0452
|
||||
0x8130D330-0x8135F436 0x0452
|
||||
0x8135F438-0x8136A531 0x1E40
|
||||
0x8136A532-0x8136A533 0x2011
|
||||
0x8136A534 0x2017
|
||||
0x8136A535-0x8136A536 0x201A
|
||||
|
@ -171,8 +172,10 @@
|
|||
0x8234EB33-0x8234F633 0x4CA4
|
||||
0x8234F634-0x82358731 0x4D1A
|
||||
0x82358732-0x82358F32 0x4DAF
|
||||
0x82358F33-0x8336C738 0x9FA6
|
||||
0x82358F33-0x82359036 0x9FA6
|
||||
0x82359135-0x8336C738 0x9FBC
|
||||
0x8336C739 0xE76C
|
||||
0x8135F437 0xE7C7
|
||||
0x8336C830 0xE7C8
|
||||
0x8336C831-0x8336C933 0xE7E7
|
||||
0x8336C934 0xE815
|
||||
|
@ -196,7 +199,8 @@
|
|||
0x84309B39-0x84309C34 0xFA19
|
||||
0x84309C35 0xFA22
|
||||
0x84309C36-0x84309C37 0xFA25
|
||||
0x84309C38-0x84318537 0xFA2A
|
||||
0x84309C38-0x84318235 0xFA2A
|
||||
0x84318336-0x84318537 0xFE1A
|
||||
0x84318538 0xFE32
|
||||
0x84318539-0x84318632 0xFE45
|
||||
0x84318633 0xFE53
|
||||
|
|
|
@ -1,5 +1,38 @@
|
|||
2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* view.el (view-buffer): Allow running in `special' modes if we're
|
||||
visiting a file (bug#8615).
|
||||
|
||||
2011-07-19 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* window.el (display-buffer-alist-of-strings-p)
|
||||
(display-buffer-alist-set-1, display-buffer-alist-set-2): New
|
||||
functions.
|
||||
(display-buffer-alist-set): Rewrite to handle Emacs 23 options
|
||||
more accurately.
|
||||
|
||||
2011-07-18 Alan Mackenzie <acm@muc.de>
|
||||
|
||||
Fontify declarators properly when, e.g., a jit-lock chunk begins
|
||||
inside a declaration.
|
||||
|
||||
* progmodes/cc-langs.el (c-symbol-chars): Correct a typo.
|
||||
|
||||
* progmodes/cc-fonts.el (c-font-lock-enclosing-decls): New
|
||||
function.
|
||||
(c-complex-decl-matchers): Insert reference to
|
||||
c-font-lock-enclosing-decls.
|
||||
|
||||
* progmodes/cc-engine.el (c-backward-single-comment):
|
||||
(c-backward-comments): Bind open-paren-in-column-0-is-defun-start
|
||||
to nil around calls to (forward-comment -1).
|
||||
|
||||
2011-07-17 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* image.el (put-image): Doc typo fix.
|
||||
|
||||
* progmodes/etags.el (tags-search): Doc typo fix.
|
||||
|
||||
* mail/smtpmail.el (smtpmail-via-smtp): Query the user for
|
||||
password if we get errors 550 to 554.
|
||||
|
||||
|
|
|
@ -282,7 +282,7 @@ Not documented
|
|||
;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
|
||||
;;;;;; do* do loop return-from return block etypecase typecase ecase
|
||||
;;;;;; case load-time-value eval-when destructuring-bind function*
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "2261724608e3223036b863d214f7dc0c")
|
||||
;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "9452c0e16fd960fce5c19e5c067a7160")
|
||||
;;; Generated autoloads from cl-macs.el
|
||||
|
||||
(autoload 'gensym "cl-macs" "\
|
||||
|
|
|
@ -389,7 +389,7 @@ IMAGE must be an image created with `create-image' or `defimage'.
|
|||
IMAGE is displayed by putting an overlay into the current buffer with a
|
||||
`before-string' STRING that has a `display' property whose value is the
|
||||
image. STRING is defaulted if you omit it.
|
||||
The overlay created will have the `put-overlay' property set to t.
|
||||
The overlay created will have the `put-image' property set to t.
|
||||
POS may be an integer or marker.
|
||||
AREA is where to display the image. AREA nil or omitted means
|
||||
display it in the text area, a value of `left-margin' means
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
2011-07-17 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.93.
|
||||
|
||||
* mh-e.el (Version, mh-version): Update for release 8.2.93.
|
||||
|
||||
* mh-compat.el (mh-pop-to-buffer-same-window): Delete.
|
||||
* mh-folder.el (mh-inc-folder, mh-modify, mh-scan-folder)
|
||||
(mh-make-folder): Revert to switch-to-buffer, as the Emacs folks
|
||||
decided that it was fine to use it in programs.
|
||||
|
||||
2011-07-16 Bill Wohler <wohler@newt.com>
|
||||
|
||||
Release MH-E version 8.2.92.
|
||||
|
|
|
@ -251,18 +251,6 @@ The argument STRING is ignored."
|
|||
(buffer-substring-no-properties
|
||||
(match-beginning num) (match-end num)))
|
||||
|
||||
(defun-mh mh-pop-to-buffer-same-window
|
||||
pop-to-buffer-same-window (&optional buffer-or-name norecord label)
|
||||
"Pop to buffer specified by BUFFER-OR-NAME in the selected window.
|
||||
Another window will be used only if the buffer can't be shown in
|
||||
the selected window, usually because it is dedicated to another
|
||||
buffer. Optional arguments BUFFER-OR-NAME, NORECORD and LABEL are
|
||||
as for `pop-to-buffer'. This macro is used by Emacs versions that
|
||||
lack the `pop-to-buffer-same-window' function, introduced in
|
||||
Emacs 24. The function `switch-to-buffer' is used instead and
|
||||
LABEL is ignored."
|
||||
(switch-to-buffer buffer-or-name norecord))
|
||||
|
||||
(defun-mh mh-replace-regexp-in-string replace-regexp-in-string
|
||||
(regexp rep string &optional fixedcase literal subexp start)
|
||||
"Replace REGEXP with REP everywhere in STRING and return result.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
;; Author: Bill Wohler <wohler@newt.com>
|
||||
;; Maintainer: Bill Wohler <wohler@newt.com>
|
||||
;; Version: 8.2.92
|
||||
;; Version: 8.2.93
|
||||
;; Keywords: mail
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
@ -127,7 +127,7 @@
|
|||
;; Try to keep variables local to a single file. Provide accessors if
|
||||
;; variables are shared. Use this section as a last resort.
|
||||
|
||||
(defconst mh-version "8.2.92" "Version number of MH-E.")
|
||||
(defconst mh-version "8.2.93" "Version number of MH-E.")
|
||||
|
||||
;; Variants
|
||||
|
||||
|
|
|
@ -795,7 +795,7 @@ instead."
|
|||
(setq threading-needed-flag mh-show-threads-flag)
|
||||
(setq mh-previous-window-config config))
|
||||
((not (eq (current-buffer) (get-buffer folder)))
|
||||
(mh-pop-to-buffer-same-window folder)
|
||||
(switch-to-buffer folder)
|
||||
(setq mh-previous-window-config config))))
|
||||
(mh-get-new-mail file)
|
||||
(when (and threading-needed-flag
|
||||
|
@ -855,7 +855,7 @@ From a program, edit MESSAGE; nil means edit current message."
|
|||
|
||||
;; Just show the edit buffer...
|
||||
(delete-other-windows)
|
||||
(mh-pop-to-buffer-same-window edit-buffer)))
|
||||
(switch-to-buffer edit-buffer)))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-next-button (&optional backward-flag)
|
||||
|
@ -1705,7 +1705,7 @@ DONT-EXEC-PENDING is non-nil."
|
|||
(unless dont-exec-pending
|
||||
(mh-process-or-undo-commands folder)
|
||||
(mh-reset-threads-and-narrowing))
|
||||
(mh-pop-to-buffer-same-window folder)))
|
||||
(switch-to-buffer folder)))
|
||||
(mh-regenerate-headers range)
|
||||
(if (zerop (buffer-size))
|
||||
(if (equal range "all")
|
||||
|
@ -1786,7 +1786,7 @@ Also removes all content from the folder buffer."
|
|||
(defun mh-make-folder (name)
|
||||
"Create a new mail folder called NAME.
|
||||
Make it the current folder."
|
||||
(mh-pop-to-buffer-same-window name)
|
||||
(switch-to-buffer name)
|
||||
(setq buffer-read-only nil)
|
||||
(erase-buffer)
|
||||
(if mh-adaptive-cmd-note-flag
|
||||
|
|
|
@ -1301,12 +1301,13 @@ This function does not do any hidden buffer changes."
|
|||
;; same line.
|
||||
(re-search-forward "\\=\\s *[\n\r]" start t)
|
||||
|
||||
(if (if (forward-comment -1)
|
||||
(if (if (let (open-paren-in-column-0-is-defun-start) (forward-comment -1))
|
||||
(if (eolp)
|
||||
;; If forward-comment above succeeded and we're at eol
|
||||
;; then the newline we moved over above didn't end a
|
||||
;; line comment, so we give it another go.
|
||||
(forward-comment -1)
|
||||
(let (open-paren-in-column-0-is-defun-start)
|
||||
(forward-comment -1))
|
||||
t))
|
||||
|
||||
;; Emacs <= 20 and XEmacs move back over the closer of a
|
||||
|
@ -1333,7 +1334,8 @@ comment at the start of cc-engine.el for more info."
|
|||
;; return t when moving backwards at bob.
|
||||
(not (bobp))
|
||||
|
||||
(if (forward-comment -1)
|
||||
(if (let (open-paren-in-column-0-is-defun-start)
|
||||
(forward-comment -1))
|
||||
(if (looking-at "\\*/")
|
||||
;; Emacs <= 20 and XEmacs move back over the
|
||||
;; closer of a block comment that lacks an opener.
|
||||
|
|
|
@ -1346,6 +1346,50 @@ casts and declarations are fontified. Used on level 2 and higher."
|
|||
(c-font-lock-declarators limit t nil)))
|
||||
nil)
|
||||
|
||||
(defun c-font-lock-enclosing-decls (limit)
|
||||
;; Fontify the declarators of (nested) declarations we're in the middle of.
|
||||
;; This is mainly for when a jit-lock etc. chunk starts inside the brace
|
||||
;; block of a struct/union/class, etc.
|
||||
;;
|
||||
;; This function will be called from font-lock for a region bounded by POINT
|
||||
;; and LIMIT, as though it were to identify a keyword for
|
||||
;; font-lock-keyword-face. It always returns NIL to inhibit this and
|
||||
;; prevent a repeat invocation. See elisp/lispref page "Search-based
|
||||
;; Fontification".
|
||||
(let* ((paren-state (c-parse-state))
|
||||
(start (point))
|
||||
decl-context bo-decl in-typedef type-type ps-elt)
|
||||
|
||||
;; First, are we actually in a "local" declaration?
|
||||
(setq decl-context (c-beginning-of-decl-1)
|
||||
bo-decl (point)
|
||||
in-typedef (looking-at c-typedef-key))
|
||||
(if in-typedef (c-forward-token-2))
|
||||
(when (and (eq (car decl-context) 'same)
|
||||
(< bo-decl start))
|
||||
;; Are we genuinely at a type?
|
||||
(setq type-type (c-forward-type t))
|
||||
(if (and type-type
|
||||
(or (not (eq type-type 'maybe))
|
||||
(looking-at c-symbol-key)))
|
||||
(c-font-lock-declarators limit t in-typedef)))
|
||||
|
||||
;; Secondly, are we in any nested struct/union/class/etc. braces?
|
||||
(while paren-state
|
||||
(setq ps-elt (car paren-state)
|
||||
paren-state (cdr paren-state))
|
||||
(when (and (atom ps-elt)
|
||||
(eq (char-after ps-elt) ?\{))
|
||||
(goto-char ps-elt)
|
||||
(setq decl-context (c-beginning-of-decl-1)
|
||||
in-typedef (looking-at c-typedef-key))
|
||||
(if in-typedef (c-forward-token-2))
|
||||
(when (looking-at c-opt-block-decls-with-vars-key)
|
||||
(goto-char ps-elt)
|
||||
(when (c-safe (c-forward-sexp))
|
||||
(c-forward-syntactic-ws)
|
||||
(c-font-lock-declarators limit t in-typedef)))))))
|
||||
|
||||
(c-lang-defconst c-simple-decl-matchers
|
||||
"Simple font lock matchers for types and declarations. These are used
|
||||
on level 2 only and so aren't combined with `c-complex-decl-matchers'."
|
||||
|
@ -1452,6 +1496,9 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
|
|||
;; Fontify all declarations, casts and normal labels.
|
||||
c-font-lock-declarations
|
||||
|
||||
;; Fontify declarators when POINT is within their declaration.
|
||||
c-font-lock-enclosing-decls
|
||||
|
||||
;; Fontify angle bracket arglists like templates in C++.
|
||||
,@(when (c-lang-const c-recognize-<>-arglists)
|
||||
`(c-font-lock-<>-arglists))
|
||||
|
|
|
@ -523,7 +523,7 @@ operator at the top level."
|
|||
|
||||
(c-lang-defconst c-symbol-chars
|
||||
"Set of characters that can be part of a symbol.
|
||||
This is on the form that fits inside [ ] in a regexp."
|
||||
This is of the form that fits inside [ ] in a regexp."
|
||||
;; Pike note: With the backquote identifiers this would include most
|
||||
;; operator chars too, but they are handled with other means instead.
|
||||
t (concat c-alnum "_$")
|
||||
|
|
|
@ -1860,7 +1860,7 @@ nil, we exit; otherwise we scan the next file."
|
|||
Stops when a match is found.
|
||||
To continue searching for next match, use command \\[tags-loop-continue].
|
||||
|
||||
If `file-list-form' is non-nil, it should be a form that, when
|
||||
If FILE-LIST-FORM is non-nil, it should be a form that, when
|
||||
evaluated, will return a list of file names. The search will be
|
||||
restricted to these files.
|
||||
|
||||
|
|
|
@ -311,9 +311,10 @@ file: Users may suspend viewing in order to modify the buffer.
|
|||
Exiting View mode will then discard the user's edits. Setting
|
||||
EXIT-ACTION to `kill-buffer-if-not-modified' avoids this."
|
||||
(interactive "bView buffer: ")
|
||||
(if (eq (with-current-buffer buffer
|
||||
(get major-mode 'mode-class))
|
||||
'special)
|
||||
(if (with-current-buffer buffer
|
||||
(and (eq (get major-mode 'mode-class)
|
||||
'special)
|
||||
(null buffer-file-name)))
|
||||
(progn
|
||||
(switch-to-buffer buffer)
|
||||
(message "Not using View mode because the major mode is special"))
|
||||
|
|
370
lisp/window.el
370
lisp/window.el
|
@ -6588,6 +6588,15 @@ split."
|
|||
|
||||
;; Functions for converting Emacs 23 buffer display options to buffer
|
||||
;; display specifiers.
|
||||
(defun display-buffer-alist-of-strings-p (list)
|
||||
"Return t if LIST is a non-empty list of strings."
|
||||
(when list
|
||||
(catch 'failed
|
||||
(dolist (item list)
|
||||
(unless (stringp item)
|
||||
(throw 'failed nil)))
|
||||
t)))
|
||||
|
||||
(defun display-buffer-alist-add (identifiers specifiers &optional no-custom)
|
||||
"Helper function for `display-buffer-alist-set'."
|
||||
(unless identifiers
|
||||
|
@ -6602,6 +6611,40 @@ split."
|
|||
'display-buffer-alist
|
||||
(cons (cons identifiers specifiers) display-buffer-alist))))
|
||||
|
||||
(defun display-buffer-alist-set-1 ()
|
||||
"Helper function for `display-buffer-alist-set'."
|
||||
(progn ;; with-no-warnings
|
||||
(append
|
||||
'(reuse-window (reuse-window nil same 0))
|
||||
`(pop-up-frame (pop-up-frame t)
|
||||
,(append '(pop-up-frame-alist)
|
||||
special-display-frame-alist))
|
||||
'((dedicate . weak)))))
|
||||
|
||||
(defun display-buffer-alist-set-2 (args)
|
||||
"Helper function for `display-buffer-alist-set'."
|
||||
(progn ;; with-no-warnings
|
||||
(if (and (listp args) (symbolp (car args)))
|
||||
`(function (function ,(car args) ,(cdr args)))
|
||||
(append
|
||||
'(reuse-window (reuse-window nil same 0))
|
||||
(when (and (listp args) (cdr (assq 'same-window args)))
|
||||
'(reuse-window
|
||||
(reuse-window same nil nil) (reuse-window-dedicated . weak)))
|
||||
(when (and (listp args)
|
||||
(or (cdr (assq 'same-frame args))
|
||||
(cdr (assq 'same-window args))))
|
||||
'(pop-up-window (pop-up-window (largest . nil) (lru . nil))))
|
||||
(when (and (listp args)
|
||||
(or (cdr (assq 'same-frame args))
|
||||
(cdr (assq 'same-window args))))
|
||||
'(reuse-window (reuse-window nil nil nil)))
|
||||
`(pop-up-frame (pop-up-frame t)
|
||||
,(append '(pop-up-frame-alist)
|
||||
(when (listp args) args)
|
||||
special-display-frame-alist))
|
||||
'((dedicate . weak))))))
|
||||
|
||||
(defun display-buffer-alist-set (&optional no-custom add)
|
||||
"Set `display-buffer-alist' from Emacs 23 buffer display options.
|
||||
Optional argument NO-CUSTOM nil means use `customize-set-variable'
|
||||
|
@ -6611,201 +6654,164 @@ means to use `setq' instead.
|
|||
Optional argument ADD nil means to replace the actual value of
|
||||
`display-buffer-alist' with the value calculated here. ADD
|
||||
non-nil means prepend the value calculated here to the current
|
||||
value of `display-buffer-alist'."
|
||||
value of `display-buffer-alist'. Return `display-buffer-alist'."
|
||||
(unless add
|
||||
(if no-custom
|
||||
(setq display-buffer-alist nil)
|
||||
(customize-set-variable 'display-buffer-alist nil)))
|
||||
|
||||
;; Disable warnings, there are too many obsolete options here.
|
||||
(with-no-warnings
|
||||
;; `pop-up-windows'
|
||||
(display-buffer-alist-add
|
||||
nil
|
||||
(let ((fun (unless (eq split-window-preferred-function
|
||||
'split-window-sensibly)
|
||||
;; `split-window-sensibly' has been merged into the
|
||||
;; `display-buffer-split-window' code as `nil'.
|
||||
split-window-preferred-function))
|
||||
(min-height
|
||||
(if (numberp split-height-threshold)
|
||||
(/ split-height-threshold 2)
|
||||
;; Undocumented hack.
|
||||
1.0))
|
||||
(min-width
|
||||
(if (numberp split-width-threshold)
|
||||
(/ split-width-threshold 2)
|
||||
;; Undocumented hack.
|
||||
1.0)))
|
||||
(list
|
||||
'pop-up-window
|
||||
(when pop-up-windows
|
||||
(list
|
||||
'pop-up-window
|
||||
(cons 'largest fun)
|
||||
(cons 'lru fun)))
|
||||
(cons 'pop-up-window-min-height min-height)
|
||||
(cons 'pop-up-window-min-width min-width)))
|
||||
no-custom)
|
||||
(progn ;; with-no-warnings
|
||||
`other-window-means-other-frame'
|
||||
(when pop-up-frames
|
||||
(display-buffer-alist-add
|
||||
nil '(pop-up-frame
|
||||
(other-window-means-other-frame . t)) no-custom))
|
||||
|
||||
;; `pop-up-frames'
|
||||
(display-buffer-alist-add
|
||||
nil
|
||||
(list
|
||||
'pop-up-frame
|
||||
(when pop-up-frames
|
||||
(list 'pop-up-frame pop-up-frames))
|
||||
(when pop-up-frame-function
|
||||
(cons 'pop-up-frame-function pop-up-frame-function))
|
||||
(when pop-up-frame-alist
|
||||
(cons 'pop-up-frame-alist pop-up-frame-alist)))
|
||||
no-custom)
|
||||
;; `reuse-window-even-sizes'
|
||||
(when even-window-heights
|
||||
(display-buffer-alist-add
|
||||
nil '(reuse-window (reuse-window-even-sizes . t)) no-custom))
|
||||
|
||||
;; `special-display-regexps'
|
||||
(dolist (entry special-display-regexps)
|
||||
(cond
|
||||
((stringp entry)
|
||||
;; Plain string.
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,entry))
|
||||
(list
|
||||
'function
|
||||
(list 'function special-display-function
|
||||
special-display-frame-alist))
|
||||
no-custom))
|
||||
((consp entry)
|
||||
(let ((name (car entry))
|
||||
(rest (cdr entry)))
|
||||
(cond
|
||||
((functionp (car rest))
|
||||
;; A function.
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list
|
||||
'function
|
||||
;; Weary.
|
||||
(list 'function (car rest) (cadr rest)))
|
||||
no-custom))
|
||||
((listp rest)
|
||||
;; A list of parameters.
|
||||
(cond
|
||||
((assq 'same-window rest)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list 'reuse-window
|
||||
(list 'reuse-window 'same)
|
||||
(list 'reuse-window-dedicated 'weak))
|
||||
no-custom))
|
||||
((assq 'same-frame rest)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name)) (list 'same-frame) no-custom))
|
||||
(t
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list
|
||||
'function
|
||||
(list 'function special-display-function
|
||||
special-display-frame-alist))
|
||||
no-custom)))))))))
|
||||
|
||||
;; `special-display-buffer-names'
|
||||
(dolist (entry special-display-buffer-names)
|
||||
(cond
|
||||
((stringp entry)
|
||||
;; Plain string.
|
||||
(display-buffer-alist-add
|
||||
`((name . ,entry))
|
||||
(list
|
||||
'function
|
||||
(list 'function special-display-function
|
||||
special-display-frame-alist))
|
||||
no-custom))
|
||||
((consp entry)
|
||||
(let ((name (car entry))
|
||||
(rest (cdr entry)))
|
||||
(cond
|
||||
((functionp (car rest))
|
||||
;; A function.
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list
|
||||
'function
|
||||
;; Weary.
|
||||
(list 'function (car rest) (cadr rest)))
|
||||
no-custom))
|
||||
((listp rest)
|
||||
;; A list of parameters.
|
||||
(cond
|
||||
((assq 'same-window rest)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list 'reuse-window
|
||||
(list 'reuse-window 'same)
|
||||
(list 'reuse-window-dedicated 'weak))
|
||||
no-custom))
|
||||
((assq 'same-frame rest)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name)) (list 'same-frame) no-custom))
|
||||
(t
|
||||
(display-buffer-alist-add
|
||||
`((name . ,name))
|
||||
(list
|
||||
'function
|
||||
(list 'function special-display-function
|
||||
special-display-frame-alist))
|
||||
no-custom)))))))))
|
||||
|
||||
;; `same-window-regexps'
|
||||
(dolist (entry same-window-regexps)
|
||||
(cond
|
||||
((stringp entry)
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,entry))
|
||||
(list 'reuse-window (list 'reuse-window 'same))
|
||||
no-custom))
|
||||
((consp entry)
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,(car entry)))
|
||||
(list 'reuse-window (list 'reuse-window 'same))
|
||||
no-custom))))
|
||||
|
||||
;; `same-window-buffer-names'
|
||||
(dolist (entry same-window-buffer-names)
|
||||
(cond
|
||||
((stringp entry)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,entry))
|
||||
(list 'reuse-window (list 'reuse-window 'same))
|
||||
no-custom))
|
||||
((consp entry)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,(car entry)))
|
||||
(list 'reuse-window (list 'reuse-window 'same))
|
||||
no-custom))))
|
||||
|
||||
;; `reuse-window'
|
||||
(display-buffer-alist-add
|
||||
nil
|
||||
(list
|
||||
'reuse-window
|
||||
(list 'reuse-window nil 'same
|
||||
(when (or display-buffer-reuse-frames pop-up-frames)
|
||||
;; "0" (all visible and iconified frames) is hardcoded in
|
||||
;; Emacs 23.
|
||||
0))
|
||||
(when even-window-heights
|
||||
(cons 'reuse-window-even-sizes t)))
|
||||
no-custom)
|
||||
|
||||
;; `display-buffer-mark-dedicated'
|
||||
;; `dedicate'
|
||||
(when display-buffer-mark-dedicated
|
||||
(display-buffer-alist-add
|
||||
nil '(dedicate (display-buffer-mark-dedicated . t)) no-custom))
|
||||
|
||||
;; `pop-up-window' group
|
||||
(let ((fun (unless (eq split-window-preferred-function
|
||||
'split-window-sensibly)
|
||||
split-window-preferred-function))
|
||||
(min-height
|
||||
(if (numberp split-height-threshold)
|
||||
(/ split-height-threshold 2)
|
||||
1.0))
|
||||
(min-width
|
||||
(if (numberp split-width-threshold)
|
||||
(/ split-width-threshold 2)
|
||||
1.0)))
|
||||
(display-buffer-alist-add
|
||||
nil
|
||||
(list
|
||||
(cons 'dedicate display-buffer-mark-dedicated))
|
||||
no-custom)))
|
||||
'pop-up-window
|
||||
;; `pop-up-window'
|
||||
(when pop-up-windows
|
||||
(list 'pop-up-window (cons 'largest fun) (cons 'lru fun)))
|
||||
;; `pop-up-window-min-height'
|
||||
(cons 'pop-up-window-min-height min-height)
|
||||
;; `pop-up-window-min-width'
|
||||
(cons 'pop-up-window-min-width min-width))
|
||||
no-custom))
|
||||
|
||||
display-buffer-alist)
|
||||
;; `pop-up-frame' group
|
||||
(when (or pop-up-frames
|
||||
(not (equal pop-up-frame-function
|
||||
'(lambda nil
|
||||
(make-frame pop-up-frame-alist))))
|
||||
pop-up-frame-alist)
|
||||
(display-buffer-alist-add
|
||||
nil
|
||||
(list
|
||||
'pop-up-frame
|
||||
(when pop-up-frames
|
||||
;; `pop-up-frame'
|
||||
(list 'pop-up-frame
|
||||
(when (eq pop-up-frames 'graphic-only)
|
||||
t)))
|
||||
(unless (equal pop-up-frame-function
|
||||
'(lambda nil
|
||||
(make-frame pop-up-frame-alist)))
|
||||
;; `pop-up-frame-function'
|
||||
(cons 'pop-up-frame-function pop-up-frame-function))
|
||||
(when pop-up-frame-alist
|
||||
;; `pop-up-frame-alist'
|
||||
(cons 'pop-up-frame-alist pop-up-frame-alist)))
|
||||
no-custom))
|
||||
|
||||
;; `special-display-regexps'
|
||||
(if (display-buffer-alist-of-strings-p special-display-regexps)
|
||||
;; Handle case where `special-display-regexps' is a plain list
|
||||
;; of strings specially.
|
||||
(let (list)
|
||||
(dolist (regexp special-display-regexps)
|
||||
(setq list (cons (cons 'regexp regexp) list)))
|
||||
(setq list (nreverse list))
|
||||
(display-buffer-alist-add
|
||||
list (display-buffer-alist-set-1) no-custom))
|
||||
;; Else iterate over the entries.
|
||||
(dolist (item special-display-regexps)
|
||||
(if (stringp item)
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,item)) (display-buffer-alist-set-1)
|
||||
no-custom)
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,(car item)))
|
||||
(display-buffer-alist-set-2 (cdr item))
|
||||
no-custom))))
|
||||
|
||||
;; `special-display-buffer-names'
|
||||
(if (display-buffer-alist-of-strings-p special-display-buffer-names)
|
||||
;; Handle case where `special-display-buffer-names' is a plain
|
||||
;; list of strings specially.
|
||||
(let (list)
|
||||
(dolist (name special-display-buffer-names)
|
||||
(setq list (cons (cons 'name name) list)))
|
||||
(setq list (nreverse list))
|
||||
(display-buffer-alist-add
|
||||
list (display-buffer-alist-set-1) no-custom))
|
||||
;; Else iterate over the entries.
|
||||
(dolist (item special-display-buffer-names)
|
||||
(if (stringp item)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,item)) (display-buffer-alist-set-1)
|
||||
no-custom)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,(car item)))
|
||||
(display-buffer-alist-set-2 (cdr item))
|
||||
no-custom))))
|
||||
|
||||
;; `same-window-regexps'
|
||||
(if (display-buffer-alist-of-strings-p same-window-regexps)
|
||||
;; Handle case where `same-window-regexps' is a plain list of
|
||||
;; strings specially.
|
||||
(let (list)
|
||||
(dolist (regexp same-window-regexps)
|
||||
(setq list (cons (cons 'regexp regexp) list)))
|
||||
(setq list (nreverse list))
|
||||
(display-buffer-alist-add
|
||||
list '(reuse-window (reuse-window same nil nil)) no-custom))
|
||||
(dolist (entry same-window-regexps)
|
||||
(display-buffer-alist-add
|
||||
`((regexp . ,(if (stringp entry) entry (car entry))))
|
||||
'(reuse-window (reuse-window same nil nil)) no-custom)))
|
||||
|
||||
;; `same-window-buffer-names'
|
||||
(if (display-buffer-alist-of-strings-p same-window-buffer-names)
|
||||
;; Handle case where `same-window-buffer-names' is a plain list
|
||||
;; of strings specially.
|
||||
(let (list)
|
||||
(dolist (name same-window-buffer-names)
|
||||
(setq list (cons (cons 'name name) list)))
|
||||
(setq list (nreverse list))
|
||||
(display-buffer-alist-add
|
||||
list '(reuse-window (reuse-window same nil nil)) no-custom))
|
||||
(dolist (entry same-window-buffer-names)
|
||||
(display-buffer-alist-add
|
||||
`((name . ,(if (stringp entry) entry (car entry))))
|
||||
'(reuse-window (reuse-window same nil nil)) no-custom)))
|
||||
|
||||
;; `reuse-window'
|
||||
(display-buffer-alist-add
|
||||
nil `(reuse-window
|
||||
(reuse-window
|
||||
nil same
|
||||
,(when (or display-buffer-reuse-frames pop-up-frames)
|
||||
;; "0" (all visible and iconified frames) is
|
||||
;; hardcoded in Emacs 23.
|
||||
0)))
|
||||
no-custom)
|
||||
|
||||
display-buffer-alist))
|
||||
|
||||
(defun set-window-text-height (window height)
|
||||
"Set the height in lines of the text display area of WINDOW to HEIGHT.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
2011-07-19 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Integer signedness and overflow and related fixes. (Bug#9079)
|
||||
|
||||
|
@ -197,6 +197,54 @@
|
|||
Use EMACS_INT, not EMACS_UINT, for sizes. The code works equally
|
||||
well either way, and we prefer signed to unsigned.
|
||||
|
||||
2011-07-19 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Port to OpenBSD.
|
||||
See http://lists.gnu.org/archive/html/emacs-devel/2011-07/msg00688.html
|
||||
and the surrounding thread.
|
||||
* minibuf.c (read_minibuf_noninteractive): Rewrite to use getchar
|
||||
rather than fgets, and retry after EINTR. Otherwise, 'emacs
|
||||
--batch -f byte-compile-file' fails on OpenBSD if an inactivity
|
||||
timer goes off.
|
||||
* s/openbsd.h (BROKEN_SIGIO): Define.
|
||||
* unexelf.c (unexec) [__OpenBSD__]:
|
||||
Don't update the .mdebug section of the Alpha COFF symbol table.
|
||||
|
||||
2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* lread.c (syms_of_lread): Clarify when `lexical-binding' is used
|
||||
(bug#8460).
|
||||
|
||||
2011-07-18 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* fileio.c (Fcopy_file) [!MSDOS]: Tighten created file's mask.
|
||||
This fixes some race conditions on the permissions of any newly
|
||||
created file.
|
||||
|
||||
* alloc.c (valid_pointer_p): Use pipe, not open.
|
||||
This fixes some permissions issues when debugging.
|
||||
|
||||
* fileio.c (Fcopy_file): Adjust mode if fchown fails. (Bug#9002)
|
||||
If fchown fails to set both uid and gid, try to set just gid,
|
||||
as that is sometimes allowed. Adjust the file's mode to eliminate
|
||||
setuid or setgid bits that are inappropriate if fchown fails.
|
||||
|
||||
2011-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* xdisp.c (next_element_from_string, next_element_from_buffer): Use EQ
|
||||
to compare Lisp_Objects.
|
||||
* gnutls.c (syms_of_gnutls): Rename Vgnutls_log_level to
|
||||
global_gnutls_log_level, don't mistake it for a Lisp_Object.
|
||||
(init_gnutls_functions, emacs_gnutls_handle_error): Fix up uses.
|
||||
|
||||
2011-07-17 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* lread.c (read_integer): Unread even EOF character.
|
||||
(read1): Likewise. Properly record start position of symbol.
|
||||
|
||||
* lread.c (read1): Read `#:' as empty uninterned symbol if no
|
||||
symbol character follows.
|
||||
|
||||
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
|
||||
|
|
10
src/alloc.c
10
src/alloc.c
|
@ -4430,18 +4430,18 @@ valid_pointer_p (void *p)
|
|||
#ifdef WINDOWSNT
|
||||
return w32_valid_pointer_p (p, 16);
|
||||
#else
|
||||
int fd;
|
||||
int fd[2];
|
||||
|
||||
/* Obviously, we cannot just access it (we would SEGV trying), so we
|
||||
trick the o/s to tell us whether p is a valid pointer.
|
||||
Unfortunately, we cannot use NULL_DEVICE here, as emacs_write may
|
||||
not validate p in that case. */
|
||||
|
||||
if ((fd = emacs_open ("__Valid__Lisp__Object__", O_CREAT | O_WRONLY | O_TRUNC, 0666)) >= 0)
|
||||
if (pipe (fd) == 0)
|
||||
{
|
||||
int valid = (emacs_write (fd, (char *)p, 16) == 16);
|
||||
emacs_close (fd);
|
||||
unlink ("__Valid__Lisp__Object__");
|
||||
int valid = (emacs_write (fd[1], (char *) p, 16) == 16);
|
||||
emacs_close (fd[1]);
|
||||
emacs_close (fd[0]);
|
||||
return valid;
|
||||
}
|
||||
|
||||
|
|
35
src/fileio.c
35
src/fileio.c
|
@ -38,8 +38,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#include <selinux/context.h>
|
||||
#endif
|
||||
|
||||
#include <ignore-value.h>
|
||||
|
||||
#include "lisp.h"
|
||||
#include "intervals.h"
|
||||
#include "buffer.h"
|
||||
|
@ -1939,10 +1937,19 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
|
|||
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
|
||||
S_IREAD | S_IWRITE);
|
||||
#else /* not MSDOS */
|
||||
ofd = emacs_open (SSDATA (encoded_newname),
|
||||
O_WRONLY | O_TRUNC | O_CREAT
|
||||
| (NILP (ok_if_already_exists) ? O_EXCL : 0),
|
||||
0666);
|
||||
{
|
||||
int new_mask = 0666;
|
||||
if (input_file_statable_p)
|
||||
{
|
||||
if (!NILP (preserve_uid_gid))
|
||||
new_mask = 0600;
|
||||
new_mask &= st.st_mode;
|
||||
}
|
||||
ofd = emacs_open (SSDATA (encoded_newname),
|
||||
(O_WRONLY | O_TRUNC | O_CREAT
|
||||
| (NILP (ok_if_already_exists) ? O_EXCL : 0)),
|
||||
new_mask);
|
||||
}
|
||||
#endif /* not MSDOS */
|
||||
if (ofd < 0)
|
||||
report_file_error ("Opening output file", Fcons (newname, Qnil));
|
||||
|
@ -1961,9 +1968,21 @@ on the system, we copy the SELinux context of FILE to NEWNAME. */)
|
|||
owner and group. */
|
||||
if (input_file_statable_p)
|
||||
{
|
||||
int mode_mask = 07777;
|
||||
if (!NILP (preserve_uid_gid))
|
||||
ignore_value (fchown (ofd, st.st_uid, st.st_gid));
|
||||
if (fchmod (ofd, st.st_mode & 07777) != 0)
|
||||
{
|
||||
/* Attempt to change owner and group. If that doesn't work
|
||||
attempt to change just the group, as that is sometimes allowed.
|
||||
Adjust the mode mask to eliminate setuid or setgid bits
|
||||
that are inappropriate if the owner and group are wrong. */
|
||||
if (fchown (ofd, st.st_uid, st.st_gid) != 0)
|
||||
{
|
||||
mode_mask &= ~06000;
|
||||
if (fchown (ofd, -1, st.st_gid) == 0)
|
||||
mode_mask |= 02000;
|
||||
}
|
||||
}
|
||||
if (fchmod (ofd, st.st_mode & mode_mask) != 0)
|
||||
report_file_error ("Doing chmod", Fcons (newname, Qnil));
|
||||
}
|
||||
#endif /* not MSDOS */
|
||||
|
|
12
src/gnutls.c
12
src/gnutls.c
|
@ -193,8 +193,7 @@ init_gnutls_functions (Lisp_Object libraries)
|
|||
LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
|
||||
LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
|
||||
|
||||
if (NUMBERP (Vgnutls_log_level))
|
||||
max_log_level = XINT (Vgnutls_log_level);
|
||||
max_log_level = global_gnutls_log_level;
|
||||
|
||||
GNUTLS_LOG2 (1, max_log_level, "GnuTLS library loaded:",
|
||||
SDATA (Fget (Qgnutls_dll, QCloaded_from)));
|
||||
|
@ -406,8 +405,7 @@ emacs_gnutls_handle_error (gnutls_session_t session, int err)
|
|||
if (err >= 0)
|
||||
return 0;
|
||||
|
||||
if (NUMBERP (Vgnutls_log_level))
|
||||
max_log_level = XINT (Vgnutls_log_level);
|
||||
max_log_level = global_gnutls_log_level;
|
||||
|
||||
/* TODO: use gnutls-error-fatalp and gnutls-error-string. */
|
||||
|
||||
|
@ -1155,9 +1153,9 @@ syms_of_gnutls (void)
|
|||
defsubr (&Sgnutls_bye);
|
||||
defsubr (&Sgnutls_available_p);
|
||||
|
||||
DEFVAR_INT ("gnutls-log-level", Vgnutls_log_level,
|
||||
doc: /* Logging level used by the GnuTLS functions. */);
|
||||
Vgnutls_log_level = make_number (0);
|
||||
DEFVAR_INT ("gnutls-log-level", global_gnutls_log_level,
|
||||
doc: /* Logging level used by the GnuTLS functions. */);
|
||||
global_gnutls_log_level = 0;
|
||||
}
|
||||
|
||||
#endif /* HAVE_GNUTLS */
|
||||
|
|
56
src/lread.c
56
src/lread.c
|
@ -2327,8 +2327,7 @@ read_integer (Lisp_Object readcharfun, EMACS_INT radix)
|
|||
c = READCHAR;
|
||||
}
|
||||
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
|
@ -2583,8 +2582,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
nskip *= 10;
|
||||
nskip += c - '0';
|
||||
}
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
|
||||
if (load_force_doc_strings
|
||||
&& (EQ (readcharfun, Qget_file_char)
|
||||
|
@ -2660,7 +2658,17 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
{
|
||||
uninterned_symbol = 1;
|
||||
c = READCHAR;
|
||||
goto default_label;
|
||||
if (!(c > 040
|
||||
&& c != 0x8a0
|
||||
&& (c >= 0200
|
||||
|| strchr ("\"';()[]#`,", c) == NULL)))
|
||||
{
|
||||
/* No symbol character follows, this is the empty
|
||||
symbol. */
|
||||
UNREAD (c);
|
||||
return Fmake_symbol (build_string (""));
|
||||
}
|
||||
goto read_symbol;
|
||||
}
|
||||
/* Reader forms that can reuse previously read objects. */
|
||||
if (c >= '0' && c <= '9')
|
||||
|
@ -2841,7 +2849,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
next_char = READCHAR;
|
||||
ok = (next_char <= 040
|
||||
|| (next_char < 0200
|
||||
&& (strchr ("\"';()[]#?`,.", next_char))));
|
||||
&& strchr ("\"';()[]#?`,.", next_char) != NULL));
|
||||
UNREAD (next_char);
|
||||
if (ok)
|
||||
return make_number (c);
|
||||
|
@ -2966,11 +2974,6 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
/* Otherwise, READ_BUFFER contains only ASCII. */
|
||||
}
|
||||
|
||||
/* We want readchar_count to be the number of characters, not
|
||||
bytes. Hence we adjust for multibyte characters in the
|
||||
string. ... But it doesn't seem to be necessary, because
|
||||
READCHAR *does* read multibyte characters from buffers. */
|
||||
/* readchar_count -= (p - read_buffer) - nchars; */
|
||||
if (read_pure)
|
||||
return make_pure_string (read_buffer, nchars, p - read_buffer,
|
||||
(force_multibyte
|
||||
|
@ -2987,7 +2990,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
|
||||
if (next_char <= 040
|
||||
|| (next_char < 0200
|
||||
&& (strchr ("\"';([#?`,", next_char))))
|
||||
&& strchr ("\"';([#?`,", next_char) != NULL))
|
||||
{
|
||||
*pch = c;
|
||||
return Qnil;
|
||||
|
@ -3002,9 +3005,12 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
if (c <= 040) goto retry;
|
||||
if (c == 0x8a0) /* NBSP */
|
||||
goto retry;
|
||||
|
||||
read_symbol:
|
||||
{
|
||||
char *p = read_buffer;
|
||||
int quoted = 0;
|
||||
EMACS_INT start_position = readchar_count - 1;
|
||||
|
||||
{
|
||||
char *end = read_buffer + read_buffer_size;
|
||||
|
@ -3035,10 +3041,11 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
else
|
||||
*p++ = c;
|
||||
c = READCHAR;
|
||||
} while (c > 040
|
||||
&& c != 0x8a0 /* NBSP */
|
||||
&& (c >= 0200
|
||||
|| !(strchr ("\"';()[]#`,", c))));
|
||||
}
|
||||
while (c > 040
|
||||
&& c != 0x8a0 /* NBSP */
|
||||
&& (c >= 0200
|
||||
|| strchr ("\"';()[]#`,", c) == NULL));
|
||||
|
||||
if (p == end)
|
||||
{
|
||||
|
@ -3051,8 +3058,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
end = read_buffer + read_buffer_size;
|
||||
}
|
||||
*p = 0;
|
||||
if (c >= 0)
|
||||
UNREAD (c);
|
||||
UNREAD (c);
|
||||
}
|
||||
|
||||
if (!quoted && !uninterned_symbol)
|
||||
|
@ -3080,12 +3086,7 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
|
|||
if (EQ (Vread_with_symbol_positions, Qt)
|
||||
|| EQ (Vread_with_symbol_positions, readcharfun))
|
||||
Vread_symbol_positions_list =
|
||||
/* Kind of a hack; this will probably fail if characters
|
||||
in the symbol name were escaped. Not really a big
|
||||
deal, though. */
|
||||
Fcons (Fcons (result,
|
||||
make_number (readchar_count
|
||||
- XFASTINT (Flength (Fsymbol_name (result))))),
|
||||
Fcons (Fcons (result, make_number (start_position)),
|
||||
Vread_symbol_positions_list);
|
||||
return result;
|
||||
}
|
||||
|
@ -4490,10 +4491,9 @@ to load. See also `load-dangerous-libraries'. */);
|
|||
Qlexical_binding = intern ("lexical-binding");
|
||||
staticpro (&Qlexical_binding);
|
||||
DEFVAR_LISP ("lexical-binding", Vlexical_binding,
|
||||
doc: /* If non-nil, use lexical binding when evaluating code.
|
||||
This applies to code evaluated by `eval-buffer' and `eval-region' and
|
||||
other commands that call these functions, like `eval-defun' and
|
||||
the like.
|
||||
doc: /* Whether to use lexical binding when evaluating code.
|
||||
Non-nil means that the code in the current buffer should be evaluated
|
||||
with lexical binding.
|
||||
This variable is automatically set from the file variables of an
|
||||
interpreted Lisp file read using `load'. */);
|
||||
Fmake_variable_buffer_local (Qlexical_binding);
|
||||
|
|
|
@ -19,6 +19,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
|
||||
#include <config.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
|
@ -236,8 +237,9 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
int allow_props, int inherit_input_method)
|
||||
{
|
||||
ptrdiff_t size, len;
|
||||
char *line, *s;
|
||||
char *line;
|
||||
Lisp_Object val;
|
||||
int c;
|
||||
|
||||
fprintf (stdout, "%s", SDATA (prompt));
|
||||
fflush (stdout);
|
||||
|
@ -246,22 +248,30 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
size = 100;
|
||||
len = 0;
|
||||
line = (char *) xmalloc (size);
|
||||
while ((s = fgets (line + len, size - len, stdin)) != NULL
|
||||
&& (len = strlen (line),
|
||||
len == size - 1 && line[len - 1] != '\n'))
|
||||
|
||||
while ((c = getchar ()) != '\n')
|
||||
{
|
||||
if (STRING_BYTES_BOUND / 2 < size)
|
||||
memory_full (SIZE_MAX);
|
||||
size *= 2;
|
||||
line = (char *) xrealloc (line, size);
|
||||
if (c < 0)
|
||||
{
|
||||
if (errno != EINTR)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (len == size)
|
||||
{
|
||||
if (STRING_BYTES_BOUND / 2 < size)
|
||||
memory_full (SIZE_MAX);
|
||||
size *= 2;
|
||||
line = (char *) xrealloc (line, size);
|
||||
}
|
||||
line[len++] = c;
|
||||
}
|
||||
}
|
||||
|
||||
if (s)
|
||||
if (len)
|
||||
{
|
||||
char *nl = strchr (line, '\n');
|
||||
if (nl)
|
||||
*nl = '\0';
|
||||
val = build_string (line);
|
||||
val = make_string (line, len);
|
||||
xfree (line);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -141,7 +141,7 @@ struct Lisp_Process
|
|||
/* Every field in the preceding structure except for the first two
|
||||
must be a Lisp_Object, for GC's sake. */
|
||||
|
||||
#define ChannelMask(n) (1<<(n))
|
||||
#define ChannelMask(n) (1 << (n))
|
||||
|
||||
/* True if we are about to fork off a synchronous process or if we
|
||||
are waiting for it. */
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
/* System file for openbsd. */
|
||||
|
||||
/* The same as NetBSD. Note there are differences in configure. */
|
||||
/* Nearly the same as NetBSD. Note there are differences in configure. */
|
||||
#include "netbsd.h"
|
||||
|
||||
/* The symbol SIGIO is defined, but the feature doesn't work in the
|
||||
way Emacs needs it to. See
|
||||
<http://article.gmane.org/gmane.os.openbsd.ports/46831>. */
|
||||
#define BROKEN_SIGIO
|
||||
|
|
|
@ -1053,7 +1053,7 @@ unexec (const char *new_name, const char *old_name)
|
|||
memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src,
|
||||
NEW_SECTION_H (nn).sh_size);
|
||||
|
||||
#ifdef __alpha__
|
||||
#if defined __alpha__ && !defined __OpenBSD__
|
||||
/* Update Alpha COFF symbol table: */
|
||||
if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug")
|
||||
== 0)
|
||||
|
@ -1072,7 +1072,7 @@ unexec (const char *new_name, const char *old_name)
|
|||
symhdr->cbRfdOffset += new_data2_size;
|
||||
symhdr->cbExtOffset += new_data2_size;
|
||||
}
|
||||
#endif /* __alpha__ */
|
||||
#endif /* __alpha__ && !__OpenBSD__ */
|
||||
|
||||
#if defined (_SYSTYPE_SYSV)
|
||||
if (NEW_SECTION_H (nn).sh_type == SHT_MIPS_DEBUG
|
||||
|
|
|
@ -6945,7 +6945,7 @@ next_element_from_string (struct it *it)
|
|||
struct text_pos position;
|
||||
|
||||
xassert (STRINGP (it->string));
|
||||
xassert (!it->bidi_p || it->string == it->bidi_it.string.lstring);
|
||||
xassert (!it->bidi_p || EQ (it->string, it->bidi_it.string.lstring));
|
||||
xassert (IT_STRING_CHARPOS (*it) >= 0);
|
||||
position = it->current.string_pos;
|
||||
|
||||
|
@ -7259,7 +7259,7 @@ next_element_from_buffer (struct it *it)
|
|||
xassert (IT_CHARPOS (*it) >= BEGV);
|
||||
xassert (NILP (it->string) && !it->s);
|
||||
xassert (!it->bidi_p
|
||||
|| (it->bidi_it.string.lstring == Qnil
|
||||
|| (EQ (it->bidi_it.string.lstring, Qnil)
|
||||
&& it->bidi_it.string.s == NULL));
|
||||
|
||||
/* With bidi reordering, the character to display might not be the
|
||||
|
|
Loading…
Add table
Reference in a new issue