Browse Source

org.el: Make the hijacker commands of orgstruct-mode try both general and specialised (function) key bindings

* org.el (orgstruct-make-binding): Make the hijacker commands
try both general and specialized (function) key bindings.
Christopher Schmidt 5 years ago
parent
commit
ac2415ae38
1 changed files with 16 additions and 1 deletions
  1. 16 1
      lisp/org.el

+ 16 - 1
lisp/org.el

@@ -8892,7 +8892,22 @@ if `orgstruct-heading-prefix-regexp' is non-nil."
 					      'item-body))))))))
 	    (if fallback
 		(let* ((orgstruct-mode)
-		       (binding (key-binding ,key)))
+		       (binding
+			(loop with key = ,key
+			      for rep in '(nil
+					   ("<tab>" . "TAB")
+					   ("<return>" . "RET")
+					   ("<escape>" . "ESC")
+					   ("<delete>" . "DEL"))
+			      do
+			      (when rep
+				(setq key (read-kbd-macro
+					   (let ((case-fold-search))
+					     (replace-regexp-in-string
+					      (regexp-quote (car rep))
+					      (cdr rep)
+					      (key-description key))))))
+			      thereis (key-binding key))))
 		  (if (keymapp binding)
 		      (set-temporary-overlay-map binding)
 		    (let ((func (or binding