From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daimrod Subject: bug#17746: bug#17746: 24.4.50; "byte-code: `recenter'ing a window that does not display current-buffer." when composing a message Date: Thu, 12 Jun 2014 10:15:50 +0900 Message-ID: <87ppifudvd.fsf__27212.2853239582$1402535860$gmane$org@tanger.home> References: <837g4o1x3r.fsf@gnu.org> <87r42vlavi.fsf@geodiff-mac3.ulb.ac.be> <87ha3rxx79.fsf@bzg.ath.cx> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41044) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wutdc-0004aI-1J for emacs-orgmode@gnu.org; Wed, 11 Jun 2014 21:17:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WutdW-0000aK-J3 for emacs-orgmode@gnu.org; Wed, 11 Jun 2014 21:17:07 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87ha3rxx79.fsf@bzg.ath.cx> (Bastien's message of "Wed, 11 Jun 2014 17:50:02 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: Nicolas Richard , 17746@debbugs.gnu.org, David Griffiths --=-=-= Content-Type: text/plain Bastien writes: > Nicolas Richard writes: > >> David Griffiths writes: >>> Debugger entered--Lisp error: (error "`recenter'ing a window that does >>> not display current-buffer.") >>> recenter((4)) >>> org-overview() >> >> So that's a duplicate of #17724. It is fixed in org-mode (upstream) master >> branch. The easy fix is to use emacs-24 branch :) >> >> (otherwise just remove that call to recenter in org-overview). > > PS: The change about throwing an error when recentering a window > that does not display the current buffer breaks ~37 tests in Org > master branch, even with this fix. I need to digg this further. Err, what's the rational behind this change? In the meantime I've a simple fix (quickly tested for `org-agenda' which was also broken). --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Use-org-recenter-as-a-wrapper-around-recenter.patch >From 659bc5072253967ee2737f668c8ac035a4b8aa32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Jadi?= Date: Thu, 12 Jun 2014 10:14:16 +0900 Subject: [PATCH] Use `org-recenter' as a wrapper around `recenter' * lisp/org.el (org-recenter): New function that behaves exactly like `recenter' except that it sets the `current-buffer' to the buffer displayed by the selected window. (org-fix-ellipsis-at-bol) (org-optimize-window-after-visibility-change) (org-first-headline-recenter) * contrib/lisp/org-index.el (org-index) (org-index--create-new-index) (org-index--do-head) * contrib/lisp/org-toc.el (org-toc-goto) * lisp/org-agenda.el (org-agenda-list) (org-agenda-redo) (org-recenter-heading) (org-agenda-recenter) * lisp/org-bibtex.el (org-execute-file-search-in-bibtex) * lisp/org-clock.el (org-clock-goto) * lisp/org-table.el (org-table-show-reference): Use `org-recenter' instead of `recenter'. --- contrib/lisp/org-index.el | 12 ++++++------ contrib/lisp/org-toc.el | 4 ++-- lisp/org-agenda.el | 12 ++++++------ lisp/org-bibtex.el | 2 +- lisp/org-clock.el | 2 +- lisp/org-table.el | 4 ++-- lisp/org.el | 13 +++++++++---- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/contrib/lisp/org-index.el b/contrib/lisp/org-index.el index 64974eb..f77d64d 100644 --- a/contrib/lisp/org-index.el +++ b/contrib/lisp/org-index.el @@ -633,7 +633,7 @@ command \"head\" for reference \"237\". ;; simply go into table (goto-char org-index--below-hline) (show-subtree) - (recenter) + (org-recenter) (if what-adjusted (setq message-text "Nothing to search for; at index table") (setq message-text "At index table"))) @@ -1581,7 +1581,7 @@ retrieves the value of the count-column for reference 12. (org-id-goto id) (org-show-context) (show-subtree) - (recenter 1) + (org-recenter 1) (setq org-index-id id) (if (y-or-n-p "This is your new index table. It is already set for this emacs session. Do you want to save its id to make it available for future emacs sessions too ? ") (progn @@ -1598,7 +1598,7 @@ retrieves the value of the count-column for reference 12. (goto-char org-index--point) (org-show-context) (show-subtree) - (recenter 1) + (org-recenter 1) (delete-other-windows) ;; show new index (select-window (split-window-vertically)) @@ -1606,7 +1606,7 @@ retrieves the value of the count-column for reference 12. (org-id-goto id) (org-show-context) (show-subtree) - (recenter 1) + (org-recenter 1) (error "Please compare your existing index (upper window) and a temporary new one (lower window) to correct the previous error (\"%s\"); the explanations following the new index table should help." reason))))) @@ -1778,12 +1778,12 @@ retrieves the value of the count-column for reference 12. (pop-to-buffer buffer) (goto-char point) (org-reveal t) - (recenter) + (org-recenter) (pop-to-buffer "*org-index-occur*")) (org-pop-to-buffer-same-window buffer) (goto-char point) (org-reveal t) - (recenter))) + (org-recenter))) (setq message-text (format "Did not find '%s'" (or ref link)))))) message-text)) diff --git a/contrib/lisp/org-toc.el b/contrib/lisp/org-toc.el index 255b79e..e06de55 100644 --- a/contrib/lisp/org-toc.el +++ b/contrib/lisp/org-toc.el @@ -294,8 +294,8 @@ If CYCLE is non-nil, cycle the targeted subtree in the Org window." (org-show-entry)) (org-show-context))) (if org-toc-recenter-mode - (if (>= org-toc-recenter 1000) (recenter) - (recenter org-toc-recenter))) + (if (>= org-toc-recenter 1000) (org-recenter) + (org-recenter org-toc-recenter))) (cond ((null jump) (switch-to-buffer-other-window toc-buf)) ((eq jump 'delete) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 5e056b4..02c583b 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4348,11 +4348,11 @@ items if they have an hour specification like [h]h:mm." (unless (and (pos-visible-in-window-p (point-min)) (pos-visible-in-window-p (point-max))) (goto-char (1- (point-max))) - (recenter -1) + (org-recenter -1) (if (not (pos-visible-in-window-p (or start-pos 1))) (progn (goto-char (or start-pos 1)) - (recenter 1)))) + (org-recenter 1)))) (goto-char (or start-pos 1)) (add-text-properties (point-min) (point-max) `(org-agenda-type agenda @@ -7329,7 +7329,7 @@ in the agenda." (and top-hl-filter (org-agenda-filter-top-headline-apply top-hl-filter)) (and cols (org-called-interactively-p 'any) (org-agenda-columns)) (org-goto-line line) - (recenter window-line))) + (org-recenter window-line))) (defvar org-global-tags-completion-table nil) (defvar org-agenda-filter-form nil) @@ -8373,7 +8373,7 @@ When called with a prefix argument, include all archive files as well." (org-flag-heading nil)))) ; show the next heading (when (outline-invisible-p) (show-entry)) ; display invisible text - (recenter (/ (window-height) 2)) + (org-recenter (/ (window-height) 2)) (org-back-to-heading t) (if (re-search-forward org-complex-heading-regexp nil t) (goto-char (match-beginning 4))) @@ -8697,7 +8697,7 @@ if it was hidden in the outline." (defun org-recenter-heading (n) (save-excursion (org-back-to-heading) - (recenter n))) + (org-recenter n))) (defvar org-agenda-cycle-counter nil) (defun org-agenda-cycle-show (&optional n) @@ -8728,7 +8728,7 @@ docstring of `org-agenda-show-1'." (interactive "P") (let ((win (selected-window))) (org-agenda-goto t) - (recenter arg) + (org-recenter arg) (select-window win))) (defun org-agenda-show-mouse (ev) diff --git a/lisp/org-bibtex.el b/lisp/org-bibtex.el index 3efee73..8bcd04e 100644 --- a/lisp/org-bibtex.el +++ b/lisp/org-bibtex.el @@ -540,7 +540,7 @@ With optional argument OPTIONAL, also prompt for optional fields." (with-current-buffer b (goto-char p) (bibtex-url))) - (recenter 0)) ; Move entry start to beginning of window + (org-recenter 0)) ; Move entry start to beginning of window ;; return t to indicate that the search is done. t)) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 3c7abd5..9323bd5 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -1702,7 +1702,7 @@ With prefix arg SELECT, offer recently clocked tasks for selection." (org-show-entry) (org-back-to-heading t) (org-cycle-hide-drawers 'children) - (recenter org-clock-goto-before-context) + (org-recenter org-clock-goto-before-context) (org-reveal) (if recent (message "No running clock, this is the most recently clocked task")) diff --git a/lisp/org-table.el b/lisp/org-table.el index 8cd8f8b..8c9e667 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -3935,9 +3935,9 @@ With prefix ARG, apply the new formulas to the table." (push org-table-current-begin-pos org-show-positions) (let ((min (apply 'min org-show-positions)) (max (apply 'max org-show-positions))) - (goto-char min) (recenter 0) + (goto-char min) (org-recenter 0) (goto-char max) - (or (pos-visible-in-window-p max) (recenter -1)))) + (or (pos-visible-in-window-p max) (org-recenter -1)))) (select-window win)))) (defun org-table-force-dataline () diff --git a/lisp/org.el b/lisp/org.el index 874440b..b9a81b9 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5575,7 +5575,7 @@ The following commands are available: :parents (list text-mode-abbrev-table))) (defsubst org-fix-ellipsis-at-bol () - (save-excursion (goto-char (window-start)) (recenter 0))) + (save-excursion (goto-char (window-start)) (org-recenter 0))) (defun org-find-invisible-foreground () (let ((candidates (remove @@ -7059,8 +7059,8 @@ This function is the default value of the hook `org-cycle-hook'." ((eq state 'content) nil) ((eq state 'all) nil) ((eq state 'folded) nil) - ((eq state 'children) (or (org-subtree-end-visible-p) (recenter 1))) - ((eq state 'subtree) (or (org-subtree-end-visible-p) (recenter 1)))))) + ((eq state 'children) (or (org-subtree-end-visible-p) (org-recenter 1))) + ((eq state 'subtree) (or (org-subtree-end-visible-p) (org-recenter 1)))))) (defun org-remove-empty-overlays-at (pos) "Remove outline overlays that do not contain non-white stuff." @@ -7251,7 +7251,7 @@ Optional argument N means put the headline into the Nth line of the window." (goto-char (point-min)) (when (re-search-forward (concat "^\\(" org-outline-regexp "\\)") nil t) (beginning-of-line) - (recenter (prefix-numeric-value N)))) + (org-recenter (prefix-numeric-value N)))) ;;; Saving and restoring visibility @@ -23324,6 +23324,11 @@ package ox-bibtex by Taru Karttunen." (call-interactively 'reftex-citation))) ;;;; Functions extending outline functionality +(defun org-recenter (&optional arg) + "Like `recenter' but ensure that the `current-buffer' is +properly set." + (with-current-buffer (window-buffer) + (recenter arg))) (defun org-beginning-of-line (&optional arg) "Go to the beginning of the current line. If that is invisible, continue -- 1.8.0.2722.gc0242e5 --=-=-= Content-Type: text/plain -- Daimrod/Greg --=-=-=--