[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 18eb298 161/166: Add objed-define-local-object-ke
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/objed 18eb298 161/166: Add objed-define-local-object-keys* |
Date: |
Sun, 29 Dec 2019 08:21:19 -0500 (EST) |
branch: externals/objed
commit 18eb29880512edeb6c19c14ac5013154cad301af
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Add objed-define-local-object-keys*
---
objed-objects.el | 40 +++++++++++++++++++++++++++++++++++++---
1 file changed, 37 insertions(+), 3 deletions(-)
diff --git a/objed-objects.el b/objed-objects.el
index afd00de..ac05cae 100644
--- a/objed-objects.el
+++ b/objed-objects.el
@@ -460,8 +460,10 @@ KPAIRS are pairs of the key and the object name."
(defun objed-define-local-object-keys (&rest kpairs)
"Define object keys locally for current buffer.
-This function is intended to be used inside mode hooks to create
-mode specific object bindings.
+This function is intended to be used inside mode hooks to add
+mode specific object bindings to the currently existing ones. If
+you want to replace the object key bindings entirely with local
+ones see `objed-define-local-object-keys*'.
KPAIRS are pairs of the key and the object name."
(unless (local-variable-p 'objed-map)
@@ -472,7 +474,39 @@ KPAIRS are pairs of the key and the object name."
(make-composed-keymap nil (default-value 'objed-object-map))))
(while kpairs
(objed--define-kpair objed-object-map (pop kpairs) (pop kpairs)))
- (let ((switchk (where-is-internal 'objed-object-map
+ (let ((switchk (where-is-internal (default-value 'objed-object-map)
+ (default-value 'objed-map) t)))
+ (define-key objed-map switchk objed-object-map)))
+
+
+(defun objed--init-local-map (lmap map)
+ "Initilize local LMAP to shadow bindings in MAP."
+ (map-keymap (lambda (ev def)
+ (if (keymapp def)
+ (objed--init-local-map lmap def)
+ (define-key lmap (vector ev) nil)))
+ map))
+
+(defun objed-define-local-object-keys* (&rest kpairs)
+ "Define object keys locally for current buffer.
+
+This function is intended to be used inside mode hooks and
+creates new object key bindings for the current buffer. This
+means any previous object key bindings bindings are replaced by
+the bindings defined in KPAIRS.
+
+If you only want to add or change a few mode specific bindings
+see `objed-define-local-object-keys'.
+
+KPAIRS are pairs of the key and the object name."
+ (unless (local-variable-p 'objed-map)
+ (setq-local objed-map
+ (make-composed-keymap nil (default-value 'objed-map))))
+ (setq-local objed-object-map (make-sparse-keymap))
+ (objed--init-local-map objed-object-map (default-value 'objed-map))
+ (while kpairs
+ (objed--define-kpair objed-object-map (pop kpairs) (pop kpairs)))
+ (let ((switchk (where-is-internal (default-value 'objed-object-map)
(default-value 'objed-map) t)))
(define-key objed-map switchk objed-object-map)))
- [elpa] externals/objed 4d1a445 141/166: Add public object bounds functions, (continued)
- [elpa] externals/objed 4d1a445 141/166: Add public object bounds functions, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed b6b7c3f 144/166: Disable during a company completion, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 70cf23e 145/166: Merge pull request #51 from flatwhatson/fix-company, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 2a06126 143/166: Add functions to map over objects, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed fea1148 148/166: Fixes #54, identifier movement for symbols with regex chars, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed cc46438 146/166: Syntactic changes, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed fdea65d 151/166: Adding `objed-switch-alist` #57, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed c3cd6ab 150/166: Merge pull request #55 from r-darwish/patch-1, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed e079a76 152/166: Add objed-init-hook #57, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed a5684df 156/166: Add objed-switch-functions (#57), Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 18eb298 161/166: Add objed-define-local-object-keys*,
Clemens Radermacher <=
- [elpa] externals/objed 878b5eb 154/166: Don't use obsolete var names, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 5c4ac71 159/166: Improve `objed-define-object` docstring, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed e5648b4 165/166: Ensure minibuffer commands reset even without objed-mode, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed ccc7bc7 164/166: Describe new object binding helpers, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 4a954dc 157/166: Update docstring, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed be54bfa 155/166: Simplify optional dependency loading (fix #56), Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 5e600c6 163/166: Version bump, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 01f0621 166/166: Version bump, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed 226fd50 149/166: Update README.asc, Clemens Radermacher, 2019/12/29
- [elpa] externals/objed f55b4c9 160/166: Add key definition helpers for object keys, Clemens Radermacher, 2019/12/29