1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-27 07:41:28 -08:00

Merge from intsign.

This commit is contained in:
Paul Eggert 2011-07-19 13:37:27 -07:00
commit 63cf7836ae
9 changed files with 371 additions and 314 deletions

View file

@ -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

View file

@ -1,3 +1,16 @@
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

View file

@ -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"))

View file

@ -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.

View file

@ -106,6 +106,8 @@
(gs_load): Use printmax_t to print the widest integers possible.
Check for integer overflow when computing image height and width.
2011-07-19 Paul Eggert <eggert@cs.ucla.edu>
Integer signedness and overflow and related fixes. (Bug#9079)
* bidi.c: Integer size and overflow fixes.
@ -303,6 +305,24 @@
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.

View file

@ -4491,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);

View file

@ -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

View file

@ -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

View file

@ -1053,7 +1053,7 @@ temacs:
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 @@ temacs:
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