diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index f9318e10a..c6e7f0f5e 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4923,7 +4923,7 @@ See `org-agenda-skip-if' for details." (org-agenda-skip-if nil conditions)) (defun org-agenda-skip-subtree-if (&rest conditions) - "Skip entry if any of CONDITIONS is true. + "Skip subtree if any of CONDITIONS is true. See `org-agenda-skip-if' for details." (org-agenda-skip-if t conditions)) diff --git a/lisp/org-src.el b/lisp/org-src.el index d1f687996..b99fe1216 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -577,14 +577,6 @@ the language, a switch telling if the content should be in a single line." (pos (point)) re1 re2 single beg end lang lfmt match-re1 ind entry) (catch 'exit - (when (org-at-table.el-p) - (re-search-backward "^[\t]*[^ \t|\\+]" nil t) - (setq beg (1+ (point-at-eol))) - (goto-char beg) - (or (re-search-forward "^[\t]*[^ \t|\\+]" nil t) - (progn (goto-char (point-max)) (newline))) - (setq end (1- (point-at-bol))) - (throw 'exit (list beg end 'table.el nil nil 0))) (while (setq entry (pop re-list)) (setq re1 (car entry) re2 (nth 1 entry) lang (nth 2 entry) single (nth 3 entry)) @@ -615,7 +607,15 @@ the language, a switch telling if the content should be in a single line." (throw 'exit (list (match-end 0) end (org-edit-src-get-lang lang) - single lfmt ind)))))))))))) + single lfmt ind))))))))) + (when (org-at-table.el-p) + (re-search-backward "^[\t]*[^ \t|\\+]" nil t) + (setq beg (1+ (point-at-eol))) + (goto-char beg) + (or (re-search-forward "^[\t]*[^ \t|\\+]" nil t) + (progn (goto-char (point-max)) (newline))) + (setq end (1- (point-at-bol))) + (throw 'exit (list beg end 'table.el nil nil 0)))))) (defun org-edit-src-get-lang (lang) "Extract the src language." @@ -737,8 +737,10 @@ with \",*\", \",#+\", \",,*\" and \",,#+\"." (unless (or single preserve-indentation (= total-nindent 0)) (setq indent (make-string total-nindent ?\ )) (goto-char (point-min)) - (while (re-search-forward "^" nil t) - (replace-match indent))) + (while (re-search-forward "^" nil t) + (if (not (looking-at "$")) + (replace-match indent) + (forward-char 1)))) (if (org-bound-and-true-p org-edit-src-picture) (setq total-nindent (+ total-nindent 2))) (setq code (buffer-string)) diff --git a/lisp/org.el b/lisp/org.el index 2f3820f2a..8d1140b5d 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7641,7 +7641,7 @@ This is important for non-interactive uses of the command." (let ((itemp (org-in-item-p)) (may-split (org-get-alist-option org-M-RET-may-split-line 'headline)) (respect-content (or org-insert-heading-respect-content - (equal arg '(16)))) + (equal arg '(4)))) (initial-content "") (adjust-empty-lines t)) @@ -7664,6 +7664,10 @@ This is important for non-interactive uses of the command." (org-insert-item)) (t + ;; Maybe move at the end of the subtree + (when (equal arg '(16)) + (org-up-heading-safe) + (org-end-of-subtree t)) ;; Insert a heading (save-restriction (widen) @@ -7858,8 +7862,8 @@ This is a list with the following elements: (defun org-insert-todo-heading (arg &optional force-heading) "Insert a new heading with the same level and TODO state as current heading. If the heading has no TODO state, or if the state is DONE, use the first -state (TODO by default). Also one prefix arg, force first state. With two -prefix args, force inserting at the end of the parent subtree." +state (TODO by default). Also with one prefix arg, force first state. With +two prefix args, force inserting at the end of the parent subtree." (interactive "P") (when (or force-heading (not (org-insert-item 'checkbox))) (org-insert-heading (or (and (equal arg '(16)) '(16)) @@ -7870,7 +7874,7 @@ prefix args, force inserting at the end of the parent subtree." (looking-at org-todo-line-regexp)) (let* ((new-mark-x - (if (or arg + (if (or (equal arg '(4)) (not (match-beginning 2)) (member (match-string 2) org-done-keywords)) (car org-todo-keywords-1) @@ -9230,9 +9234,10 @@ definitions." (string-match (cdr rr) (symbol-name major-mode))) (and (eq (car rr) 'in-buffer) (string-match (cdr rr) (buffer-name))) - (when (and (eq (car rr) 'not-in-file) + (if (and (eq (car rr) 'not-in-file) (buffer-file-name)) - (not (string-match (cdr rr) (buffer-file-name)))) + (not (string-match (cdr rr) (buffer-file-name))) + t) (when (eq (car rr) 'not-in-mode) (not (string-match (cdr rr) (symbol-name major-mode)))) (when (eq (car rr) 'not-in-buffer) @@ -15895,13 +15900,16 @@ in the current file." "In the current entry, delete PROPERTY." (interactive (let* ((completion-ignore-case t) - (prop (org-icompleting-read "Property: " - (org-entry-properties nil 'standard)))) + (cat (org-entry-get (point) "CATEGORY")) + (props0 (org-entry-properties nil 'standard)) + (props (if cat props0 + (delete `("CATEGORY" . ,(org-get-category)) props0))) + (prop (if (< 1 (length props)) + (org-icompleting-read "Property: " props nil t) + (caar props)))) (list prop))) - (message "Property %s %s" property - (if (org-entry-delete nil property) - "deleted" - "was not present in the entry"))) + (if (org-entry-delete nil property delete-empty-drawer) + (message "Property %s deleted" property))) (defun org-delete-property-globally (property) "Remove PROPERTY globally, from all entries."