org: Conflicts
15.10.2 Packages that lead to conflicts with Org mode
-----------------------------------------------------
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.
‘CUA.el’ by Kim. F. Storm
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.el’ by Lars Magne Ingebrigtsen <larsi@gnus.org>
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.
‘filladapt.el’ by Kyle Jones
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)
‘yasnippet.el’
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)))
‘windmove.el’ by Hovav Shacham
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.el’ by Michael Kifer
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)