emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [Patch] Add another bullet type (→)
@ 2009-03-13 22:58 Martin Pohlack
  2009-03-14 10:07 ` Carsten Dominik
  2009-03-16  1:04 ` Daniel Clemente
  0 siblings, 2 replies; 5+ messages in thread
From: Martin Pohlack @ 2009-03-13 22:58 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 670 bytes --]

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

[-- Attachment #2: org-list-arrow.diff --]
[-- Type: text/plain, Size: 4146 bytes --]

--- /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

[-- Attachment #3: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-03-16  8:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-13 22:58 [Patch] Add another bullet type (→) Martin Pohlack
2009-03-14 10:07 ` Carsten Dominik
2009-03-16  1:04 ` Daniel Clemente
2009-03-16  5:52   ` Carsten Dominik
2009-03-16  8:34     ` Martin Pohlack

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).