From c452a20adeef5fd6a38f7a4288348e6b48f4c3ec Mon Sep 17 00:00:00 2001 From: akruphi <92621645+akruphi@users.noreply.github.com> Date: Fri, 28 Jul 2023 22:46:02 +0300 Subject: [PATCH] SimpleIndent Tab & Shift-Tab behavior for block with not fully selected lines after #1739 & #1740 --- SimpleIndent/src/SimpleIndent.cpp | 22 +++++++++++++++++----- far2l/bootstrap/scripts/FarEng.hlf.m4 | 8 ++++---- far2l/bootstrap/scripts/FarHun.hlf.m4 | 5 +++-- far2l/bootstrap/scripts/FarRus.hlf.m4 | 8 ++++---- far2l/bootstrap/scripts/FarUkr.hlf.m4 | 5 +++-- 5 files changed, 31 insertions(+), 17 deletions(-) diff --git a/SimpleIndent/src/SimpleIndent.cpp b/SimpleIndent/src/SimpleIndent.cpp index 1f4283e6..0df537cd 100644 --- a/SimpleIndent/src/SimpleIndent.cpp +++ b/SimpleIndent/src/SimpleIndent.cpp @@ -66,15 +66,15 @@ PROCESSEDITORINPUT INITSIZE(ei); Info.EditorControl(ECTL_GETINFO, &ei); + if (ei.BlockType != BTYPE_STREAM ) // working only if not vertical block selection + return 0; + { struct EditorGetString egs; INITSIZE(egs); - egs.StringNumber = -1; + egs.StringNumber = ei.BlockStartLine; Info.EditorControl(ECTL_GETSTRING, &egs); - - if (ei.BlockType != BTYPE_STREAM || // Ignore block selection - egs.SelStart != 0 || // Only activate if selection starts on a line start - ei.CurPos != 0) // Only activate if the cursor is at the line start + if (egs.SelEnd != -1) // working only if 1st line of selection up to line end return 0; } @@ -105,6 +105,18 @@ PROCESSEDITORINPUT if (egs.SelStart == -1 || egs.SelStart == egs.SelEnd) break; // Stop when reaching the end of the text selection + if (egs.SelEnd != -1) // if selection in line not up to end we force selection block up to line end + { // because if selection not up to end the tab replace selected text in last line + struct EditorSelect es; + INITSIZE(es); + es.BlockType = ei.BlockType; + es.BlockStartLine = ei.BlockStartLine; + es.BlockStartPos = 0; + es.BlockWidth = 0; + es.BlockHeight = line - ei.BlockStartLine + 1; + Info.EditorControl(ECTL_SELECT, &es); + } + if (!rev) // Indent { if (egs.StringLength > 0) diff --git a/far2l/bootstrap/scripts/FarEng.hlf.m4 b/far2l/bootstrap/scripts/FarEng.hlf.m4 index 5e0e83c9..a0ce21cc 100644 --- a/far2l/bootstrap/scripts/FarEng.hlf.m4 +++ b/far2l/bootstrap/scripts/FarEng.hlf.m4 @@ -2892,10 +2892,10 @@ behavior can be changed in the ~Editor settings~@EditorSettings@ dialog. #Ctrl-D# Delete block #Ctrl-P# ^Copy block to current cursor position (in persistent blocks mode only) #Ctrl-M# ^Move block to current cursor position (in persistent blocks mode only) - #Alt-U# Shift block left by 1 space - #Alt-I# Shift block right by 1 space - #Shift-Tab# Shift block left by Tab (or by indent size if expand tabs is configured) - #Tab# Shift block right by Tab (or by indent size if expand tabs is configured) + #Alt-U# Shift block left + #Alt-I# Shift block right + #Shift-Tab# Shift block left by Tab or by indent size (processed by SimpleIndent plugin) + #Tab# Shift block right by Tab or by indent size (processed by SimpleIndent plugin) Other operations diff --git a/far2l/bootstrap/scripts/FarHun.hlf.m4 b/far2l/bootstrap/scripts/FarHun.hlf.m4 index bfa8f920..74206064 100644 --- a/far2l/bootstrap/scripts/FarHun.hlf.m4 +++ b/far2l/bootstrap/scripts/FarHun.hlf.m4 @@ -2508,8 +2508,9 @@ kurzorpozícióba (csak maradó blokk módban) kurzorpozícióba (csak maradó blokk módban) #Alt-U# Blokk eltolása balra #Alt-I# Blokk eltolása jobbra - #Shift-Tab# Shift block left by Tab (or indent size if expand tabs is configured) - #Tab# Shift block right by Tab (or indent size if expand tabs is configured) + #Shift-Tab# Shift block left by Tab or by indent size (processed by SimpleIndent plugin) + #Tab# Shift block right by Tab or by indent size (processed by SimpleIndent plugin) + Egyéb műveletek diff --git a/far2l/bootstrap/scripts/FarRus.hlf.m4 b/far2l/bootstrap/scripts/FarRus.hlf.m4 index d2653b99..24d5bffd 100644 --- a/far2l/bootstrap/scripts/FarRus.hlf.m4 +++ b/far2l/bootstrap/scripts/FarRus.hlf.m4 @@ -2939,10 +2939,10 @@ $ #Редактор# #Ctrl-D# Удалить блок #Ctrl-P# ^Копировать блок в текущую позицию курсора (только в режиме постоянных блоков, Буфер Обмена не изменяется) #Ctrl-M# ^Перенести блок в текущую позицию курсора (только в режиме постоянных блоков, Буфер Обмена не изменяется) - #Alt-U# Сдвинуть блок влево на 1 пробел - #Alt-I# Сдвинуть блок вправо на 1 пробел - #Shift-Tab# Сдвинуть блок влево на Tab (или на indent size, если включено преобразование табуляции) - #Tab# Сдвинуть блок вправо на Tab (или на indent size, если включено преобразование табуляции) + #Alt-U# Сдвинуть блок влево + #Alt-I# Сдвинуть блок вправо + #Shift-Tab# Сдвинуть блок влево на Tab или на indent size (обрабатывается плагином SimpleIndent) + #Tab# Сдвинуть блок вправо на Tab или на indent size (обрабатывается плагином SimpleIndent) Прочие операции diff --git a/far2l/bootstrap/scripts/FarUkr.hlf.m4 b/far2l/bootstrap/scripts/FarUkr.hlf.m4 index 01d6ab2d..5e02648d 100644 --- a/far2l/bootstrap/scripts/FarUkr.hlf.m4 +++ b/far2l/bootstrap/scripts/FarUkr.hlf.m4 @@ -2823,8 +2823,9 @@ $ #Редактор# #Ctrl-M# ^Перенести блок на поточну позицію курсора (тільки в режимі постійних блоків, Буфер Обміну не змінюється) #Alt-U# Зсунути блок ліворуч #Alt-I# Зсунути блок праворуч - #Shift-Tab# Shift block left by Tab (or indent size if expand tabs is configured) - #Tab# Shift block right by Tab (or indent size if expand tabs is configured) + #Shift-Tab# Shift block left by Tab or by indent size (processed by SimpleIndent plugin) + #Tab# Shift block right by Tab or by indent size (processed by SimpleIndent plugin) + Інші операції -- 2.11.4.GIT