Previous: Cooperation, Up: Interaction [Contents][Index]
In Emacs 23, shift-selection-mode
is on by default, meaning that
cursor motions combined with the shift key should start or enlarge regions.
This conflicts with the use of S-cursor commands in Org to change
timestamps, TODO keywords, priorities, and item bullet types if the cursor is
at such a location. By default, S-cursor commands outside
special contexts don’t do anything, but you can customize the variable
org-support-shift-select
. Org mode then tries to accommodate shift
selection by (i) using it outside of the special contexts where special
commands apply, and by (ii) extending an existing active region even if the
cursor moves across a special context.
Key bindings in Org conflict with the S-<cursor> keys used by CUA mode
(as well as pc-select-mode
and s-region-mode
) to select and extend the
region. In fact, Emacs 23 has this built-in in the form of
shift-selection-mode
, see previous paragraph. If you are using Emacs
23, you probably don’t want to use another package for this purpose. However,
if you prefer to leave these keys to a different package while working in
Org mode, configure the variable org-replace-disputed-keys
. When set,
Org will move the following key bindings in Org files, and in the agenda
buffer (but not during date selection).
S-UP ⇒ M-p S-DOWN ⇒ M-n S-LEFT ⇒ M-- S-RIGHT ⇒ M-+ C-S-LEFT ⇒ M-S-- C-S-RIGHT ⇒ M-S-+
Yes, these are unfortunately more difficult to remember. If you want
to have other replacement keys, look at the variable
org-disputed-keys
.
Ecomplete provides “electric” address completion in address header lines in message buffers. Sadly Orgtbl mode cuts ecompletes power supply: No completion happens when Orgtbl mode is enabled in message buffers while entering text in address header lines. If one wants to use ecomplete one should not follow the advice to automagically turn on Orgtbl mode in message buffers (see Orgtbl mode), but instead—after filling in the message headers—turn on Orgtbl mode manually when needed in the messages body.
Org mode tries to do the right thing when filling paragraphs, list items and other elements. Many users reported they had problems using both filladapt.el and Org mode, so a safe thing to do is to disable it like this:
(add-hook 'org-mode-hook 'turn-off-filladapt-mode)
The way Org mode binds the TAB key (binding to [tab]
instead of
"\t"
) overrules YASnippet’s access to this key. The following code
fixed this problem:
(add-hook 'org-mode-hook (lambda () (org-set-local 'yas/trigger-key [tab]) (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
The latest version of yasnippet doesn’t play well with Org mode. If the above code does not fix the conflict, start by defining the following function:
(defun yas/org-very-safe-expand () (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
Then, tell Org mode what to do with the new function:
(add-hook 'org-mode-hook (lambda () (make-variable-buffer-local 'yas/trigger-key) (setq yas/trigger-key [tab]) (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand) (define-key yas/keymap [tab] 'yas/next-field)))
This package also uses the S-<cursor> keys, so everything written in the paragraph above about CUA mode also applies here. If you want make the windmove function active in locations where Org mode does not have special functionality on S-cursor, add this to your configuration:
;; Make windmove work in org-mode: (add-hook 'org-shiftup-final-hook 'windmove-up) (add-hook 'org-shiftleft-final-hook 'windmove-left) (add-hook 'org-shiftdown-final-hook 'windmove-down) (add-hook 'org-shiftright-final-hook 'windmove-right)
Viper uses C-c / and therefore makes this key not access the
corresponding Org mode command org-sparse-tree
. You need to find
another key for this command, or override the key in
viper-vi-global-user-map
with
(define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
Previous: Cooperation, Up: Interaction [Contents][Index]