emacs-lsp / lsp-ui

UI integrations for lsp-mode
https://emacs-lsp.github.io/lsp-ui
GNU General Public License v3.0
1.03k stars 141 forks source link

Prevent parent window margins from being used in UI doc child frame. #773

Closed brownts closed 2 months ago

brownts commented 2 months ago

When margins are used in the main window (such as Flymake/Flycheck diagnostic indicators in the margin instead of the fringe), causing left-margin-width and/or right-margin-width in the parent to be non-zero, the child frame was seeing those margins and text was being wrapped incorrectly.

The child frame is sized to handle the amount of text on a line (up to lsp-ui-doc-max-width) and then fill-region is used to hard-wrap the text. The computation of the size of the frame assumes there are no fringes or margins which consume part of this frame. However, when the margin was visible in the child frame, it was causing text to be soft-wrapped prior to the hard-wrap.

This change sets the margin sizes to 0 in the buffer of the child frame and then forces the window of the child frame to utilize these settings, preventing parent margins from being displayed in the child frame.