1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Merge from origin/emacs-28

f232d989fd Improve HTML export of NEWS file
397890ba77 Delete "etc/NEWS*.html" from .gitignore
70ca5f6524 ; * etc/NEWS: Fix typos.
19de241a7d Recommend NonGNU ELPA over MELPA
f25f9dbf30 Minor doc fixes in picture.el
520b041b54 * lisp/textmodes/page-ext.el: Improve Commentary.

# Conflicts:
#	etc/NEWS
This commit is contained in:
Stefan Kangas 2022-09-16 16:27:37 +02:00
commit 6e4f6e97bf
6 changed files with 196 additions and 143 deletions

View file

@ -1,7 +1,6 @@
;;; page-ext.el --- extended page handling commands -*- lexical-binding:t -*-
;; Copyright (C) 1990-1991, 1993-1994, 2001-2022 Free Software
;; Foundation, Inc.
;; Copyright (C) 1990-2022 Free Software Foundation, Inc.
;; Author: Robert J. Chassell <bob@gnu.org>
;; (according to ack.texi)
@ -25,20 +24,20 @@
;;; Commentary:
;; You may use these commands to handle an address list or other
;; small data base.
;; small database.
;;; Summary
;; The current page commands are:
;; forward-page C-x ]
;; backward-page C-x [
;; narrow-to-page C-x p
;; count-lines-page C-x l
;; mark-page C-x C-p (change this to C-x C-p C-m)
;; sort-pages not bound
;; what-page not bound
;; `forward-page' C-x ]
;; `backward-page' C-x [
;; `narrow-to-page' C-x p
;; `count-lines-page' C-x l
;; `mark-page' C-x C-p (change this to C-x C-p C-m)
;; `sort-pages' not bound
;; `what-page' not bound
;; The new page handling commands all use `C-x C-p' as a prefix. This
;; means that the key binding for `mark-page' must be changed.
@ -47,15 +46,15 @@
;; New page handling commands:
;; pages-next-page C-x C-p C-n
;; pages-previous-page C-x C-p C-p
;; pages-search C-x C-p C-s
;; pages-add-new-page C-x C-p C-a
;; pages-sort-buffer C-x C-p s
;; pages-set-delimiter C-x C-p C-l
;; pages-directory C-x C-p C-d
;; pages-directory-for-addresses C-x C-p d
;; pages-directory-goto C-c C-c
;; `pages-next-page' C-x C-p C-n
;; `pages-previous-page' C-x C-p C-p
;; `pages-search' C-x C-p C-s
;; `pages-add-new-page' C-x C-p C-a
;; `pages-sort-buffer' C-x C-p s
;; `pages-set-delimiter' C-x C-p C-l
;; `pages-directory' C-x C-p C-d
;; `pages-directory-for-addresses' C-x C-p d
;; `pages-directory-goto' C-c C-c
;;; Using the page commands
@ -103,8 +102,8 @@
;;
;; 2. The first line of text in each entry is the `heading line'; it
;; will appear in the pages-directory-buffer which is constructed
;; using the `C-x C-p C-d' (pages-directory) command or the `C-x
;; C-p d' (pages-directory-for-addresses) command.
;; using the `C-x C-p C-d' (`pages-directory') command or the
;; `C-x C-p d' (`pages-directory-for-addresses') command.
;;
;; The heading line may be on the same line as the page-delimiter
;; or it may follow after. It is the first non-blank line on the
@ -163,17 +162,18 @@
;; `pages-previous-page', `pages-add-new-page', `mark-page', and `pages-search'
;; commands.
;; You may use either the `C-x C-p d' (pages-directory-for-addresses)
;; or the `C-x C-p C-d' (pages-directory) command to construct and
;; You may use either the `C-x C-p d' (`pages-directory-for-addresses')
;; or the `C-x C-p C-d' (`pages-directory') command to construct and
;; display a directory of all the heading lines.
;; In the directory, you may position the cursor over a heading line
;; and type `C-c C-c' (pages-directory-goto) to go to the entry to
;; and type `C-c C-c' (`pages-directory-goto') to go to the entry to
;; which it refers in the pages buffer.
;; You can type `C-c C-p C-a' (pages-add-new-page) to add a new entry in the
;; pages buffer or address file. This is the same command you use to
;; add a new entry when you are in the pages buffer or address file.
;; You can type `C-c C-p C-a' (`pages-add-new-page') to add a new
;; entry in the pages buffer or address file. This is the same
;; command you use to add a new entry when you are in the pages buffer
;; or address file.
;; If you wish, you may create several different directories,
;; one for each different buffer.

