Merge from origin/emacs-26
8c8b673288
Fix backing up remote files in local directories on MS-Win...8eb6870be6
Fix vertical cursor motion in pixel-scroll.el625e84f156
Fix typos in doc strings of message.el9292276a44
Fix a typo in the Emacs manual42509c0649
Improve the documentation of 'table-insert-sequence'93dc7ae4a4
Port better to QNXad99550610
Make tramp-test42-auto-load more robustaf0ce33d08
; * lisp/composite.el (find-composition): Fix a typo in la...bdbcdbac43
Avoid assertions in find-composition
This commit is contained in:
commit
f1204e1dda
9 changed files with 83 additions and 54 deletions
|
@ -702,7 +702,9 @@ case "${canonical}" in
|
|||
## QNX Neutrino
|
||||
*-nto-qnx* )
|
||||
opsys=qnxnto
|
||||
test -z "$CC" && CC=qcc
|
||||
CFLAGS="$CFLAGS -D__NO_EXT_QNX"
|
||||
LDFLAGS="-N2MB $LDFLAGS"
|
||||
;;
|
||||
|
||||
## Intel 386 machines where we don't care about the manufacturer.
|
||||
|
@ -2218,7 +2220,7 @@ test "$CANNOT_DUMP" = yes ||
|
|||
case "$opsys" in
|
||||
## darwin ld insists on the use of malloc routines in the System framework.
|
||||
darwin | mingw32 | nacl | sol2-10) ;;
|
||||
cygwin | qnxto | freebsd)
|
||||
cygwin | qnxnto | freebsd)
|
||||
hybrid_malloc=yes
|
||||
system_malloc= ;;
|
||||
*) test "$ac_cv_func_sbrk" = yes && system_malloc=$emacs_cv_sanitize_address;;
|
||||
|
|
|
@ -62,8 +62,8 @@ definition for the current major mode overrides a global definition.
|
|||
|
||||
You can define abbrevs interactively during the editing session,
|
||||
irrespective of whether Abbrev mode is enabled. You can also save
|
||||
lists of abbrev definitions in files, which you can the reload for use
|
||||
in later sessions.
|
||||
lists of abbrev definitions in files, which you can then reload for
|
||||
use in later sessions.
|
||||
|
||||
@node Defining Abbrevs
|
||||
@section Defining Abbrevs
|
||||
|
|
|
@ -2814,9 +2814,14 @@ high, the table is 67 characters wide and 16 lines high with 2 columns
|
|||
and 3 rows, and a total of 5 cells.
|
||||
|
||||
@findex table-insert-sequence
|
||||
@kbd{M-x table-insert-sequence} inserts a string into each cell.
|
||||
Each string is a part of a sequence i.e., a series of increasing
|
||||
integer numbers.
|
||||
@kbd{M-x table-insert-sequence} traverses the cells of a table
|
||||
inserting a sequence of text strings into each cell as it goes. It
|
||||
asks for the base string of the sequence, and then produces the
|
||||
sequence by ``incrementing'' the base string, either numerically (if
|
||||
the base string ends in numerical characters) or in the
|
||||
@acronym{ASCII} order. In addition to the base string, the command
|
||||
prompts for the number of elements in the sequence, the increment, the
|
||||
cell interval, and the justification of the text in each cell.
|
||||
|
||||
@cindex table for HTML and LaTeX
|
||||
@findex table-generate-source
|
||||
|
|
|
@ -337,8 +337,9 @@ When Automatic Composition mode is on, this function also finds a
|
|||
chunk of text that is automatically composed. If such a chunk is
|
||||
found closer to POS than the position that has `composition'
|
||||
property, the value is a list of FROM, TO, and a glyph-string
|
||||
that specifies how the chunk is to be composed. See the function
|
||||
`composition-get-gstring' for the format of the glyph-string."
|
||||
that specifies how the chunk is to be composed; DETAIL-P is
|
||||
inored in this case. See the function `composition-get-gstring'
|
||||
for the format of the glyph-string."
|
||||
(let ((result (find-composition-internal pos limit string detail-p)))
|
||||
(if (and detail-p (> (length result) 3) (nth 2 result) (not (nth 3 result)))
|
||||
;; This is a valid rule-base composition.
|
||||
|
|
|
@ -4653,25 +4653,41 @@ The function `find-backup-file-name' also uses this."
|
|||
;; "/drive_x".
|
||||
(or (file-name-absolute-p file)
|
||||
(setq file (expand-file-name file))) ; make defaults explicit
|
||||
;; Replace any invalid file-name characters (for the
|
||||
;; case of backing up remote files).
|
||||
(setq file (expand-file-name (convert-standard-filename file)))
|
||||
(if (eq (aref file 1) ?:)
|
||||
(setq file (concat "/"
|
||||
"drive_"
|
||||
(char-to-string (downcase (aref file 0)))
|
||||
(if (eq (aref file 2) ?/)
|
||||
""
|
||||
"/")
|
||||
(substring file 2)))))
|
||||
;; Make the name unique by substituting directory
|
||||
;; separators. It may not really be worth bothering about
|
||||
;; doubling `!'s in the original name...
|
||||
(expand-file-name
|
||||
(subst-char-in-string
|
||||
?/ ?!
|
||||
(replace-regexp-in-string "!" "!!" file))
|
||||
backup-directory))
|
||||
(cond
|
||||
((file-remote-p file)
|
||||
;; Remove the leading slash, if any, to prevent
|
||||
;; expand-file-name from adding a drive letter.
|
||||
(and (memq (aref file 0) '(?/ ?\\))
|
||||
(setq file (substring file 1)))
|
||||
;; Replace any invalid file-name characters.
|
||||
(setq file (convert-standard-filename file))
|
||||
;; Replace slashes to make the file name unique, and
|
||||
;; prepend backup-directory.
|
||||
(expand-file-name
|
||||
(subst-char-in-string
|
||||
?/ ?!
|
||||
(replace-regexp-in-string "!" "!!"
|
||||
(concat "/" file)))
|
||||
backup-directory))
|
||||
(t
|
||||
;; Replace any invalid file-name characters.
|
||||
(setq file (expand-file-name (convert-standard-filename file)))
|
||||
(if (eq (aref file 1) ?:)
|
||||
(setq file (concat "/"
|
||||
"drive_"
|
||||
(char-to-string (downcase (aref file 0)))
|
||||
(if (eq (aref file 2) ?/)
|
||||
""
|
||||
"/")
|
||||
(substring file 2))))
|
||||
;; Make the name unique by substituting directory
|
||||
;; separators. It may not really be worth bothering about
|
||||
;; doubling `!'s in the original name...
|
||||
(expand-file-name
|
||||
(subst-char-in-string
|
||||
?/ ?!
|
||||
(replace-regexp-in-string "!" "!!" file))
|
||||
backup-directory)))))
|
||||
(expand-file-name (file-name-nondirectory file)
|
||||
(file-name-as-directory abs-backup-directory))))))
|
||||
|
||||
|
|
|
@ -1433,7 +1433,7 @@ starting with `not' and followed by regexps."
|
|||
(:foreground "MidnightBlue" :bold t))
|
||||
(t
|
||||
(:bold t :italic t)))
|
||||
"Face used for displaying From headers."
|
||||
"Face used for displaying To headers."
|
||||
:group 'message-faces)
|
||||
;; backward-compatibility alias
|
||||
(put 'message-header-to-face 'face-alias 'message-header-to)
|
||||
|
@ -1463,7 +1463,7 @@ starting with `not' and followed by regexps."
|
|||
(:foreground "navy blue" :bold t))
|
||||
(t
|
||||
(:bold t)))
|
||||
"Face used for displaying subject headers."
|
||||
"Face used for displaying Subject headers."
|
||||
:group 'message-faces)
|
||||
;; backward-compatibility alias
|
||||
(put 'message-header-subject-face 'face-alias 'message-header-subject)
|
||||
|
@ -1478,7 +1478,7 @@ starting with `not' and followed by regexps."
|
|||
(:foreground "blue4" :bold t :italic t))
|
||||
(t
|
||||
(:bold t :italic t)))
|
||||
"Face used for displaying newsgroups headers."
|
||||
"Face used for displaying Newsgroups headers."
|
||||
:group 'message-faces)
|
||||
;; backward-compatibility alias
|
||||
(put 'message-header-newsgroups-face 'face-alias 'message-header-newsgroups)
|
||||
|
@ -1493,7 +1493,7 @@ starting with `not' and followed by regexps."
|
|||
(:foreground "steel blue"))
|
||||
(t
|
||||
(:bold t :italic t)))
|
||||
"Face used for displaying newsgroups headers."
|
||||
"Face used for displaying other headers."
|
||||
:group 'message-faces)
|
||||
;; backward-compatibility alias
|
||||
(put 'message-header-other-face 'face-alias 'message-header-other)
|
||||
|
|
|
@ -110,11 +110,11 @@ This is an alternative of `scroll-up'. Scope moves downward."
|
|||
pixel-resolution-fine-flag
|
||||
(frame-char-height))
|
||||
(pixel-line-height))))
|
||||
(if (pixel-eob-at-top-p) ; when end-of-the-buffer is close
|
||||
(scroll-up 1) ; relay on robust method
|
||||
(while (pixel-point-at-top-p amt) ; prevent too late (multi tries)
|
||||
(vertical-motion 1)) ; move point downward
|
||||
(pixel-scroll-pixel-up amt))))) ; move scope downward
|
||||
(while (pixel-point-at-top-p amt) ; prevent too late (multi tries)
|
||||
(vertical-motion 1)) ; move point downward
|
||||
(if (pixel-eob-at-top-p) ; when end-of-the-buffer is close
|
||||
(scroll-up 1) ; relay on robust method
|
||||
(pixel-scroll-pixel-up amt))))) ; move scope downward
|
||||
|
||||
(defun pixel-scroll-down (&optional arg)
|
||||
"Scroll text of selected window down ARG lines.
|
||||
|
@ -127,11 +127,11 @@ This is and alternative of `scroll-down'. Scope moves upward."
|
|||
pixel-resolution-fine-flag
|
||||
(frame-char-height))
|
||||
(pixel-line-height -1))))
|
||||
(if (or (pixel-bob-at-top-p amt) ; when beginning-of-the-buffer is seen
|
||||
(pixel-eob-at-top-p)) ; for file with a long line
|
||||
(scroll-down 1) ; relay on robust method
|
||||
(while (pixel-point-at-bottom-p amt) ; prevent too late (multi tries)
|
||||
(vertical-motion -1))
|
||||
(while (pixel-point-at-bottom-p amt) ; prevent too late (multi tries)
|
||||
(vertical-motion -1)) ; move point upward
|
||||
(if (or (pixel-bob-at-top-p amt) ; when beginning-of-the-buffer is seen
|
||||
(pixel-eob-at-top-p)) ; for file with a long line
|
||||
(scroll-down 1) ; relay on robust method
|
||||
(pixel-scroll-pixel-down amt)))))
|
||||
|
||||
(defun pixel-bob-at-top-p (amt)
|
||||
|
|
25
src/font.c
25
src/font.c
|
@ -3794,19 +3794,26 @@ font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit,
|
|||
int c;
|
||||
Lisp_Object font_object = Qnil;
|
||||
|
||||
if (NILP (string))
|
||||
if (!face)
|
||||
{
|
||||
if (! face)
|
||||
{
|
||||
int face_id;
|
||||
struct frame *f = XFRAME (w->frame);
|
||||
int face_id;
|
||||
|
||||
face_id = face_at_buffer_position (w, pos, &ignore,
|
||||
*limit, false, -1);
|
||||
face = FACE_FROM_ID (XFRAME (w->frame), face_id);
|
||||
if (NILP (string))
|
||||
face_id = face_at_buffer_position (w, pos, &ignore, *limit,
|
||||
false, -1);
|
||||
else
|
||||
{
|
||||
face_id =
|
||||
NILP (Vface_remapping_alist)
|
||||
? DEFAULT_FACE_ID
|
||||
: lookup_basic_face (f, DEFAULT_FACE_ID);
|
||||
|
||||
face_id = face_at_string_position (w, string, pos, 0, &ignore,
|
||||
face_id, false);
|
||||
}
|
||||
face = FACE_FROM_ID (f, face_id);
|
||||
}
|
||||
else
|
||||
eassert (face);
|
||||
|
||||
while (pos < *limit)
|
||||
{
|
||||
|
|
|
@ -4624,15 +4624,13 @@ process sentinels. They shall not disturb each other."
|
|||
(ignore-errors (cancel-timer timer))
|
||||
(ignore-errors (delete-directory tmp-name 'recursive)))))))
|
||||
|
||||
;; This test is inspired by Bug#29163.
|
||||
(ert-deftest tramp-test42-auto-load ()
|
||||
"Check that Tramp autoloads properly."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
(skip-unless (not (tramp--test-mock-p)))
|
||||
|
||||
(let ((default-directory (expand-file-name temporary-file-directory))
|
||||
(code
|
||||
(format
|
||||
"(message \"Tramp loaded: %%s\" (consp (file-attributes %S)))"
|
||||
"(message \"Tramp loaded: %%s\" (and (file-remote-p %S) t))"
|
||||
tramp-test-temporary-file-directory)))
|
||||
(should
|
||||
(string-match
|
||||
|
|
Loading…
Add table
Reference in a new issue