Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hrehfeld/emacs-smart-hungry-delete
An emacs package to delete whitespace between words, parenthesis and other delimiters in a (not very) smart way.
https://github.com/hrehfeld/emacs-smart-hungry-delete
convenience editing emacs
Last synced: about 2 months ago
JSON representation
An emacs package to delete whitespace between words, parenthesis and other delimiters in a (not very) smart way.
- Host: GitHub
- URL: https://github.com/hrehfeld/emacs-smart-hungry-delete
- Owner: hrehfeld
- Created: 2017-04-10T15:59:15.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-02-16T04:20:10.000Z (almost 2 years ago)
- Last Synced: 2023-04-16T07:38:23.843Z (almost 2 years ago)
- Topics: convenience, editing, emacs
- Language: Emacs Lisp
- Homepage:
- Size: 58.6 KB
- Stars: 36
- Watchers: 2
- Forks: 6
- Open Issues: 7
-
Metadata Files:
- Readme: README.org
Awesome Lists containing this project
README
* Smart-hungry-delete
:PROPERTIES:
:ID: 9e1c02ed-1a3e-4fac-9f74-02e5655a25cd
:END:Delete whitespace between words, parenthesis and other delimiters in a smart (dumb) way.
Suppose you have this text in the buffer:
[[./doc/demo-00-01.png]]
With =smart-hungry-delete/backward-char=, it will delete all but one (white-)space between =word= and =paren=:
[[./doc/demo-00-02.png]]
If you delete here:
[[./doc/demo-00-03.png]]
it deletes all whitespace, because it's on the inside of a paren:
[[./doc/demo-00-04.png]]
Inside of right paren:
[[./doc/demo-00-05.png]]
[[./doc/demo-00-06.png]]
This is configured for =C=-like languages (e.g. Python), where =:= usually has no space to the left:
[[./doc/demo-00-07.png]]
[[./doc/demo-00-08.png]]
It has space to the right though:
[[./doc/demo-00-09.png]]
[[./doc/demo-00-10.png]]
This also works for (nested) parentheses:
[[./doc/demo-00-11.png]]
[[./doc/demo-00-12.png]]
[[./doc/demo-00-13.png]]
Between words it will leave a space:
[[./doc/demo-00-14.png]]
[[./doc/demo-00-15.png]]
[[./doc/demo-00-16.png]]
Here's a small demonstration video:
* Installing
:PROPERTIES:
:ID: 61a5a273-bf5a-4c15-88cf-9884413d10f7
:END:
** MELPA
:PROPERTIES:
:ID: 2b9c9eb5-10bf-4f4e-9b58-0c98d03b957a
:END:
It's in [[https://melpa.org][MELPA]], so if you have that in your package lists, just =M-x= =package-install= =smart-hungry-delete=, and bind =smart-hungry-delete-backward-char= and =smart-hungry-delete-forward-char=:
#+begin_src elisp
(require 'smart-hungry-delete)
(smart-hungry-delete-add-default-hooks)
(global-set-key (kbd "") 'smart-hungry-delete-backward-char)
(global-set-key (kbd "") 'smart-hungry-delete-backward-char)
(global-set-key (kbd "C-d") 'smart-hungry-delete-forward-char)
#+end_src** use-package
:PROPERTIES:
:ID: 594bf129-2bb3-4bfe-8623-64f40c5bb845
:END:
If you use =use-package=:
#+begin_src elisp
(use-package smart-hungry-delete
:ensure t
:bind (([remap backward-delete-char-untabify] . smart-hungry-delete-backward-char)
([remap delete-backward-char] . smart-hungry-delete-backward-char)
([remap delete-char] . smart-hungry-delete-forward-char))
:init (smart-hungry-delete-add-default-hooks))
#+end_srcOnly for some modes:
#+begin_src elisp
(use-package smart-hungry-delete
:ensure t
:bind (:map python-mode-map
([remap backward-delete-char-untabify] . smart-hungry-delete-backward-char)
([remap delete-backward-char] . smart-hungry-delete-backward-char)
([remap delete-char] . smart-hungry-delete-forward-char))
:init (smart-hungry-delete-add-default-hooks))
#+end_src** el-get
:PROPERTIES:
:ID: d49068a3-6332-4db1-aed1-b096cdc9bfe1
:END:
Here's the basic el-get recipe:#+begin_src elisp
(:name smart-hungry-delete
:type github
:pkgname "hrehfeld/emacs-smart-hungry-delete")
#+end_src elisp* Configuration
:PROPERTIES:
:ID: 02237111-db5b-4d2b-a23a-0ac78c7d80b8
:END:smart-hungry-delete deletes hungrily if three regexps match:
#+begin_src
(point)
#+end_srcor with =smart-hungry-delete-forward-char=:
#+begin_src
(point)
#+end_srcYou can configure these on a per buffer basis:
=smart-hungry-delete-char-kill-regexp= is a buffer-local variable holding a regex that defines what will be hungrily deleted ().
=smart-hungry-delete-char-trigger-killall-regexps= is a list of pairs:
#+begin_src elisp
'(("\\[" . ".") ;; delete when is "[" and is any of "."
("." . "\\]") ;; delete when is any of "." and is "]"
...)
#+end_src=smart-hungry-delete-add-regexps-left-right= makes it easy to add left-right combinations of chars like parentheses:
#+begin_src elisp
(smart-hungry-delete-add-regexps-left-right "\\{" "\\}") ;;as above, but with "{" and "}"
#+end_src=smart-hungry-delete-add-default-hooks= will add some good defaults for (some) programming modes. Check out the =smart-hungry-delete-default-*-hook= functions.
If you have good suggestions for more defaults, make sure to [[https://github.com/hrehfeld/emacs-smart-hungry-delete/issues][suggest the recipes!]]