Commit 8fa94a1e authored by Łukasz Stelmach's avatar Łukasz Stelmach Committed by Eli Zaretskii

If the region is active, join all the lines it spans

* lisp/simple.el (delete-indentation): Join lines in the active region.
(Bug#34796)

* doc/misc/org.texi: Describe the arguments of delete-indentation.

* etc/NEWS: Mention region support in delete-indentation.
parent 09d746da
Pipeline #1052 passed with stage
in 55 minutes and 37 seconds
......@@ -110,6 +110,10 @@ parentheses, or if the junction follows another newline.
If there is a fill prefix, @kbd{M-^} deletes the fill prefix if it
appears after the newline that is deleted. @xref{Fill Prefix}.
With the universal prefix argument, join the current line line to the
following line. With the region active, join lines in the region. If
both the argument is set and the region is active, the region is ignored.
@item C-M-\
@kindex C-M-\
@findex indent-region
......
......@@ -370,6 +370,10 @@ region using a given replacement-function in a non-destructive manner
arguments mitigating performance issues when operating on huge
buffers.
** The command `delete-indentation` now can operate on the active
region
+++
* Changes in Specialized Modes and Packages in Emacs 27.1
......
......@@ -593,25 +593,33 @@ When called from Lisp code, ARG may be a prefix string to copy."
(indent-to col 0)
(goto-char pos)))
(defun delete-indentation (&optional arg)
(defun delete-indentation (&optional arg beg end)
"Join this line to previous and fix up whitespace at join.
If there is a fill prefix, delete it from the beginning of this line.
With argument, join this line to following line."
(interactive "*P")
If there is a fill prefix, delete it from the beginning of this
line. With prefix ARG, join the current line to the following line.
With the region active, join lines in the region. If both the
argument is set and the region is active, the region is ignored."
(interactive "*P\nr")
(if arg (forward-line 1)
(if (use-region-p)
(goto-char end)))
(beginning-of-line)
(if arg (forward-line 1))
(if (eq (preceding-char) ?\n)
(progn
(delete-region (point) (1- (point)))
;; If the second line started with the fill prefix,
;; delete the prefix.
(if (and fill-prefix
(<= (+ (point) (length fill-prefix)) (point-max))
(string= fill-prefix
(buffer-substring (point)
(+ (point) (length fill-prefix)))))
(delete-region (point) (+ (point) (length fill-prefix))))
(fixup-whitespace))))
(while (eq (preceding-char) ?\n)
(progn
(delete-region (point) (1- (point)))
;; If the second line started with the fill prefix,
;; delete the prefix.
(if (and fill-prefix
(<= (+ (point) (length fill-prefix)) (point-max))
(string= fill-prefix
(buffer-substring (point)
(+ (point) (length fill-prefix)))))
(delete-region (point) (+ (point) (length fill-prefix))))
(fixup-whitespace)
(if (and beg
(not arg)
(< beg (point-at-bol)))
(beginning-of-line)))))
(defalias 'join-line #'delete-indentation) ; easier to find
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment