emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] [Patch] Add another bullet type (→)


From: Martin Pohlack
Subject: [Orgmode] [Patch] Add another bullet type (→)
Date: Fri, 13 Mar 2009 23:58:03 +0100
User-agent: Thunderbird 2.0.0.19 (X11/20090110)

Hi All,

I tend to use a right arrow (→, U2192) from time to time in plain
lists to separate normal item from conclusions / next actions etc.:

  - Topic
    - Fact 1
    - Fact 2
    → Conclusion

I would appreciate it if org-mode could support this type of bullet
point.  The attached patch implements what I had in mind.

I'm not sure if the adaptation in /org-cycle-list-bullet/ is useful
for others --- I don't use the arrow for many items in a list, but
only single ones --- But I included it in the patch for completeness.

(Also, there may be better ways to encode unicode chars in regexp than
using the utf-8 encoding, that the patch uses.)

Cheers,
Martin
--- /home/mp26/src/org-mode/lisp/org-list.el    2009-03-13 23:42:05.000000000 
+0100
+++ org-list.el 2009-03-13 19:57:51.000000000 +0100
@@ -118,7 +118,7 @@
   :type 'integer)
 
 (defvar org-list-beginning-re
-  "^\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) +\\(.*\\)$")
+  "^\\([ \t]*\\)\\([-+*→]\\|[0-9]+[.)]\\) +\\(.*\\)$")
 
 (defcustom org-list-radio-list-templates
   '((latex-mode "% BEGIN RECEIVE ORGLST %n
@@ -158,9 +158,9 @@
       (goto-char (point-at-bol))
       (looking-at
        (cond
-       ((eq llt t)  "\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
-       ((= llt ?.)  "\\([ \t]*\\([-+]\\|\\([0-9]+\\.\\)\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
-       ((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+))\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
+       ((eq llt t)  "\\([ \t]*\\([-+→]\\|\\([0-9]+[.)]\\)\\)\\|[ 
\t]+\\*\\)\\( \\|$\\)")
+       ((= llt ?.)  "\\([ \t]*\\([-+→]\\|\\([0-9]+\\.\\)\\)\\|[ 
\t]+\\*\\)\\( \\|$\\)")
+       ((= llt ?\)) "\\([ \t]*\\([-+→]\\|\\([0-9]+))\\)\\|[ \t]+\\*\\)\\( 
\\|$\\)")
        (t (error "Invalid value of 
`org-plain-list-ordered-item-terminator'")))))))
 
 (defun org-at-item-bullet-p ()
@@ -205,7 +205,7 @@
                                  (looking-at "[ \t]*$")))))
           (timerp (and descp
                        (save-match-data
-                         (string-match "^[-+*][ \t]+[0-9]+:[0-9]+:[0-9]+$"
+                         (string-match "^[-+*→][ \t]+[0-9]+:[0-9]+:[0-9]+$"
                                        descp))))
           (eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
                                (match-end 0)))
@@ -337,7 +337,7 @@
          (condition-case nil (org-back-to-heading t)
            (error (throw 'exit nil)))
          (unless (org-entry-get nil "ORDERED") (throw 'exit nil))
-         (if (re-search-forward "^[ \t]*[-+*0-9.)] \\[[- ]\\]" end t)
+         (if (re-search-forward "^[ \t]*[-+*→0-9.)] \\[[- ]\\]" end t)
              (org-current-line)
            nil))))))
 
@@ -360,7 +360,7 @@
          (end (move-marker (make-marker)
                            (progn (outline-next-heading) (point))))
          (re "\\(\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)\\)")
-         (re-box "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)")
+         (re-box "^[ \t]*\\([-+→*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)")
          (re-find (concat re "\\|" re-box))
          beg-cookie end-cookie is-percent c-on c-off lim
          eline curr-ind next-ind continue-from startsearch
@@ -674,7 +674,7 @@
   "Cycle through the different itemize/enumerate bullets.
 This cycle the entire list level through the sequence:
 
-   `-' ->  `+'  ->  `*'  ->  `1.'  ->  `1)'
+   `-'  ->  `+'  ->  `→'  ->  `*'  ->  `1.'  ->  `1)'
 
 If WHICH is a string, use that as the new bullet.  If WHICH is an integer,
 0 means `-', 1 means `+' etc."
@@ -688,11 +688,12 @@
         new old)
      (setq new (cond
                ((and (numberp which)
-                     (nth (1- which) '("-" "+" "*" "1." "1)"))))
+                     (nth (1- which) '("-" "+" "→" "*" "1." "1)"))))
                ((string-match "-" current) (if prevp "1)" "+"))
                ((string-match "\\+" current)
-                (if prevp "-" (if (looking-at "\\S-") "1." "*")))
-               ((string-match "\\*" current) (if prevp "+" "1."))
+                (if prevp "-" (if (looking-at "\\S-") "1." "→")))
+               ((string-match "→" current) (if prevp "+" "*"))
+               ((string-match "\\*" current) (if prevp "→" "1."))
                ((string-match "\\." current)
                 (if prevp (if (looking-at "\\S-") "+" "*") "1)"))
                ((string-match ")" current) (if prevp "1." "-"))
@@ -929,7 +930,7 @@
        ((and (condition-case nil (progn (org-previous-item) t)
               (error nil))
             (or (forward-char 1) t)
-            (re-search-forward "^\\([ \t]*\\([-+]\\|\\([0-9]+[.)]\\)\\)\\|[ 
\t]+\\*\\)\\( \\|$\\)" bolpos t))
+            (re-search-forward "^\\([ \t]*\\([-+→]\\|\\([0-9]+[.)]\\)\\)\\|[ 
\t]+\\*\\)\\( \\|$\\)" bolpos t))
        (setq ind-down (org-get-indentation)))
        ((and (goto-char pos)
             (org-at-item-p))
@@ -956,8 +957,8 @@
               (setq itemsep "[0-9]+\\(?:\\.\\|)\\)"
                     ltype 'ordered))
              ((string-match "^.*::" (match-string 0))
-              (setq itemsep "[-+]" ltype 'descriptive))
-             (t (setq itemsep "[-+]" ltype 'unordered))))
+              (setq itemsep "[-+→]" ltype 'descriptive))
+             (t (setq itemsep "[-+→]" ltype 'unordered))))
       (let* ((indent1 (match-string 1))
             (nextitem (save-excursion
                         (save-match-data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]