summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien <bzg@gnu.org>2021-05-01 22:24:57 +0200
committerBastien <bzg@gnu.org>2021-05-01 22:24:57 +0200
commitccd513a3c5b732561ea1b1d6020f5a05c1565205 (patch)
treec99efb62221c47775a2541bf87881060282fe1ff
parent94837fc6b5ca204962f3ed992e30cd998d66a9fe (diff)
downloadorg-mode-ccd513a3c5b732561ea1b1d6020f5a05c1565205.tar.gz
lisp/org.el: Don't let `visual-line-mode' override Org's keybindings
* lisp/org.el (org-mode): Don't let `visual-line-mode' override Org's keybindings for C-a, C-e and C-k. Reported-by: Gustavo Barros <gusbrs.2016@gmail.com> Link: https://orgmode.org/list/87a6zkv3m2.fsf@gmail.com/
-rw-r--r--lisp/org.el12
1 files changed, 12 insertions, 0 deletions
diff --git a/lisp/org.el b/lisp/org.el
index abe92eb..8730cd3 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4903,6 +4903,18 @@ The following commands are available:
(when org-startup-numerated (require 'org-num) (org-num-mode 1))
(when org-startup-indented (require 'org-indent) (org-indent-mode 1))))
+ ;; Add a custom keymap for `visual-line-mode' so that activating
+ ;; this minor mode does not override Org's keybindings.
+ ;; FIXME: Probably `visual-line-mode' should take care of this.
+ (let ((oldmap (cdr (assoc 'visual-line-mode minor-mode-map-alist)))
+ (newmap (make-sparse-keymap)))
+ (set-keymap-parent newmap oldmap)
+ (define-key newmap [remap move-beginning-of-line] nil)
+ (define-key newmap [remap move-end-of-line] nil)
+ (define-key newmap [remap kill-line] nil)
+ (make-local-variable 'minor-mode-overriding-map-alist)
+ (push `(visual-line-mode . ,newmap) minor-mode-overriding-map-alist))
+
;; Activate `org-table-header-line-mode'
(when org-table-header-line-p
(org-table-header-line-mode 1))