unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* delete all whitespace (space) in a region
@ 2023-11-08 17:53 Uwe Brauer
  2023-11-08 19:15 ` Manuel Giraud via Users list for the GNU Emacs text editor
  0 siblings, 1 reply; 10+ messages in thread
From: Uwe Brauer @ 2023-11-08 17:53 UTC (permalink / raw)
  To: help-gnu-emacs


Hi

I have constructs like
$\left[ \left( \partial_{t}\Phi  \right)^{2} -                 \left\vert \nabla\Phi \right\vert^{2}   \right]^{\frac{1+K}{2K}}$:

That contain to much ........

So I am looking for a region-wise command deleting all this .. With the result
$\left[\left(\partial_{t}\Phi\right)^{2}-\left\vert \nabla\Phi\right\vert^{2}\right]^{\frac{1+K}{2K}}$:

(defun my-delete-all-whitespace-region (beg end)
  (interactive "r")
  (query-replace " " "" nil beg end nil nil))

Seems to be a very simple solution, but maybe too simple?

Any comments?

Uwe Brauer 

--
I strongly condemn Hamas heinous atrocities on Israel, especially the despicable pogroms.
I strongly condemn Putin's war of aggression against Ukraine.
I support to deliver weapons to Ukraine's military.
I support the NATO membership of Ukraine.
I support the EU membership of Ukraine.
https://addons.thunderbird.net/en-US/thunderbird/addon/gmail-conversation-view/




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

* Re: delete all whitespace (space) in a region
  2023-11-08 17:53 delete all whitespace (space) in a region Uwe Brauer
@ 2023-11-08 19:15 ` Manuel Giraud via Users list for the GNU Emacs text editor
  2023-11-09  2:24   ` tpeplt
  0 siblings, 1 reply; 10+ messages in thread
From: Manuel Giraud via Users list for the GNU Emacs text editor @ 2023-11-08 19:15 UTC (permalink / raw)
  To: help-gnu-emacs

Uwe Brauer <oub@mat.ucm.es> writes:

> Hi
>
> I have constructs like
> $\left[ \left( \partial_{t}\Phi  \right)^{2} -                 \left\vert \nabla\Phi \right\vert^{2}   \right]^{\frac{1+K}{2K}}$:
>
> That contain to much ........
>
> So I am looking for a region-wise command deleting all this .. With the result
> $\left[\left(\partial_{t}\Phi\right)^{2}-\left\vert \nabla\Phi\right\vert^{2}\right]^{\frac{1+K}{2K}}$:
>
> (defun my-delete-all-whitespace-region (beg end)
>   (interactive "r")
>   (query-replace " " "" nil beg end nil nil))
>
> Seems to be a very simple solution, but maybe too simple?

If you don't want to confirm for the replacements, you could instead do
this:

--8<---------------cut here---------------start------------->8---
(defun my-delete-all-whitespace-region (beg end)
  (interactive "r")
  (save-excursion
    (goto-char beg)
    (while (re-search-forward " " end t)
      (replace-match ""))))
--8<---------------cut here---------------end--------------->8---
-- 
Manuel Giraud



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

* Re: delete all whitespace (space) in a region
  2023-11-08 19:15 ` Manuel Giraud via Users list for the GNU Emacs text editor
@ 2023-11-09  2:24   ` tpeplt
  2023-11-09  2:43     ` Emanuel Berg
                       ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: tpeplt @ 2023-11-09  2:24 UTC (permalink / raw)
  To: Manuel Giraud via Users list for the GNU Emacs text editor
  Cc: Manuel Giraud, Uwe Brauer

Manuel Giraud via Users list for the GNU Emacs text editor
<help-gnu-emacs@gnu.org> writes:
>
> If you don't want to confirm for the replacements, you could instead do
> this:
>
> (defun my-delete-all-whitespace-region (beg end)
>   (interactive "r")
>   (save-excursion
>     (goto-char beg)
>     (while (re-search-forward " " end t)
>       (replace-match ""))))

Emacs 28 added the function ‘replace-string-in-region’.

(defun my-delete-all-whitespace-region (beg end)
  (interactive "r")
  (save-excursion
    (replace-string-in-region " " "" beg end)))

--



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

