Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Shmuel
Posts: 6848
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 532 times

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Shmuel »

Latest post of the previous page:

Дайте пример - текстовый файл + точное описание как вы выделяете вертикальный блок.
Попробую посмотреть, действительно ли невозможно получить его точные координаты.
(посмотреть смогу только завтра).
User avatar
John Doe
Бюрократ
Posts: 13902
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by John Doe »

Дмитрий Журко wrote: Mon 08 Apr, 2024 22:18 Помечены колонки, я запоминаю какие, снимаю выделение, заполняю, потом восстанавливаю выделение с шириной заполнения.
Без конкретного кода нечего комментировать.
Но если вы ходили по ссылке, то наверно видели, что editor.Select должен в этой ситуации без проблем отработать.
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 129
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Дмитрий Журко »

John Doe wrote: Mon 08 Apr, 2024 22:55 editor.Select должен в этой ситуации без проблем отработать.
Во-первых, я ходил по ссылке. Давайте впредь вы не станете обвинять меня в том, что я вам вру. Пожалуйста. У вас ровно нет оснований.
Во-вторых, на сарае написано, а там дрова. Я вам написал, как на самом деле происходит: без проблем -- не работает. И теперь я во всём уверен, потому что...
В-третьих, у меня наконец получилось! Последняя догадка сработала: вставить достаточно пробелов в первой и последней строках блока, только тогда получить GetSelection, который выдаст СОВСЕМ другие абсциссы, а потом undo и делать, что собирался. Прикинуть сколько пробелов нужно для вставки легко: ошибка не больше размера табуляции.
Только в этих условиях я получил, наконец, правильные абсциссы, а не мусор. И это факт, а не где-то написано. Код испытаний:

-----
Искренняя моя благодарность за обсуждение. Иногда достаточно выговориться, чтобы двигаться вперёд.
PS Я не знаю кодов BB для вставки кода lua.
Last edited by Дмитрий Журко on Tue 09 Apr, 2024 01:18, edited 1 time in total.
Дмитрий Журко
Posts: 129
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Дмитрий Журко »

А код получения координат блока колонок будет совсем другим. Сначала проверю, не висят ли углы внутри табуляций, потом вставлю немного пробелов именно туда, потом GetSelection() и undo.
User avatar
John Doe
Бюрократ
Posts: 13902
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by John Doe »

Дмитрий Журко wrote: Tue 09 Apr, 2024 01:11 на сарае написано, а там дрова
Извините, но дрова пока что продемонстрированы не были.
Никто ни в чём тут пока что вас не обвинял, но не исключено что вы всего лишь неправильно пользуетесь.

Итак, вы утверждаете, что какие-то функции работают иначе, чем описано в документации?
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 129
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Дмитрий Журко »

John Doe wrote: Tue 09 Apr, 2024 01:57 Итак, вы утверждаете, что какие-то функции работают иначе, чем описано в документации?
Я утверждаю, что многие функции работают совсем не так, как описано. Но чаще, не описано никак: упоминания бывалых -- не описание. И, вроде, с вами было такое обсуждение, которое вы внезапно закрыли. Может не именно вы, но подход понравился.
Вы не прочли код, нормально, никто не должен мне помогать, мне и не нужна помощь, я не просил. Но как раз перед тем вы делали вид, что код вам важен.
У меня предложение разработчикам. Иначе приходится годами изучать систему без описания, которая внезапно работает, пока не поймёшь ошибку реализации.
User avatar
John Doe
Бюрократ
Posts: 13902
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by John Doe »

Дмитрий Журко wrote: Tue 09 Apr, 2024 09:13 что код вам важен
Именно. Тот который по вашим словам не работает, хотя судя по документации должен.
Если вы правы, то в фаре (или документации) баг.
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 129
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Дмитрий Журко »

John Doe wrote: Tue 09 Apr, 2024 09:17 Если вы правы, то в фаре (или документации) баг.
Нет. В документации о том какие именно координаты вернёт GetSelection() или Sel() определённо не написано. Сообщения бывалых -- особый жанр, не документация. И переход к началу и концу блока -- понятно, к некоторым концам не добраться (этого нет в документации, но можно принять).
Кстати, подумал я, если строчный блок задать произвольными значениями концов, будут схожие сложности. Но обычно установке концов предшествуют переходы на них курсора, потому координаты не запрещённые.
Правильными я бы назвал координаты нарисованной Far подсветки блока. Эти координаты где-то в системе есть. Их и стоит дать возможность узнать в виде CurTabPos, с той особенностью, что в этой координате не всегда можно оказаться. Но устойчивый код писать с учётом этого уже можно. Можно погасить выделение, зная, как его восстановить.
Я не помощи прошу, а понимания трудности написания устойчиво работающего кода макро.
Дмитрий Журко
Posts: 129
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Дмитрий Журко »

