Skip to content

Commit 3f5aff7

Browse files
committed
Add new targets: buffer, buffer-before-point and buffer-after point.
1 parent e2b667f commit 3f5aff7

3 files changed

Lines changed: 63 additions & 1 deletion

File tree

README.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ active region, url, email and finally current line (See
3232
#. ``M-w D``: save current defun name
3333
#. ``M-w f``: save file at point
3434
#. ``M-w b``: save ``buffer-file-name`` or ``default-directory``.
35+
#. ``M-w a``: save the whole buffer content
36+
#. ``M-w <``: save the buffer content before point
37+
#. ``M-w >``: save the buffer content after point
3538
``-`` changes the kill to the directory name, ``+`` to full name
3639
and ``0`` to basename.
3740

easy-kill.el

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@
7979
(?d defun "\n\n")
8080
(?D defun-name " ")
8181
(?e line "\n")
82-
(?b buffer-file-name))
82+
(?b buffer-file-name)
83+
(?a buffer)
84+
(?< buffer-before-point)
85+
(?> buffer-after-point))
8386
"A list of (CHAR THING APPEND).
8487
CHAR is used immediately following `easy-kill' to select THING.
8588
APPEND is optional and if non-nil specifies the separator (a
@@ -744,6 +747,31 @@ inspected."
744747
(setf (easy-kill-get thing) 'sexp)))
745748
(_ (easy-kill-thing 'sexp n t))))
746749

750+
(defun easy-kill-on-buffer (n)
751+
(easy-kill-adjust-candidate 'buffer (point-min) (point-max)))
752+
753+
(defun easy-kill-on-buffer-after-point (n)
754+
(easy-kill-adjust-candidate 'buffer-after-point
755+
(pcase n
756+
(`+
757+
(point-at-bol))
758+
(`-
759+
(point-at-bol 2))
760+
(_
761+
(point)))
762+
(point-max)))
763+
764+
(defun easy-kill-on-buffer-before-point (n)
765+
(easy-kill-adjust-candidate 'buffer-before-point
766+
(point-min)
767+
(pcase n
768+
(`+
769+
(point-at-bol 2))
770+
(`-
771+
(point-at-bol))
772+
(_
773+
(point)))))
774+
747775
;;; nxml support for list-wise +/-
748776

749777
(defvar nxml-sexp-element-flag)

test.el

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,37 @@
214214
(easy-kill-thing 'list)
215215
(should (string= "dummy" (easy-kill-candidate))))))
216216

217+
(ert-deftest test-easy-kill-on-buffer ()
218+
(with-temp-buffer
219+
(insert "line 1\n")
220+
(insert "line 2\n")
221+
(insert "line 3\n")
222+
(forward-line -2)
223+
(forward-word)
224+
(easy-kill-on-buffer 1)
225+
(easy-kill-save-candidate)
226+
(should (string= (car kill-ring) "line 1\nline 2\nline 3\n"))
227+
228+
(easy-kill-on-buffer-before-point 1)
229+
(easy-kill-save-candidate)
230+
(should (string= (car kill-ring) "line 1\nline"))
231+
(easy-kill-on-buffer-before-point '-)
232+
(easy-kill-save-candidate)
233+
(should (string= (car kill-ring) "line 1\n"))
234+
(easy-kill-on-buffer-before-point '+)
235+
(easy-kill-save-candidate)
236+
(should (string= (car kill-ring) "line 1\nline 2\n"))
237+
238+
(easy-kill-on-buffer-after-point 1)
239+
(easy-kill-save-candidate)
240+
(should (string= (car kill-ring) " 2\nline 3\n"))
241+
(easy-kill-on-buffer-after-point '-)
242+
(easy-kill-save-candidate)
243+
(should (string= (car kill-ring) "line 3\n"))
244+
(easy-kill-on-buffer-after-point '+)
245+
(easy-kill-save-candidate)
246+
(should (string= (car kill-ring) "line 2\nline 3\n"))))
247+
217248
(ert-deftest test-js2-mode ()
218249
:expected-result :failed
219250
(let ((js "function View(name, options) {

0 commit comments

Comments
 (0)