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

Здесь можно сообщить о найденных багах в Far.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Latest post of the previous page:

Начиная с 4343 работа с базами может вестись регистронезависимо.
Для того, чтобы запоминание позиции работало адекватно, history.db надо удалить, или, если жалко, обновить при помощи примерно такого батника:
Если это актуально ещё где-то, кроме запоминания позиций в просмотре/редакторе - пишите.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

4347 (может быть возникло раньше, не проверял):
При открытии файлов в редакторе курсор всегда стоит в начале файла, несмотря на установленную опцию "Save file position".
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Shmuel wrote: курсор всегда стоит в начале файла
Базу по инструкции обновил?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

DrKnS wrote: Базу по инструкции обновил?
Запускал на новом профиле.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

А где именно брать sqlite3? Понятно, что что-то я могу найти в сети (и все равно ссылка или совет не помешали бы). Но сам-то найденный sqlite3 будет поддерживать юникод для правильной конвертации? Или это неважно для конвертации? Или конвертация допускает некоторые шероховатости?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Еще вопрос, насколько это экспериментально? Так все-таки будет или это просто потестировать?

Предлагать пользователям удалить history.db это немного жестко. История - одна из важных фишек Фара. И в history.db вся история, а не только файлов. Предлагать конвертировать - тоже не лучшее решение, для многих будет почти проще грохнуть history.db. Но если предлагать этот путь, то хотя бы подробнее его описать.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

NightRoman wrote: А где именно брать sqlite3?
На sqlite.org
Но сам-то найденный sqlite3 будет поддерживать юникод для правильной конвертации? Или это неважно для конвертации? Или конвертация допускает некоторые шероховатости?
Не будет. Не важно. Допускает.
насколько это экспериментально? Так все-таки будет или это просто потестировать?
Так и будет, если ничего страшного не проявится.
Предлагать пользователям удалить history.db это немного жестко. История - одна из важных фишек Фара. И в history.db вся история, а не только файлов. Предлагать конвертировать - тоже не лучшее решение, для многих будет почти проще грохнуть history.db. Но если предлагать этот путь, то хотя бы подробнее его описать.
Можно ничего не делать, в большинстве случаев всё будет работать как раньше, но в случае, обсуждаемом в этом топике, в историю будут продолжать попадать дубли и позиция будет восстанавливаться неправильно.

Альтернативная подробная инструкция:

1. Сдампить базу:
sqlite3.exe history.db .dump > history_dump.sql
2. Найти в history_dump.sql такие строки:

Code: Select all

CREATE TABLE editorposition_history(id INTEGER PRIMARY KEY, name TEXT NOT NULL UNIQUE, time INTEGER NOT NULL, line INTEGER NOT NULL, linepos INTEGER NOT NULL, screenline INTEGER NOT NULL, leftpos INTEGER NOT NULL, codepage INTEGER NOT NULL);

Code: Select all

CREATE TABLE viewerposition_history(id INTEGER PRIMARY KEY, name TEXT NOT NULL UNIQUE, time INTEGER NOT NULL, filepos INTEGER NOT NULL, leftpos INTEGER NOT NULL, hex INTEGER NOT NULL, codepage INTEGER NOT NULL);
3. Добавить в обе COLLATE NOCASE после name TEXT NOT NULL UNIQUE
4. Восстановить базу:
sqlite3.exe history.db < history_dump.sql
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

А чем была плоха идея сохранять/искать пути в верхнем регистре? Это ведь данные, которые пользователю все равно не показываются. Или я ошибаюсь?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Мы не ищем лёгких путей.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

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

Post by NightRoman »

Понятно. Конечно, полезно освоить, может пригодиться.

А история файлов собирается становиться регистронезависимой?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

А надо?
User avatar
HaRT
Moderator
Posts: 10854
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

DrKnS wrote: А надо?
Разве что опционально.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
CyBear
Posts: 17
Joined: Thu 02 Dec, 2010 05:46
Location: Братск
Has thanked: 5 times
Contact:

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

Post by CyBear »

Не стал создавать отдельную тему.

В одном из последних патчей "сломались" закладки для текущей позиции (42**-43**).
Когда-то однажды они были заведены, теперь они не меняются, не обновляются, не удаляются - ничего нельзя сделать.

Таким образом, запомнить ПравыйCtrl+0..9, восстановить ЛевыйCtrl+0..9 - не работают, точнее восстановить работает, но только на "старые" закладки. При закрытии файла эти старые закладки "откуда-то берутся сами".

Сломались они до регистрозависимых правок (до 4343) и не работают до сих пор (4369 также не работают).

Посмотрите пожалуйста, в чём может быть причина, спасибо.

---

Добавил спустя некоторое время, так как посчитал нужным отписаться об этом, вдруг у кого такая же проблема.
Итак, проблема локальная, и возможно только у меня - в history.db, подозреваю что текущие/предыдущие патчи тут не причём.
Каким-то образом у меня сломалась в history.db история по закладкам, вот я её и удалил.

Разумеется когда я переходил на 4343, я конвертнул базу для 4343 как описано на первой странице (не дампом), но повторюсь - закладки сломались у меня в моей базе ещё до 4343. Как и почему, понятия не имею...

Короче, для решения проблемы сделал по образу как описано выше, вот мои шаги:

1. Скопировать history.db.

2. Сдампить базу:

Code: Select all

sqlite3.exe history.db .dump > history_dump.sql
3. Открыть history_dump.sql в UTF-8 кодировке, найти приведённые ниже строчки и все их удалить, начинаются строки со значений:

Code: Select all

INSERT INTO "editorbookmarks_history" VALUES
Тем самым удалим все текущие закладки.

4. Сохранить history_dump.sql в UTF-8 кодировке.

5. Восстановить базу:

Code: Select all

sqlite3.exe history.db < history_dump.sql
6. Подложить новый history.db

Закладки заработали корректно! :Yahoo!:

Спасибо DrKnS, он привёл выше пример с дампом, который и натолкнул меня на мысль самому вырезать закладки с базы.
Post Reply

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