Remap org-shiftmetaright | org-shiftmetaleft to [shift-select-meta]left-word | [shift-select-meta]right-word]
emacs, org-mode
Solution
As you just want to fall back to the default behaviour for these bindings, we can simply remove the org-mode overrides.
(eval-after-load "org"
'(progn
(define-key org-mode-map (kbd "<M-S-left>") nil)
(define-key org-mode-map (kbd "<M-S-right>") nil)
(define-key org-mode-map (kbd "<M-left>") nil)
(define-key org-mode-map (kbd "<M-right>") nil)))
Problem
Could someone please give me a hand remapping `org-shiftmetaright` | `org-shiftmetaleft` to `[shift-select-meta]left-word` | `[shift-select-meta]right-word]`. The goal is to highlight select region being a whole word (right or left) in one fell swoop in org-mode instead of changing the level of the headings. And not highlight when I release the shift, but nevertheless jump whole words to the left or right. I would imagine that `left-word` and `right-word` probably have that caret `"^"` in the interactive command, or something similar, so there is no separate function for shift-left-word or shift-right-word. ``` (defvar custom-keys-mode-map (make-keymap) "custom-keys-mode keymap.") (define-minor-mode custom-keys-mode "A minor mode so that my key settings override annoying major modes." t " my-keys" 'custom-keys-mode-map) (custom-keys-mode 1) (defun my-minibuffer-setup-hook () (custom-keys-mode 0)) (add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook) (defadvice load (after give-my-keybindings-priority) "Try to ensure that my keybindings always have priority." (if (not (eq (car (car minor-mode-map-alist)) 'custom-keys-mode)) (let ((mykeys (assq 'custom-keys-mode minor-mode-map-alist))) (assq-delete-all 'custom-keys-mode minor-mode-map-alist) (add-to-list 'minor-mode-map-alist mykeys)))) (ad-activate 'load) ;; (define-key custom-keys-mode-map (kbd "<C-key>") 'some-command) (define-key custom-keys-mode-map (kbd "M-<left>") 'left-word) (define-key custom-keys-mode-map (kbd "M-<right>") 'right-word) (define-key custom-keys-mode-map (kbd "M-S-<left>") 'left-word) (define-key custom-keys-mode-map (kbd "M-S-<right>") 'right-word) ``` EDIT: Here is the function from bindings.el that I'm looking to use in org-mode: ``` (defun right-word (&optional n) "Move point N words to the right (to the left if N is negative). Depending on the bidirectional context, this may move either forward or backward in the buffer. This is in contrast with \\[forward-word] and \\[backward-word], which see. Value is normally t. If an edge of the buffer or a field boundary is reached, point is left there there and the function returns nil. Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil." (interactive "^p") (if (eq (current-bidi-paragraph-direction) 'left-to-right) (forward-word n) (backward-word n))) (defun left-word (&optional n) "Move point N words to the left (to the right if N is negative). Depending on the bidirectional context, this may move either backward or forward in the buffer. This is in contrast with \\[backward-word] and \\[forward-word], which see. Value is normally t. If an edge of the buffer or a field boundary is reached, point is left there there and the function returns nil. Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil." (interactive "^p") (if (eq (current-bidi-paragraph-direction) 'left-to-right) (backward-word n) (forward-word n))) ```