View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003383 | Wishes | Editor | public | 2017-01-17 14:23 | 2018-11-15 08:26 |
Reporter | andreyefgs | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Platform | x64 | OS | Windows | OS Version | 10 |
Product Version | 3.0 | ||||
Summary | 0003383: Управление приоритетами автодетекта при открытии файла в редакторе | ||||
Description | Хотелось бы иметь в настройках редактора иметь опцию "Save file codepage" Такая опция есть в настройках вьюера. Это нужно для того, чтобы была возможность отключить запоминание кодировки для редактора, сейчас она запоминается. В результате если перекодировать файл внешней программой (не изменяя имя) и повторно открыть файл редакторе FAR-а, то будет использована неверная кодировка (предыдущая). И это происходит несмотря на включение "Autodetect code page" и наличие BOM. | ||||
Steps To Reproduce | 1)Создать текстовой файл в кодировке UTF-8 с BOM с любым контентом. 2)Открыть этот файл используя внутренний редактор FAR-а. Закрыть. 3)Перекодировать файл используя внешнюю программу (notepade++, к примеру) в UTF-16LE c BOM. 4)Снова открыть файл во внутреннем редакторе. Будет использована неверная кодировка. | ||||
Tags | No tags attached. | ||||
Build | |||||
related to | 0003542 | new | Умное восстановение позиции при переоткрытии файла в другой кодировке |
|
Можно и без опции - просто давать BOM'у приоритет перед запомненной кодовой страницей. Мне это кажется вполне логичным. |
|
> Мне это кажется вполне логичным. > А мне нет. Файлы бывают разные, например с мешаниной из кодовых страниц. Если я задал запоминание позиции(+неявно кодировки), никакой ИИ не должен вмешиваться. Разве что отдельной опцией для разрешения именно такого поведения. Изначальная опция отказа от сохранения только кодовой страницы в редакторе тоже сомнительна, поскольку кодовая страница для редакторв влияет на отображение сохранённой позиции в редакторе, они НЕ независимы. А если позицию не сохранять, то и сохранения кодировки не должно быть уже сейчас. |
|
Для файла с мешаниной кодовых страниц BOM - это ошибка, его надо просто убрать. Такие файлы бывают, да, но как правило без BOM. Я иногда могу поиграться в редакторе с выбором кодовых страниц, затем выхожу по Esc, при этом запоминается последняя выбранная, независимо от того, верна она или нет. Практически всегда наличие BOM позволяет правильно определить кодировку. Для того BOM и был придуман. Всё остальное - от лукавого. |
|
> кодовая страница для редакторв влияет на отображение сохранённой позиции в редакторе, они НЕ независимы Вот еще бы понять, почему. Позиция - это абсолютные координаты, строка и колонка, на какую букву они там лягут при смене кодировки - дело десятое. |
|
> Всё остальное - от лукавого. > Пример приведён, а излишняя категоричность для меня только верный признак отсутствия аргументов. > Позиция - это абсолютные координаты, строка и колонка > Позиция это место в файле/документе, а не 2 числа в неопределённых координатах. > на какую букву они там лягут при смене кодировки - дело десятое. > На вкус и цвет приоритеты разные. |
|
Аргумент один - практическая целесообразность. Мне нынешний порядок приоритетов мешает. Я просто хочу, чтобы BOM имел главный приоритет у меня - никакие умные доводы, что это неправильно, меня просто не интересуют. Сегодня написал макрос, обеспечивающий нужное мне поведение. Так что свои интересы обеспечил. |
|
Я совсем не против возможности задания приоритетов. Я против необратимого их изменения. |
|
Вот и отлично. Пусть будет опция, и все будут довольны. :) |
|
>> Позиция - это абсолютные координаты, строка и колонка >> > Позиция это место в файле/документе, а не 2 числа в неопределённых координатах. "место в файле/документе" - это свой парсер/лексер/токенайзер надо иметь и запоминать весь контекст. А то мало ли - враги откроют ваш файл блокнотом, допишут что-то в начало и всё поедет даже без смены кодировки. |
|
> А то мало ли - враги ... > Я предлагаю ограничить всемогущество врагов. Допустим они не могут портить документ, когда я с ним работаю (выдергивать из под меня стул, ...). Всё что могли они уже сделали, когда создавали документ, например (опять), В одной строке документа чередуется текст 1251 и utf-8. Моё скромное желание - перекючаясь между кодировками, оставаться в том же месте редактируемого файла, а не отправляться в экспедицию на поиски |
|
> Моё скромное желание - перекючаясь между кодировками, оставаться в том же месте редактируемого файла Я может упускаю что-то, но сейчас, например, если курсор стоял в третьей строке / пятой колонке, то куда ни переключайся, он там и останется, не? |
|
> то куда ни переключайся, он там и останется, не? > Точно. Я как раз об этом. Это неправильное (imho) поведение, демонстрирующее ущербность абсолютизации бесконтекстных координат. |
|
Т. е. если мы начнем сохранять их раздельно, то ничего не "поломается", т. к. и так "поломано", я правильно понимаю? Можно заодно пример правильного поведения? Если у нас курсор в утф8-файле стоял на букве ы в строке "пыво" и мы переключились в 1251, получив 8 непонятных закорючек, то где он должен оказаться? |
|
1) поломаем ещё в одном месте. 2) курсор должен оказаться на первом из двух символов, в которые превратилась буква ы. пыво |
|
Полагаю, что работа с файлами, содержащими текст в разных кодировках, сама по себе является исключением из правил. Я бы такие файлы использовал исключительно для переноса их кусков в другие, скажем так, "нормальные" файлы. Поэтому не вижу смысла городить огород с "умным" сохранением позиции. (Just my 2 cents). |
|
> курсор должен оказаться на первом из двух символов, в которые превратилась буква ы Я не очень понимаю, как это реализовать без сохранения в истории куска текста от начала строки до позиции курсора, и согласен со shmuel что это является весьма нетипичным сценарием (для которых мы традиционно рекомендуем "пишите плагин"). |
|
По поводу позиции. Сейчас происходит так: Обратите внимание где курсор. Первая картинка - utf-8__bom, 2 - utf-16le_bom И кстати, как вам такая идея: 1)кодировку запоминается всегда. 2)Но если запомненная кодировка конфликтует с BOM (utf-16le vs EFBBBF или utf-8 vs FEFF), то приоритет отдавать BOM и не производить переход на сохранённую позицию если в настройках включена опция "Save file position" для редактора. 3)Если конфликта нет, то делать как и прежде. |
|
Кусок текста и так есть в файле (подмена содержимого вопрос отдельный), поэтому достаточно смещения он начала файла. Во многих случаях достаточно от начала строки. Вообще здесь это скорее уже отклонение от темы. Желаемое поведение для автора тикета, достигается управлением приоритетами автодетекта. При этом ничего не будет сломано. |
|
Хотя да, имея сохраненную кодировку и позицию, при несовпадении выбранной кодировки с сохранённой пересчитать позицию вполне возможно. |
|
Мне кажется логичным дать возможность выбора из 2-х вариантов приоритета: как сейчас = [Saved] -> BOM -> IsUnicode -> UCD -> Default и новым = BOM -> IsUnicode -> UCD -> [Saved] -> Default при желании вариантов можно сделать больше... |
|
> при желании вариантов можно сделать больше... Если делать через far:config, то легко (одним параметром-строкой) можно задавать любой из 24=4! вариантов, обозначив каждый из них буквой. Вышеприведенные 2 варианта будут выглядеть соответственно как "SBIU" и "BIUS". В хелпе описать значение этих букв. (Мысли вслух). |
|
Создал отдельно 0003542. Исправьте описание, если что не так. |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-01-17 14:23 | andreyefgs | New Issue | |
2017-01-17 14:33 | shmuel | Note Added: 0015164 | |
2017-01-17 15:45 | 2useven10 | Note Added: 0015165 | |
2017-01-17 15:46 | 2useven10 | Note Edited: 0015165 | |
2017-01-17 15:47 | 2useven10 | Note Edited: 0015165 | |
2017-01-17 15:54 | shmuel | Note Added: 0015166 | |
2017-01-17 16:01 | DrKnS | Note Added: 0015167 | |
2017-01-17 19:20 | 2useven10 | Note Added: 0015168 | |
2017-01-17 19:31 | shmuel | Note Added: 0015169 | |
2017-01-17 19:58 | 2useven10 | Note Added: 0015170 | |
2017-01-17 20:03 | shmuel | Note Added: 0015171 | |
2017-01-17 20:22 | DrKnS | Note Added: 0015172 | |
2017-01-17 20:47 | 2useven10 | Note Added: 0015173 | |
2017-01-17 20:50 | 2useven10 | Note Edited: 0015173 | |
2017-01-17 21:22 | DrKnS | Note Added: 0015174 | |
2017-01-18 08:49 | 2useven10 | Note Added: 0015175 | |
2017-01-18 10:07 | DrKnS | Note Added: 0015176 | |
2017-01-18 10:16 | 2useven10 | Note Added: 0015177 | |
2017-01-18 11:06 | shmuel | Note Added: 0015178 | |
2017-01-18 11:20 | DrKnS | Note Added: 0015179 | |
2017-01-18 11:34 | andreyefgs | Note Added: 0015180 | |
2017-01-18 11:48 | 2useven10 | Note Added: 0015181 | |
2017-01-18 11:55 | DrKnS | Note Added: 0015182 | |
2017-01-18 12:02 | 2useven10 | Note Added: 0015183 | |
2017-01-18 12:51 | shmuel | Note Added: 0015184 | |
2017-10-30 19:19 | JohnDoe | Summary | "Save file codepage" для редактора => Управление приоритетами автодетекта при открытии файла в редакторе |
2017-10-30 19:38 | JohnDoe | Note Added: 0015774 | |
2018-11-15 08:26 | JohnDoe | Relationship added | related to 0003542 |