title: Remap org-shiftmetaright | org-shiftmetaleft to [shift-select-meta]left-word | [shift-select-meta]right-word]
body: <p>Could someone please give me a hand remapping <code>org-shiftmetaright</code> | <code>org-shiftmetaleft</code> to <code>[shift-select-meta]left-word</code> | <code>[shift-select-meta]right-word]</code>.  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.</p>
  
  <p>I would imagine that <code>left-word</code> and <code>right-word</code> probably have that caret <code>"^"</code> in the interactive command, or something similar, so there is no separate function for shift-left-word or shift-right-word.</p>
  
  <pre><code>(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 "&lt;C-key&gt;") 'some-command)
  
  (define-key custom-keys-mode-map (kbd "M-&lt;left&gt;") 'left-word)
  (define-key custom-keys-mode-map (kbd "M-&lt;right&gt;") 'right-word)
  
  (define-key custom-keys-mode-map (kbd "M-S-&lt;left&gt;") 'left-word)
  (define-key custom-keys-mode-map (kbd "M-S-&lt;right&gt;") 'right-word)
  </code></pre>
  
  <hr>
  
  <p>EDIT:  Here is the function from bindings.el that I'm looking to use in org-mode:</p>
  
  <pre><code>(defun right-word (&amp;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 (&amp;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)))
  </code></pre>