Przeglądaj źródła

Make some features of org-mouse optional.

New variable org-mouse-features.
Carsten Dominik 16 lat temu
rodzic
commit
722cbe8f5f
3 zmienionych plików z 50 dodań i 18 usunięć
  1. 4 0
      lisp/ChangeLog
  2. 45 17
      lisp/org-mouse.el
  3. 1 1
      lisp/org.el

+ 4 - 0
lisp/ChangeLog

@@ -1,5 +1,9 @@
 2008-10-22  Carsten Dominik  <dominik@science.uva.nl>
 
+	* org-mouse.el (org-mouse-features): New option.
+	(org-mode-hook): Turn on features depending on
+	`org-mouse-features'.
+
 	* org.el (org-insert-heading-respect-content): Force heading
 	creation.
 	(org-insert-heading): keep the folding state of the heading before

+ 45 - 17
lisp/org-mouse.el

@@ -166,6 +166,18 @@ indirectly, for example, through the agenda buffer.")
   :group 'org-mouse
   :type 'string)
 
+(defcustom org-mouse-features
+  '(context-menu yank-link activate-stars activate-bullets activate-checkboxes)
+  "The features of org-mouse that should be activated.
+Changing this variable requires a restart of Emacs to get activated."
+  :group 'org-mouse
+  :type '(set :greedy t
+	      (const :tag "Mouse-3 shows context menu" context-menu)
+	      (const :tag "C-mouse-1 and mouse-3 move trees" move-tree)
+	      (const :tag "S-mouse-2 and drag-mouse-3 yank link" yank-link)
+	      (const :tag "Activate headline stars" activate-stars)
+	      (const :tag "Activate item bullets" activate-bullets)
+	      (const :tag "Activate checkboxes" activate-checkboxes)))	      
 
 (defun org-mouse-re-search-line (regexp)
   "Search the current line for a given regular expression."
@@ -410,7 +422,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
 
 (defun org-mouse-tag-menu ()		;todo
   (append
-   (let ((tags (org-split-string (org-get-tags) ":")))
+   (let ((tags (org-get-tags)))
      (org-mouse-keyword-menu
       (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp)
       `(lambda (tag)
@@ -890,26 +902,42 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
   '(lambda ()
      (setq org-mouse-context-menu-function 'org-mouse-context-menu)
 
-;     (define-key org-mouse-map [follow-link] 'mouse-face)
-     (define-key org-mouse-map (if (featurep 'xemacs) [button3] [mouse-3]) nil)
-     (define-key org-mode-map [mouse-3] 'org-mouse-show-context-menu)
+     (when (memq 'context-menu org-mouse-features)
+       (define-key org-mouse-map (if (featurep 'xemacs) [button3] [mouse-3]) nil)
+       (define-key org-mode-map [mouse-3] 'org-mouse-show-context-menu))
      (define-key org-mode-map [down-mouse-1] 'org-mouse-down-mouse)
-     (define-key org-mouse-map [C-drag-mouse-1] 'org-mouse-move-tree)
-     (define-key org-mouse-map [C-down-mouse-1] 'org-mouse-move-tree-start)
-     (define-key org-mode-map [S-mouse-2] 'org-mouse-yank-link)
-     (define-key org-mode-map [drag-mouse-3] 'org-mouse-yank-link)
-     (define-key org-mouse-map [drag-mouse-3] 'org-mouse-move-tree)
-     (define-key org-mouse-map [down-mouse-3] 'org-mouse-move-tree-start)
-
-     (font-lock-add-keywords nil
+     (when (memq 'context-menu org-mouse-features)
+       (define-key org-mouse-map [C-drag-mouse-1] 'org-mouse-move-tree)
+       (define-key org-mouse-map [C-down-mouse-1] 'org-mouse-move-tree-start))
+     (when (memq 'yank-link org-mouse-features)
+       (define-key org-mode-map [S-mouse-2] 'org-mouse-yank-link)
+       (define-key org-mode-map [drag-mouse-3] 'org-mouse-yank-link))
+     (when (memq 'move-tree org-mouse-features)
+       (define-key org-mouse-map [drag-mouse-3] 'org-mouse-move-tree)
+       (define-key org-mouse-map [down-mouse-3] 'org-mouse-move-tree-start))
+
+     (when (memq 'activate-stars org-mouse-features)
+       (font-lock-add-keywords
+	nil
 	`((,outline-regexp
 	   0 `(face org-link mouse-face highlight keymap ,org-mouse-map)
-	   'prepend)
-	  ("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +"
-	   (1 `(face org-link keymap ,org-mouse-map mouse-face highlight) 'prepend))
-	  ("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[ X]\\]\\)"
+	   'prepend))
+ 	t))
+
+     (when (memq 'activate-bullets org-mouse-features)
+       (font-lock-add-keywords
+	nil
+	`(("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +"
+	   (1 `(face org-link keymap ,org-mouse-map mouse-face highlight)
+	      'prepend)))
+ 	t))
+
+     (when (memq 'activate-checkboxes org-mouse-features)
+       (font-lock-add-keywords
+	nil
+	`(("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[ X]\\]\\)"
 	   (2 `(face bold keymap ,org-mouse-map mouse-face highlight) t)))
- 	t)
+ 	t))
 
      (defadvice org-open-at-point (around org-mouse-open-at-point activate)
        (let ((context (org-context)))

+ 1 - 1
lisp/org.el

@@ -1722,7 +1722,7 @@ This has influence for the following applications:
 
 IMPORTANT:  This is a feature whose implementation is and likely will
 remain incomplete.  Really, it is only here because past midnight seems to
-ne the favorite working time of John Wiegley :-)"
+be the favorite working time of John Wiegley :-)"
   :group 'org-time
   :type 'number)