View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001972 | Far Manager | Macro | public | 2012-01-05 09:44 | 2012-03-05 07:53 |
Reporter | SUSim | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001972: ShiftHome и editor.sel(0,2) | ||||
Description | В редакторе макрофункция editor.sel(0,2) неправильно возвращает номер строки конца блока если выделение закончить по ShiftHome. | ||||
Steps To Reproduce | Открыть на редактирование файл и выполнить макрос: Home ShiftDown %t1=editor.sel(0,2)-editor.sel(0,0); ShiftHome %f1=editor.sel(0,2)-editor.sel(0,0); ShiftRight ShiftLeft %t2=editor.sel(0,2)-editor.sel(0,0); msgbox("Число выделенных строк", itoa(%t1)+" - правильно\n"+itoa(%f1)+" - неправильно после Home\n"+itoa(%t2)+" - снова правильно после право-лево") | ||||
Additional Information | это было и в 2.0 в большинстве случае лечится костылем $IF ((%t==1)&(%x2==0)&(%x0==1)&(%y2+1==%y0)) %comment="!!! Костыль !!! Баг FARa? (Если в конце выделения обычного блока нажать ShiftHome то editor.sel(0,2) вернет значение на 1 меньше чем должен.)"; ShiftRight ShiftLeft %x2=editor.sel(0,3); %y2=editor.sel(0,2); $END | ||||
Tags | No tags attached. | ||||
Build | 2480 | ||||
|
не совсем понимаю, что ты хочешь. разжуй. |
|
...по коду вижу, что для ShiftHome, если стартовая позиция равна 0 (т.е. курсор в начале строки), то для этой строки блок сбрасываем. (в 1.65 он просто не выделялся) |
|
Что значит сбрасывается, а если я Стрелкой подведу курсор в начало строки а не Хоме, то не сбрасывается? Курсор в начале сроки, жму шифтстрелкавниз (выделилась одна строка) editor.sel(0,2)-editor.sel(0,0)=1 всё правильно, жму ShiftHome внешне ничего не изменилось(на экране выделена та-же одна строка) а editor.sel(0,2)-editor.sel(0,0)=0 это НЕправильно, жму шифтстрелкавправо и шифтстрелкавлево внешне опять ничего не меняется а editor.sel(0,2)-editor.sel(0,0)=1 становится опять правильно. макрос посмотрите... |
|
курсор в начале первой строки жму ShiftDown выделилась одна строка курсор в начале следующей строки жму ShiftHome внешне ничего не изменилось - по прежнему выделена одна строка и курсор по прежнему в начале второй строки, а вот editor.sel говорит что конец выделения находится в 0 позиции _первой_ строки а начало в _первой_ позиции _первой_ строки!!! |
|
дооолго втюхивал, чтотытуттакоебеззнаковприпинаниянаписал. fixed. по первому - правильно я понимаю, что... вот это утверждение верно: "ShiftHome не должен сбрасывать блок, если курсор в начале строки стоит"? |
|
build 2355 Возвращаем поведение ShiftHome, как было до 1.7x build 1541. Теперь ShiftHome не сбрасывает выделение, если курсор стоит в начале строки. |
|
Я люблю из запятых только "..." :) По делу: Я не понимаю, что такое сбрасывать выделение/блок... (editor.sel(0,*) возвращает нули?) Короче: после ShiftHome editor.sel(0,*) работает неправильно! editor.sel(0,2) возвращает на Единицу меньше чем должен, и/или editor.sel(0,3) вместо 0 ВООБЩЕ возвращает -1 !!! Жду ночи (билда)! Завтра проверю... |
|
svs 10.01.2012 12:58:46 +0400 - build 2355 1. Mantis#0001972: ShiftHome и editor.sel(0,2) Возвращаем поведение ShiftHome, как было до 1.7x build 1541. Теперь ShiftHome не сбрасывает выделение, если курсор стоит в начале строки. 2. Macro: editor.sel(0,3) возвращал значение от 0 (должен от 1) 2355 1. БРРР.... Я даже и не заикался об изменении поведения редактора, я просил поправить Editor.Sel(0,2) который возвращает неправильное значение, только после ShifHome - он(Editor.Sel(0,2)), возвращает на 1 меньше чем должен был, в остальных случаях вроде правильно всё. ОТКАТИТЬ это, однозначно, и поправить только Editor.Sel (я же указывал категорию Macro). 2355 2. Я этого не просил, но вроде удобнее... Единственное, что беспокоит, придется переделывать макросы, я то в теме и легко их переделаю, но вот переезжающие с 2 на 3 экспортом могут не понять... |
|
1. в ShiftHome была ошибка, внесенная хрен знает когда: до 1.7x build 1541 ShiftHome не сбрасывал выделение нулевого блока, что было верно; после 1541 стал сбрасывать, т.к. код переоптимизировали. Home ShiftDown ShiftHome - это блок из двух строк (а не из одной, как видно визуально): первая выделена вся, вторая имеет блок нулевой длины. 2. это была ошибка. она исправлена. Эт теперь мы старые ошибки в ранг фич вводим? |
|
Начну с конца: Против 2. Не возражаю (пусть была ошибка, исправили, молодцы)!!! Я, даже, за! Меньше кода в макросах - не придётся +1 прибавлять к концу выделения, чтобы курсор установить. По поводу 1. Я ни про какой НУЛЕВОЙ блок не ведаю! При выделении обычного блока должно быть привычное выделение, до 2355.1 поведение привычно было: ShiftHome снимал выделение, если оно было с начала строки или устанавливал выделение от конца выделенного блока (положения курсора) до начала строки, как положено при одной строке. При нескольких строках ShiftHome убавлял выделение до начала строки!!! (Во всех приложениях, которые я знаю ИМЕННО так и происходит). После 2355.1 стало неадекватно - _при_нескольких_выделенных_строках_ после ShiftHome курсор просто прыгает в начало строки :( а выделение в строке остаётся на месте, и _убавить_ выделение никак невозможно... |
|
Этот виш можно закрыть, editor.sel(0.*) теперь всё правильно возвращает :) Открывать новый вишь: "ShiftHome в редакторе не изменяет выделения при нескольких выделенных строках." ? |
|
пример давай про "_при_нескольких_выделенных_строках_ после ShiftHome курсор просто прыгает в начало строки" |
|
файл: 12345 1 12345 2 курсор под 4 в строке 1 жму ShiftDown - выделилась первая строка начиная с 4 и до конца, в строке 2 выделилось с начала по 3 включительно, курсор под 4 в строке 2 жму ShiftHome - _выделение_осталось_неизменным_ (начиная с 4 строки 1, заканчивая 3 строки 2, включительно), а курсор переместился под 1 строки 2 :( 3.0 build 2371 x86 |
|
ещё интересно после этого нажать ShiftRight |
|
build 2393 |
|
На колу мочало - начинаем всё с начала...(с)поговорка. Ну, почти, с начала - про editor.sel(0,2). Выделили несколько строк: А) Если курсор=конец выделения НЕ в начале строки editor.sel(0,2) возвращает на 1 меньше чем должен :( В остальных случаях всё правильно: б) курсор и выделение подвели в начало строки не ShiftHome, а ShiftLeft... в) курсор всегда находился в начале строки при выделении или его подвели в начало строки с помощью ShiftLeft, а уж затем нажали ShiftHome... Проверка: - случай А (неправильный): Файл: 12345 1 12345 2 1) Установил курсор под 4 в строке 1 2) Нажал ShiftDown - выделилась первая строка начиная с 4 и до конца, в строке 2 выделилось с 1 по 3 включительно, курсор под 4 в строке 2 3) Нажал ShiftHome (ВИЗУАЛЬНО всё нормально - курсор под 1 строки 2, выделения в строке 2 нет :) ), но editor.sel(0,2) должен был бы вернуть 2, однако, возвращает _1_ :( - случай б (правильный): Файл: 12345 1 12345 2 1) Установил курсор под 4 в строке 1 2) Нажал ShiftDown - выделилась первая строка начиная с 4 и до конца, в строке 2 выделилось с 1 по 3 включительно, курсор под 4 в строке 2 3) Нажал ShiftLeft ShiftLeft ShiftLeft (ВИЗУАЛЬНО всё нормально - курсор под 1 строки 2, выделения в строке 2 нет :) ), И editor.sel(0,2) возвращает 2, как должен :) - случай в (правильный): Файл: 12345 1 12345 2 1) Установил курсор под 1 в строке 1 2) Нажал ShiftDown - выделилась первая строка начиная с 1 и до конца, в строке 2 ничего не выделилось, курсор под 1 в строке 2 3) editor.sel(0,2) возвращает 2, как должен :), можно даже нажать ShiftHome (если ShiftRight не нажимать перед этим) то опять ожидаемо - editor.sel(0,2) возвращает 2 :) |
|
2480.1 |
|
Работает |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-01-05 09:44 | SUSim | New Issue | |
2012-01-07 17:07 | vskirdin | Note Added: 0008322 | |
2012-01-07 18:18 | vskirdin | Note Added: 0008323 | |
2012-01-08 13:18 | SUSim | Note Added: 0008326 | |
2012-01-08 13:19 | SUSim | Note Edited: 0008326 | |
2012-01-08 13:25 | SUSim | Note Edited: 0008326 | |
2012-01-08 13:35 | SUSim | Note Added: 0008327 | |
2012-01-08 13:36 | SUSim | Note Edited: 0008327 | |
2012-01-10 07:58 | vskirdin | Note Added: 0008334 | |
2012-01-10 07:58 | vskirdin | Assigned To | => vskirdin |
2012-01-10 07:58 | vskirdin | Status | new => assigned |
2012-01-10 08:59 | vskirdin | Note Added: 0008335 | |
2012-01-10 08:59 | vskirdin | Status | assigned => feedback |
2012-01-10 16:37 | SUSim | Note Added: 0008350 | |
2012-01-10 16:37 | SUSim | Status | feedback => assigned |
2012-01-11 15:40 | SUSim | Note Added: 0008378 | |
2012-01-11 15:41 | SUSim | Note Edited: 0008378 | |
2012-01-12 06:49 | vskirdin | Note Added: 0008385 | |
2012-01-12 16:57 | SUSim | Note Added: 0008391 | |
2012-01-12 17:01 | SUSim | Note Edited: 0008391 | |
2012-01-12 17:05 | SUSim | Note Edited: 0008391 | |
2012-01-12 17:09 | SUSim | Note Edited: 0008391 | |
2012-01-12 17:20 | SUSim | Note Added: 0008392 | |
2012-01-12 18:16 | vskirdin | Note Added: 0008393 | |
2012-01-13 03:22 | SUSim | Note Added: 0008394 | |
2012-01-13 04:50 | 2useven10 | Note Added: 0008395 | |
2012-01-16 07:32 | vskirdin | Note Added: 0008430 | |
2012-01-16 07:32 | vskirdin | Status | assigned => feedback |
2012-01-17 16:29 | SUSim | Note Added: 0008444 | |
2012-01-17 16:29 | SUSim | Status | feedback => assigned |
2012-02-21 18:04 | zg | Note Added: 0008631 | |
2012-02-23 05:03 | SUSim | Note Added: 0008640 | |
2012-02-23 05:03 | SUSim | Status | assigned => resolved |
2012-03-05 07:53 | vskirdin | Build | => 2480 |
2012-03-05 07:53 | vskirdin | Status | resolved => closed |
2012-03-05 07:53 | vskirdin | Resolution | open => fixed |
2012-03-05 07:53 | vskirdin | Fixed in Version | => 3.0 |