View Issue Details

IDProjectCategoryView StatusLast Update
0000107WishesEditorpublic2017-10-25 17:26
ReporterRaistlin Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status newResolutionopen 
Summary0000107: Поведение при удалении части строки, превышающей ширину экрана
DescriptionОт AVB. Если выделить конечную часть строки, длина которой (части, в смысле) превышает ширину экрана, и удалить её, то курсор оказывается в первой позиции экрана и оставшаяся (начальная) часть строки остаётся за его левым краем. Желательно же, чтобы после удаления курсор оказывался либо в последней позиции экрана (если оставшаяся часть строки не меньше ширины экрана), либо в позиции, равной длине оставшейся части (т. е. чтобы оставшаяся часть была видна полностью).
TagsNo tags attached.
Build

Activities

vskirdin

2006-04-04 06:36

administrator   bugnote:0000108

Так, теперь по-русски, pls.
По шагам. Какой файл открыть, куда стать, откуда начинать выделение, какие блоки (постоянные или нет), ... (и еще безобразное количество вопросов)
:-(

Raistlin

2006-04-04 09:20

reporter   bugnote:0000112

Last edited: 2006-04-04 09:23

Создай файл, содержащий одну длинную строку: 40 символов "а" и за ними 120 символов "б". Выдели все символы "б" (курсор после выделения должен стоять в конце строки) и удали по Ctrl-D. Получишь пустой экран и курсор в первой позиции. Хочется же, чтобы 40 оставшихся символов были видны, а курсор стоял, соответственно, в 41 позиции (считая позиции с 1).
Блоки, естественно :-), постоянные.

JohnDoe

2014-09-03 09:15

updater   bugnote:0012978

Текущее поведение вполне осмысленно, не вижу причин его менять.
Предлагаю закрыть тикет.

Raistlin

2014-09-03 09:55

reporter   bugnote:0012980

В чем осмысленность? Курсор на месте не остается, экран - тоже (заметно, если перед тестовой строкой вставить еще одну длинную из разных символов).

JohnDoe

2014-09-03 11:35

updater   bugnote:0012982

>В чем осмысленность?
Экран сдвигается минимальное. Так, чтобы стала видимой позиция курсора.
Это поведение логично, и ровно то же происходит при всех операциях, перемещающих курсор.

Raistlin

2014-09-03 11:53

reporter   bugnote:0012983

Если все равно двигать, почему не подвинуть с большим толком? Сейчас обычное действие после удаления здорового куска строки - Left или Ctrl-Left. Не потому, что надо чего-то там редактировать, а потому что надо просто увидеть, что в ней осталось. И смысл в этом лишнем движении?

JohnDoe

2014-09-03 12:26

updater   bugnote:0012984

Last edited: 2014-09-03 12:29

>Если все равно двигать, почему не подвинуть с большим толком?
Я исхожу из того, что поведение редактора при перемещении курсора должно быть предсказуемым и однотипным (во всех операциях, затрагивающих перемещения курсора).

Даже если рассмотреть только одну из операцию - удаление, то и её можно произвести массой способов.
CtrlD, Del, BS, ShiftDel, CtrlX, CtrlT, CtrlDel, а при непостоянных блоках вообще любая клавиша.
Добавим сюда поиск/замену, и изменения через АПИ (которых аж 2).
Удаляться может вся конечная часть, а может кусок из середины.

Допустим позицию экрана и стоило бы как-то корректировать, но я лично затрудняюсь формализовать КАК именно, учитывая всевозможные условия.

>Сейчас обычное действие после удаления здорового куска строки - Left или Ctrl-Left.
CtrlK есть из коробки.
Остальное макросами.

JohnDoe

2014-09-03 12:31

updater   bugnote:0012985

>Желательно же, чтобы после удаления курсор оказывался либо в последней позиции экрана (если оставшаяся часть строки не меньше ширины экрана)
Вот это как понимать? На примере из описания, что должно быть видно на экране после удаления?

Raistlin

2014-09-03 13:25

reporter   bugnote:0012987

> что должно быть видно на экране после удаления?
> чтобы 40 оставшихся символов были видны, а курсор стоял, соответственно, в 41 позиции (считая позиции с 1).

Другой пример. Ширина окна Far - 80. В строке 8 раз повторяется группа символов "0123456789", затем идет 120 символов "b". Выделяем от первого до последнего "b", удаляем. Курсор должен оказаться в последней (81-й в строке, 80-й на экране) позиции. Первый "0" - за левой границей экрана.

JohnDoe

2014-09-03 13:54

updater   bugnote:0012988

Тогда к уже сказаному добавить мне нечего.

Raistlin

2014-09-03 15:26

reporter   bugnote:0012989

>при непостоянных блоках вообще любая клавиша
Стирает?!

