- -- Options
- OptCaseSensitive=true
- -- End of options
- F=far.Flags
- color = far.AdvControl(F.ACTL_GETCOLOR, far.Colors.COL_EDITORTEXT)
- color.ForegroundColor, color.BackgroundColor = color.BackgroundColor, color.ForegroundColor
- colorguid=win.Uuid "507CFA2A-3BA3-4f2b-8A80-318F5A831235"
- words={}
- tt = 0
- Macro
- area:"Editor"
- key:"F9"
- description:"Color Word Under Cursor"
- action:->
- ei=editor.GetInfo!
- id=ei.EditorID
- if words[id] then
- words[id]=nil
- Menu.Show(tt)
- tt = 0
- else
- pos=ei.CurPos
- line=editor.GetString!.StringText
- if pos<=line\len()+1
- slab=pos>1 and line\sub(1,pos-1)\match('[%w_]+$') or ""
- tail=line\sub(pos)\match('^[%w_]+') or ""
- if slab~="" or tail~="" then words[id]=OptCaseSensitive and slab..tail or (slab..tail)\lower!
- Event
- group:"EditorEvent"
- description: "Color Word"
- action:(id,event,param)->
- if event==F.EE_REDRAW
- if words[id]
- t0 = far.FarClock!
- ei=editor.GetInfo id
- start,finish=ei.TopScreenLine,math.min ei.TopScreenLine+ei.WindowSizeY,ei.TotalLines
- for ii=start,finish
- line,pos=editor.GetString(id,ii).StringText,1
- while true
- jj,kk,curr=line\cfind("([%w_]+)",pos)
- if not jj then break
- if not OptCaseSensitive then curr=curr\lower!
- if curr==words[id] then editor.AddColor id,ii,jj,kk,F.ECF_AUTODELETE,color,100,colorguid
- pos=kk+1
- tt = math.max(tt, far.FarClock! - t0)
- elseif event==F.EE_CLOSE then words[id]=nil
Latest post of the previous page:
Да что вы. Тут пока немноголюдно. Огромная благодарность. Теперь можно написать красивый Java format на lua и надеяться, что семантика ненумерованных аргументов совпадёт. Ещё раз спасибо за скорый ответ по существу.buniak_a_h wrote: ↑Sat 30 Jan, 2021 01:01 Я прошу прощения, если уже ответили. Всю конференцию не стал читать.
Суть: шаблоны вида "%номер аргумента$обычный шаблон" выделяются и подставляются до передачи строки формата в string.format, но с теми самыми шаблонами. То есть string.format применяется к каждому нумерованному шаблону, а потом, уже без них, к целому.
TODO: Надо мне подумать, что будет, если три %, то есть %%% и более. Наверное, не стоит мне также работать за lua, перечисляя все известные метки формата — просто одна лат. буква ([A-z]).