diff options
-rw-r--r-- | CONTRIBUTE | 15 | ||||
-rwxr-xr-x | admin/nt/dist-build/build-dep-zips.py | 1 | ||||
-rw-r--r-- | doc/emacs/display.texi | 33 | ||||
-rw-r--r-- | doc/lispref/control.texi | 6 | ||||
-rw-r--r-- | doc/misc/efaq.texi | 21 | ||||
-rw-r--r-- | lisp/info.el | 18 | ||||
-rw-r--r-- | lisp/sort.el | 5 | ||||
-rw-r--r-- | src/eval.c | 1 | ||||
-rw-r--r-- | src/xdisp.c | 7 |
9 files changed, 67 insertions, 40 deletions
diff --git a/CONTRIBUTE b/CONTRIBUTE index d9502dcac35..26efbd7e5aa 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -53,9 +53,18 @@ archives. To email a patch you can use a shell command like 'git format-patch -1' to create a file, and then attach the file to your email. This nicely -packages the patch's commit message and changes. To send just one -such patch without additional remarks, you can use a command like -'git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'. +packages the patch's commit message and changes, and makes sure the +format and whitespace are not munged in transit by the various mail +agents. To send just one such patch without additional remarks, it is +also possible to use a command like + + git send-email --to=bug-gnu-emacs@gnu.org 0001-DESCRIPTION.patch'. + +However, we prefer the 'git format-patch' method with attachment, as +doing so delivers patches in the correct and easily-recognizable format +more reliably, and makes the job of applying the patches easier and less +error-prone. It also allows to send patches whose author is someone +other than the email sender. Once the cumulative amount of your submissions exceeds about 15 lines of non-trivial changes, we will need you to assign to the FSF the diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index b0345a42cf3..7047d28346d 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -32,6 +32,7 @@ EMACS_MAJOR_VERSION="28" PKG_REQ='''mingw-w64-x86_64-giflib mingw-w64-x86_64-gnutls mingw-w64-x86_64-harfbuzz +mingw-w64-x86_64-jansson mingw-w64-x86_64-lcms2 mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-libpng diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 536f4cb5daa..a2ace00cbbc 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1174,19 +1174,20 @@ right-to-left paragraphs. @findex display-fill-column-indicator-mode @findex global-display-fill-column-indicator-mode Emacs can add an indicator to display a fill column position. The -fill column indicator is a useful functionality specially in -prog-mode to indicate the position of an specific column. +fill column indicator is a useful functionality especially in +@code{prog-mode} to indicate the position of a specific column. - You can set the buffer-local variables @code{display-fill-column-indicator} -and @code{display-fill-column-indicator-character} to activate the -indicator and controls how the indicator looks. + You can set the buffer-local variables +@code{display-fill-column-indicator} and +@code{display-fill-column-indicator-character} to activate the +indicator and control how it looks, respectively. Alternatively you can type @w{@kbd{M-x display-fill-column-indicator-mode}} -or @w{@kbd{M-x global-display-fill-column-indicator-mode}} which enables the -indicator locally and globally respectively and also chooses the -character to use if none is set already. It is possible to use the -first one to activate the indicator in a hook or the second one to -enable it globally. +or @w{@kbd{M-x global-display-fill-column-indicator-mode}} which +enables the indicator locally or globally, respectively, and also +chooses the character to use if none is already set. It is possible +to use the first one to activate the indicator in a hook and the +second one to enable it globally. There are 2 buffer local variables and 1 face to customize this mode: @@ -1203,20 +1204,20 @@ Any other value disables the indicator. The default value is @code{t}. @item display-fill-column-indicator-character @vindex display-fill-column-indicator-character Specifies the character used for the indicator. This character can be -any valid char including unicode ones if the actual font supports -them. +any valid character including Unicode ones if the font supports them. When the mode is enabled through the functions @code{display-fill-column-indicator-mode} or @code{global-display-fill-column-indicator-mode}, the initialization -functions check if this variable is @code{non-nil}, otherwise the -initialization tries to set it to U+2502 or @samp{|}. +functions check if this variable is non-@code{nil}, otherwise the +initialization tries to set it to @code{U+2502} or @samp{|}. @item fill-column-indicator @vindex fill-column-indicator Specifies the face used to display the indicator. It inherits its -default values from shadow but without background color. To change -the indicator color you need to set only the foreground color of this face. +default values from the face @code{shadow} but without background +color. To change the indicator color you need only set the foreground +color of this face. @end table @vindex indicate-buffer-boundaries diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 01ae94ea7dd..d2419f415bf 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -959,8 +959,9 @@ For example, the following is invalid: @example @group +(require 'cl-lib) (pcase (read-number "Enter an integer: ") - ((or (and (pred evenp) + ((or (and (pred cl-evenp) e-num) ; @r{bind @code{e-num} to @var{expval}} o-num) ; @r{bind @code{o-num} to @var{expval}} (list e-num o-num))) @@ -984,9 +985,10 @@ Reworking the above example: @example @group +(require 'cl-lib) (pcase (read-number "Enter an integer: ") ((and num ; @r{line 1} - (or (and (pred evenp) ; @r{line 2} + (or (and (pred cl-evenp) ; @r{line 2} (let spin 'even)) ; @r{line 3} (let spin 'odd))) ; @r{line 4} (list spin num))) ; @r{line 5} diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 8f7ed715b52..82467048a08 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -3477,15 +3477,18 @@ You can browse the resulting @file{*Packages*} buffer to see what is available, and then Emacs can automatically download and install the packages that you select. @xref{Packages,,, emacs, The GNU Emacs Manual}. -There are other, non-GNU, Emacs Lisp package servers, including: -@uref{https://melpa.org, MELPA}; and -@uref{https://marmalade-repo.org, Marmalade}. To use additional -package servers, customize the @code{package-archives} variable. Be -aware that installing a package can run arbitrary code, so only add -sources that you trust. Also, packages hosted on non-GNU package -servers may encourage or require you to install and use non-free -software; for example, MELPA is known to host some packages that do -this. +There are other Emacs Lisp package archives. To use additional +archives, you can customize the @code{package-archives} variable. +Those archives have no affiliation with GNU Emacs, and we do not +monitor how they are maintained. They may pay close attention to +correctness and safety of the code, or they may give only cursory +attention. + +Also, packages hosted on these other archives may encourage or require +you to install and use other nonfree programs. Unless you can verify +that a package is free software, and that it functions without +installing any nonfree software, we recommend for your freedom's sake +that you stay away from it. The @uref{https://lists.gnu.org/mailman/listinfo/gnu-emacs-sources, GNU Emacs sources mailing list}, which is gatewayed to the diff --git a/lisp/info.el b/lisp/info.el index d579ecc5a3b..78f88947c79 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -2265,7 +2265,8 @@ End of submatch 0, 1, and 3 are the same, so you can safely concat." (match-string-no-properties 1))) (defun Info-next () - "Go to the next node of this node." + "Go to the \"next\" node, staying on the same hierarchical level. +This command doesn't descend into sub-nodes, like \\<Info-mode-map>\\[Info-forward-node] does." (interactive) ;; In case another window is currently selected (save-window-excursion @@ -2273,7 +2274,8 @@ End of submatch 0, 1, and 3 are the same, so you can safely concat." (Info-goto-node (Info-extract-pointer "next")))) (defun Info-prev () - "Go to the previous node of this node." + "Go to the \"previous\" node, staying on the same hierarchical level. +This command doesn't go up to the parent node, like \\<Info-mode-map>\\[Info-backward-node] does." (interactive) ;; In case another window is currently selected (save-window-excursion @@ -2887,7 +2889,13 @@ N is the digit argument used to invoke this command." (Info-goto-node (Info-extract-menu-counting nil))))) (defun Info-forward-node (&optional not-down not-up no-error) - "Go forward one node, considering all nodes as forming one sequence." + "Go forward one node, considering all nodes as forming one sequence. +Interactively, if the current node has sub-nodes, descend into the first +sub-node; otherwise go to the \"next\" node, if it exists, else go \"up\" +to the parent node. +When called from Lisp, NOT-DOWN non-nil means don't descend into sub-nodes, +NOT-UP non-nil means don't go to parent nodes, and NO-ERROR non-nil means +don't signal a user-error if there's no node to go to." (interactive) (goto-char (point-min)) (forward-line 1) @@ -2922,7 +2930,9 @@ N is the digit argument used to invoke this command." (t (user-error "No pointer forward from this node"))))) (defun Info-backward-node () - "Go backward one node, considering all nodes as forming one sequence." + "Go backward one node, considering all nodes as forming one sequence. +If the current node has a \"previous\" node, go to it, descending into its +last sub-node, if any; otherwise go \"up\" to the parent node." (interactive) (let ((prevnode (Info-extract-pointer "prev[ious]*" t)) (upnode (Info-extract-pointer "up" t)) diff --git a/lisp/sort.el b/lisp/sort.el index de0e1b9519d..f878db24a3c 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -554,9 +554,6 @@ is the one that ends before END." (if (> beg end) (let (mid) (setq mid end end beg beg mid))) (save-excursion - (when (or (< (line-beginning-position) beg) - (< end (line-end-position))) - (user-error "There are no full lines in the region")) ;; Put beg at the start of a line and end and the end of one -- ;; the largest possible region which fits this criteria. (goto-char beg) @@ -568,6 +565,8 @@ is the one that ends before END." ;; reversal; it isn't difficult to add it afterward. (or (and (eolp) (not (bolp))) (progn (forward-line -1) (end-of-line))) (setq end (point-marker)) + (when (<= end beg) + (user-error "There are no full lines in the region")) ;; The real work. This thing cranks through memory on large regions. (let (ll (do t)) (while do diff --git a/src/eval.c b/src/eval.c index 959adea6467..9daae92e55a 100644 --- a/src/eval.c +++ b/src/eval.c @@ -831,6 +831,7 @@ usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */) Lisp_Object sym, tem; sym = XCAR (args); + CHECK_SYMBOL (sym); Lisp_Object docstring = Qnil; if (!NILP (XCDR (XCDR (args)))) { diff --git a/src/xdisp.c b/src/xdisp.c index bd0711471a2..e454fd7b83f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1871,9 +1871,10 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, top_x = it3.current_x - it3.pixel_width; /* Account for line-number display, if IT3 still didn't. This can happen if START - 1 is the - first character on its display line. */ - if (!it3.line_number_produced_p - && it.line_number_produced_p) + first or the last character on its display line. */ + if (it3.lnum_pixel_width > 0) + top_x += it3.lnum_pixel_width; + else if (it.line_number_produced_p) top_x += it.lnum_pixel_width; /* Normally, we would exit the above loop because we found the display element whose character |