forked from mirrors/org-mode
Fix infinite loop when rescheduling from agenda with tags filtering.
This commit is contained in:
parent
0cfc76df3f
commit
f3dda5ba2c
|
@ -4128,7 +4128,7 @@ With prefix argument STRIP, remove all lines that do have the tag."
|
|||
org-tag-alist-for-agenda ""))
|
||||
(setq char (read-char))
|
||||
(when (equal char ?\t)
|
||||
(unless (local-variable-p 'org-global-tags-completion-table)
|
||||
(unless (local-variable-p 'org-global-tags-completion-table (current-buffer))
|
||||
(org-set-local 'org-global-tags-completion-table
|
||||
(org-global-tags-completion-table)))
|
||||
(let ((completion-ignore-case t))
|
||||
|
@ -4168,6 +4168,17 @@ With prefix argument STRIP, remove all lines that do have the tag."
|
|||
(org-overlay-put ov 'type 'tags-filter)
|
||||
(push ov org-agenda-filter-overlays)))
|
||||
|
||||
(defun org-agenda-fix-tags-filter-overlays-at (&optional pos)
|
||||
(setq pos (or pos (point)))
|
||||
(save-excursion
|
||||
(dolist (ov (org-overlays-at pos))
|
||||
(when (and (org-overlay-get ov 'invisible)
|
||||
(eq (org-overlay-get ov 'type) 'tags-filter))
|
||||
(goto-char pos)
|
||||
(if (< (org-overlay-start ov) (point-at-eol))
|
||||
(org-move-overlay ov (point-at-eol)
|
||||
(org-overlay-end ov)))))))
|
||||
|
||||
(defun org-agenda-filter-by-tag-show-all ()
|
||||
(mapc 'org-delete-overlay org-agenda-filter-overlays)
|
||||
(setq org-agenda-filter-overlays nil))
|
||||
|
@ -5002,13 +5013,15 @@ the same tree node, and the headline of the tree node in the Org-mode file."
|
|||
(defun org-agenda-show-new-time (marker stamp &optional prefix)
|
||||
"Show new date stamp via text properties."
|
||||
;; We use text properties to make this undoable
|
||||
(let ((inhibit-read-only t))
|
||||
(let ((inhibit-read-only t)
|
||||
(buffer-invisibility-spec))
|
||||
(setq stamp (concat " " prefix " => " stamp))
|
||||
(save-excursion
|
||||
(goto-char (point-max))
|
||||
(while (not (bobp))
|
||||
(when (equal marker (get-text-property (point) 'org-marker))
|
||||
(org-move-to-column (- (window-width) (length stamp)) t)
|
||||
(org-agenda-fix-tags-filter-overlays-at (point))
|
||||
(if (featurep 'xemacs)
|
||||
;; Use `duplicable' property to trigger undo recording
|
||||
(let ((ex (make-extent nil nil))
|
||||
|
|
|
@ -176,7 +176,7 @@ that can be added."
|
|||
((fboundp 'add-to-invisibility-spec)
|
||||
(add-to-invisibility-spec arg))
|
||||
((or (null buffer-invisibility-spec) (eq buffer-invisibility-spec t))
|
||||
(setq buffer-invisibility-spec (list arg)))
|
||||
(setq buffer-invisibility-spec (list arg)))
|
||||
(t
|
||||
(setq buffer-invisibility-spec
|
||||
(cons arg buffer-invisibility-spec)))))
|
||||
|
@ -197,56 +197,56 @@ that can be added."
|
|||
|
||||
(defun org-indent-to-column (column &optional minimum buffer)
|
||||
"Work around a bug with extents with invisibility in XEmacs."
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property
|
||||
ext 'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(indent-to-column column minimum buffer)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(indent-to-column column minimum)))
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property
|
||||
ext 'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(indent-to-column column minimum buffer)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(indent-to-column column minimum)))
|
||||
|
||||
(defun org-indent-line-to (column)
|
||||
"Work around a bug with extents with invisibility in XEmacs."
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property
|
||||
ext 'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(indent-line-to column)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(indent-line-to column)))
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property
|
||||
ext 'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(indent-line-to column)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(indent-line-to column)))
|
||||
|
||||
(defun org-move-to-column (column &optional force buffer)
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property ext
|
||||
'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(move-to-column column force buffer)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(move-to-column column force)))
|
||||
(if (featurep 'xemacs)
|
||||
(let ((ext-inv (extent-list
|
||||
nil (point-at-bol) (point-at-eol)
|
||||
'all-extents-closed-open 'invisible))
|
||||
ext-inv-specs)
|
||||
(dolist (ext ext-inv)
|
||||
(when (extent-property ext 'invisible)
|
||||
(add-to-list 'ext-inv-specs (list ext (extent-property ext
|
||||
'invisible)))
|
||||
(set-extent-property ext 'invisible nil)))
|
||||
(move-to-column column force buffer)
|
||||
(dolist (ext-inv-spec ext-inv-specs)
|
||||
(set-extent-property (car ext-inv-spec) 'invisible
|
||||
(cadr ext-inv-spec))))
|
||||
(move-to-column column force)))
|
||||
|
||||
(defun org-get-x-clipboard-compat (value)
|
||||
"Get the clipboard value on XEmacs or Emacs 21"
|
||||
|
@ -263,7 +263,7 @@ that can be added."
|
|||
(if (featurep 'xemacs)
|
||||
(add-text-properties 0 (length string) properties string)
|
||||
(apply 'propertize string properties)))
|
||||
|
||||
|
||||
(provide 'org-compat)
|
||||
|
||||
;; arch-tag: a0a0579f-e68c-4bdf-9e55-93768b846bbe
|
||||
|
|
Loading…
Reference in New Issue