>поведение редактора при перемещении курсора должно быть предсказуемым и однотипным (во всех операциях, затрагивающих перемещения курсора)
Удаление блока не перемещает курсор. Оно двигает невыделенные части строки (строк) друг относительно друга.

>позицию экрана и стоило бы как-то корректировать, но я лично затрудняюсь формализовать КАК именно, учитывая всевозможные условия
Она уже корректируется - сдвигается так, чтобы курсор оказался в 1-й позиции экрана, а не за его левой границей. Но это довольно бестолковое корректирование: вся оставшаяся в строке полезная информация остается за кадром. Я предлагаю корректировать так, чтобы на экране, напротив, отображался максимум полезной информации. Вот и все отличие от текущего поведения.

>CtrlK есть из коробки.
Какое отношение Ctrl-K имеет к Left или Ctrl-Left?

JohnDoe

2014-09-03 15:55

updater   bugnote:0012990

Last edited: 2014-09-03 15:57

>Стирает?!
У вас не так?

>Удаление блока не перемещает курсор
Вынужден не согласиться.

>Я предлагаю корректировать так, чтобы на экране, напротив, отображался максимум полезной информации.
А я предлагал взглянуть на эту ситуацию как на частный случай, но исходя из предыдущей цитаты я уже не рассчитываю на понимание.

>Какое отношение Ctrl-K имеет к Left или Ctrl-Left?
В описании тикета ничего не сказано о Left или Ctrl-Left
Но упомянутая там задача может быть решена с помощью CtrlK, не используя выделение. Если нужно удалить не весь "хвост", а середину, то да, CtrlK не поможет.
Но есть макросы, поэтому всё в ваших руках.

Raistlin

2014-09-03 16:53

reporter   bugnote:0012991

> У вас не так?
Понял, что имелось в виду. Так. Хотя и не совсем любая.

>А я предлагал взглянуть на эту ситуацию как на частный случай
Давайте взглянем. Например, будем выделять блок не до конца строки, а оставляя в конце 3 символа. Что имеем? После удаления блока курсор - в 1-й экранной позиции, на экране - 3 символа из строки. А за левой границей - еще до фига. Что мешает установить курсор не на 1-ю, а на 77-ю позицию? Ведь все равно экранная позиция курсора относительно первоначальной поменялась?

JohnDoe

2014-09-04 08:03

updater   bugnote:0012992

>Давайте взглянем
Ещё шире. Например, ширина экрана 80 символов, в текущей строке 81 символ, а курсор в позиции 165.
Что произоисходит при нажатии клавиши End?

JohnDoe

2017-10-19 15:16

updater   bugnote:0015713

Предлагаю закрыть.

Raistlin

2017-10-25 10:57

reporter   bugnote:0015744

> Ещё шире. Например, ширина экрана 80 символов, в текущей строке 81 символ, а курсор в позиции 165. Что произоисходит при нажатии клавиши End?
Прыгает в строковую позицию 82, она же экранная позиция 1. А хотелось бы, что она была экранной позицией 80.

> Предлагаю закрыть.
Не согласен.

JohnDoe

2017-10-25 16:48

updater   bugnote:0015746

Прыгает в строковую позицию 82, она же экранная позиция 1. А хотелось бы, что она была экранной позицией 80.

Raistlin
Это свидетельствует о том, что пожелание в описании тикета сформулировано не полностью, нет?

Issue History

Date Modified Username Field Change
2006-03-31 00:11 Raistlin New Issue
2006-04-04 06:36 vskirdin Note Added: 0000108
2006-04-04 09:20 Raistlin Note Added: 0000112
2006-04-04 09:23 Raistlin Note Edited: 0000112
2013-02-03 00:34 alexy Severity minor => feature
2014-09-03 09:15 JohnDoe Note Added: 0012978
2014-09-03 09:55 Raistlin Note Added: 0012980
2014-09-03 11:35 JohnDoe Note Added: 0012982
2014-09-03 11:53 Raistlin Note Added: 0012983
2014-09-03 12:26 JohnDoe Note Added: 0012984
2014-09-03 12:27 JohnDoe Note Edited: 0012984
2014-09-03 12:29 JohnDoe Note Edited: 0012984
2014-09-03 12:31 JohnDoe Note Added: 0012985
2014-09-03 13:25 Raistlin Note Added: 0012987
2014-09-03 13:54 JohnDoe Note Added: 0012988
2014-09-03 15:26 Raistlin Note Added: 0012989
2014-09-03 15:55 JohnDoe Note Added: 0012990
2014-09-03 15:57 JohnDoe Note Edited: 0012990
2014-09-03 16:53 Raistlin Note Added: 0012991
2014-09-04 08:03 JohnDoe Note Added: 0012992
2017-10-19 15:16 JohnDoe Note Added: 0015713
2017-10-25 10:57 Raistlin Note Added: 0015744
2017-10-25 16:48 JohnDoe Note Added: 0015746