all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org>
To: help-gnu-emacs@gnu.org
Subject: Re: Run `fill-paragraph' on all the paragraphs in the currently opened LaTeX document.
Date: Mon, 18 Oct 2021 18:28:10 +0200	[thread overview]
Message-ID: <877dea70x1.fsf@zoho.eu> (raw)
In-Reply-To: CAGP6POJzTV2t1g+LCPa_0j_zWNMgJisZGhSg+GRuw6-=Cyb1Kw@mail.gmail.com

Hongyi Zhao wrote:

> So the idea suggested by Emanuel Berg and you now can be
> combined into the following:
>
> Iterate the whole buffer line-by-line with a semantic line
> as the unit block, and check each line if it starts with '\'
> or not, e.g. with (looking-at "\\\\"). When you find one
> "beg", start looking for where it ends, and when you find
> that push (beg end) onto a list.
>
> Then loop through the list and do (fill-region beg end) for
> each list pair item ...

Heh, interesting :)

But I think the advantage of semantic lines in terms of
filling is they will be so short that won't be necessary, if
one still does it maybe it will just be confusing (neither
fish nor fowl).

BTW one can optimize the algorithm proposed above by searching
for regexps instead of the line-by-line approach ... also it
is a good case for a DWIM interface, so, when used
interactively, the whole buffer will be filled that way only
if there is no region ...

;;; -*- lexical-binding: t -*-
;;;
;;; this file:
;;;   https://dataswamp.org/~incal/emacs-init/dwim.el

;; DWIM interface

(defun test-dwim (&optional beg end)
  (interactive (when (use-region-p)
                 (list (region-beginning) (region-end)) ))
  (let ((bg (or beg (point-min))) ; or just (point) here
        (ed (or end (point-max))) )
    (list bg ed) ; code here
    ))

;; test the interface

(when nil
  (save-excursion
    (set-mark   10)
    (goto-char 500)
    (call-interactively #'test-dwim) ) ; (10  500)
  (call-interactively #'test-dwim)     ; ( 1 1163)
  (test-dwim 30 90)                    ; (30   90)
  (test-dwim)                          ; ( 1 1163)
)

;; example function

(defun count-chars (&optional beg end)
  (interactive (when (use-region-p)
                 (list (region-beginning) (region-end)) ))
  (let*((bg   (or beg (point-min)))
        (ed   (or end (point-max)))
        (diff (- ed bg)) )
    (prog1
        diff
      (message "%d" diff) )))

;; test the example function

;; (call-interactively #'count-chars) ; 1162
;; (count-chars)                      ; 1162
;; (count-chars 10 40)                ; 30
;; (+ 1111 (count-chars))             ; 2273

-- 
underground experts united
https://dataswamp.org/~incal




  reply	other threads:[~2021-10-18 16:28 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-17  5:30 Run `fill-paragraph' on all the paragraphs in the currently opened LaTeX document Hongyi Zhao
2021-10-17  6:23 ` Eli Zaretskii
2021-10-17  7:23   ` Hongyi Zhao
2021-10-17 10:25     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-17 12:28       ` Hongyi Zhao
2021-10-17 12:42         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-17 15:30 ` Yuri Khan
2021-10-17 15:37   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-17 15:45     ` Yuri Khan
2021-10-17 17:22       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-18  0:22   ` Hongyi Zhao
2021-10-18  4:42     ` Yuri Khan
2021-10-18  4:50       ` Hongyi Zhao
2021-10-18 14:00         ` Eric S Fraga
2021-10-19  1:21           ` Hongyi Zhao
2021-10-18  8:56       ` Hongyi Zhao
2021-10-18 16:28         ` Emanuel Berg via Users list for the GNU Emacs text editor [this message]
2021-10-18 16:21       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-18 16:17     ` Emanuel Berg via Users list for the GNU Emacs text editor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877dea70x1.fsf@zoho.eu \
    --to=help-gnu-emacs@gnu.org \
    --cc=moasenwood@zoho.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.