-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Width doesn't seem to adapt properly for multi-line items #68
Comments
Just to clarify, you make eldoc-box show three different doc at three different locations, first and last small, the second one large, and for the third one the child frame doesn't automatically shrink? Could you show some screenshots? That'll be extra clear. |
No, I mean in sequence. Hovering different things in eglot. I'll add some
screenshots.
…On Mon, Apr 3, 2023, 22:10 Yuan Fu ***@***.***> wrote:
Just to clarify, you make eldoc-box show three different doc at three
different locations, first and last small, the second one large, and for
the third one the child frame doesn't automatically shrink? Could you show
some screenshots? That'll be extra clear.
—
Reply to this email directly, view it on GitHub
<#68 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA52CQ5JZXM4YNASG7BOKZ3W7MVCLANCNFSM6AAAAAAWQ4QOFI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Thanks. I think this is due to the markdown separator. You see, one of the prettifier replaces markdown's separator with a strike-through line with a display text property. The display property specifies that the width of the strike though is the width of the window. That might interfered with Anyway, I added a (harmless) workaround that should fix this. |
The workaround probably just exposed this problem, rather than caused it. Could you give me a reproduce recipe? |
I've noticed the issue @mrsch mentioned happening when using the pure GTK version of emacs (I'm using sway; not sure about X or other compositors). it doesn't always happen, but it happens eventually if I just move point around enough. It goes away if I get rid of the workaround (but then of course I get the behavior the workaround fixes). I think something doesn't like setting the frame width rapidly and it gets 'stuck' on the first frame size. |
Aha, it seems to consistently happen if and only if the new documentation frame would be the same size as the old one (moving point within an identifier, is one way to trigger this, but I verified it's not the only way). I think this is an emacs bug. |
There appears to be an Emacs bug where in some environments, calling set-frame-size to another size and then to the original size will result in the second call not taking effect. This means that the workaround for casouri#68 causes the frame to shrink if moving between doc items with the same doc size (or within the same doc item). Instead, we just temporarily shrink the Markdown separators to make the window size calculations work, then restore them afterwards. * eldoc-box.el (eldoc-box--update-childframe-geometry): Adjust markdown separator width instead of setting the frame to a tiny size.
I added a workaround for the workaround. Not sure it'll fix the problem though, let's see :-) |
Oops, I just see your patch. Let me have a look! |
Just tried and (message (format "%s %s" (frame-height frame) (frame-width frame)))
(run-with-idle-timer 0 nil (lambda () (message (format "%s %s" (frame-height frame) (frame-width frame))))) then the first message has the size from |
Ok, I pushed another fix following your idea. Could you give it a try? |
It works! And that's a much cleaner solution. |
Great. Thanks for your PR, and the detailed commit message, I appreciate it 😊 |
If the first item shown is small it will display fine, but if then show a bigger item, and go back to the smaller item, then the width doesn't adjust down to the smaller size. Only the height changes.
However, if I make it show a single-line item, then the width goes back down.
The text was updated successfully, but these errors were encountered: