unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#71499: [PATCH] Make whitespace.el cleanup add missing final newline
@ 2024-06-11 18:16 Björn Lindström
  2024-06-12  5:21 ` Björn Lindström
  2024-06-12  7:46 ` Eli Zaretskii
  0 siblings, 2 replies; 18+ messages in thread
From: Björn Lindström @ 2024-06-11 18:16 UTC (permalink / raw)
  To: 71499

[-- Attachment #1: Type: text/plain, Size: 411 bytes --]

Hello,

attaching patch to make the whitespace-cleanup and whitespace-cleanup-region functions add a final newline to a file if whitespace-style contains `missing-newline-at-eof

I'm aware this somewhat replicates what setting `require-final-newline would do, but I think since whitespace.el with this configuration highlights this as an error, it should also clean it up when asked.

Best wishes,
Björn

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Make-whitespace.el-cleanup-add-missing-final-newline.patch --]
[-- Type: text/x-patch; name="0001-Make-whitespace.el-cleanup-add-missing-final-newline.patch", Size: 1749 bytes --]

From 73e20b34c1669a9d52cbc70f4c02cc26fa23cf5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Lindstr=C3=B6m?= <bkhl@elektrubadur.se>
Date: Tue, 11 Jun 2024 19:49:55 +0200
Subject: [PATCH] Make whitespace.el cleanup add missing final newline

* lisp/whitespace.el (whitespace-cleanup-region): if cleaning up at end
of file, add missing newline if indicated by whitespace-style.
---
 lisp/whitespace.el | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index bc23a8794eb..a41a7520915 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1465,6 +1465,11 @@ defun whitespace-cleanup-region
    If `whitespace-style' includes the value
    `space-after-tab::space', replace TABs by SPACEs.
 
+5. missing newline at end of file.
+   If `whitespace-style' includes the value `missing-newline-at-eof',
+   and the cleanup region includes the end of file, add a final newline
+   if it is not there already.
+
 See `whitespace-style', `indent-tabs-mode' and `tab-width' for
 documentation."
   (interactive "@r")
@@ -1545,7 +1550,13 @@ defun whitespace-cleanup-region
          ((memq 'space-before-tab::space whitespace-style)
           (whitespace-replace-action
            'untabify rstart rend
-           whitespace-space-before-tab-regexp 2))))
+           whitespace-space-before-tab-regexp 2)))
+        ;; PROBLEM 5: missing newline at end of file
+        (when (and (memq 'missing-newline-at-eof)
+                   (= (point-max) (without-restriction (point-max))))
+          (goto-char (point-max))
+          (when (re-search-backward ".\\'" nil t)
+            (insert "\n")))
       (set-marker rend nil))))		; point marker to nowhere
 
 
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2024-06-29 13:05 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-11 18:16 bug#71499: [PATCH] Make whitespace.el cleanup add missing final newline Björn Lindström
2024-06-12  5:21 ` Björn Lindström
2024-06-12  7:46 ` Eli Zaretskii
2024-06-12  9:04   ` Björn Lindström
2024-06-12  9:41     ` Eli Zaretskii
2024-06-12 12:38       ` Stefan Kangas
2024-06-13  7:38         ` Andrea Corallo
2024-06-13  8:30           ` Eli Zaretskii
2024-06-14 12:23             ` Robert Pluim
2024-06-14 12:50               ` Eli Zaretskii
2024-06-20  7:55                 ` Stefan Kangas
2024-06-20  8:22                   ` Robert Pluim
2024-06-20  8:55                     ` Stefan Kangas
2024-06-20  9:45                       ` Robert Pluim
2024-06-20 11:23                         ` Stefan Kangas
2024-06-27  7:37             ` Eli Zaretskii
2024-06-29 11:59               ` Björn Lindström
2024-06-29 13:05                 ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).