{"id":16935727,"url":"https://github.com/knu/easy-kill-extras.el","last_synced_at":"2026-01-04T15:07:35.691Z","repository":{"id":19155499,"uuid":"22386797","full_name":"knu/easy-kill-extras.el","owner":"knu","description":"Extra functions for easy-kill/easy-mark.","archived":false,"fork":false,"pushed_at":"2024-03-08T05:12:06.000Z","size":89,"stargazers_count":28,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-26T01:41:26.942Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2014-07-29T16:25:01.000Z","updated_at":"2024-04-28T16:13:14.000Z","dependencies_parsed_at":"2024-03-08T06:24:52.152Z","dependency_job_id":"b841f796-bfce-4dcc-a960-cf064a7c0d41","html_url":"https://github.com/knu/easy-kill-extras.el","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Feasy-kill-extras.el","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Feasy-kill-extras.el/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Feasy-kill-extras.el/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knu%2Feasy-kill-extras.el/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knu","download_url":"https://codeload.github.com/knu/easy-kill-extras.el/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244739958,"owners_count":20501992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T20:55:12.544Z","updated_at":"2026-01-04T15:07:35.685Z","avatar_url":"https://github.com/knu.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easy-kill-extras.el\n\nThis package contains extra functions for\n[easy-kill/easy-mark](https://github.com/leoliu/easy-kill).\n\n## Functions\n\nHere is a list of the interactive commands provided by easy-kill-extras:\n\n* easy-mark-word\n* easy-mark-sexp\n* easy-mark-to-char\n* easy-mark-up-to-char\n\n  These are shorthand commands for easy-marking an aimed string at\n  point.\n\n* easy-dup (alias: easy-dup-after)\n* easy-dup-before\n\n  These duplicate the current selection.  When not in\n  easy-kill/easy-mark, use the active region if available, or enter\n  easy-mark to select something to duplicate.  `rectangle-mark-mode`\n  is also supported.\n\n  Example:\n\n  ``` elisp\n  (global-set-key (kbd \"C-x y\") 'easy-dup)\n  ```\n\n* easy-kill-er-expand\n* easy-kill-er-unexpand\n\n  These work like `er/expand-region` and `er/contract-region`,\n  respectively, integrating the functionality of the `expand-region`\n  package into `easy-kill`.\n\n  The easy-kill-extras package does not list the\n  [expand-region](https://github.com/magnars/expand-region.el) package\n  as its dependency because it is optional, so you need to install it\n  separately if you want to use these commands.\n\n## Kill Targets\n\nIt also provides the following easy-kill/easy-mark targets:\n\n* buffer\n\n  This selects the whole buffer.\n\n* buffer-before-point\n* buffer-after-point\n\n  These work like vi's gg/G commands, respectively.\n\n* backward-line-edge\n* forward-line-edge\n\n  The former is like vi's `^`/`0` commands, and the latter is just\n  like that in the opposite direction.\n\n* string-to-char-forward\n* string-to-char-backward\n* string-up-to-char-forward\n* string-up-to-char-backward\n\n  These work like vi's `f`/`F`/`t`/`T` commands, respectively.\n\n## Extra \"Things\"\n\nThis package includes `extra-things.el` which defines various extra \"things\" that can be used with easy-kill/easy-mark.\n\n``` elisp\n(require 'extra-things)\n\n;; example settings\n(add-to-list 'easy-kill-alist '(?W  WORD \" \") t)\n(add-to-list 'easy-kill-alist '(?\\' squoted-string \"\") t)\n(add-to-list 'easy-kill-alist '(?\\\" dquoted-string \"\") t)\n(add-to-list 'easy-kill-alist '(?\\` bquoted-string \"\") t)\n(add-to-list 'easy-kill-alist '(?q  quoted-string \"\") t)\n(add-to-list 'easy-kill-alist '(?Q  quoted-string-universal \"\") t)\n(add-to-list 'easy-kill-alist '(?\\) parentheses-pair-content \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?\\( parentheses-pair \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?\\] brackets-pair-content \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?\\[ brackets-pair \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?}  curlies-pair-content \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?{  curlies-pair \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?\u003e  angles-pair-content \"\\n\") t)\n(add-to-list 'easy-kill-alist '(?\u003c  angles-pair \"\\n\") t)\n```\n\n* `WORD`: a sequence of non-whitespace characters\n\n  This is much like Vim's WORD object.\n\n* `squoted-string`: a sindle-quoted string ('...')\n* `dquoted-string`: a double-quoted string (\"...\")\n* `bquoted-string`: a back-quoted string (`...`)\n* `quoted-string`: any of the above quoted strings\n\n  The backslash character serves as escape character.  For performance\n  reasons, it is assumed that the beginning of the current line is not\n  inside of a quoted string.  In other words, multi-line quoted\n  strings are not fully supported.\n\n  These things are aware of the current syntax table, and the\n  quotation marks that are a word constituent or an expression prefix\n  in the current mode are ignored.  For example, `squoted-string`\n  would only work in some specific programming language modes where\n  the single quotation mark is a quotation character.\n\n* `squoted-string-universal`\n* `dquoted-string-universal`\n* `bquoted-string-universal`\n* `quoted-string-universal`\n\n  These versions recognize all quotation pairs ignoring the current\n  syntax table and support nesting of different quotations.\n\n* `parentheses-pair`: the block between a parentheses pair including the opening and closing parentheses\n* `brackets-pair`: the block between a brackets pair including the opening and closing brackets\n* `curlies-pair`: the block between a curlies pair including the opening and closing curlies\n* `angles-pair`: the block between an angles pair including the opening and closing angles\n* `parentheses-pair-content`: the content inside of a parentheses pair without whitespace at both ends\n* `brackets-pair-content`: the content inside of a brackets pair without whitespace at both ends\n* `curlies-pair-content`: the content inside of a curlies pair without whitespace at both ends\n* `angles-pair-content`: the content inside of an angles pair without whitespace at both ends\n\n  Quotation marks or different types of pair characters are not\n  taken into account.  Each type of things only cares about the\n  nest level of their pair characters.\n\n  Repeatedly moving forward or backward means to move to outer pairs.\n\n## Support for packages\n\nExperimental ace-jump integration into easy-kill is enabled by\ndefault.  `ace-jump-*-mode` can be invoked for selection when in\neasy-kill/easy-mark mode.  You can disable this feature via a\ncustomize variable `easy-kill-ace-jump-enable-p`.\n\nExperimental multiple-cursors-mode support for easy-kill is enabled by\ndefault.  `easy-kill` and `easy-mark` will mostly work in\n`multiple-cursors-mode`.\n\n## Configuration\n\nSuggested settings are as follows:\n\n``` elisp\n;; Upgrade `mark-word' and `mark-sexp' with easy-mark\n;; equivalents.\n(global-set-key (kbd \"M-@\") 'easy-mark-word)\n(global-set-key (kbd \"C-M-@\") 'easy-mark-sexp)\n\n;; `easy-mark-to-char' or `easy-mark-up-to-char' could be a good\n;; replacement for `zap-to-char'.\n(global-set-key [remap zap-to-char] 'easy-mark-to-char)\n\n;; Integrate `expand-region' functionality with easy-kill\n(define-key easy-kill-base-map (kbd \"o\") 'easy-kill-er-expand)\n(define-key easy-kill-base-map (kbd \"i\") 'easy-kill-er-unexpand)\n\n;; Add the following tuples to `easy-kill-alist', preferrably by\n;; using `customize-variable'.\n(add-to-list 'easy-kill-alist '(?^ backward-line-edge \"\"))\n(add-to-list 'easy-kill-alist '(?$ forward-line-edge \"\"))\n(add-to-list 'easy-kill-alist '(?b buffer \"\"))\n(add-to-list 'easy-kill-alist '(?\u003c buffer-before-point \"\"))\n(add-to-list 'easy-kill-alist '(?\u003e buffer-after-point \"\"))\n(add-to-list 'easy-kill-alist '(?f string-to-char-forward \"\"))\n(add-to-list 'easy-kill-alist '(?F string-up-to-char-forward \"\"))\n(add-to-list 'easy-kill-alist '(?t string-to-char-backward \"\"))\n(add-to-list 'easy-kill-alist '(?T string-up-to-char-backward \"\"))\n```\n\n## Installation\n\nThis package is available on [MELPA](http://melpa.org/).\n\n## Author\n\nCopyright (c) 2014-2026 Akinori MUSHA.\n\nLicensed under the 2-clause BSD license.  See `LICENSE.txt` for\ndetails.\n\nVisit [GitHub Repository](https://github.com/knu/easy-kill-extras.el) for the\nlatest information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknu%2Feasy-kill-extras.el","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknu%2Feasy-kill-extras.el","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknu%2Feasy-kill-extras.el/lists"}