Jump to content
Sign in to follow this  
Beege

SciTE Caret Color Switch - Use Both Dark and Light Themes

Recommended Posts

Beege

If you have every taken the time to set up a nice dark theme for your scite editor, you probably noticed shortly after a small yet really annoying flaw. For what ever reason, scite is not set up to let you change the caret fore color and caret line color per language. This really sucks if say you want to edit a properties file or any of the many other languages that Scite currently is setup to support. Pretty much all the other languages are set as light theme so unless you change the theme for those file types, you end up with something like below:
 
post-8949-0-96975500-1392529505_thumb.pn
 
To get around this I came up with the following that seems to work pretty well.  
 
Add the following properties to SciteUser.properties file (Options -> Open User Options File)

# The default values will be used only if an extention value is not defined.
caret.default.line.back=#FFFED8
caret.default.fore=#000000

# Set Caret Colors per extention. You can add other extentions as well
caret.au3.fore=#FFFFFF
caret.au3.line.back=#111111

 
Next open SciteStartup.lua (Options -> Open Lua Startup Script) and add the following to the list of files loaded:

LoadLuaFile("CaretSwitch.lua")

 
Now add CaretSwitch.lua file to your ~program files~AutoIt3SciTELUA directory. 

CaretOnSwitchFile = EventClass:new(Common)
CaretOnFileOpen = EventClass:new(Common)

function CaretOnFileOpen:OnOpen(fn)

    --~ split up fullfilepath
    path, filename, ext = string.match(fn, "(.-)([^\\]-([^\\%.]+))$")

    if props['caret.' .. ext .. '.line.back'] ~= '' then
        props['caret.line.back'] = props['caret.' .. ext .. '.line.back']
    else
        props['caret.line.back'] = props['caret.default.line.back']
    end

    if props['caret.' .. ext .. '.fore'] ~= '' then
        props['caret.fore'] = props['caret.' .. ext .. '.fore']
    else
        props['caret.fore'] = props['caret.default.fore']
    end

end

function CaretOnSwitchFile:OnSwitchFile(fn)

    path, filename, ext = string.match(fn, "(.-)([^\\]-([^\\%.]+))$")

    if props['caret.' .. ext .. '.line.back'] ~= '' then
        lineback = props['caret.' .. ext .. '.line.back']
    else
        lineback = props['caret.default.line.back']
    end

    if props['caret.' .. ext .. '.fore'] ~= '' then
        fore = props['caret.' .. ext .. '.fore']
    else
        fore = props['caret.default.fore']
    end

    --~ these commands takes color values as BBGGRR even though all property colors are defined as RRGGBB. Brilliant!!
    editor.CaretLineBack = tonumber(string.sub(lineback, 6, 7) .. string.sub(lineback, 4, 5) .. string.sub(lineback, 2, 3), 16)
    editor.CaretFore = tonumber(string.sub(fore, 6, 7) .. string.sub(fore, 4, 5) .. string.sub(fore, 2, 3), 16)

end

 
Last restart SciTE and that should be it. Let me know if you have any issues. Thanks

PS: If someone jumps on here and shows me a option to fix this I swear I'm going to stab my self in the eye. I searched for like 2 hours before coming to the conclusion that these values cant be set per language:mad: 
 
CaretSwitch.zip

Share this post


Link to post
Share on other sites
Jos

A couple of suggestions:

The current setup in the Full SciTE installer has an PersonalTools.lua file in the users directory which can be used for this type of scripts.This avoids having to update the SciteStartup.lua after each installation of the full installer.

You could also retrieve the current lexername in stead of using the File Extension as some Lexers use multiple different file extensions.

Using OnStartUp will run the function when changing FileTabs in SciTE in case you have multiple files open.

Something like this:

function PersonalTools:OnStartup()
    if props['caret.' .. editor.LexerLanguage .. '.line.back'] ~= '' then
        props['caret.line.back'] = props['caret.' .. editor.LexerLanguage .. '.line.back']
    else
        props['caret.line.back'] = props['caret.default.line.back']
    end

    if props['caret.' .. editor.LexerLanguage .. '.fore'] ~= '' then
        props['caret.fore'] = props['caret.' .. editor.LexerLanguage .. '.fore']
    else
        props['caret.fore'] = props['caret.default.fore']
    end
end

Cheers

Jos

Edited by Jos
  • Like 1

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
gil900

thanks.

my way is to open Magnifier and then Ctrl+Alt+I

or use Magnifier in this >way

Share this post


Link to post
Share on other sites
Beege

A couple of suggestions:

The current setup in the Full SciTE installer has an PersonalTools.lua file in the users directory which can be used for this type of scripts.This avoids having to update the SciteStartup.lua after each installation of the full installer.

You could also retrieve the current lexername in stead of using the File Extension as some Lexers use multiple different file extensions.

Using OnStartUp will run the function when changing FileTabs in SciTE in case you have multiple files open.

 

Something like this:

function PersonalTools:OnStartup()
    if props['caret.' .. editor.LexerLanguage .. '.line.back'] ~= '' then
        props['caret.line.back'] = props['caret.' .. editor.LexerLanguage .. '.line.back']
    else
        props['caret.line.back'] = props['caret.default.line.back']
    end

    if props['caret.' .. editor.LexerLanguage .. '.fore'] ~= '' then
        props['caret.fore'] = props['caret.' .. editor.LexerLanguage .. '.fore']
    else
        props['caret.fore'] = props['caret.default.fore']
    end
end