* Re: delete all whitespace (space) in a region
  2023-11-09  2:24   ` tpeplt
@ 2023-11-09  2:43     ` Emanuel Berg
  2023-11-13 16:02       ` Uwe Brauer
  2023-11-09  5:34     ` tomas
  2023-11-09  8:44     ` Uwe Brauer
  2 siblings, 1 reply; 10+ messages in thread
From: Emanuel Berg @ 2023-11-09  2:43 UTC (permalink / raw)
  To: help-gnu-emacs

tpeplt wrote:

> Emacs 28 added the function ‘replace-string-in-region’.
>
> (defun my-delete-all-whitespace-region (beg end)
>   (interactive "r")
>   (save-excursion
>     (replace-string-in-region " " "" beg end)))

(defun delete-all-whitespace (&optional beg end)
  (interactive
    (when (use-region-p)
      (list (region-beginning) (region-end)) ))
  (or beg (setq beg (point-min)))
  (or end (setq end (point-max)))
  (save-mark-and-excursion
    (replace-string-in-region " " "" beg end) ))

A pretty fancy interface to a one-liner function with
hardcoded data :)

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




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

* Re: delete all whitespace (space) in a region
  2023-11-09  2:24   ` tpeplt
  2023-11-09  2:43     ` Emanuel Berg
@ 2023-11-09  5:34     ` tomas
  2023-11-14  8:41       ` Andreas Röhler
  2023-11-09  8:44     ` Uwe Brauer
  2 siblings, 1 reply; 10+ messages in thread
From: tomas @ 2023-11-09  5:34 UTC (permalink / raw)
  To: help-gnu-emacs

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

On Wed, Nov 08, 2023 at 09:24:53PM -0500, tpeplt wrote:
> Manuel Giraud via Users list for the GNU Emacs text editor
> <help-gnu-emacs@gnu.org> writes:
> >
> > If you don't want to confirm for the replacements, you could instead do
> > this:
> >
> > (defun my-delete-all-whitespace-region (beg end)
> >   (interactive "r")
> >   (save-excursion
> >     (goto-char beg)
> >     (while (re-search-forward " " end t)
> >       (replace-match ""))))

A small optimisation would be to use the regexp " +", meaning one
or more spaces.

> 
> Emacs 28 added the function ‘replace-string-in-region’.
> 
> (defun my-delete-all-whitespace-region (beg end)
>   (interactive "r")
>   (save-excursion
>     (replace-string-in-region " " "" beg end)))

To have this here, you'd have to "replace-regexp-in-region", of
course.

Cheers
-- 
t

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* Re: delete all whitespace (space) in a region
  2023-11-09  2:24   ` tpeplt
  2023-11-09  2:43     ` Emanuel Berg
  2023-11-09  5:34     ` tomas
@ 2023-11-09  8:44     ` Uwe Brauer
  2023-11-09 15:58       ` tpeplt
  2 siblings, 1 reply; 10+ messages in thread
From: Uwe Brauer @ 2023-11-09  8:44 UTC (permalink / raw)
  To: help-gnu-emacs

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

>>> "t" == tpeplt  <tpeplt@gmail.com> writes:

> Manuel Giraud via Users list for the GNU Emacs text editor
> <help-gnu-emacs@gnu.org> writes:
>> 
>> If you don't want to confirm for the replacements, you could instead do
>> this:
>> 
>> (defun my-delete-all-whitespace-region (beg end)
>> (interactive "r")
>> (save-excursion
>> (goto-char beg)
>> (while (re-search-forward " " end t)
>> (replace-match ""))))

> Emacs 28 added the function ‘replace-string-in-region’.

> (defun my-delete-all-whitespace-region (beg end)
>   (interactive "r")
>   (save-excursion
>     (replace-string-in-region " " "" beg end)))

Ah, thanks, I did not know that

-- 
I strongly condemn Hamas heinous atrocities on Israel, especially the despicable pogroms.
I strongly condemn Putin's war of aggression against Ukraine.
I support to deliver weapons to Ukraine's military. 
I support the NATO membership of Ukraine.
I support the EU membership of Ukraine. 
https://addons.thunderbird.net/en-US/thunderbird/addon/gmail-conversation-view/

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

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

* Re: delete all whitespace (space) in a region
  2023-11-09  8:44     ` Uwe Brauer
@ 2023-11-09 15:58       ` tpeplt
  0 siblings, 0 replies; 10+ messages in thread
From: tpeplt @ 2023-11-09 15:58 UTC (permalink / raw)
  To: help-gnu-emacs

Uwe Brauer <oub@mat.ucm.es> writes:

>
>> Emacs 28 added the function ‘replace-string-in-region’.
>
>> (defun my-delete-all-whitespace-region (beg end)
>>   (interactive "r")
>>   (save-excursion
>>     (replace-string-in-region " " "" beg end)))
>
> Ah, thanks, I did not know that

If you want to see more of what has been added, see the NEWS file by
typing C-h n.  Unfortunately, this file (for Emacs 28) is large (4000
lines) and the new function above is not mentioned until line 3540.

A new feature that was added Emacs 28 is the ‘shortdoc-display-group’.
Type:
   M-x shortdoc-display-group <TAB>
to see a list of the groups for which shortdoc help is available.  These
are only a subset of the functions that are available in Emacs.

Type:
   M-x shortdoc-display-group <RET>

and then type "buffer" (no quotes) in response to the prompt:

   Show summary for functions in: buffer

This will then list brief help/descriptions for many buffer-related
functions in a ‘shortdoc’ buffer, including ‘replace-string-in-region’.

--



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

* Re: delete all whitespace (space) in a region
  2023-11-09  2:43     ` Emanuel Berg
