From f88f3bb89faeb86c1f337a53f20c4d19aa0c56ed Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Tue, 27 Jan 2009 09:01:23 +0100 Subject: [PATCH] Shift-selection: More tweaking. --- lisp/org.el | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 01970ba1a..0d81fbba3 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -203,29 +203,33 @@ to add the symbol `xyz', and the package must have a call to "Non-nil means, make shift-cursor commands select text when possible. In Emacs 23, when `shift-select-mode' is on, shifted cursor keys start -selecting a region, or enlarge thusly started regions. In Org-mode, -in special contexts, these same keys are used for other purposes, important -enough to compete with shift selection. Org tries to balance these needs -by supporting `shift-select-mode' outside these special contexts, under -control of this variable. - -The default of this variable is nil, to avoid confusing behavior. -When this variable is t and the cursor is not in a special context, -Org-mode will support shift-selection for making and enlarging regions. - -Shift-cursor keys then still have special meanings at the following -locations: +selecting a region, or enlarge thusly regions started in this way. +In Org-mode, in special contexts, these same keys are used for other +purposes, important enough to compete with shift selection. Org tries +to balance these needs by supporting `shift-select-mode' outside these +special contexts, under control of this variable. + +The default of this variable is nil, to avoid confusing behavior. Shifted +cursor keys will then execute Org commands in the following contexts: - on a headline, changing TODO state (left/right) and priority (up/down) - on a time stamp, changing the time +- in a plain list item, changing the bullet type - in a property definition line, switching between allowed values - in the BEGIN line of a clock table (changing the time block). +Outside these contexts, the commands will throw an error. + +When this variable is t and the cursor is not in a special context, +Org-mode will support shift-selection for making and enlarging regions. +To make this more effective, the bullet cycling will no longer happen +anywhere in an item line, but only if the cursor is exactly on the bullet. If you set this variable to the symbol `always', then the keys -will not be special in headlines and property lines, to make shift -selection work there as well. If this is what you want, you can use the -following alternative commands: `C-c C-t' and `C-c ,' to change TODO -state and priority, `C-u C-u C-c C-t' can be used to switch TODO sets, -and properties can be edited by hand or in column view. +will not be special in headlines, property lines, and item lines, to make +shift selection work there as well. If this is what you want, you can +use the following alternative commands: `C-c C-t' and `C-c ,' to +change TODO state and priority, `C-u C-u C-c C-t' can be used to switch +TODO sets, `C-c -' to cycle item bullet types, and properties can be +edited by hand or in column view. However, when the cursor is on a timestamp, shift-cursor commands will still edit the time stamp - this is just too good to give up. @@ -234,8 +238,8 @@ XEmacs user should have this variable set to nil, because shift-select-mode is Emacs 23 only." :group 'org :type '(choice - (const :tag "Not at all" nil) - (const :tag "When context allows" t) + (const :tag "Never" nil) + (const :tag "When outside special context" t) (const :tag "Everywhere except timestamps" always))) (defgroup org-startup nil @@ -13119,7 +13123,9 @@ Depending on context, this does one of the following: ((and (not (eq org-support-shift-select 'always)) (org-on-heading-p)) (org-call-with-arg 'org-todo 'right)) - ((or (and org-support-shift-select (org-at-item-bullet-p)) + ((or (and org-support-shift-select + (not (eq org-support-shift-select 'always)) + (org-at-item-bullet-p)) (and (not org-support-shift-select) (org-at-item-p))) (org-call-with-arg 'org-cycle-list-bullet nil)) ((and (not (eq org-support-shift-select 'always)) @@ -13147,7 +13153,9 @@ Depending on context, this does one of the following: ((and (not (eq org-support-shift-select 'always)) (org-on-heading-p)) (org-call-with-arg 'org-todo 'left)) - ((or (and org-support-shift-select (org-at-item-bullet-p)) + ((or (and org-support-shift-select + (not (eq org-support-shift-select 'always)) + (org-at-item-bullet-p)) (and (not org-support-shift-select) (org-at-item-p))) (org-call-with-arg 'org-cycle-list-bullet 'previous)) ((and (not (eq org-support-shift-select 'always)) -- 2.11.4.GIT