From b88c5464db2cb0d90d4f30e43b5e08d2b1c1fcea Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Thu, 15 May 2014 11:11:43 +0200 Subject: [PATCH 1/2] org.el (org-overview): Don't call `recenter' * org.el (org-overview): Don't call `recenter'. Thanks to Nicolas Richard for suggesting this. --- lisp/org.el | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 6eee9c070..14a35c0bc 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -6907,21 +6907,20 @@ With a numeric prefix, show all headlines up to that level." ;; buffers, where outline-regexp is needed. (defun org-overview () "Switch to overview mode, showing only top-level headlines. -Really, this shows all headlines with level equal or greater than the level +This shows all headlines with a level equal or greater than the level of the first headline in the buffer. This is important, because if the first headline is not level one, then (hide-sublevels 1) gives confusing results." (interactive) - (let ((pos (point)) - (level (save-excursion - (goto-char (point-min)) - (if (re-search-forward (concat "^" outline-regexp) nil t) - (progn - (goto-char (match-beginning 0)) - (funcall outline-level)))))) - (and level (hide-sublevels level)) - (recenter '(4)) - (goto-char pos))) + (save-excursion + (let ((level + (save-excursion + (goto-char (point-min)) + (if (re-search-forward (concat "^" outline-regexp) nil t) + (progn + (goto-char (match-beginning 0)) + (funcall outline-level)))))) + (and level (hide-sublevels level))))) (defun org-content (&optional arg) "Show all headlines in the buffer, like a table of contents. From 6c9b3ad91f6d3758471d194b75cbbf7a1030e18b Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Wed, 11 Jun 2014 17:45:13 +0200 Subject: [PATCH 2/2] org.el (org-insert-heading): Be more consistent in respecting content * org.el (org-insert-heading): With one universal prefix argument or `org-insert-heading-respect-content' set to `t', always respect the content, i.e. don't insert a list item and don't convert normal lines into headings. Update docstring. (org-insert-heading-respect-content): Remove unused arg. (org-insert-todo-heading-respect-content): Don't use `org-insert-todo-heading-respect-content', use the second argument of `org-insert-todo-heading' instead. * org-mobile.el (org-mobile-edit): Use only one arg. Thanks to Bernt Hansen for reporting this. --- lisp/org-mobile.el | 2 +- lisp/org.el | 34 +++++++++++++++------------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/lisp/org-mobile.el b/lisp/org-mobile.el index f59d1c479..41a995867 100644 --- a/lisp/org-mobile.el +++ b/lisp/org-mobile.el @@ -1074,7 +1074,7 @@ be returned that indicates what went wrong." ;; which prevents correct insertion when point is invisible (org-show-subtree) (end-of-line 1) - (org-insert-heading-respect-content '(16) t) + (org-insert-heading-respect-content t) (org-demote)) (beginning-of-line) (insert "* ")) diff --git a/lisp/org.el b/lisp/org.el index 14a35c0bc..1318ce19b 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7557,23 +7557,22 @@ When NEXT is non-nil, check the next line instead." (looking-at "[ \t]*$"))))) (defun org-insert-heading (&optional arg invisible-ok) - "Insert a new heading or item with same depth at point. + "Insert a new heading or an item with the same depth at point. If point is at the beginning of a heading or a list item, insert -a heading or a list item before it. - -If point is at the beginning of a normal line, turn this line -into a heading. +a new heading or a new item above the current one. If point is +at the beginning of a normal line, turn the line into a heading. If point is in the middle of a headline or a list item, split the headline or the item and create a new headline/item with the text in the current line after point \(see `org-M-RET-may-split-line' on how to modify this behavior). -With one universal prefix argument: If point is within a list, -insert a heading instead of a list item. Otherwise, set the -value of `org-insert-heading-respect-content' to t for the -duration of the command. +With one universal prefirx argument, set the user option +`org-insert-heading-respect-content' to t for the duration of +the command. This modifies the behavior described above in this +ways: on list items and at the beginning of normal lines, force +the insertion of a heading after the current subtree. With two universal prefix arguments, insert the heading at the end of the grandparent subtree. For example, if point is within @@ -7601,7 +7600,7 @@ command." (or arg (not itemp)))) ;; At beginning of buffer or so high up that only a heading ;; makes sense. - (cond ((bolp) (insert "* ")) + (cond ((and (bolp) (not respect-content)) (insert "* ")) ((not respect-content) (unless may-split (end-of-line)) (insert "\n* ")) @@ -7671,8 +7670,7 @@ command." ;; If we insert after content, move there and clean up whitespace (when (and respect-content - (not (org-looking-at-p org-outline-regexp-bol)) - (not (bolp))) + (not (org-looking-at-p org-outline-regexp-bol))) (if (not (org-before-first-heading-p)) (org-end-of-subtree nil t) (re-search-forward org-outline-regexp-bol) @@ -7807,17 +7805,15 @@ This is a list with the following elements: (org-move-subtree-down) (end-of-line 1)) -(defun org-insert-heading-respect-content (&optional arg invisible-ok) +(defun org-insert-heading-respect-content (&optional invisible-ok) "Insert heading with `org-insert-heading-respect-content' set to t." - (interactive "P") - (let ((org-insert-heading-respect-content t)) - (org-insert-heading '(4) invisible-ok))) + (interactive) + (org-insert-heading '(4) invisible-ok)) (defun org-insert-todo-heading-respect-content (&optional force-state) "Insert TODO heading with `org-insert-heading-respect-content' set to t." - (interactive "P") - (let ((org-insert-heading-respect-content t)) - (org-insert-todo-heading force-state '(4)))) + (interactive) + (org-insert-todo-heading force-state '(4))) (defun org-insert-todo-heading (arg &optional force-heading) "Insert a new heading with the same level and TODO state as current heading.