diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2014-04-28 18:38:31 +0200 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2014-05-07 17:39:52 +0200 |
commit | 7515066d9411f8902f46d5d5a0806ac021ce0cc3 (patch) | |
tree | 7b5d754abb0938660232187dc7f8ea58c4f1c530 | |
parent | fe129fb352245e6392e98e2f84645ef861b4c966 (diff) | |
download | org-mode-7515066d9411f8902f46d5d5a0806ac021ce0cc3.tar.gz |
Rewrite `org-indent-drawer' and `org-indent-block'
* lisp/org.el (org-indent-block, org-indent-drawer): Rewrite functions.
-rw-r--r-- | lisp/org.el | 75 |
1 files changed, 34 insertions, 41 deletions
diff --git a/lisp/org.el b/lisp/org.el index 1cd021e..c16fab0 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -22382,47 +22382,6 @@ Also align node properties according to `org-property-format'." (org--align-node-property) (org-move-to-column column))))))))) -(defun org-indent-drawer () - "Indent the drawer at point." - (interactive) - (let ((p (point)) - (e (and (save-excursion (re-search-forward ":END:" nil t)) - (match-end 0))) - (folded - (save-excursion - (end-of-line) - (when (overlays-at (point)) - (member 'invisible (overlay-properties - (car (overlays-at (point))))))))) - (when folded (org-cycle)) - (indent-for-tab-command) - (while (and (move-beginning-of-line 2) (< (point) e)) - (indent-for-tab-command)) - (goto-char p) - (when folded (org-cycle))) - (message "Drawer at point indented")) - -(defun org-indent-block () - "Indent the block at point." - (interactive) - (let ((p (point)) - (case-fold-search t) - (e (and (save-excursion (re-search-forward "#\\+end_?\\(?:[a-z]+\\)?" nil t)) - (match-end 0))) - (folded - (save-excursion - (end-of-line) - (when (overlays-at (point)) - (member 'invisible (overlay-properties - (car (overlays-at (point))))))))) - (when folded (org-cycle)) - (indent-for-tab-command) - (while (and (move-beginning-of-line 2) (< (point) e)) - (indent-for-tab-command)) - (goto-char p) - (when folded (org-cycle))) - (message "Block at point indented")) - (defun org-indent-region (start end) "Indent each non-blank line in the region. Called from a program, START and END specify the region to @@ -22520,6 +22479,40 @@ assumed to be significant there." (set-marker element-end nil)))) (set-marker end nil)))) +(defun org-indent-drawer () + "Indent the drawer at point." + (interactive) + (unless (save-excursion + (beginning-of-line) + (org-looking-at-p org-drawer-regexp)) + (user-error "Not at a drawer")) + (let ((element (org-element-at-point))) + (unless (memq (org-element-type element) '(drawer property-drawer)) + (user-error "Not at a drawer")) + (org-with-wide-buffer + (org-indent-region (org-element-property :begin element) + (org-element-property :end element)))) + (message "Drawer at point indented")) + +(defun org-indent-block () + "Indent the block at point." + (interactive) + (unless (save-excursion + (beginning-of-line) + (let ((case-fold-search t)) + (org-looking-at-p "[ \t]*#\\+\\(begin\\|end\\)_"))) + (user-error "Not at a block")) + (let ((element (org-element-at-point))) + (unless (memq (org-element-type element) + '(comment-block center-block example-block export-block + quote-block special-block src-block + verse-block)) + (user-error "Not at a block")) + (org-with-wide-buffer + (org-indent-region (org-element-property :begin element) + (org-element-property :end element)))) + (message "Block at point indented")) + ;;; Filling |