Nice! Thanks for the suggestions. Ill defiantly revise to utilize the personal tools. For using the editor.lexerlanguage, I actually started out doing it that way but then changed to extention only for simplicity until I can get a table made of what extensions use what lexername, and then tie those into some properties in the user.properties with some notes. Html lexer (aka hypertext) for example includes a ton while xml has its own little catagory and I could easily see myself guessing they were in the same group if not looking at the properties file. Thanks again for the Tips

Edited by Beege

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • cheeroke
      By cheeroke
      Hi I am not sure how to call it properly, but for those of you who use SciTE, when you typing built in function and about to pass parameters to it you can see popup with all the ones which can be passed.
      Question: how to create something like that for my own functions?
       
      Thanks
    • therks
      By therks
      Does SciTE have string or number ids for the recent file menu items?
      I was hoping to add shortcuts (using the user.shortcuts properties) to the most recent item, but the documentation doesn't list any id's for those items (unless I overlooked?).
      Also, did anyone else notice that the index listing for the SciTE doc doesn't work properly?
      It appears it's linking to this: mk:@MSITStore:C:\Program%20Files\AutoIt3\SciTE\Scite4AutoIt3.chm::/SciTEDocumentation.html
      When it should be this? mk:@MSITStore:C:\Program%20Files\AutoIt3\SciTE\Scite4AutoIt3.chm::/Scitedoc/SciTEDoc.html
    • BrewManNH
      By BrewManNH
      I was looking for a toolbar modification for SciTE and I was checking various versions of SciTE that were available on the internet. They all had some problems for how I wanted to use the editor, so I looked here to see if there were any toolbar modifications for Scite. I found one very old script by YogiBear (Volly) from 2006 that looked promising, though there were issues with it. I decided to see what I could do to modify this script, and make some improvements to it if possible. This script is the result of that work.

      It's not perfect and definitely could use some tweaking, but I thought that it had matured enough, and was mostly stable enough to release the updated version.

      Changelog:
      Version 2.0.1
      Minor update to remove all the old Obfuscator directives and replaced them with #Au3Stripper directives instead. I also corrected a minor bug that only showed up for me on one computer I tried this on, and caused the tool bar to crash for others as well.
      SciTE toolbar version 2.0
      Changed the settings values to use constants instead of 'magic numbers' The icons on the toolbar weren't lining up with the separator characters or with the toolbar GUI because they weren't set with the resize setting for the icons, only for the separators. Changed to using arrays for everything, it makes it a lot easier to loop through the controls Added a line to use an alternate path to the SciTE program, so you can start it using, for example, the portable version instead of installed version for those that don't install AutoIt and/or SciTE4AutoIt3. It will accept a commmand line parameter that points to the SciTE executable. Removed a lot of Global variables by moving the GUI creation and monitoring to the Main function and passing variables from it. I embedded the icon files into the script so that there isn't a separate download of the icon files used here. Saves download time and makes the package smaller. Modification of tools is easier because the icon names, tooltip text, and SciTE command codes are saved in the INI file upon first start up. These can be modified after the script has been run once, even after it's been compiled, by changing the ini file information, you can modify this script to automate it, or you can change it manually in any text editor. The icon files are now using, in just my opinion, better looking icons, after all it's been 7 years and icon files have matured. I have included a file with all of the constants that SciTE uses for its menu commands which comes from the SciTE source file "scite.h", so you can use this file to help you modify the commands that the toolbar works with, by figuring out what each of these values represent in SciTE. The core of the script is pretty much the same, I've just fixed a couple of issues that it had, tweaked a few things, added some new functionality and "prettied" it up a bit.

      If anyone has any suggestions as to improvements, bugs/bugfixes, etc. please let me know.

       
      scitetoolbar.zip
    • Aguilucho
      By Aguilucho
      Greetings to the AutoIt community.
      I hope that nobody considers my question insulting but I searched 'SciTEConfig.exe' and I did not find it anywhere;
      although it is mentioned, it seems like a myth, I can not see if it exists.
      On the other hand, I have downloaded the compressed archive (from ... autoit-script-editor/downloads) 'SciTEConfig_Source.zip'
      Does not contain any .exe either but does have a 'SciteConfig.au3' which, I suppose, has replaced the .exe because on the internet I only find it as malware.
      My problem is: My applications to unzip .zip archives, they can see what files SciTEConfig_Source.zip have but they can not unzip it: 'Unknown method' says WinRar.
          I have downloaded it again, in case it had been damaged but the result is always the same.

      My question is: Is the archive 'SciTEConfig_Source.zip' damaged or does it have any other method of compression?
      I need it to learn how to configure SciTE (lite).
      Thankful to the developers of AutoIt and to the community.
      Regards
       
    • BigDaddyO
      By BigDaddyO
      I'm trying to use Maps for the first time (Never knew they were available until I read through the release notes) but Scite keeps throwing an error on run about Variable subscript badly formatted.
      I tried to run the script directly from AutoIT and it also threw an error.
      I've got the latest 3.3.14.5 and just re-installed Scite.  
      Below is a quick sample that I put together that throws the error in Scite as well as if I run it with the AutoIT Run a script.
      #include <GUIConstantsEx.au3> Local $mBug[] ;==> Variable subscript badly formatted $mBug.Width = 1100 $mBug.Height = 700 $mBug.GUI = GUICreate("Defect Details", $mBug.Width, $mBug.Height) GUISetState(@SW_SHOW, $mBug.GUI) ;~ $iW = 1100 ;~ $iH = 700 ;~ $hGUI = GUICreate("Defect Details", $iW, $iH) ;~ GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd  
      I tried searching the forum for Maps and it's only talking about Beta which I don't have installed.
       
      so, what am I doing wrong?
       
      Thanks,
      Mike
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.