Shmuel wrote: Mon 08 Apr, 2024 22:31 Дайте пример - текстовый файл + точное описание как вы выделяете вертикальный блок.
Вот здесь код для испытаний обнаруженного в ходе обсуждения трюка, который использует для них свой файл:
Дмитрий Журко wrote: Tue 09 Apr, 2024 01:11 В-третьих, у меня наконец получилось!
Блок выделяется вызовом Select() с произвольными координатами: 1 2 3 4 поверх табуляций. Задача: как-то выяснить, что это были за координаты. Или так: взять координаты, погасить выделение, восстановить выделение точно так, как было.
Пришлось добавлять в первую и последнюю строку пробелы, чтобы получить правильные абсциссы, а после этого undo. Тогда работает понятно. Но есть наверняка место, где Far всё это время хранит абсциссы выделения. Важно: три года у меня ушло, чтобы понять, где именно вдруг неожиданности. Потому, возможно, и не завершают многие свои проекты или не публикуют их, как я.
User avatar
zg
zero-gravity
Posts: 6054
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 186 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by zg »

Дмитрий Журко wrote: Tue 09 Apr, 2024 13:52 Задача: как-то выяснить, что это были за координаты.
да, проблема скорее всего есть, но пока вы мой код не ускорите в три раза мотивации разбираться с этим нет.
Last edited by zg on Tue 09 Apr, 2024 14:32, edited 1 time in total.
Shmuel
Posts: 6848
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 532 times

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by Shmuel »

zg wrote: Tue 09 Apr, 2024 14:11
Shmuel wrote: Mon 08 Apr, 2024 22:31 Задача: как-то выяснить, что это были за координаты.
Я этого не говорил.
Last edited by Shmuel on Tue 09 Apr, 2024 14:24, edited 3 times in total.
User avatar
zg
zero-gravity
Posts: 6054
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 186 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by zg »

Shmuel wrote: Tue 09 Apr, 2024 14:18 Я этого не говорил.
сорри, мобильная версия глючит при использовании «insert quote in the quick reply form». в десктопной — всё окей.
User avatar
John Doe
Бюрократ
Posts: 13902
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by John Doe »

Дошли руки посмотреть поближе.
  1. Выделить колоночный (вертикальный) блок так, чтобы его начало ИЛИ конец приходились на середину табуляции несложно прямо с клавиатуры.
  2. Выделить его так, чтобы и начало и конец оказался внутри табуляции с клавиатуры похоже невозможно.
    Хотя, не исключено, что этого можно добиться за несколько действий.
  3. Через апи запросто можно выделить любой блок, и начало и конец могут оказаться внутри табуляции.
Третий случай интересен тем, что такой блок можно установить через апи, но невозможно через апи получить.
Причину я упоминал выше:
  • editor.GetString всегда оперирует Real позицией в тексте (т.е. табуляция будет иметь ширину 1)
  • editor.Select оперирует визуальной Tab позицией на экране (т.е. табуляция по умолчанию имеет ширину 8)
Для третьего случая из данных, возвращаемых GetString, абсолютно невозможно получить правильные позиции внутри табуляции.
Для первого - возможно эвристически.
Last edited by John Doe on Sun 14 Apr, 2024 22:44, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by SUSim »

John Doe, подтверждаю:
Мой макрос - Editor_MauseSelect.lua:
Выделить вертикальный блок у которого начало И конец в середине tab-ов можно, а вот попытка отредактировать положения начала приведет к перемещению конца на начало tab, а редактирование конца приведет к перемещению начала :(
SimSU ··· ·· -- ··· ··-
gotar
Posts: 427
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 19 times
Been thanked: 3 times

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by gotar »

Для моего понимания: новый режим editor.GetString проблему не решает?
User avatar
zg
zero-gravity
Posts: 6054
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 186 times
Contact:

Возможность в farlua получить ТОЧНЫЕ координаты в строке колоночного блока

Post by zg »

gotar wrote: Mon 15 Apr, 2024 11:05 новый режим editor.GetString проблему не решает?
нет, вообще не связан.
Post Reply

Return to “Нужна помощь”