Запоминание позиции в редакторе Topic is solved

Здесь можно сообщить о найденных багах в Far.
Shmuel
Posts: 5921
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Запоминание позиции в редакторе

Post by Shmuel » Fri 10 Oct, 2014 15:40

Не знаю, считать это багом или фичей, но при включённой опции редактора "Save file position" Фар запоминает имя файла регистро-зависимым. Это приводит к тому, что при открытии одного и того же файла разными способами (F4, edit: или через API) могут запоминаться (и восстанавливаться) разные позиции.
Last edited by Shmuel on Fri 10 Oct, 2014 15:55, edited 1 time in total.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: Запоминание позиции в редакторе

Post by NightRoman » Fri 10 Oct, 2014 15:55

В Windows приложении следует считать это багом.

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

Re: Запоминание позиции в редакторе

Post by HaRT » Fri 10 Oct, 2014 15:58

NightRoman wrote:В Windows приложении следует считать это багом.
Запоминает-то пусть хоть и регистро-зависимо — лишь бы сравнивал регистро-НЕзависимо.
Однако вроде плагиновая панель может сказать, что у неё регистро-зависимая файловая система. Или я что-то путаю?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5921
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: Запоминание позиции в редакторе

Post by Shmuel » Fri 10 Oct, 2014 16:07

HaRT wrote:Однако вроде плагиновая панель может сказать, что у неё регистро-зависимая файловая система. Или я что-то путаю?
Это наверное не повод для регистро-зависимого обращения с обычными файлами на обычных панелях.

Да, ситуацию с запоминанием букмарков не проверял.
Зато проверил запоминание кодировки - обнаружилась та же проблема.

2useven10
Posts: 3983
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 173 times

Re: Запоминание позиции в редакторе

Post by 2useven10 » Fri 10 Oct, 2014 16:25

А с чего проблема будет другой?
Всё пишется в одну базу истории с регистро-зависимым ключом.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: Запоминание позиции в редакторе

Post by Maximus5 » Sat 11 Oct, 2014 00:59

Аналогично с открытием файла по Ctrl-LClick на строке с ошибкой вывода компилятора. Например, файл "RealBuffer.cpp", вывод компилятора:

Code: Select all

realbuffer.cpp:123: error: бла-бла-бла
В историю попадает файл в нижнем регистре, хотя оно уже есть в CamelCase... Строки в истории двоятся.

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

Re: Запоминание позиции в редакторе

Post by DrKnS » Sat 11 Oct, 2014 06:59

https://www.sqlite.org/faq.html#q18

Давайте патч.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: Запоминание позиции в редакторе

Post by NightRoman » Sat 11 Oct, 2014 07:06

А решение сохранять и искать имена файлов в верхнем регистре не проще будет?

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

Re: Запоминание позиции в редакторе

Post by DrKnS » Sat 11 Oct, 2014 07:27

Не будет.

Shmuel
Posts: 5921
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: Запоминание позиции в редакторе

Post by Shmuel » Sat 11 Oct, 2014 08:33

NightRoman wrote:А решение сохранять и искать имена файлов в верхнем регистре не проще будет?
Истории будут выглядеть некрасиво. Кроме этого, противопоказаний не вижу (но может что-то и упускаю).

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: Запоминание позиции в редакторе

Post by Maximus5 » Sat 11 Oct, 2014 12:24

Мою проблему с регистром похоже можно решить позвав предварительно FSF.ConvertPath(CPM_REAL, asFilePath, ...)
Может это в фаре делать перед открытием редакторов/вьюверов?

Shmuel
Posts: 5921
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Re: Запоминание позиции в редакторе

Post by Shmuel » Sat 11 Oct, 2014 13:51

Maximus5 wrote:Мою проблему с регистром похоже можно решить позвав предварительно FSF.ConvertPath(CPM_REAL, asFilePath, ...)
С запоминанием позиции в редакторе тоже помогло.

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

Re: Запоминание позиции в редакторе

Post by DrKnS » Sat 11 Oct, 2014 13:58

Решать проблемы с регистром при помощи ConvertPath(CPM_REAL, ...), который:

- преобразует этот путь в полный;
- парсит его с использованием регулярных выражений;
- открывает хендлы;
- вызывает GetFinalPathNameByHandle (или NtQueryObject + NtOpenSymbolicLinkObject + NtQuerySymbolicLinkObject + NtClose + GetLogicalDriveStrings + FindFirstVolumeW + FindNextVolumeW + FindVolumeClose в пещерных ОС);
- а в некоторых случаях ещё и GetVolumePathNamesForVolumeName и GetVolumeNameForVolumeMountPoint

- выдавая в результате в некоторых случаях принципиально другой путь - это впечатляет.
Впрочем, действительно - "машина должна работать".

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: Запоминание позиции в редакторе

Post by Maximus5 » Sat 11 Oct, 2014 14:30

Решить проблемы с регистром без обращений к ФС в принципе невозможно. Оптимальность CPM_REAL это другой вопрос, другого апи фар не дает, а изобретать велосипед в каждом плагине - не вариант.
Кроме того, операция открытия редактора "визуальная" сама по себе значительно более длительная чем конвертация пути.
И лично мне по фигу, если в историю попадет "другой" путь, файл-то один...

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 250 times

Запоминание позиции в редакторе

Post by DrKnS » Sun 12 Apr, 2015 19:03

Начиная с 4343 работа с базами может вестись регистронезависимо.
Для того, чтобы запоминание позиции работало адекватно, history.db надо удалить, или, если жалко, обновить при помощи примерно такого батника:
Если это актуально ещё где-то, кроме запоминания позиций в просмотре/редакторе - пишите.

Shmuel
Posts: 5921
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 233 times

Глюки и баги, появившиеся в «ночных сборках»

Post by Shmuel » Mon 13 Apr, 2015 09:29

4347 (может быть возникло раньше, не проверял):
При открытии файлов в редакторе курсор всегда стоит в начале файла, несмотря на установленную опцию "Save file position".

Post Reply

Return to “Глюки и баги”