From 2fd2149b599c26403f6ef2acea3e072aa759fb16 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 9 Aug 2020 17:23:15 +0100 Subject: +delete a sentence in auto fill Basically adds the functionality necessary to delete sentences in auto fill mode, where it may not be possible with simple vim motions and where Emacs functions kill the paragraph. --- Emacs/.config/emacs/config.org | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index fa419c4..1eed583 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -763,6 +763,40 @@ Auto fill mode is nice for most text modes, 80 char limit is great. #+BEGIN_SRC emacs-lisp (add-hook 'text-mode-hook #'auto-fill-mode) #+END_SRC +** Delete a sentence in auto fill +In long lines via truncate lines, deleting till the end of the +sentence was easy via vim motions. However, the same action is +difficult with auto-fill-mode where sentences are separated through +(potentially several) newlines which makes vim motions +difficult. Thus, I propose some form of functionality which allows you +to: + +- Find the next closest period denoting the end of the sentence +- Delete the region between the point of invocation and the found period + +This essentially does the same task as vim motion based deletion, but +can handle the newlines. To not trample on the toes of any package, +I'll set it to "M-d" (kill-word), the most inoffensive binding +possible which is still mnemonic. + +First, the function. I'll use search-forward (from zap* lib) to find +the period. Then auto-fill to make it look nice. +#+BEGIN_SRC emacs-lisp +(defun +text/delete-till-sentence () + "Delete all text from current point to the next closest period." + (interactive) + (set-mark-command nil) + (search-forward ". ") + (kill-region (region-beginning) (region-end)) + (fill-paragraph)) +#+END_SRC + +Now, the binding +#+BEGIN_SRC emacs-lisp +(general-def + :states '(normal insert) + (kbd "M-d") #'+text/delete-till-sentence) +#+END_SRC * Org ** Org default with evil Setup for org mode, currently basically nothing. Has evil-org for -- cgit v1.2.3-13-gbd6f