Jelajahi Sumber

Shift-selection: More tweaking.

Carsten Dominik 16 tahun lalu
induk
melakukan
f88f3bb89f
1 mengubah file dengan 29 tambahan dan 21 penghapusan
  1. 29 21
      lisp/org.el

+ 29 - 21
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))