Hello! When I want to remove most but not all of the signs from a buffer, I loop over a list of the signs' ids and execute `sign unplace id` for each one.
However this can be quite slow and cause a noticeable lag in the UI. I don't know how to profile Vim itself (as opposed to Vimscript, which is well documented). Instead I looked at the code and found the `sign unplace` implementation [1]. It calls `buf_delsign()` [2] and `update_debug_sign()` [3]. As far as I can tell, each `sign unplace` triggers a full redraw of all windows showing the sign. Would it be feasible to redraw only the sign columns? I imagine that would be far less expensive. I was also wondering whether it would be feasible to extend `sign unplace` to accept a list of ids, and remove all of them before redrawing the relevant windows once? Many thanks in advance! Yours, Andy Stewart [1] https://github.com/vim/vim/blob/8a3bb56230d220b8e1b4dcca517ed95f5341b8c7/src/ex_cmds.c#L7724-L7735 [2] https://github.com/vim/vim/blob/8a3bb56230d220b8e1b4dcca517ed95f5341b8c7/src/buffer.c#L5911-L5949 [3] https://github.com/vim/vim/blob/f708ac592f47100a36f2bc12ec98ea6357fdfa27/src/screen.c#L971-L1025 -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
