Highlighting The Current Line - Progress Report

49 views
Skip to first unread message

tbp1...@gmail.com

unread,
Aug 26, 2021, 5:25:26 PM8/26/21
to leo-editor
@ekr asked me to see about getting Leo's body editor to highlight the current line.  This was in response to a request in Issue 2150.  I've made some progress, which I report here.  I'd say it's about 3/4 of the way there.

I have a working script that, when run, highlights the cursor line in the visible node's body.  Here's what is left to do:

1. The highlight color isn't visible for very dark or very light background colors.  Currently the highlight color is a modification of the text background color as specified in the theme's stylesheet.  The way this color is arrived at needs to be improved .  And I'm not yet sure how to handle the case where no theme at all is in use (some people have tweaked Leo's colors without using a theme).

The highlight color scheme works well with the three tbp_xxx_solarized.leo themes.

2. The code needs to have a proper home.  Presumably this will be in the qt_text.py plugin.

3. The code needs to be hooked up to the body's cursor events so that the highlight code knows that it has to change lines.

Also, as a longer term matter, the code does not use any wrappers or abstractions, so it will only work for Qt-based Guis.  This can be addressed later, if it appears that there might be a viable non-Qt Gui version of Leo.

I've attached the current version of the code.  Open it in Leo.  Select a line in the top node.  Run the script by pressing CTRL-b.  The current line should highlight, although you may not be able to see it if you are using a very dark or light theme, including Leo's default theme.  Put the cursor on a different line in the same body.  Press CTRL-b again.  The highlight should shift to the new cursor line.

Please let me know if you find any problems (apart from the actual highlight color).
highlight_line.leo

tbp1...@gmail.com

unread,
Aug 26, 2021, 6:49:14 PM8/26/21
to leo-editor
I now have reasonable colors for highlighting of very dark and very light themes, as well as for no-theme color schemes that forgot to set the background color.

tbp1...@gmail.com

unread,
Aug 27, 2021, 9:45:12 AM8/27/21
to leo-editor
Here is the current version of the script, after some cleanup and reorganization, and one change to get it to work under PyQt6.11 as well as PyQt5.
highlight_line.leo

tbp1...@gmail.com

unread,
Sep 7, 2021, 3:20:56 PM9/7/21
to leo-editor
Here is a version that will highlight the current line for all outlines that are open at the time you run the script.  Open the outline, select the top-level node, and press <CTRL-b>.  If you open any other outlines after this, you will need to run it again. 

As a reminder, you can override the highlight color with a CSS color value of your choice by using the @string line-highlight-color setting.  Standard colors like blue  are understood, and also numerical values like #234567.  Other color expressions are not understood.

I expect line highlighting to get into Leo right after 6.4 is released - no more need to run a batch file.  It's working well on my system.

highlight_line.leo

tbp1...@gmail.com

unread,
Sep 7, 2021, 11:14:49 PM9/7/21
to leo-editor
For some reason, on Linux this script is only turning on highlighting for the rightmost outline (the last one opened).  This hasn't happened for me on Windows.  If I can work out how to correct this, I will post it here.

tbp1...@gmail.com

unread,
Sep 8, 2021, 12:14:54 AM9/8/21
to leo-editor
Never mind.  It doesn't work right on Windows either, and I can see why.  It only seemed to be working on Windows because of Operator Error(tm).

tbp1...@gmail.com

unread,
Sep 8, 2021, 12:48:48 AM9/8/21
to leo-editor
OK, I reworked the script and now it works as intended.  When you run it, the cursor line will highlight in all open outlines.  Run it by selecting the top level node and pressing <CTRL-b>.  I've tested it on Windows and Linux, and it worked for me on both.

Sorry for posting the earlier version!

highlight_line.leo
Reply all
Reply to author
Forward
0 new messages