Отображение правой фиксированной границы в редакторе

Здесь обсуждается всё, что касается макросов.
Post Reply
brigadir
Posts: 3
Joined: Sat 16 Jul, 2016 15:15
Has thanked: 3 times

Отображение правой фиксированной границы в редакторе

Post by brigadir » Sat 16 Jul, 2016 15:26

Используется Far Manager 3.0.

Вопрос следующий: есть ли возможность во внутреннем редакторе показать правую фиксированную границу (скажем, 80 символов)? То есть нужна вертикальная линия определённого цвета, отличного от цвета основного фона, шириной в один символ, расположенная в определённой колонке.

Покопался в документации к Far Colorer... ничего похожего не нашёл. Возможно плохо искал.

Спасибо!

User avatar
HaRT
Moderator
Posts: 7987
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 98 times

Отображение правой фиксированной границы в редакторе

Post by HaRT » Sat 16 Jul, 2016 15:58

Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5048
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Отображение правой фиксированной границы в редакторе

Post by Shmuel » Sat 16 Jul, 2016 17:28

Можно скриптом. Если не нужно оперативно перемещать линию границы клавишами, то макрос внизу следует удалить или закомментировать.

brigadir
Posts: 3
Joined: Sat 16 Jul, 2016 15:15
Has thanked: 3 times

Отображение правой фиксированной границы в редакторе

Post by brigadir » Sat 16 Jul, 2016 17:48

@Shmuel Огромное спасибо! Легко и просто! То что надо! Спасибо!

Shmuel
Posts: 5048
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Отображение правой фиксированной границы в редакторе

Post by Shmuel » Sat 16 Jul, 2016 18:03

brigadir
Скрипт поправлен (неправильно обрабатывались строки, содержащие табы).

brigadir
Posts: 3
Joined: Sat 16 Jul, 2016 15:15
Has thanked: 3 times

Отображение правой фиксированной границы в редакторе

Post by brigadir » Sat 16 Jul, 2016 18:13

@Shmuel Теперь всё работает! :-) Ещё раз большое спасибо за помощь!

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

Отображение правой фиксированной границы в редакторе

Post by IgorZ » Tue 18 Oct, 2016 06:02

Понадобилось на ходу временно менять позицию правой границы. В результате слегка доработал данный скрипт. Теперь при перемещении границы в течение секунды (настраивается) после последнего нажатия клавиши перемещения границы в заголовке редактора выводится новая позиция. Также добавлено кнопкосочетание AltShiftHome для возврата на изначальную позицию.
Code: [Select all] [Expand/Collapse] [Download] (RightBorder.lua)
  1. -- Settings
  2.  
  3. local FileMask = "*"
  4.  
  5. local Color = 0xF0
  6.  
  7. local Pos = 151
  8.  
  9. local Period = 1000
  10.  
  11. -- End of settings
  12.  
  13. local F = far.Flags
  14.  
  15. local colorFlags = F.ECF_TABMARKFIRST + F.ECF_TABMARKCURRENT + F.ECF_AUTODELETE
  16.  
  17. --
  18.  
  19. local StartPos,EdTitle,LastTime,Timer = Pos
  20.  
  21. --
  22.  
  23. local function OnTimer()
  24.  
  25. if Far.UpTime-LastTime>Period then Timer.Close(Timer) Editor.SetTitle(EdTitle) EdTitle = nil end
  26.  
  27. end
  28.  
  29. --
  30.  
  31. Event {
  32.  
  33.   description="Add right border line";
  34.  
  35.   group="EditorEvent";
  36.  
  37.   filemask=FileMask;
  38.  
  39.   action=function(EditorId, Event)
  40.  
  41.     if Event==F.EE_REDRAW then
  42.  
  43.       local Info = editor.GetInfo(EditorId)
  44.  
  45.       local l1 = Info.TopScreenLine
  46.  
  47.       local l2 = math.min(l1+Info.WindowSizeY-1, Info.TotalLines)
  48.  
  49.       for line=l1,l2 do
  50.  
  51.         local p = editor.TabToReal(EditorId,line,Pos)
  52.  
  53.         editor.AddColor(EditorId,line,p,p,colorFlags,Color,100)
  54.  
  55.       end
  56.  
  57.     end
  58.  
  59.   end
  60.  
  61. }
  62.  
  63. --
  64.  
  65. Event{
  66.  
  67.   group="ExitFAR"; description="Close timer at exit"; condition=function() return Timer end;
  68.  
  69.   action=function() Timer.Close(Timer) mf.waitkey(Period+1) end;
  70.  
  71. }
  72.  
  73. --
  74.  
  75. Macro {
  76.  
  77.   description="Move border line";
  78.  
  79.   area="Editor"; key="AltShiftLeft AltShiftRight AltShiftHome";
  80.  
  81.   filemask=FileMask;
  82.  
  83.   action=function()
  84.  
  85.     local k = akey(1):sub(9) if k=="Home" then Pos=StartPos elseif k=="Left" then Pos=math.max(1,Pos-1) else Pos=Pos+1 end
  86.  
  87.     if not EdTitle then EdTitle = editor.GetTitle() Timer = far.Timer(Period,OnTimer) end
  88.  
  89.     Editor.SetTitle("VLine at : "..Pos.."   ") LastTime = Far.UpTime
  90.  
  91.   end;
  92.  
  93. }

Post Reply

Return to “Обсуждение макросов”

Who is online

Users browsing this forum: No registered users and 1 guest