View Issue Details

IDProjectCategoryView StatusLast Update
0001142WishesMacropublic2010-05-02 23:15
Reporterccaid Assigned Tovskirdin  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version2.0 
Fixed in Version2.0 
Summary0001142: Плавная горизонтальная прокрутка в редакторе
DescriptionТребуется инструментарий макроязыка Far для управления положением левой границы окна редактирования. Такой инструментарий может быть использован для реализации плавной горизонтальной прокрутки средствами макроязыка. Обсуждение на форуме: http://forum.farmanager.com/viewtopic.php?f=15&t=4708&start=0
TagsNo tags attached.
Build1188

Activities

vskirdin

2009-10-29 08:17

administrator   bugnote:0004372

тестируем:
http://skirda-file.googlecode.com/files/Macro_Editor.Pos.1.rar

Синтаксис:

N=Editor.Pos(Op,What[,Where])

Op: 0 - get, 1 - set
What:
   1 - CurLine
   2 - CurPos
   3 - CurTabPos
   4 - TopScreenLine
   5 - LeftPos
   6 - Overtype

Пример (при включенном ScrollLock клавиши Left/Right занимаются скроллллингом)

REGEDIT4

[HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\Right]
"Sequence"="$if(FLock(2,-1) == 1) Editor.Pos(1,5,Editor.Pos(0,5)+1); $else Right $end"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\Left]
"Sequence"="$if(FLock(2,-1) == 1) Editor.Pos(1,5,Editor.Pos(0,5)-1); $else Left $end"
"DisableOutput"=dword:00000001

ccaid

2009-10-29 13:57

reporter   bugnote:0004374

Last edited: 2009-10-29 13:58

супер
упрощенный вариант приведенного примера служит заменой гор. скроллинга EditCrutch'а:

[HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\AltShiftRight]
"Sequence"="Editor.Pos(1,5,Editor.Pos(0,5)+1);"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\AltShiftLeft]
"Sequence"="Editor.Pos(1,5,Editor.Pos(0,5)-1);"
"DisableOutput"=dword:00000001

vskirdin

2009-10-30 09:45

administrator   bugnote:0004382

Far 2.0 build 1188

Toxa

2009-10-30 11:55

reporter   bugnote:0004386

Ура, свершилось долгожданное! Спасибище!

Теперь по багам (TopScreenLine и LeftPos).

1.
> Return: для "set" - "угу" (1) или "не угу" (0)
Как минимум Editor.Pos(1, 4, %a) и Editor.Pos(1, 5, %a) возвращают всегда 1, то есть "угу", даже если смещения не произошло. Другие операции не проверял на предмет return.

2.
Editor.Pos(1, 5, %a) ведёт себя неадекватно при %a < 1. Остальное не проверял.

3.
Можно ли при превышении лимитов всё же производить сдвиг на максимально возможное значение, то есть пока курсор не упрётся в левую, правую, верхнюю или нижнюю границу экрана?

4.
Editor.Pos(1, 4, %a) — оставляет курсор в текущей строке
Editor.Pos(1, 5, %a) — перемещает курсор на столько же позиций, на сколько сдвинули прокрутку. Можно этого не делать? При желании всегда можно написать макрос.

Issue History

Date Modified Username Field Change
2009-10-28 18:06 ccaid New Issue
2009-10-29 06:21 vskirdin Category Editor => Macro
2009-10-29 06:21 vskirdin Summary Плавная горизонтальная прокрутка => Плавная горизонтальная прокрутка в редакторе
2009-10-29 06:21 vskirdin Status new => assigned
2009-10-29 06:21 vskirdin Assigned To => vskirdin
2009-10-29 08:17 vskirdin Note Added: 0004372
2009-10-29 13:57 ccaid Note Added: 0004374
2009-10-29 13:58 ccaid Note Edited: 0004374
2009-10-29 13:58 ccaid Note Edited: 0004374
2009-10-30 09:45 vskirdin Note Added: 0004382
2009-10-30 09:45 vskirdin Status assigned => feedback
2009-10-30 11:55 Toxa Note Added: 0004386
2010-05-02 23:15 alexy Build => 1188
2010-05-02 23:15 alexy Status feedback => closed
2010-05-02 23:15 alexy Resolution open => fixed
2010-05-02 23:15 alexy Fixed in Version => 2.0