mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Drop key-chord.el support from use-package
* lisp/use-package/bind-chord.el: * lisp/use-package/use-package-chords.el: * test/lisp/use-package/use-package-chords-tests.el: Delete files. * doc/misc/use-package.texi (use-package-chords): Delete section. Ref: https://lists.gnu.org/r/emacs-devel/2022-12/msg00052.html
This commit is contained in:
parent
5899cac111
commit
4be96c9dcb
4 changed files with 0 additions and 363 deletions
|
|
@ -1604,7 +1604,6 @@ be optionally enabled.
|
|||
|
||||
@menu
|
||||
* use-package-ensure-system-package::
|
||||
* use-package-chords::
|
||||
* Creating an extension::
|
||||
@end menu
|
||||
|
||||
|
|
@ -1710,32 +1709,6 @@ The user options @code{system-packages-package-manager} and
|
|||
commands. Custom commands should include the call to sudo in the
|
||||
command if needed.
|
||||
|
||||
@node use-package-chords
|
||||
@section @code{(use-package-chords)}
|
||||
|
||||
The @code{:chords} keyword allows you to define
|
||||
@uref{https://www.emacswiki.org/emacs/key-chord.el,@code{key-chord}}
|
||||
bindings for @code{use-package} declarations in the same manner as the
|
||||
@code{:bind} keyword.
|
||||
|
||||
To enable the extension:
|
||||
|
||||
@lisp
|
||||
(use-package use-package-chords
|
||||
:ensure t
|
||||
:config (key-chord-mode 1))
|
||||
@end lisp
|
||||
|
||||
Then you can define your chord bindings in the same manner as
|
||||
@code{:bind} using a cons or a list of conses:
|
||||
|
||||
@lisp
|
||||
(use-package ace-jump-mode
|
||||
:chords (("jj" . ace-jump-char-mode)
|
||||
("jk" . ace-jump-word-mode)
|
||||
("jl" . ace-jump-line-mode)))
|
||||
@end lisp
|
||||
|
||||
@node Creating an extension
|
||||
@section How to create an extension keyword
|
||||
|
||||
|
|
|
|||
|
|
@ -1,113 +0,0 @@
|
|||
;;; bind-chord.el --- key-chord binding helper for use-package-chords -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Justin Talbott <justin@waymondo.com>
|
||||
;; Keywords: convenience, tools, extensions
|
||||
;; URL: https://github.com/jwiegley/use-package
|
||||
;; Version: 0.2.1
|
||||
;; Package-Requires: ((emacs "24.3") (bind-key "1.0") (key-chord "0.6"))
|
||||
;; Filename: bind-chord.el
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'bind-key)
|
||||
(require 'key-chord nil t)
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-chord (chord command &optional keymap)
|
||||
"Bind CHORD to COMMAND in KEYMAP (`global-map' if not passed)."
|
||||
(let ((key1 (logand 255 (aref chord 0)))
|
||||
(key2 (logand 255 (aref chord 1))))
|
||||
(if (eq key1 key2)
|
||||
`(bind-key (vector 'key-chord ,key1 ,key2) ,command ,keymap)
|
||||
`(progn
|
||||
(bind-key (vector 'key-chord ,key1 ,key2) ,command ,keymap)
|
||||
(bind-key (vector 'key-chord ,key2 ,key1) ,command ,keymap)))))
|
||||
|
||||
(defun bind-chords-form (args keymap)
|
||||
"Bind multiple chords at once.
|
||||
|
||||
Accepts keyword arguments:
|
||||
:map MAP - a keymap into which the keybindings should be
|
||||
added
|
||||
|
||||
The rest of the arguments are conses of keybinding string and a
|
||||
function symbol (unquoted)."
|
||||
(let (map pkg)
|
||||
(let ((cont t))
|
||||
(while (and cont args)
|
||||
(if (cond ((eq :map (car args))
|
||||
(setq map (cadr args)))
|
||||
((eq :package (car args))
|
||||
(setq pkg (cadr args))))
|
||||
(setq args (cddr args))
|
||||
(setq cont nil))))
|
||||
|
||||
(unless map (setq map keymap))
|
||||
|
||||
(let (first next)
|
||||
(while args
|
||||
(if (keywordp (car args))
|
||||
(progn
|
||||
(setq next args)
|
||||
(setq args nil))
|
||||
(if first
|
||||
(nconc first (list (car args)))
|
||||
(setq first (list (car args))))
|
||||
(setq args (cdr args))))
|
||||
|
||||
(cl-flet
|
||||
((wrap (map bindings)
|
||||
(if (and map pkg (not (memq map '(global-map
|
||||
override-global-map))))
|
||||
`((if (boundp ',map)
|
||||
,(macroexp-progn bindings)
|
||||
(eval-after-load
|
||||
,(if (symbolp pkg) `',pkg pkg)
|
||||
',(macroexp-progn bindings))))
|
||||
bindings)))
|
||||
|
||||
(append
|
||||
(wrap map
|
||||
(cl-mapcan
|
||||
(lambda (form)
|
||||
(let ((fun (and (cdr form) (list 'function (cdr form)))))
|
||||
(if (and map (not (eq map 'global-map)))
|
||||
`((bind-chord ,(car form) ,fun ,map))
|
||||
`((bind-chord ,(car form) ,fun nil)))))
|
||||
first))
|
||||
(when next
|
||||
(bind-chords-form (if pkg
|
||||
(cons :package (cons pkg next))
|
||||
next) map)))))))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-chords (&rest args)
|
||||
"Bind multiple chords at once.
|
||||
|
||||
Accepts keyword argument:
|
||||
:map - a keymap into which the keybindings should be added
|
||||
|
||||
The rest of the arguments are conses of keybinding string and a
|
||||
function symbol (unquoted)."
|
||||
(macroexp-progn (bind-chords-form args nil)))
|
||||
|
||||
(provide 'bind-chord)
|
||||
|
||||
;;; bind-chord.el ends here
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
;;; use-package-chords.el --- key-chord keyword for use-package -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Justin Talbott <justin@waymondo.com>
|
||||
;; Keywords: convenience, tools, extensions
|
||||
;; URL: https://github.com/jwiegley/use-package
|
||||
;; Version: 0.2.1
|
||||
;; Package-Requires: ((use-package "2.1") (bind-key "1.0") (bind-chord "0.2") (key-chord "0.6"))
|
||||
;; Filename: use-package-chords.el
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; The `:chords' keyword allows you to define `key-chord' bindings for
|
||||
;; `use-package' declarations in the same manner as the `:bind'
|
||||
;; keyword.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'use-package)
|
||||
(require 'bind-chord)
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'use-package-autoloads/:chords 'use-package-autoloads-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'use-package-normalize/:chords 'use-package-normalize-binder)
|
||||
|
||||
;;;###autoload
|
||||
(defun use-package-handler/:chords (name _keyword arg rest state)
|
||||
"Handler for `:chords' keyword in `use-package'."
|
||||
(use-package-concat
|
||||
(use-package-process-keywords name rest state)
|
||||
`(,(macroexpand
|
||||
`(bind-chords :package ,name ,@arg)))))
|
||||
|
||||
(add-to-list 'use-package-keywords :chords)
|
||||
|
||||
(provide 'use-package-chords)
|
||||
|
||||
;;; use-package-chords.el ends here
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
;;; use-package-chords-tests.el --- Tests for use-package-chords.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
(require 'use-package)
|
||||
(require 'use-package-chords)
|
||||
|
||||
(setq use-package-always-ensure nil
|
||||
use-package-verbose 'errors
|
||||
use-package-expand-minimally t)
|
||||
|
||||
(defmacro match-expansion (form &rest value)
|
||||
`(should (pcase (expand-minimally ,form)
|
||||
,@(mapcar #'(lambda (x) (list x t)) value))))
|
||||
|
||||
;; Copied from use-package-tests.el.
|
||||
(defmacro expand-minimally (form)
|
||||
`(let ((use-package-verbose 'errors)
|
||||
(use-package-expand-minimally t))
|
||||
(macroexpand-1 ',form)))
|
||||
|
||||
(defun use-package-test-normalize-chord (&rest args)
|
||||
(apply #'use-package-normalize-binder 'foo :chords args))
|
||||
|
||||
(ert-deftest use-package-test-normalize/:chords-1 ()
|
||||
(should (equal (use-package-test-normalize-chord
|
||||
'(("C-a" . alpha)))
|
||||
'(("C-a" . alpha)))))
|
||||
|
||||
(ert-deftest use-package-test-normalize/:chords-2 ()
|
||||
(should (equal (use-package-test-normalize-chord
|
||||
'(("C-a" . alpha)
|
||||
:map foo-map
|
||||
("C-b" . beta)))
|
||||
'(("C-a" . alpha)
|
||||
:map foo-map
|
||||
("C-b" . beta)))))
|
||||
|
||||
(ert-deftest use-package-test-normalize/:chords-3 ()
|
||||
(should (equal (use-package-test-normalize-chord
|
||||
'(:map foo-map
|
||||
("C-a" . alpha)
|
||||
("C-b" . beta)))
|
||||
'(:map foo-map
|
||||
("C-a" . alpha)
|
||||
("C-b" . beta)))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-1 ()
|
||||
;; FIXME:
|
||||
:tags '(:unstable)
|
||||
(match-expansion
|
||||
(use-package foo :chords ("C-k" . key1) ("C-u" . key2))
|
||||
`(progn
|
||||
(unless
|
||||
(fboundp 'key1)
|
||||
(autoload #'key1 "foo" nil t))
|
||||
(unless
|
||||
(fboundp 'key2)
|
||||
(autoload #'key2 "foo" nil t))
|
||||
(bind-chord "C-k" #'key1 nil)
|
||||
(bind-chord "C-u" #'key2 nil))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-2 ()
|
||||
;; FIXME:
|
||||
:tags '(:unstable)
|
||||
(match-expansion
|
||||
(use-package foo :chords (("C-k" . key1) ("C-u" . key2)))
|
||||
`(progn
|
||||
(unless (fboundp 'key1)
|
||||
(autoload #'key1 "foo" nil t))
|
||||
(unless (fboundp 'key2)
|
||||
(autoload #'key2 "foo" nil t))
|
||||
(bind-chord "C-k" #'key1 nil)
|
||||
(bind-chord "C-u" #'key2 nil))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-3 ()
|
||||
(match-expansion
|
||||
(use-package foo :chords (:map my-map ("C-k" . key1) ("C-u" . key2)))
|
||||
`(progn
|
||||
(unless
|
||||
(fboundp 'key1)
|
||||
(autoload #'key1 "foo" nil t))
|
||||
(unless
|
||||
(fboundp 'key2)
|
||||
(autoload #'key2 "foo" nil t))
|
||||
(if
|
||||
(boundp 'my-map)
|
||||
(progn
|
||||
(bind-chord "C-k" #'key1 my-map)
|
||||
(bind-chord "C-u" #'key2 my-map))
|
||||
(eval-after-load 'foo
|
||||
'(progn
|
||||
(bind-chord "C-k" #'key1 my-map)
|
||||
(bind-chord "C-u" #'key2 my-map)))))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-4 ()
|
||||
(should-error
|
||||
(match-expansion
|
||||
(use-package foo :chords :map my-map ("C-k" . key1) ("C-u" . key2))
|
||||
`(bind-chords :package foo))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-5 ()
|
||||
(match-expansion
|
||||
(use-package foo :chords ("C-k" . key1) (:map my-map ("C-u" . key2)))
|
||||
`(progn
|
||||
(unless (fboundp 'key1)
|
||||
(autoload #'key1 "foo" nil t))
|
||||
(unless (fboundp 'key2)
|
||||
(autoload #'key2 "foo" nil t))
|
||||
(progn
|
||||
(bind-chord "C-k" #'key1 nil)
|
||||
(if
|
||||
(boundp 'my-map)
|
||||
(bind-chord "C-u" #'key2 my-map)
|
||||
(eval-after-load 'foo
|
||||
'(bind-chord "C-u" #'key2 my-map)))))))
|
||||
|
||||
(ert-deftest use-package-test/:chords-6 ()
|
||||
(match-expansion
|
||||
(use-package foo
|
||||
:chords
|
||||
("C-k" . key1)
|
||||
(:map my-map ("C-u" . key2))
|
||||
(:map my-map2 ("C-u" . key3)))
|
||||
`(progn
|
||||
(unless
|
||||
(fboundp 'key1)
|
||||
(autoload #'key1 "foo" nil t))
|
||||
(unless
|
||||
(fboundp 'key2)
|
||||
(autoload #'key2 "foo" nil t))
|
||||
(unless
|
||||
(fboundp 'key3)
|
||||
(autoload #'key3 "foo" nil t))
|
||||
(progn
|
||||
(bind-chord "C-k" #'key1 nil)
|
||||
(if
|
||||
(boundp 'my-map)
|
||||
(bind-chord "C-u" #'key2 my-map)
|
||||
(eval-after-load 'foo
|
||||
'(bind-chord "C-u" #'key2 my-map)))
|
||||
(if
|
||||
(boundp 'my-map2)
|
||||
(bind-chord "C-u" #'key3 my-map2)
|
||||
(eval-after-load 'foo
|
||||
'(bind-chord "C-u" #'key3 my-map2)))))))
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; End:
|
||||
|
||||
;;; use-package-chords-tests.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue