Hi All, The export dispatcher scrolling seems to interact unfavorably general Emacs scroll option "scroll-margin", in particular, setting it a positive displaces the dispatcher upwards, eventually hiding completely the options section at the top, even when there is space in the frame/window to fit the whole dispatcher. You can scroll back to it, but it seems both inconvenient and hard to find if one does not know "it should be there". I hope the following minimal example is reproducible by you. But it might not be, given the interaction with frame size, results may well depend on things which are not controlled. Besides, even though I managed to come up with this reproducible (to me) example, I'm still not sure I grasp properly the interactions involved. So, in case you cannot reproduce, I can provide further info as requested. Start "emacs -Q" and do some setup: #+begin_src emacs-lisp (package-initialize) (add-to-list 'default-frame-alist '(height . 42)) (setq scroll-margin 3) #+end_src Find an Org file in other frame with "C-x 5 f". Run org-export-dispatch ("C-c C-e"), and see that the top of the dispatcher is not visible. Best, Gustavo. Emacs : GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-11-11 Package: Org mode version 9.3.6 (9.3.6-17-g389288-elpaplus @ /home/gustavo/.emacs.d/elpa/org-plus-contrib-20200224/) current state: ============== (setq org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-link-shell-confirm-function 'yes-or-no-p org-metadown-hook '(org-babel-pop-to-session-maybe) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-html-format-inlinetask-function 'org-html-format-inlinetask-default-function org-odt-format-headline-function 'org-odt-format-headline-default-function org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-show-all append local] 5] #[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes org-eldoc-load) org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"] org-archive-hook '(org-attach-archive-delete-maybe) org-confirm-elisp-link-function 'yes-or-no-p org-agenda-before-write-hook '(org-agenda-add-entry-text) org-metaup-hook '(org-babel-load-in-session-maybe) org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"] org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ CONTENTS)"] org-babel-pre-tangle-hook '(save-buffer) org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-ascii-format-drawer-function #[771 "\207" [] 4 "\n\n(fn NAME CONTENTS WIDTH)"] org-src-lang-modes '(("arduino" . arduino) ("redis" . redis) ("php" . php) ("C" . c) ("C++" . c++) ("asymptote" . asy) ("bash" . sh) ("beamer" . latex) ("calc" . fundamental) ("cpp" . c++) ("ditaa" . artist) ("dot" . fundamental) ("elisp" . emacs-lisp) ("ocaml" . tuareg) ("screen" . shell-script) ("shell" . sh) ("sqlite" . sql)) org-occur-hook '(org-first-headline-recenter) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) org-odt-format-inlinetask-function 'org-odt-format-inlinetask-default-function org-confirm-shell-link-function 'yes-or-no-p org-link-parameters '(("attachment" :follow org-attach-open-link :export org-attach-export-link :complete org-attach-complete-link) ("id" :follow org-id-open) ("eww" :follow eww :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link) ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export) ("info" :follow org-info-open :export org-info-export :store org-info-store-link) ("gnus" :follow org-gnus-open :store org-gnus-store-link) ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link) ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link) ("w3m" :store org-w3m-store-link) ("elfeed" :follow elfeed-link-open :store elfeed-link-store-link) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell) ("news" :follow #[257 "\301\300\302Q!\207" ["news" browse-url ":"] 5 "\n\n(fn URL)"] ) ("mailto" :follow #[257 "\301\300\302Q!\207" ["mailto" browse-url ":"] 5 "\n\n(fn URL)"] ) ("https" :follow #[257 "\301\300\302Q!\207" ["https" browse-url ":"] 5 "\n\n(fn URL)"] ) ("http" :follow #[257 "\301\300\302Q!\207" ["http" browse-url ":"] 5 "\n\n(fn URL)"] ) ("ftp" :follow #[257 "\301\300\302Q!\207" ["ftp" browse-url ":"] 5 "\n\n(fn URL)"] ) ("help" :follow org-link--open-help) ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp) ("doi" :follow org-link--open-doi)) org-latex-format-headline-function 'org-latex-format-headline-default-function org-link-elisp-confirm-function 'yes-or-no-p org-latex-format-inlinetask-function 'org-latex-format-inlinetask-default-function org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"] org-html-format-headline-function 'org-html-format-headline-default-function )
Hi All, this is a friendly ping on this export dispatcher regression. (Considering https://lists.gnu.org/archive/html/emacs-orgmode/2020-06/msg00038.html). I just re-tested it now and the recipe provided in the report still generates the issue in the current weekly build. Of course, if anyone is already onto it, please disregard the ping. Best, Gustavo. On Sat, Feb 29 2020, Gustavo Barros wrote: > Hi All, > > The export dispatcher scrolling seems to interact unfavorably general > Emacs > scroll option "scroll-margin", in particular, setting it a positive > displaces > the dispatcher upwards, eventually hiding completely the options > section at > the top, even when there is space in the frame/window to fit the whole > dispatcher. You can scroll back to it, but it seems both inconvenient > and hard > to find if one does not know "it should be there". > > I hope the following minimal example is reproducible by you. But it > might not > be, given the interaction with frame size, results may well depend on > things > which are not controlled. Besides, even though I managed to come up > with this > reproducible (to me) example, I'm still not sure I grasp properly the > interactions involved. So, in case you cannot reproduce, I can > provide > further info as requested. > > Start "emacs -Q" and do some setup: > > #+begin_src emacs-lisp > (package-initialize) > (add-to-list 'default-frame-alist '(height . 42)) > (setq scroll-margin 3) > #+end_src > > Find an Org file in other frame with "C-x 5 f". Run > org-export-dispatch ("C-c > C-e"), and see that the top of the dispatcher is not visible. > > Best, > Gustavo. > > > Emacs : GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version > 3.22.30) > of 2019-11-11 > Package: Org mode version 9.3.6 (9.3.6-17-g389288-elpaplus @ > /home/gustavo/.emacs.d/elpa/org-plus-contrib-20200224/) > > current state: > ============== > (setq > org-src-mode-hook '(org-src-babel-configure-edit-buffer > org-src-mode-configure-edit-buffer) > org-link-shell-confirm-function 'yes-or-no-p > org-metadown-hook '(org-babel-pop-to-session-maybe) > org-clock-out-hook '(org-clock-remove-empty-clock-drawer) > org-html-format-inlinetask-function > 'org-html-format-inlinetask-default-function > org-odt-format-headline-function > 'org-odt-format-headline-default-function > org-ascii-format-inlinetask-function > 'org-ascii-format-inlinetask-default > org-mode-hook '(#[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook org-show-all append > local] > 5] > #[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook > org-babel-show-result-all > append local] > 5] > org-babel-result-hide-spec org-babel-hide-all-hashes > org-eldoc-load) > org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME > CONTENTS)"] > org-archive-hook '(org-attach-archive-delete-maybe) > org-confirm-elisp-link-function 'yes-or-no-p > org-agenda-before-write-hook '(org-agenda-add-entry-text) > org-metaup-hook '(org-babel-load-in-session-maybe) > org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 > "\n\n(fn > ENTRY)"] > org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ > CONTENTS)"] > org-babel-pre-tangle-hook '(save-buffer) > org-tab-first-hook '(org-babel-hide-result-toggle-maybe > org-babel-header-arg-expand) > org-ascii-format-drawer-function #[771 "\207" [] 4 "\n\n(fn NAME > CONTENTS > WIDTH)"] > org-src-lang-modes '(("arduino" . arduino) ("redis" . redis) ("php" > . php) > ("C" . c) ("C++" . c++) ("asymptote" . asy) > ("bash" . sh) ("beamer" . latex) ("calc" > . fundamental) > ("cpp" . c++) ("ditaa" . artist) ("dot" > . fundamental) > ("elisp" . emacs-lisp) ("ocaml" . tuareg) > ("screen" . shell-script) ("shell" . sh) > ("sqlite" . sql)) > org-occur-hook '(org-first-headline-recenter) > org-cycle-hook '(org-cycle-hide-archived-subtrees > org-cycle-show-empty-lines > org-optimize-window-after-visibility-change) > org-speed-command-hook '(org-speed-command-activate > org-babel-speed-command-activate) > org-odt-format-inlinetask-function > 'org-odt-format-inlinetask-default-function > org-confirm-shell-link-function 'yes-or-no-p > org-link-parameters '(("attachment" :follow org-attach-open-link > :export > org-attach-export-link :complete > org-attach-complete-link) > ("id" :follow org-id-open) > ("eww" :follow eww :store org-eww-store-link) > ("rmail" :follow org-rmail-open :store > org-rmail-store-link) > ("mhe" :follow org-mhe-open :store > org-mhe-store-link) > ("irc" :follow org-irc-visit :store > org-irc-store-link > :export org-irc-export) > ("info" :follow org-info-open :export > org-info-export > :store org-info-store-link) > ("gnus" :follow org-gnus-open :store > org-gnus-store-link) > ("docview" :follow org-docview-open :export > org-docview-export :store > org-docview-store-link) > ("bibtex" :follow org-bibtex-open :store > org-bibtex-store-link) > ("bbdb" :follow org-bbdb-open :export > org-bbdb-export > :complete org-bbdb-complete-link :store > org-bbdb-store-link) > ("w3m" :store org-w3m-store-link) > ("elfeed" :follow elfeed-link-open :store > elfeed-link-store-link) > ("file+sys") ("file+emacs") > ("shell" :follow org-link--open-shell) > ("news" :follow > #[257 "\301\300\302Q!\207" ["news" browse-url > ":"] 5 > "\n\n(fn URL)"] > ) > ("mailto" :follow > #[257 "\301\300\302Q!\207" ["mailto" browse-url > ":"] > 5 "\n\n(fn URL)"] > ) > ("https" :follow > #[257 "\301\300\302Q!\207" ["https" browse-url > ":"] > 5 "\n\n(fn URL)"] > ) > ("http" :follow > #[257 "\301\300\302Q!\207" ["http" browse-url > ":"] 5 > "\n\n(fn URL)"] > ) > ("ftp" :follow > #[257 "\301\300\302Q!\207" ["ftp" browse-url > ":"] 5 > "\n\n(fn URL)"] > ) > ("help" :follow org-link--open-help) > ("file" :complete org-link-complete-file) > ("elisp" :follow org-link--open-elisp) > ("doi" :follow org-link--open-doi)) > org-latex-format-headline-function > 'org-latex-format-headline-default-function > org-link-elisp-confirm-function 'yes-or-no-p > org-latex-format-inlinetask-function > 'org-latex-format-inlinetask-default-function > org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME > CONTENTS)"] > org-html-format-headline-function > 'org-html-format-headline-default-function > )
Hi Gustavo,
Gustavo Barros <gusbrs.2016@gmail.com> writes:
> this is a friendly ping on this export dispatcher regression.
> (Considering
> https://lists.gnu.org/archive/html/emacs-orgmode/2020-06/msg00038.html).
thanks for the ping.
It is on my radar but I didn't have time to look seriously into it.
I keep this in mind before 9.4.
--
Bastien
Gustavo Barros writes:
> this is a friendly ping on this export dispatcher regression.
> (Considering
> https://lists.gnu.org/archive/html/emacs-orgmode/2020-06/msg00038.html).
Hmm regression? Do you suspect this worked for you at one time? If so,
it'd be helpful if you tried to bisect the issue in the Git repo,
especially if others can't reproduce it.
I've tried to trigger it with your minimal configuration and haven't
observed the displacement you describe, even when making my frame height
very small.
[-- Attachment #1: Type: text/plain, Size: 2090 bytes --] Hi Kyle, thank you for looking into this. On Tue, Jun 09 2020 at 01:48, Kyle Meyer <kyle@kyleam.com> wrote: > Gustavo Barros writes: > >> this is a friendly ping on this export dispatcher regression. >> (Considering >> https://lists.gnu.org/archive/html/emacs-orgmode/2020-06/msg00038.html). > > Hmm regression? Do you suspect this worked for you at one time? If > so, > it'd be helpful if you tried to bisect the issue in the Git repo, > especially if others can't reproduce it. > Hmm. You are correct here. "Regression" was a presumption, as it used to work for me, but stopped doing so eventually. But I'd have a hard time telling you when, if you asked me. Still, I did try to narrow it down as you asked. And my first attempt was Emacs 26.3 with shipped-in Org version 9.1.9, and the behavior is already there. So, something else triggered this for me, but the behavior itself is old, not a regression. > I've tried to trigger it with your minimal configuration and haven't > observed the displacement you describe, even when making my frame > height > very small. I was afraid there might be things in the environment which could affect this (DE? distro? monitor size? Emacs configure options? I don't know), but it does reproduce every single time for me with the recipe I provided. Someone marked this as confirmed soon after I pinged, probably Bastien. Whoever did it, could you reproduce it? Anyway, I attach a couple of images of what happens when I follow the provided recipe. "figure 1" shows the state of the export dispatcher when it's called, the top part is hidden, and there is empty space below. Indeed, the dispatcher would fit the space, except that it is displaced. "figure 2" shows state after I hit "DEL", which is the expected initial state. I can then no longer go back to the state in "figure 1", as the dispatcher fits, and "SPC", "DEL", "C-n", "C-p" echo "beginning/end of buffer", as expected. If you'd like me to further investigate locally some possibility which might be relevant, just let me know. Best, Gustavo. [-- Attachment #2: figure 1.png --] [-- Type: image/png, Size: 45623 bytes --] [-- Attachment #3: figure 2.png --] [-- Type: image/png, Size: 68454 bytes --]
Gustavo Barros writes: > On Tue, Jun 09 2020 at 01:48, Kyle Meyer <kyle@kyleam.com> wrote: > >> I've tried to trigger it with your minimal configuration and haven't >> observed the displacement you describe, even when making my frame >> height >> very small. > > I was afraid there might be things in the environment which could affect > this (DE? distro? monitor size? Emacs configure options? I don't know), > but it does reproduce every single time for me with the recipe I > provided. I've managed to trigger it now. Your picture gave me the hint that maybe my "making my frame height very small" wasn't the thing to do. Plus I should have realized that the default-frame-alist in your minimal configuration probably isn't going to matter on my end because I use a tiling window manager. So here's what I could trigger it: (setq scroll-margin 1) ; or anything > 0 (setq display-buffer-base-action '(display-buffer-at-bottom)) For reasons I don't really understand, if I make my frame height small (say half my computer screen) the issue goes away. Anyway, I'm able to resolve the issues I see with this patch. Can you confirm that it fixes things on your end? -- >8 -- Subject: [PATCH] ox: Prevent dispatcher from starting in scrolled window * lisp/ox.el (org-export--dispatch-ui): Restore buffer position after inserting text to avoid auto-scrolling at start. When filling in the dispatch buffer, point ends up at the end of the buffer, which can cause the buffer to be re-centered on point when org-fit-window-to-buffer is called, in particular if scroll-margin is above zero and there is a vertical split. Avoid this by putting point where it was before the buffer was refreshed. Reported-by: Gustavo Barros <gusbrs.2016@gmail.com> https://orgmode.org/list/87tv3a56vv.fsf@gmail.com --- lisp/ox.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/ox.el b/lisp/ox.el index 869164737..456dd9bef 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -6878,10 +6878,12 @@ (defun org-export--dispatch-ui (options first-key expertp) (with-current-buffer "*Org Export Dispatcher*" ;; Refresh help. Maintain display continuity by re-visiting ;; previous window position. - (let ((pos (window-start))) + (let ((pt (point)) + (wstart (window-start))) (erase-buffer) (insert help) - (set-window-start nil pos))) + (goto-char pt) + (set-window-start nil wstart))) (org-fit-window-to-buffer) (org-export--dispatch-action standard-prompt allowed-keys entries options first-key expertp)))) base-commit: f471768a54d8921ff383516af6a605adc061af30 -- 2.26.2
Hi Kyle,
On Fri, 26 Jun 2020 at 22:03, Kyle Meyer <kyle@kyleam.com> wrote:
>
> I've managed to trigger it now. Your picture gave me the hint that
> maybe my "making my frame height very small" wasn't the thing to do.
> Plus I should have realized that the default-frame-alist in your
> minimal
> configuration probably isn't going to matter on my end because I use a
> tiling window manager. So here's what I could trigger it:
>
> (setq scroll-margin 1) ; or anything > 0
> (setq display-buffer-base-action '(display-buffer-at-bottom))
>
> For reasons I don't really understand, if I make my frame height small
> (say half my computer screen) the issue goes away.
>
> Anyway, I'm able to resolve the issues I see with this patch. Can you
> confirm that it fixes things on your end?
>
Nice that you could find a way to trigger it too. Indeed, that was a
tricky one to pin down.
And I'm glad to confirm the patch fixes things on my end for the recipe
provided in the report. Same as you, I don't fully understand the
interactions which trigger the issue, so I can only claim that "I can no
longer reproduce". Which is great, of course. But, as far as I
understand, the patch makes sense to me.
Thank you very much for sticking with me and finding a fix.
Best,
Gustavo.
Gustavo Barros writes:
> And I'm glad to confirm the patch fixes things on my end for the recipe
> provided in the report. Same as you, I don't fully understand the
> interactions which trigger the issue, so I can only claim that "I can no
> longer reproduce". Which is great, of course. But, as far as I
> understand, the patch makes sense to me.
>
> Thank you very much for sticking with me and finding a fix.
Thanks for confirming. Pushed (591ea3eaf).
Kyle Meyer <kyle@kyleam.com> writes: > Thanks for confirming. Pushed (591ea3eaf). Thanks! Closing this on https://updates.orgmode.org. -- Bastien