Scite Make Monospace

lua-users home
wiki

This script works like Ctrl+F11 (Use Monospace Font) except that it can be called by Lua scripts. SciteExtMan is required. This script is convenient if a user wants to use scripts that need monospace mode (such as SciteTicTacToe) but otherwise uses proportional fonts at other times. By running MakeMonospace right after initializing a monospace-mandatory script, the user no longer has to hit Ctrl+F11.

With a bit more code, it should be possible to automatically make certain file types open in monospace. This would allow for a mixed monospace-proportional font environment without the hassle of hitting Ctrl+F11 all the time.

The script forces a buffer into monospace mode by overriding the usual style properties. It uses extman to hook to OnSwitchFile.


-----------------------------------------------------------------------

-- makes a buffer monospace <khman@users.sf.net> public domain 20060906

-----------------------------------------------------------------------

-- [[

scite_Command('Make Monospace|MakeMonospace|Ctrl+8')



function MakeMonospace()

  local MonoFont, MonoSize = "Courier New", 9

  local SIG = "MakeMonospace"

  local function AllMono()

    for i = 0, 127 do

      editor.StyleFont[i] = MonoFont

      editor.StyleSize[i] = MonoSize

    end

    editor:Colourise(0, -1)

  end

  scite_OnSwitchFile(function() if buffer[SIG] then AllMono() return true end end)

  buffer[SIG] = true

  AllMono()

end

--]]


If you want to get the monospace font name and size from the current editor properties, you can add the following:

  -- retrieve monospace font information

  local StyleMono = {}

  local monoprop = props["font.monospace"]

  for style, value in string.gfind(monoprop, "([^,:]+):([^,]+)") do

    StyleMono[style] = value

  end

  -- grab styles, assuming they are defined

  MonoFont = StyleMono.font

  MonoSize = tonumber(StyleMono.size)


If you just want scite to start all new buffers in monospace mode, try this (requires SciteExtMan):

function ToggleMonospace()

    scite.MenuCommand(450)

    return false

end



scite_OnOpen(ToggleMonospace)

To ensure newly created files start in monospace mode, try

function ToggleMonospace()

  -- the buffer table is provided for user data

  if buffer and not buffer["MadeMonospace"] then

    scite.MenuCommand(IDM_MONOFONT)

    buffer["MadeMonospace"] = true

  end

end



function OpenMonospace(filename) 

  if filename ~= "" then 

    ToggleMonospace()

  end

end



-- OnOpen event (with empty filename) is generated when SciTE starts

--  with new file, but not when File->New creates another new file tab.

scite_OnOpen(OpenMonospace)  -- for opening existing file

scite_OnSavePointLeft(ToggleMonospace) -- first character typed in new file


RecentChanges · preferences
edit · history
Last edited March 9, 2010 5:49 am GMT (diff)