From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg via Users list for the GNU Emacs text editor Newsgroups: gmane.emacs.help Subject: Re: help with what should have been a very simple defun Date: Sat, 22 Jan 2022 14:39:47 +0100 Message-ID: <878rv7q47w.fsf@zoho.eu> References: Reply-To: Emanuel Berg Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38714"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:1vxrWZfYTFWKC81lJXPP6epnhTg= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jan 22 14:47:42 2022 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nBGk1-0009rs-Id for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 22 Jan 2022 14:47:41 +0100 Original-Received: from localhost ([::1]:46360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nBGk0-00036r-3i for geh-help-gnu-emacs@m.gmane-mx.org; Sat, 22 Jan 2022 08:47:40 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:43680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nBGcc-00068v-LM for help-gnu-emacs@gnu.org; Sat, 22 Jan 2022 08:40:02 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]:42302) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nBGca-0005Fr-Al for help-gnu-emacs@gnu.org; Sat, 22 Jan 2022 08:40:01 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1nBGcR-000AHf-BR for help-gnu-emacs@gnu.org; Sat, 22 Jan 2022 14:39:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:135503 Archived-At: Pieter van Oostrum wrote: >> (defun number-pgraphs (start end) ;; alias M-npg >> "insert paragraph-numbers of chapters at paragraphs' Well ... there is an obvious problem with this that you should be aware of, and it is that it changes the material it analyzes ... That makes for difficult implementation. But worse, often the idea itself isn't good, either - better keep them apart ... What about a "flash mode", when you fire it off it shows the digits for x seconds and then the data shows as it was before. Because it never changed, and only what was displayed to the user did! It's the "MVC". Or as I like to think about it, just keep everything apart that don't belong naturally, like vodka and cranberry, perhaps. > (defun number-pgraphs (start end) ;; alias M-npg > "insert paragraph-numbers of chapters at paragraphs' start in region. > Blank lines have been guaranteed to consist of only a single C-j" > (interactive "r") > (let ((par-number 1)) > (save-excursion > (goto-char start) > (while (< (point) end) > (while (and (bolp) (eolp)) (forward-line)) > ;; skip blank line(s) with only linefeed chars > (if (= (following-char) ?*) > ;; * character, start of new chapter - reset paragraph number > (setq par-number 1) > ;; Check if there is already a paragraph number, remove it first > (if (looking-at "[0-9]+\. ") > (replace-match "")) > (insert (concat (number-to-string par-number) "." " ")) > (setq par-number (1+ par-number))) > (forward-line)))) > ) ;; defun You can clean that up a lot ... Byte-compile and do (checkdoc-current-buffer t) ... -- underground experts united https://dataswamp.org/~incal