mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 18:36:26 +00:00
Adapt indentation when bullet width changes.
Commands that modify the bullet style of a plain list, or that renumber such a list may lead to changes in the width of a bullet. The indentation of the lines below such a bullet is now automatically adapted. Also fixes a bug in bullet style cycling.
This commit is contained in:
parent
2d59facec7
commit
461c9df562
|
@ -1,3 +1,9 @@
|
|||
2008-11-20 Carsten Dominik <carsten.dominik@gmail.com>
|
||||
|
||||
* org-list.el (org-cycle-list-bullet, org-fix-bullet-type)
|
||||
(org-get-string-indentation): Adapt indentation when the bullet
|
||||
width changes.
|
||||
|
||||
2008-11-19 Carsten Dominik <carsten.dominik@gmail.com>
|
||||
|
||||
* org-remember.el (org-remember-finalize): Make interactive.
|
||||
|
@ -5,7 +11,7 @@
|
|||
(org-remember-finish-immediately): Call `org-remember-finalize'
|
||||
directly.
|
||||
(org-remember-finalize): Make `org-remember-finalize' an interactive
|
||||
function.
|
||||
function.
|
||||
|
||||
2008-11-18 Carsten Dominik <carsten.dominik@gmail.com>
|
||||
|
||||
|
|
|
@ -589,7 +589,7 @@ If WHICH is a string, use that as the new bullet. If WHICH is an integer,
|
|||
(beginning-of-line 1)
|
||||
(let ((current (match-string 0))
|
||||
(prevp (eq which 'previous))
|
||||
new)
|
||||
new old)
|
||||
(setq new (cond
|
||||
((and (numberp which)
|
||||
(nth (1- which) '("-" "+" "*" "1." "1)"))))
|
||||
|
@ -597,10 +597,14 @@ If WHICH is a string, use that as the new bullet. If WHICH is an integer,
|
|||
((string-match "\\+" current)
|
||||
(if prevp "-" (if (looking-at "\\S-") "1." "*")))
|
||||
((string-match "\\*" current) (if prevp "+" "1."))
|
||||
((string-match "\\." current) (if prevp "*" "1)"))
|
||||
((string-match "\\." current)
|
||||
(if prevp (if (looking-at "\\S-") "+" "*") "1)"))
|
||||
((string-match ")" current) (if prevp "1." "-"))
|
||||
(t (error "This should not happen"))))
|
||||
(and (looking-at "\\([ \t]*\\)\\S-+") (replace-match (concat "\\1" new)))
|
||||
(and (looking-at "\\([ \t]*\\)\\(\\S-+\\)")
|
||||
(setq old (match-string 2))
|
||||
(replace-match (concat "\\1" new)))
|
||||
(org-shift-item-indentation (- (length new) (length old)))
|
||||
(org-fix-bullet-type)
|
||||
(org-maybe-renumber-ordered-list))))
|
||||
|
||||
|
@ -629,7 +633,7 @@ with something like \"1.\" or \"2)\"."
|
|||
(buffer-substring (point-at-bol) (match-beginning 3))))
|
||||
;; (term (substring (match-string 3) -1))
|
||||
ind1 (n (1- arg))
|
||||
fmt bobp)
|
||||
fmt bobp old new)
|
||||
;; find where this list begins
|
||||
(org-beginning-of-item-list)
|
||||
(setq bobp (bobp))
|
||||
|
@ -647,20 +651,23 @@ with something like \"1.\" or \"2)\"."
|
|||
(if (> ind1 ind) (throw 'next t))
|
||||
(if (< ind1 ind) (throw 'exit t))
|
||||
(if (not (org-at-item-p)) (throw 'exit nil))
|
||||
(setq old (match-string 2))
|
||||
(delete-region (match-beginning 2) (match-end 2))
|
||||
(goto-char (match-beginning 2))
|
||||
(insert (format fmt (setq n (1+ n)))))))
|
||||
(insert (setq new (format fmt (setq n (1+ n)))))
|
||||
(org-shift-item-indentation (- (length new) (length old))))))
|
||||
(goto-line line)
|
||||
(org-move-to-column col)))
|
||||
|
||||
(defun org-fix-bullet-type ()
|
||||
"Make sure all items in this list have the same bullet as the firsst item."
|
||||
"Make sure all items in this list have the same bullet as the first item.
|
||||
Also, fix the indentation."
|
||||
(interactive)
|
||||
(unless (org-at-item-p) (error "This is not a list"))
|
||||
(let ((line (org-current-line))
|
||||
(col (current-column))
|
||||
(ind (current-indentation))
|
||||
ind1 bullet)
|
||||
ind1 bullet oldbullet)
|
||||
;; find where this list begins
|
||||
(org-beginning-of-item-list)
|
||||
(beginning-of-line 1)
|
||||
|
@ -681,12 +688,28 @@ with something like \"1.\" or \"2)\"."
|
|||
(if (not (org-at-item-p)) (throw 'exit nil))
|
||||
(skip-chars-forward " \t")
|
||||
(looking-at "\\S-+")
|
||||
(replace-match bullet))))
|
||||
(setq oldbullet (match-string 0))
|
||||
(replace-match bullet)
|
||||
(org-shift-item-indentation (- (length bullet) (length oldbullet))))))
|
||||
(goto-line line)
|
||||
(org-move-to-column col)
|
||||
(if (string-match "[0-9]" bullet)
|
||||
(org-renumber-ordered-list 1))))
|
||||
|
||||
(defun org-shift-item-indentation (delta)
|
||||
"Shift the indentation in current item by DELTA."
|
||||
(save-excursion
|
||||
(let ((beg (point-at-bol)) (end (progn (org-end-of-item) (point))))
|
||||
(goto-char end)
|
||||
(beginning-of-line 0)
|
||||
(while (> (point) beg)
|
||||
(when (looking-at "[ \t]*\\S-")
|
||||
;; this is not an empty line
|
||||
(setq i (org-get-indentation))
|
||||
(if (and (> i 0) (> (setq i (+ i delta)) 0))
|
||||
(indent-line-to i)))
|
||||
(beginning-of-line 0)))))
|
||||
|
||||
(defun org-beginning-of-item-list ()
|
||||
"Go to the beginning of the current item list.
|
||||
I.e. to the first item in this list."
|
||||
|
|
Loading…
Reference in a new issue