[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#32536: displayed width of man pages

From: martin rudalics
Subject: bug#32536: displayed width of man pages
Date: Mon, 26 Nov 2018 10:32:05 +0100

>> I reported this in bug#32637, please see there.
> Thanks to Martin, a request in bug#32637 is now implemented and closed.

BTW, I plan to change the behavior of 'window-size-change-functions'
as follows.

(1) Run the buffer-local hook not only once for each buffer per frame
    but for each window showing the buffer.

(2) Run the buffer-local hook with the window as argument instead of
    the frame.

(3) Run the buffer-local hook for changes of the window's body size

(4) Run the buffer-local hook also when a window has not shown the
    buffer the last time this hook was run.

This way, a function that should be run whenever a window showing a
certain buffer is created/used or changes size is guaranteed to run in
each case and no further checks are needed.

All changes would be strictly based on 'local-variable-p' (and not on
'buffer-local-value') so any calls from 'window-size-change-functions'
in Emacs < 27.1 would remain unaffected.  WDYT?

> But still this bug#32536 can't be closed because I found an insolvable
> problem: 'M-x occur' is impossible to use on automatically resized
> Man-mode buffers: after running 'M-x occur' in a Man buffer, it splits
> the wide frame horizontally, that changes the width of the Man buffer,
> that causes window-size-change-functions to run, that starts a new
> Man process to reformat the Man buffer according to the new width of the
> Man buffer.  After that, typing RET on all matching lines in the Occur buffer
> will jump to the beginning of the Man buffer, because reformatting invalidates
> all markers that point from lines in the Occur buffer to lines in the
> Man buffer, i.e. typing 'C-u C-x =' on all lines in the Occur buffer
> displays the same:
>    There are text properties here:
>      occur-target         #<marker at 1 in *Man bash*>

So essentially you would have to rerun occur whenever the Man buffer
is reformatted.

Otherwise, I see only one way to handle this.  Before reformatting,
store the context of each marker (in a bookmark-like or diff-like
fashion) and restore the markers from that context.  The matching done
in the restore step would have to identify and ignore "soft" changes
of whitespace.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]