Merge from origin/emacs-25

ac00a92 Make sh-electric-here-document-mode accessible in sh-mode-hoo...
3287f48 ; Add entry to MAINTAINERS
b85981f * configure.ac (HAVE_MODULES): Exclude gnu-kfreebsd from prev...
0f33284 Make use of rectangle-preview custom variable.
aa0d83a Make use of rectangle-preview face.
33bef6e Use 'grep-find-program' in check-declare.el
a8560e5 Improve "C-h S" for cl-lib symbols
52e798b Fix minor issues with removing left or right fringes
d6ffd64 Speed up redisplay in ansi-term mode
4ab671c Simplify 8-bit character handling by terminal for 'raw-text'
f3653ec * configure.ac (HAVE_MODULES): Treat gnu like gnu-linux.  (Bu...
ab849b7 Fix w32 memory-management problem when extending buffer text
This commit is contained in:
Paul Eggert 2016-04-18 14:05:31 -07:00
commit 0808f2a1a3
13 changed files with 148 additions and 108 deletions

View file

@ -73,6 +73,7 @@ Michael Albinus
File Notifications
src/gfilenotify.c
src/kqueue.c
lisp/filenotify.el
test/lisp/filenotify-tests.el

View file

@ -3374,24 +3374,26 @@ HAVE_MODULES=no
MODULES_OBJ=
MODULES_SUFFIX=
if test "${with_modules}" != "no"; then
if test "$opsys" = "gnu-linux"; then
LIBMODULES="-ldl"
MODULES_SUFFIX=".so"
HAVE_MODULES=yes
elif test "$opsys" = "cygwin"; then
MODULES_SUFFIX=".dll"
HAVE_MODULES=yes
elif test "$opsys" = "darwin"; then
MODULES_SUFFIX=".so"
HAVE_MODULES=yes
elif test "$opsys" = "mingw32"; then
MODULES_SUFFIX=".dll"
HAVE_MODULES=yes
else
# BSD system have dlopen in the libc
AC_CHECK_FUNC(dlopen, [MODULES_SUFFIX=".so"]
[HAVE_MODULES=yes], [])
fi
case $opsys in
gnu|gnu-linux)
LIBMODULES="-ldl"
MODULES_SUFFIX=".so"
HAVE_MODULES=yes
;;
cygwin|mingw32)
MODULES_SUFFIX=".dll"
HAVE_MODULES=yes
;;
darwin)
MODULES_SUFFIX=".so"
HAVE_MODULES=yes
;;
*)
# BSD system have dlopen in the libc
AC_CHECK_FUNC(dlopen, [MODULES_SUFFIX=".so"]
[HAVE_MODULES=yes], [])
;;
esac
if test "${HAVE_MODULES}" = no; then
AC_MSG_ERROR([Dynamic modules are not supported on your system])

View file

@ -1087,6 +1087,23 @@ To disable this, change the variable
@code{overflow-newline-into-fringe} to @code{nil}; this causes Emacs
to continue or truncate lines that are exactly as wide as the window.
If you customize @code{fringe-mode} to remove the fringes on one or
both sides of the window display, the features that display on the
fringe are not available. Indicators of line continuation and
truncation are an exception: when fringes are not available, Emacs
uses the leftmost and rightmost character cells to indicate
continuation and truncation with special ASCII characters, see
@ref{Continuation Lines}, and @ref{Line Truncation}. This reduces the
width available for displaying text on each line, because the
character cells used for truncation and continuation indicators are
reserved for that purpose. Since buffer text can include
bidirectional text, and thus both left-to-right and right-to-left
paragraphs (@pxref{Bidirectional Editing}), removing only one of the
fringes still reserves two character cells, one on each side of the
window, for truncation and continuation indicators, because these
indicators are displayed on opposite sides of the window in
right-to-left paragraphs.
@node Displaying Boundaries
@section Displaying Boundaries

View file

@ -617,6 +617,12 @@ exceed its total height as returned by @code{window-total-height}.
@cindex body width of a window
The @dfn{body width} of a window is the width of its text area, which
does not include the scroll bar, fringes, margins or a right divider.
Note that when one or both fringes are removed (by setting their width
to zero), the display engine reserves two character cells, one on each
side of the window, for displaying the continuation and truncation
glyphs, which leaves 2 columns less for text display. (The function
@code{window-max-chars-per-line}, described below, takes this
peculiarity into account.)
@defun window-body-width &optional window pixelwise
This function returns the width, in columns, of the body of window

