knu / easy-kill-extras.el

Extra functions for easy-kill/easy-mark.
BSD 2-Clause "Simplified" License
28 stars 5 forks source link

easy-kill-extras.el

This package contains extra functions for easy-kill/easy-mark.

Functions

Here is a list of the interactive commands provided by easy-kill-extras:

Kill Targets

It also provides the following easy-kill/easy-mark targets:

Extra "Things"

This package includes extra-things.el which defines various extra "things" that can be used with easy-kill/easy-mark.

(require 'extra-things)

;; example settings
(add-to-list 'easy-kill-alist '(?W  WORD " ") t)
(add-to-list 'easy-kill-alist '(?\' squoted-string "") t)
(add-to-list 'easy-kill-alist '(?\" dquoted-string "") t)
(add-to-list 'easy-kill-alist '(?\` bquoted-string "") t)
(add-to-list 'easy-kill-alist '(?q  quoted-string "") t)
(add-to-list 'easy-kill-alist '(?Q  quoted-string-universal "") t)
(add-to-list 'easy-kill-alist '(?\) parentheses-pair-content "\n") t)
(add-to-list 'easy-kill-alist '(?\( parentheses-pair "\n") t)
(add-to-list 'easy-kill-alist '(?\] brackets-pair-content "\n") t)
(add-to-list 'easy-kill-alist '(?\[ brackets-pair "\n") t)
(add-to-list 'easy-kill-alist '(?}  curlies-pair-content "\n") t)
(add-to-list 'easy-kill-alist '(?{  curlies-pair "\n") t)
(add-to-list 'easy-kill-alist '(?>  angles-pair-content "\n") t)
(add-to-list 'easy-kill-alist '(?<  angles-pair "\n") t)

Support for packages

Experimental ace-jump integration into easy-kill is enabled by default. ace-jump-*-mode can be invoked for selection when in easy-kill/easy-mark mode. You can disable this feature via a customize variable easy-kill-ace-jump-enable-p.

Experimental multiple-cursors-mode support for easy-kill is enabled by default. easy-kill and easy-mark will mostly work in multiple-cursors-mode.

Configuration

Suggested settings are as follows:

;; Upgrade `mark-word' and `mark-sexp' with easy-mark
;; equivalents.
(global-set-key (kbd "M-@") 'easy-mark-word)
(global-set-key (kbd "C-M-@") 'easy-mark-sexp)

;; `easy-mark-to-char' or `easy-mark-up-to-char' could be a good
;; replacement for `zap-to-char'.
(global-set-key [remap zap-to-char] 'easy-mark-to-char)

;; Integrate `expand-region' functionality with easy-kill
(define-key easy-kill-base-map (kbd "o") 'easy-kill-er-expand)
(define-key easy-kill-base-map (kbd "i") 'easy-kill-er-unexpand)

;; Add the following tuples to `easy-kill-alist', preferrably by
;; using `customize-variable'.
(add-to-list 'easy-kill-alist '(?^ backward-line-edge ""))
(add-to-list 'easy-kill-alist '(?$ forward-line-edge ""))
(add-to-list 'easy-kill-alist '(?b buffer ""))
(add-to-list 'easy-kill-alist '(?< buffer-before-point ""))
(add-to-list 'easy-kill-alist '(?> buffer-after-point ""))
(add-to-list 'easy-kill-alist '(?f string-to-char-forward ""))
(add-to-list 'easy-kill-alist '(?F string-up-to-char-forward ""))
(add-to-list 'easy-kill-alist '(?t string-to-char-backward ""))
(add-to-list 'easy-kill-alist '(?T string-up-to-char-backward ""))

Installation

This package is available on MELPA.

Configuration

Suggested key bindings are as follows:

(define-key mc/keymap (kbd "C-. M-C-f") 'mc/mark-next-sexps)
(define-key mc/keymap (kbd "C-. M-C-b") 'mc/mark-previous-sexps)
(define-key mc/keymap (kbd "C-. <") 'mc/mark-all-above)
(define-key mc/keymap (kbd "C-. >") 'mc/mark-all-below)

(define-key mc/keymap (kbd "C-. C-d") 'mc/remove-current-cursor)
(define-key mc/keymap (kbd "C-. C-k") 'mc/remove-cursors-at-eol)
(define-key mc/keymap (kbd "C-. d")   'mc/remove-duplicated-cursors)
(define-key mc/keymap (kbd "C-. C-o") 'mc/remove-cursors-on-blank-lines)

(define-key mc/keymap (kbd "C-. C-.") 'mc/freeze-fake-cursors-dwim)

(define-key mc/keymap (kbd "C-. .")   'mc/move-to-column)
(define-key mc/keymap (kbd "C-. =")   'mc/compare-chars)

;; Emacs 24.4+ comes with rectangle-mark-mode.
(define-key rectangle-mark-mode-map (kbd "C-. C-,") 'mc/rect-rectangle-to-multiple-cursors)

(define-key cua--rectangle-keymap   (kbd "C-. C-,") 'mc/cua-rectangle-to-multiple-cursors)

To enable interaction between multiple cursors and CUA rectangle copy & paste:

(mc/cua-rectangle-setup)

Author

Copyright (c) 2014-2024 Akinori MUSHA.

Licensed under the 2-clause BSD license. See LICENSE.txt for details.

Visit GitHub Repository for the latest information.