summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2010-07-28 00:05:42 +0200
committerNicolas Goaziou <n.goaziou@gmail.com>2010-09-01 19:05:51 +0200
commit3f762cf76d1021eae355075da78d9f8078e05114 (patch)
tree65bd52f4b89d71ccf34d4962f44b21c8e1d24bed
parent6593fcc7cd31824c5df22051a43878d86dc516a4 (diff)
downloadorg-mode-3f762cf76d1021eae355075da78d9f8078e05114.tar.gz
Refactoring
* org-list.el: `org-at-description-p' renamed to `org-at-item-description-p', `org-first-list-item-p' renamed to `org-list-first-item-p', `org-end-of-item-text-before-children' renamed to `org-end-of-item-or-at-child'.
-rw-r--r--lisp/org-list.el81
1 files changed, 37 insertions, 44 deletions
diff --git a/lisp/org-list.el b/lisp/org-list.el
index 79b15d9..3327f86 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -273,7 +273,7 @@ of `org-plain-list-ordered-item-terminator'."
(defun org-list-terminator-between (min max &optional firstp)
"Find the position of a list ender between MIN and MAX, or nil.
-This function looks for `org-list-end-re' not matching a block.
+This function looks for `org-list-end-re' outside a block.
If FIRSTP in non-nil, return the point at the beginning of the
nearest valid terminator from min. Otherwise, return the point at
@@ -358,7 +358,7 @@ function ends."
"^[ \t]*#\\+\\(begin\\|BEGIN\\)_\\([a-zA-Z0-9_]+\\)"
'(concat "^[ \t]*#\\+\\(end\\|END\\)_" (match-string 2)))
(if (not (cdr (assq 'insert org-list-automatic-rules)))
- ;; Rule in `org-list-automatic-rules' disallows insertion.
+ ;; Rule in `org-list-automatic-rules' forbids insertion.
(error "Cannot insert item inside a block.")
;; Else, move before it prior to add a new item.
(end-of-line)
@@ -370,7 +370,7 @@ function ends."
(ind (org-get-indentation))
(before-p (progn
;; Description item: text starts after colons.
- (or (org-at-description-p)
+ (or (org-at-item-description-p)
;; At a checkbox: text starts after it.
(org-at-item-checkbox-p)
;; Otherwise, text starts after bullet.
@@ -394,7 +394,7 @@ function ends."
(next-p (goto-char next-p)
(org-back-over-empty-lines))
;; Is there a previous item?
- ((not (org-first-list-item-p)) (org-back-over-empty-lines))
+ ((not (org-list-first-item-p)) (org-back-over-empty-lines))
;; Item alone: count lines separating it from parent, if any
((/= (org-list-top-point) (point-at-bol))
(org-back-over-empty-lines))
@@ -457,12 +457,10 @@ function ends."
(and last-item-start
(not list-ender))))))
-(defun org-first-list-item-p ()
- "Is this heading the first item in a plain list?"
- (unless (org-at-item-p)
- (error "Not at a plain list item"))
+(defun org-list-first-item-p ()
+ "Is this item the first item in a plain list?"
(save-excursion
- (= (save-excursion (org-beginning-of-item)) (org-beginning-of-item-list))))
+ (= (org-beginning-of-item) (org-beginning-of-item-list))))
(defun org-at-item-p ()
"Is point in a line starting a hand-formatted item?"
@@ -480,7 +478,7 @@ function ends."
"Is point at a line starting a plain list item with a timer?"
(org-list-at-regexp-after-bullet-p "\\([0-9]+:[0-9]+:[0-9]+\\)[ \t]+::[ \t]+"))
-(defun org-at-description-p ()
+(defun org-at-item-description-p ()
"Is point at a description list item?"
(org-list-at-regexp-after-bullet-p "\\(\\S-.+\\)[ \t]+::[ \t]+"))
@@ -488,12 +486,12 @@ function ends."
"Is point at a line starting a plain-list item with a checklet?"
(org-list-at-regexp-after-bullet-p "\\(\\[[- X]\\]\\)[ \t]+"))
-(defun org-item-has-children-p ()
+(defun org-item-has-child-p ()
"Does the current item have subitems?"
(save-excursion
(org-beginning-of-item)
(let ((ind (org-get-indentation)))
- (org-end-of-item-text-before-children)
+ (org-end-of-item-or-at-child)
(and (org-at-item-p)
(> (org-get-indentation) ind)))))
@@ -566,16 +564,12 @@ If the cursor is not in an item, throw an error. Return point."
If the cursor is not in an item, throw an error."
(interactive)
(let ((next-p (org-get-next-item (point) (org-list-bottom-point))))
- (cond ((not (org-in-item-p))
- (error "Not in an item"))
- (next-p
- (goto-char next-p))
- (t
- (org-end-of-item-list)))))
-
-(defun org-end-of-item-text-before-children ()
- "Move to the end of the item text, stops before the first child if any.
-Assumes that the cursor is in the first line of an item."
+ (cond ((not (org-in-item-p)) (error "Not in an item"))
+ (next-p (goto-char next-p))
+ (t (org-end-of-item-list)))))
+
+(defun org-end-of-item-or-at-child ()
+ "Move to the end of the item text, stops before the first child if any."
(let ((limit (org-list-bottom-point)))
(end-of-line)
(goto-char
@@ -629,6 +623,7 @@ in a plain list, or if this is the first item in the list."
"Go to the beginning item of the current list or sublist.
Return point."
(interactive)
+ (org-beginning-of-item)
(let ((limit (org-list-top-point))
(move-up (lambda (pos bound)
;; prev-p: any item of same level before ?
@@ -734,7 +729,7 @@ invisible."
;; if we're in a description list, ask for the new term.
(let ((desc-text (when (save-excursion
(and (org-beginning-of-item)
- (org-at-description-p)))
+ (org-at-item-description-p)))
(concat (read-string "Term: ") " :: "))))
(org-list-insert-item-generic
(point) (and checkbox (not desc-text)) desc-text)))))
@@ -803,10 +798,10 @@ children. Return t if sucessful."
(origin-ind (save-excursion
(goto-char (org-list-top-point))
(org-get-indentation)))
- beg end ind ind1 ind-pos bullet delta ind-down ind-up firstp)
- (setq firstp (org-first-list-item-p))
+ beg end ind ind1 ind-pos bullet delta ind-down ind-up)
(setq end (and (org-region-active-p) (region-end)))
- ;; If moving a subtree, don't drain other items on the way.
+ ;; If moving a subtree, don't drag additional items on subsequent
+ ;; moves.
(if (and (memq last-command '(org-shiftmetaright org-shiftmetaleft))
(memq this-command '(org-shiftmetaright org-shiftmetaleft)))
(setq beg org-last-indent-begin-marker
@@ -814,9 +809,7 @@ children. Return t if sucessful."
(org-beginning-of-item)
(setq beg (move-marker org-last-indent-begin-marker (point)))
;; Determine end point of indentation
- (if no-subtree
- (org-end-of-item-text-before-children)
- (org-end-of-item))
+ (if no-subtree (org-end-of-item-or-at-child) (org-end-of-item))
(setq end (move-marker org-last-indent-end-marker (or end (point)))))
;; Get some information
(goto-char beg)
@@ -848,14 +841,14 @@ children. Return t if sucessful."
(goto-char pos)
(error "Cannot outdent beyond top level item"))
;; 3. Do not indent the first item of a list.
- ((and firstp (> delta 0))
+ ((and (org-list-first-item-p) (> delta 0))
(goto-char pos)
(error "Cannot indent the beginning of a sublist"))
;; 4. Do not outdent item that has children without moving.
;; In the case of a subtree, make sure the check applies to
;; its last item.
((and (< delta 0)
- (save-excursion (goto-char (1- end)) (org-item-has-children-p)))
+ (save-excursion (goto-char (1- end)) (org-item-has-child-p)))
(goto-char pos)
(error "Cannot outdent an item having children")))))
;; Replace bullet of current item with the bullet it is going to
@@ -890,19 +883,19 @@ children. Return t if sucessful."
(and (> arg 0)
(cdr (assoc bullet org-list-demote-modify-bullet))))
(save-excursion
- (when (org-item-has-children-p)
+ (when (org-item-has-child-p)
;; Take care of child, or of every sublist if we're moving a
;; subtree.
- (org-end-of-item-text-before-children)
+ (org-end-of-item-or-at-child)
(if no-subtree
(org-fix-bullet-type)
(let ((fix-list (lambda (i)
- (when (org-first-list-item-p)
+ (when (org-list-first-item-p)
(org-fix-bullet-type
(and (> arg 0)
(cdr (assoc (org-get-bullet) org-list-demote-modify-bullet)))))
- (when (org-item-has-children-p)
- (org-end-of-item-text-before-children)
+ (when (org-item-has-child-p)
+ (org-end-of-item-or-at-child)
(org-apply-on-list fix-list nil)))))
(org-apply-on-list fix-list nil))))))
t)
@@ -954,9 +947,9 @@ Assumes cursor in item line."
(defun org-cycle-item-indentation ()
(let ((org-suppress-item-indentation t)
(org-adapt-indentation nil))
- (when (and (or (org-at-description-p) (org-at-item-checkbox-p) (org-at-item-p))
+ (when (and (or (org-at-item-description-p) (org-at-item-checkbox-p) (org-at-item-p))
(>= (match-end 0) (save-excursion
- (org-end-of-item-text-before-children)
+ (org-end-of-item-or-at-child)
(skip-chars-backward " \r\t\n")
(point))))
(setq this-command 'org-cycle-item-indentation)
@@ -971,7 +964,7 @@ Assumes cursor in item line."
(t (back-to-indentation)
(org-indent-to-column org-tab-ind-state)
(end-of-line)
- (org-maybe-renumber-ordered-list)
+ (org-fix-bullet-type)
;; Break cycle
(setq this-command 'identity)))
;; If a cycle has just started, try to indent first. If it
@@ -1094,10 +1087,10 @@ is an integer, 0 means `-', 1 means `+' etc. If WHICH is
;; Description items cannot be numbered
(unless (and bullet-rule-p
(or (eq org-plain-list-ordered-item-terminator ?.)
- (org-at-description-p))) '("1)"))
+ (org-at-item-description-p))) '("1)"))
(unless (and bullet-rule-p
(or (eq org-plain-list-ordered-item-terminator ?\))
- (org-at-description-p))) '("1."))))
+ (org-at-item-description-p))) '("1."))))
(len (length bullet-list))
(item-index (- len (length (member current bullet-list))))
(get-value (lambda (index) (nth (mod index len) bullet-list)))
@@ -1147,7 +1140,7 @@ text below the heading."
;; add a checkbox if point is not at a description item
(save-excursion
(goto-char (match-end 0))
- (if (org-at-description-p)
+ (if (org-at-item-description-p)
(error "Cannot add a checkbox in a description list")
(insert "[ ] ")))
(throw 'exit t))
@@ -1457,11 +1450,11 @@ sublevels as a list of strings."
(save-excursion
(beginning-of-line)
(setq ltype (cond ((looking-at-p "^[ \t]*[0-9]") 'ordered)
- ((org-at-description-p) 'descriptive)
+ ((org-at-item-description-p) 'descriptive)
(t 'unordered))))
(let* ((indent1 (org-get-indentation))
(nextitem (or (org-get-next-item (point) end) end))
- (item (org-trim (buffer-substring (point) (org-end-of-item-text-before-children))))
+ (item (org-trim (buffer-substring (point) (org-end-of-item-or-at-child))))
(nextindent (if (= (point) end) 0 (org-get-indentation)))
(item (if (string-match "^\\[\\([xX ]\\)\\]" item)
(replace-match (if (equal (match-string 1 item) " ")