用Lua改变Scite的样式?

我想要改变Scite的样式,让它以默认的样式启动 - 但我还想通过运行一个命令来改变到不同的暗色样式。因此,在一些调查后,我找到了这个脚本 sciteLuaFunctions.lua,并将它映射到了工具菜单中的一个命令上:

  -- http://scite.ruteam.ru/archive/1.59
local function encodeRGB(color)
  if string.sub(color,1,1)=="#" and string.len(color)>6 then
    return tonumber(string.sub(color,6,7)..string.sub(color,4,5)..string.sub(color,2,3), 16)
  else
    return color
  end
end

function ChangeToDarkTheme()
  -- http://www.scintilla.org/PaneAPI.html
  -- http://www.scintilla.org/SciTEFAQ.html "如何更改SciTE的背景颜色为黑色?"
  -- http://www.scintilla.org/SciTEDoc.html
  -- 颜色计算方法如下:
--~   mycolorRGB = { r = 100, g = 100, b = 100 }                        -- ok
--~   mycolor = (mycolorRGB.r+(mycolorRGB.g*256)+(mycolorRGB.b*65536))  -- ok
  -- 但也可以使用encodeRGB:
  myBackgroundColor = encodeRGB("#282C34")
  editor.StyleBack[32] = myBackgroundColor -- 修改背景,但没有文字
  editor.StyleBack[33] = myBackgroundColor -- 修改行号的背景
end

然后,当我运行这个命令时,我会得到类似这样的结果:

scite-bckg

问题是:

  • 默认背景只更改未被(文字)字符占据的背景(包括换行符/空行);我也想要修改这个背景颜色

    • 编辑:感谢 @EgorSkriptunoff 的评论,通过手动调整值,我设法获得了整个背景(至少在编辑 sciteLuaFunctions.lua 时,所以对于 lua 语法着色,但对于 cpp 也有效)使用以下代码:

      
      editor.StyleBack[32] = myBackgroundColor -- 修改背景,但没有文字
      editor.StyleBack[33] = myBackgroundColor -- 修改行号的背景
      editor.StyleBack[0] = myBackgroundColor -- 修改空格/缩进的背景
      editor.StyleBack[2] = myBackgroundColor -- 修改注释行的背景
      editor.StyleBack[4] = myBackgroundColor -- 修改未注释行中数字的背景
      editor.StyleBack[5] = myBackgroundColor -- 修改未注释行中关键字(函数)的背景
      editor.StyleBack[6] = myBackgroundColor -- 修改未注释行中字符串("...") 的背景
      editor.StyleBack[10] = myBackgroundColor -- 修改未注释行中等号等的背景
      editor.StyleBack[11] = myBackgroundColor -- 修改未注释行中普通变量的背景
      editor.StyleBack[14] = myBackgroundColor -- 修改未注释行中预定义函数(string.sub)的背景
      

      ... 但我不知道样式2、4、5、6等在哪里记录,因为它们不在上面代码段中链接的FAQ或其他文档中。所以,是否有数字样式的列表,以及它们的作用是什么?

  • 如果我打开一个新的标签页,新的样式会消失 - 如果我回到之前的标签页,新的样式也会消失;相反,我希望样式在明确重置脚本或关闭之前一直存在。

是否可以通过一个Lua脚本实现这些,如果可以,该怎么办?

点赞