View file

@ -339,7 +339,7 @@ Returns non-nil if any false statements are found."
errlist files)
(message "%s" m)
(message "%s" m2)
(setq files (process-lines find-program root
(setq files (process-lines grep-find-program root
"-name" "*.el"
"-exec" grep-program
"-l" "^[ \t]*(declare-function" "{}" ";"))

View file

@ -912,7 +912,9 @@ Return nil if there is nothing appropriate in the buffer near point."
;; for things that should go to Function: etc, and those latter
;; are much more important. Perhaps this could change if some
;; sort of fallback match scheme existed.
("(elisp)Index" nil "^ -+ .*: " "\\( \\|$\\)")))
("(elisp)Index" nil "^ -+ .*: " "\\( \\|$\\)")
("(cl)Function Index" nil "^ -+ .*: " "\\( \\|$\\)")
("(cl)Variable Index" nil "^ -+ .*: " "\\( \\|$\\)")))
;; docstrings talk about elisp, so have apropos-mode follow emacs-lisp-mode
(info-lookup-maybe-add-help

View file

@ -1445,42 +1445,35 @@ graphical terminals."
(let ((coding-type (coding-system-type coding-system))
(saved-meta-mode
(terminal-parameter terminal 'keyboard-coding-saved-meta-mode)))
(if (not (eq coding-type 'raw-text))
(let (accept-8-bit)
(if (not (or (coding-system-get coding-system :suitable-for-keyboard)
(coding-system-get coding-system :ascii-compatible-p)))
(error "Unsuitable coding system for keyboard: %s" coding-system))
(cond ((memq coding-type '(charset utf-8 shift-jis big5 ccl))
(setq accept-8-bit t))
((eq coding-type 'iso-2022)
(let ((flags (coding-system-get coding-system :flags)))
(or (memq '7-bit flags)
(setq accept-8-bit t))))
(t
(error "Unsupported coding system for keyboard: %s"
coding-system)))
(if accept-8-bit
(progn
(or saved-meta-mode
(set-terminal-parameter terminal
'keyboard-coding-saved-meta-mode
(cons (nth 2 (current-input-mode))
nil)))
(set-input-meta-mode 8 terminal))
(when saved-meta-mode
(set-input-meta-mode (car saved-meta-mode) terminal)
(set-terminal-parameter terminal
'keyboard-coding-saved-meta-mode
nil)))
;; Avoid end-of-line conversion.
(setq coding-system
(coding-system-change-eol-conversion coding-system 'unix)))
(when saved-meta-mode
(set-input-meta-mode (car saved-meta-mode) terminal)
(set-terminal-parameter terminal
'keyboard-coding-saved-meta-mode
nil))))
(let (accept-8-bit)
(if (not (or (coding-system-get coding-system :suitable-for-keyboard)
(coding-system-get coding-system :ascii-compatible-p)))
(error "Unsuitable coding system for keyboard: %s" coding-system))
(cond ((memq coding-type '(raw-text charset utf-8 shift-jis big5 ccl))
(setq accept-8-bit t))
((eq coding-type 'iso-2022)
(let ((flags (coding-system-get coding-system :flags)))
(or (memq '7-bit flags)
(setq accept-8-bit t))))
(t
(error "Unsupported coding system for keyboard: %s"
coding-system)))
(if accept-8-bit
(progn
(or saved-meta-mode
(set-terminal-parameter terminal
'keyboard-coding-saved-meta-mode
(cons (nth 2 (current-input-mode))
nil)))
(set-input-meta-mode 8 terminal))
(when saved-meta-mode
(set-input-meta-mode (car saved-meta-mode) terminal)
(set-terminal-parameter terminal
'keyboard-coding-saved-meta-mode
nil)))
;; Avoid end-of-line conversion.
(setq coding-system
(coding-system-change-eol-conversion coding-system 'unix))))
(set-keyboard-coding-system-internal coding-system terminal)
(setq keyboard-coding-system coding-system))

View file

@ -1225,9 +1225,10 @@ and command `sh-reset-indent-vars-to-global-values'."
:type 'hook
:group 'sh-script)
(defcustom sh-mode-hook nil
(defcustom sh-mode-hook '(sh-electric-here-document-mode)
"Hook run by `sh-mode'."
:type 'hook
:options '(sh-electric-here-document-mode)
:group 'sh-script)
(defcustom sh-learn-basic-offset nil
@ -1616,7 +1617,8 @@ buffer indents as it currently is indented.
\\[sh-execute-region] Have optional header and region be executed in a subshell.
`sh-electric-here-document-mode' controls whether insertion of two
unquoted < insert a here document.
unquoted < insert a here document. You can control this behavior by
modifying `sh-mode-hook'.
If you generally program a shell different from your login shell you can
set `sh-shell-file' accordingly. If your shell's file name doesn't correctly
@ -1653,7 +1655,6 @@ with your script for an edit-interpret-debug cycle."
(setq-local syntax-propertize-function #'sh-syntax-propertize-function)
(add-hook 'syntax-propertize-extend-region-functions
#'syntax-propertize-multiline 'append 'local)
(sh-electric-here-document-mode 1)
(setq-local skeleton-pair-alist '((?` _ ?`)))
(setq-local skeleton-pair-filter-function 'sh-quoted-p)
(setq-local skeleton-further-elements

View file

@ -408,40 +408,41 @@ With a prefix (or a FILL) argument, also fill too short lines."
:type 'boolean)
(defun rectangle--string-preview ()
(let ((str (minibuffer-contents)))
(when (equal str "")
(setq str (or (car-safe minibuffer-default)
(if (stringp minibuffer-default) minibuffer-default))))
(when str (setq str (propertize str 'face 'region)))
(with-selected-window rectangle--string-preview-window
(unless (or (null rectangle--string-preview-state)
(equal str (car rectangle--string-preview-state)))
(rectangle--string-flush-preview)
(apply-on-rectangle
(lambda (startcol endcol)
(let* ((sc (move-to-column startcol))
(start (if (<= sc startcol) (point)
(forward-char -1)
(setq sc (current-column))
(point)))
(ec (move-to-column endcol))
(end (point))
(ol (make-overlay start end)))
(push ol (nthcdr 3 rectangle--string-preview-state))
;; FIXME: The extra spacing doesn't interact correctly with
;; the extra spacing added by the rectangular-region-highlight.
(when (< sc startcol)
(overlay-put ol 'before-string (rectangle--space-to startcol)))
(let ((as (when (< endcol ec)
;; (rectangle--space-to ec)
(spaces-string (- ec endcol))
)))
(if (= start end)
(overlay-put ol 'after-string (if as (concat str as) str))
(overlay-put ol 'display str)
(if as (overlay-put ol 'after-string as))))))
(nth 1 rectangle--string-preview-state)
(nth 2 rectangle--string-preview-state))))))
(when rectangle-preview
(let ((str (minibuffer-contents)))
(when (equal str "")
(setq str (or (car-safe minibuffer-default)
(if (stringp minibuffer-default) minibuffer-default))))
(when str (setq str (propertize str 'face 'rectangle-preview)))
(with-selected-window rectangle--string-preview-window
(unless (or (null rectangle--string-preview-state)
(equal str (car rectangle--string-preview-state)))
(rectangle--string-flush-preview)
(apply-on-rectangle
(lambda (startcol endcol)
(let* ((sc (move-to-column startcol))
(start (if (<= sc startcol) (point)
(forward-char -1)
(setq sc (current-column))
(point)))
(ec (move-to-column endcol))
(end (point))
(ol (make-overlay start end)))
(push ol (nthcdr 3 rectangle--string-preview-state))
;; FIXME: The extra spacing doesn't interact correctly with
;; the extra spacing added by the rectangular-region-highlight.
(when (< sc startcol)
(overlay-put ol 'before-string (rectangle--space-to startcol)))
(let ((as (when (< endcol ec)
;; (rectangle--space-to ec)
(spaces-string (- ec endcol))
)))
(if (= start end)
(overlay-put ol 'after-string (if as (concat str as) str))
(overlay-put ol 'display str)
(if as (overlay-put ol 'after-string as))))))
(nth 1 rectangle--string-preview-state)
(nth 2 rectangle--string-preview-state)))))))
;; FIXME: Should this be turned into inhibit-region-highlight and made to apply
;; to non-rectangular regions as well?
@ -782,7 +783,7 @@ Ignores `line-move-visual'."
(if (not old)
(let ((ol (make-overlay left right)))
(overlay-put ol 'window window)
(overlay-put ol 'face 'region)
(overlay-put ol 'face 'rectangle-preview)
ol)
(let ((ol (pop old)))
(move-overlay ol left right (current-buffer))
@ -814,7 +815,7 @@ Ignores `line-move-visual'."
(overlay-put ol 'after-string nil)))
((< mright rightcol) ;`rightcol' is past EOL.
(let ((str (rectangle--space-to rightcol)))
(put-text-property 0 (length str) 'face 'region str)
(put-text-property 0 (length str) 'face 'rectangle-preview str)
;; If cursor happens to be here, draw it at the right place.
(rectangle--place-cursor leftcol left str)
(overlay-put ol 'after-string str)))
@ -826,7 +827,7 @@ Ignores `line-move-visual'."
(overlay-put ol 'after-string nil)
(goto-char right)
(let ((str (rectangle--space-to rightcol)))
(put-text-property 0 (length str) 'face 'region str)
(put-text-property 0 (length str) 'face 'rectangle-preview str)
(when (= left right)
(rectangle--place-cursor leftcol left str))
(overlay-put ol 'after-string str))))
@ -836,7 +837,7 @@ Ignores `line-move-visual'."
;; Make zero-width rectangles visible!
(overlay-put ol 'after-string
(concat (propertize " "
'face '(region (:height 0.2)))
'face '(rectangle-preview (:height 0.2)))
(overlay-get ol 'after-string))))
(push ol nrol)))
start end))

View file

@ -4159,7 +4159,17 @@ the process. Any more args are arguments to PROGRAM."
;; .emacs ...
(term-set-escape-char ?\C-x))
(switch-to-buffer term-ansi-buffer-name))
(switch-to-buffer term-ansi-buffer-name)
;; For some reason, without the below setting, ansi-term behaves
;; sluggishly, not clear why, since the buffer is typically very
;; small.
;;
;; There's a larger problem here with supporting bidirectional text:
;; the application that writes to the terminal could have its own
;; ideas about displaying bidirectional text, and might not want us
;; reordering the text or deciding on base paragraph direction. One
;; such application is Emacs in TTY mode... FIXME.
(setq bidi-paragraph-direction 'left-to-right))
;;; Serial terminals

View file

@ -1889,9 +1889,19 @@ the font."
(ncols (/ window-width font-width)))
(if (and (display-graphic-p)
overflow-newline-into-fringe
(/= (frame-parameter nil 'left-fringe) 0)
(/= (frame-parameter nil 'right-fringe) 0))
(not
(or (eq left-fringe-width 0)
(and (null left-fringe-width)
(= (frame-parameter nil 'left-fringe) 0))))
(not
(or (eq right-fringe-width 0)
(and (null right-fringe-width)
(= (frame-parameter nil 'right-fringe) 0)))))
ncols
;; FIXME: This should remove 1 more column when there are no
;; fringes, lines are truncated, and the window is hscrolled,
;; but EOL is not in the view, because then there are 2
;; truncation glyphs, not one.
(1- ncols)))))
(defun window-current-scroll-bars (&optional window)

View file

@ -155,10 +155,7 @@ single byte."
(set-keyboard-coding-system
(if (terminal-parameter nil 'xterm-mouse-utf-8)
'utf-8-unix
;; Use Latin-1 instead of no-conversion to avoid flicker
;; due to `set-keyboard-coding-system' changing the meta
;; mode.
'latin-1))
'no-conversion))
;; Wait only a little; we assume that the entire escape sequence
;; has already been sent when this function is called.
(read-char nil nil 0.1))

View file

@ -714,13 +714,12 @@ mmap_realloc (void **var, size_t nbytes)
/* If there is enough room in the current reserved area, then
commit more pages as needed. */
if (m2.State == MEM_RESERVE
&& m2.AllocationBase == memInfo.AllocationBase
&& nbytes <= memInfo.RegionSize + m2.RegionSize)
{
void *p;
p = VirtualAlloc (*var + memInfo.RegionSize,
nbytes - memInfo.RegionSize,
MEM_COMMIT, PAGE_READWRITE);
p = VirtualAlloc (*var, nbytes, MEM_COMMIT, PAGE_READWRITE);
if (!p /* && GetLastError() != ERROR_NOT_ENOUGH_MEMORY */)
{
DebPrint (("realloc enlarge: VirtualAlloc (%p + %I64x, %I64x) error %ld\n",
@ -728,7 +727,8 @@ mmap_realloc (void **var, size_t nbytes)
(uint64_t)(nbytes - memInfo.RegionSize),
GetLastError ()));
DebPrint (("next region: %p %p %I64x %x\n", m2.BaseAddress,
m2.AllocationBase, m2.RegionSize, m2.AllocationProtect));
m2.AllocationBase, (uint64_t)m2.RegionSize,
m2.AllocationProtect));
}
else
return *var;