@ 2023-11-13 16:02       ` Uwe Brauer
  0 siblings, 0 replies; 10+ messages in thread
From: Uwe Brauer @ 2023-11-13 16:02 UTC (permalink / raw)
  To: help-gnu-emacs

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

>>> "EB" == Emanuel Berg <incal@dataswamp.org> writes:

> tpeplt wrote:
>> Emacs 28 added the function ‘replace-string-in-region’.
>> 
>> (defun my-delete-all-whitespace-region (beg end)
>> (interactive "r")
>> (save-excursion
>> (replace-string-in-region " " "" beg end)))

> (defun delete-all-whitespace (&optional beg end)
>   (interactive
>     (when (use-region-p)
>       (list (region-beginning) (region-end)) ))
>   (or beg (setq beg (point-min)))
>   (or end (setq end (point-max)))
>   (save-mark-and-excursion
>     (replace-string-in-region " " "" beg end) ))

> A pretty fancy interface to a one-liner function with
> hardcoded data :)

Right, but well I would only use this function region wide never on the
whole buffer. That is why I prefer *(interactive "r")*

-- 
I strongly condemn Hamas heinous atrocities on Israel, especially the despicable pogroms.
I strongly condemn Putin's war of aggression against Ukraine.
I support to deliver weapons to Ukraine's military. 
I support the EU and NATO membership of Ukraine. 
https://addons.thunderbird.net/en-US/thunderbird/addon/gmail-conversation-view/

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

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

* Re: delete all whitespace (space) in a region
  2023-11-09  5:34     ` tomas
@ 2023-11-14  8:41       ` Andreas Röhler
  2023-11-14  9:33         ` Michael Heerdegen
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Röhler @ 2023-11-14  8:41 UTC (permalink / raw)
  To: help-gnu-emacs


Am 09.11.23 um 06:34 schrieb tomas@tuxteam.de:
> On Wed, Nov 08, 2023 at 09:24:53PM -0500, tpeplt wrote:
>> Manuel Giraud via Users list for the GNU Emacs text editor
>> <help-gnu-emacs@gnu.org>  writes:
>>> If you don't want to confirm for the replacements, you could instead do
>>> this:
>>>
>>> (defun my-delete-all-whitespace-region (beg end)
>>>    (interactive "r")
>>>    (save-excursion
>>>      (goto-char beg)
>>>      (while (re-search-forward " " end t)
>>>        (replace-match ""))))
> A small optimisation would be to use the regexp " +", meaning one
> or more spaces.
>
>> Emacs 28 added the function ‘replace-string-in-region’.
>>
>> (defun my-delete-all-whitespace-region (beg end)
>>    (interactive "r")
>>    (save-excursion
>>      (replace-string-in-region " " "" beg end)))
> To have this here, you'd have to "replace-regexp-in-region", of
> course.
>
> Cheers

BTW the code using replace-string-in-region and the form above are not 
equivalent.

The latter updates the end, whereas the previous keeps the old limit, 
which may do unexpected deletions.

Cheers,

Andreas



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

* Re: delete all whitespace (space) in a region
  2023-11-14  8:41       ` Andreas Röhler
@ 2023-11-14  9:33         ` Michael Heerdegen
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Heerdegen @ 2023-11-14  9:33 UTC (permalink / raw)
  To: help-gnu-emacs

Andreas Röhler <andreas.roehler@easy-emacs.de> writes:

> The latter updates the end, whereas the previous keeps the old limit,
> which may do unexpected deletions.

Indeed.  In such cases using markers is useful:

  (unless (markerp end)
    (setq end (copy-marker end)))

If you want to be kind to the gc, invalidate the marker at the end of
the function:

  (move-marker end nil)


Michael.




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

end of thread, other threads:[~2023-11-14  9:33 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-08 17:53 delete all whitespace (space) in a region Uwe Brauer
2023-11-08 19:15 ` Manuel Giraud via Users list for the GNU Emacs text editor
2023-11-09  2:24   ` tpeplt
2023-11-09  2:43     ` Emanuel Berg
2023-11-13 16:02       ` Uwe Brauer
2023-11-09  5:34     ` tomas
2023-11-14  8:41       ` Andreas Röhler
2023-11-14  9:33         ` Michael Heerdegen
2023-11-09  8:44     ` Uwe Brauer
2023-11-09 15:58       ` tpeplt

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).