View file

@ -23,9 +23,9 @@
;;; Commentary:
;; This code provides the picture-mode commands documented in the Emacs
;; This code provides the `picture-mode' commands documented in the Emacs
;; manual. The screen is treated as a semi-infinite quarter-plane with
;; support for rectangle operations and `etch-a-sketch' character
;; support for rectangle operations and "etch-a-sketch" character
;; insertion in any of eight directions.
;;; Code:
@ -96,7 +96,7 @@ If scan reaches end of buffer, stop there without error."
(defun picture-forward-column (arg &optional interactive)
"Move cursor right, making whitespace if necessary.
With argument, move that many columns."
With prefix argument ARG, move that many columns."
(interactive "^p\nd")
(let (deactivate-mark)
(picture-update-desired-column interactive)
@ -110,14 +110,14 @@ With argument, move that many columns."
(defun picture-backward-column (arg &optional interactive)
"Move cursor left, making whitespace if necessary.
With argument, move that many columns."
With prefix argument ARG, move that many columns."
(interactive "^p\nd")
(picture-update-desired-column interactive)
(picture-forward-column (- arg)))
(defun picture-move-down (arg)
"Move vertically down, making whitespace if necessary.
With argument, move that many lines."
With prefix argument ARG, move that many lines."
(interactive "^p")
(let (deactivate-mark)
(picture-update-desired-column nil)
@ -134,7 +134,7 @@ With argument, move that many lines."
(defun picture-move-up (arg)
"Move vertically up, making whitespace if necessary.
With argument, move that many lines."
With prefix argument ARG, move that many lines."
(interactive "^p")
(picture-update-desired-column nil)
(picture-move-down (- arg)))
@ -161,36 +161,36 @@ With argument, move that many lines."
(defun picture-movement-nw (&optional arg)
"Move up and left after self-inserting character in Picture mode.
With prefix argument, move up and two-column left."
With prefix argument ARG, move up and two-column left."
(interactive "P")
(picture-set-motion -1 (if arg -2 -1)))
(defun picture-movement-ne (&optional arg)
"Move up and right after self-inserting character in Picture mode.
With prefix argument, move up and two-column right."
With prefix argument ARG, move up and two-column right."
(interactive "P")
(picture-set-motion -1 (if arg 2 1)))
(defun picture-movement-sw (&optional arg)
"Move down and left after self-inserting character in Picture mode.
With prefix argument, move down and two-column left."
With prefix argument ARG, move down and two-column left."
(interactive "P")
(picture-set-motion 1 (if arg -2 -1)))
(defun picture-movement-se (&optional arg)
"Move down and right after self-inserting character in Picture mode.
With prefix argument, move down and two-column right."
With prefix argument ARG, move down and two-column right."
(interactive "P")
(picture-set-motion 1 (if arg 2 1)))
(defun picture-set-motion (vert horiz)
(defun picture-set-motion (vertical horizontal)
"Set VERTICAL and HORIZONTAL increments for movement in Picture mode.
The mode line is updated to reflect the current direction."
(setq picture-vertical-step vert
picture-horizontal-step horiz)
(setq picture-vertical-step vertical
picture-horizontal-step horizontal)
(setq mode-name
(format "Picture:%s"
(nth (+ 2 (% horiz 3) (* 5 (1+ (% vert 2))))
(nth (+ 2 (% horizontal 3) (* 5 (1+ (% vertical 2))))
'(wnw nw up ne ene Left left none right Right
wsw sw down se ese))))
(force-mode-line-update)
@ -305,9 +305,9 @@ Use \"\\[command-apropos] picture-movement\" to see those commands."
(defun picture-clear-line (arg)
"Clear out rest of line; if at end of line, advance to next line.
Cleared-out line text goes into the kill ring, as do newlines that are
advanced over. With argument, clear out (and save in kill ring) that
many lines."
Cleared-out line text goes into the kill ring, as do newlines
that are advanced over. With prefix argument ARG, clear out (and
save in kill ring) that many lines."
(interactive "P")
(if arg
(progn
@ -320,7 +320,8 @@ many lines."
(defun picture-newline (arg)
"Move to the beginning of the following line.
With argument, moves that many lines (up, if negative argument);
With prefix argument ARG, move that many lines (up, if negative
argument);
always moves to the beginning of a line."
(interactive "^p")
(let ((start (point))
@ -466,8 +467,11 @@ If no such character is found, move to beginning of line."
(defun picture-tab (&optional arg)
"Tab transparently (just move point) to next tab stop.
With prefix arg, overwrite the traversed text with spaces. The tab stop
list can be changed by \\[picture-set-tab-stops] and \\[edit-tab-stops].
With prefix argument ARG, overwrite the traversed text with
spaces. The tab stop list can be changed by \
\\<picture-mode-map>\\[picture-set-tab-stops] and
\\[edit-tab-stops].
See also documentation for variable `picture-tab-chars'."
(interactive "^P")
(let* ((opoint (point)))
@ -515,10 +519,11 @@ Interactively, reads the register using `register-read-with-preview'."
(defun picture-yank-rectangle (&optional insertp)
"Overlay rectangle saved by \\[picture-clear-rectangle].
The rectangle is positioned with upper left corner at point, overwriting
existing text. With prefix argument, the rectangle is inserted instead,
shifting existing text. Leaves mark at one corner of rectangle and
point at the other (diagonally opposed) corner."
The rectangle is positioned with upper left corner at point,
overwriting existing text. With prefix argument INSERTP, the
rectangle is inserted instead, shifting existing text. Leave
mark at one corner of rectangle and point at the
other (diagonally opposed) corner."
(interactive "P")
(if (not (consp picture-killed-rectangle))
(error "No rectangle saved")
@ -536,10 +541,11 @@ regardless of where you click."
(defun picture-yank-rectangle-from-register (register &optional insertp)
"Overlay rectangle saved in REGISTER.
The rectangle is positioned with upper left corner at point, overwriting
existing text. With prefix argument, the rectangle is
inserted instead, shifting existing text. Leaves mark at one corner
of rectangle and point at the other (diagonally opposed) corner.
The rectangle is positioned with upper left corner at point,
overwriting existing text. With prefix argument INSERTP, the
rectangle is inserted instead, shifting existing text. Leave
mark at one corner of rectangle and point at the
other (diagonally opposed) corner.
Interactively, reads the register using `register-read-with-preview'."
(interactive (list (register-read-with-preview "Rectangle from register: ")
@ -552,7 +558,7 @@ Interactively, reads the register using `register-read-with-preview'."
(defun picture-insert-rectangle (rectangle &optional insertp)
"Overlay RECTANGLE with upper left corner at point.
Optional argument INSERTP, if non-nil causes RECTANGLE to be inserted.
Leaves the region surrounding the rectangle."
Leave the region surrounding the rectangle."
(let ((indent-tabs-mode nil))
(if (not insertp)
(save-excursion
@ -570,7 +576,7 @@ Leaves the region surrounding the rectangle."
(if (= (current-column) 0) 1 0)))
(defun picture-draw-rectangle (start end)
"Draw a rectangle around region."
"Draw a rectangle around region from START to END."
(interactive "*r") ; start will be less than end
(let* ((sl (picture-current-line))
(sc (current-column))