Subject: bug#47690: closed (Re: bug#47690: 28.0.50; repeat-mode: Introduce a defmacro for chaining commands ???)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 12 Apr 2021 16:15:02 +0000

Your bug report

#47690: 28.0.50; repeat-mode: Introduce a defmacro for chaining commands ???

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
47690: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=47690
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#47690: 28.0.50; repeat-mode: Introduce a defmacro for chaining commands ???
From: Juri Linkov <[email-masked]>
To: Ramesh Nedunchezian <[email-masked]>
Cc: [email-masked]
Date: Mon, 12 Apr 2021 19:13:45 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Think of this email not as a bug, but as a note ... So, feel free to
> close it after digesting the contents.

Thanks, your notes will be saved for posterity, although I see
nothing actionable here, repeat-mode is not like a hydra package.

Subject: 28.0.50; repeat-mode: Introduce a defmacro for chaining commands ???
From: Ramesh Nedunchezian <[email-masked]>
To: [email-masked]
Date: Sat, 10 Apr 2021 17:58:58 +0530
List-Id: <debbugs-submit.debbugs.gnu.org>

Think of this email not as a bug, but as a note ... So, feel free to
close it after digesting the contents.

Context:

   When I look at the documentation of many of the MELPA packages,
   they have long long long lines i.e., one line per-paragraph.  It
   always bothers me when I run across such files.  I always hated
   reaching out to menu to fix the wrap.  Now that there is
   `repeat-mode', I can mindlessly keep pressing a key--F12 in the
   present case--to cycle through various wraps until I land in the
   one that is agreeable.

;; Pressing F12 repeatedly is equivalent to cycling through the
;; following 3 radio buttons
;;
;; 1. Wrap at Window Edge
;; 2. Truncate Long Lines
;; 3. Word Wrap (Visual Line Mode)
;;
;; in Menu->Options->Line Wrapping in this Buffer.
;;
;; This is implemented through the all new `repeat-mode' feature.
;;
;; Much like how `C-l' (= `recenter-top-bottom') cycles the cursor
;; though different positions, pressing F12 will take the buffer
;; through different wrap settings.
;;
;; This is what I see in *Messages* buffer when I press F12
;; repeatedly.
;;
;; Visual-Line mode enabled
;; Visual-Line mode enabled [Repeat with <f12>]
;; Truncate long lines enabled
;; Truncate long lines enabled [Repeat with <f12>]
;; Truncate long lines disabled
;; Truncate long lines disabled [Repeat with <f12>]
;; Visual-Line mode enabled
;; Visual-Line mode enabled [Repeat with <f12>]

;; Note: Instead of wrapping at window edge, a better idea would be to
;; use `visual-fill-mode'.  See
;; https://elpa.gnu.org/packages/visual-fill.html.

;; It may be a good idea (?) to provide a macro, say, `chaincmds',
;; which can generate the below code when invoked with
;;
;; (chain-cmds (kbd "<f12>")
;; 		'(menu-bar--visual-line-mode-enable
;; 		  menu-bar--toggle-truncate-long-lines 
;; 		  menu-bar--wrap-long-lines-window-edge))

(define-key global-map (kbd "<f12>") 'menu-bar--visual-line-mode-enable)
(let ((key [f12]))
  (defvar menu-bar--visual-line-mode-enable--repeat-map
    (let ((map (make-sparse-keymap))) map))
  (define-key menu-bar--visual-line-mode-enable--repeat-map key 'menu-bar--toggle-truncate-long-lines)

  (put 'menu-bar--visual-line-mode-enable 'repeat-map 'menu-bar--visual-line-mode-enable--repeat-map)

  (defvar menu-bar--toggle-truncate-long-lines--repeat-map
    (let ((map (make-sparse-keymap))) map))
  (define-key menu-bar--toggle-truncate-long-lines--repeat-map key 'menu-bar--wrap-long-lines-window-edge)

  (put 'menu-bar--toggle-truncate-long-lines 'repeat-map 'menu-bar--toggle-truncate-long-lines--repeat-map)

  (defvar menu-bar--wrap-long-lines-window-edge--repeat-map
    (let ((map (make-sparse-keymap))) map))
  (define-key menu-bar--wrap-long-lines-window-edge--repeat-map key 'menu-bar--visual-line-mode-enable)

  (put 'menu-bar--wrap-long-lines-window-edge 'repeat-map 'menu-bar--wrap-long-lines-window-edge--repeat-map))

--------------------------------

In GNU Emacs 28.0.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
 of 2021-04-10 built on debian
Repository revision: 0db2126d7176b0bd1b13d4b0d1cd958c8cf55714
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Debian GNU/Linux bullseye/sid

Configured using:
 'configure -with-imagemagick --with-json --with-xwidgets'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2
M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB