Что хотелось бы добавить в AkelPad (3)

Russian main discussion
  • Author
  • Message
Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

хотелось бы, чтобы при открытии диалогового окна "Выбор окна" (F10), в списке отображались не только вкладки текущего окна, но и вкладки из других открытых окон экземпляров программы AP, с разделителем по экземплярам открытой программы

Спасибо :wink:

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

Добавьте возможность в плагине LineBoard настраивать ширину столбца с номерами строк.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

W0LF wrote:Добавьте возможность в плагине LineBoard настраивать ширину столбца с номерами строк.
Чтобы что?
Сейчас ширина настраивается под ширину шрифта. Мог бы понять желание независимой настройки шрифта для столбца с номерами (например, сделать меньше/уже основного). А вот ваша ручная настройка ширины в отрыве от шрифта, она для чего?
Ещё пример ручных настроек. В диалоге можно установить (произвольным образом) ширину цветовых отметок сохранённых/несохранённых строк. Если поставить вместо "дефолтной" =3, что-нибудь вроде = 30 или ещё больше, то отметки скроют номера. И зачем такое "счастье"? Зато "полная свобода выбора".

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

opk44 wrote:Чтобы что?
Чтобы иметь постоянной ширину столбца, где отображаются номера строк. И я не про ширину шрифта, а про ширину в символах. Бесит, когда номера строк переходят с 9 на 10 или с 99 на 100 и при скролле весь текст сдвигается вправо.

Offline
Posts: 1
Joined: Thu Jul 04, 2019 8:59 am

Post by valerchi »

мне очень нужно изменять размеры окна с помощью клавиатуры (на один символ в ширину). Нажал сочетание клавиш, нажал стрелочку вправо, - размер окна увеличился на один символ. Нажал стрелочку влево, - размер окна уменьшился на один символ.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

W0LF wrote:номера строк переходят с 9 на 10 или с 99 на 100 и при скролле весь текст сдвигается вправо.
В Notepad++ ширина изначально задана на 3 символа для среднестатистического файла на 999 строк, а уже более начинает меняться. Вроде как есть смысл, хотя я пока не замечал это недостатком.
valerchi wrote:нажал стрелочку вправо, - размер окна увеличился на один символ.
Теоретически не сложно используя WinAPI в скрипте js. Например SetWindowPos или SetWindowPlacement или MoveWindow задать новую позицию и размер окна. Только ширина символа шрифта имеет разный размер.
Вот

Code: Select all

var oSys       = AkelPad.SystemFunction();
var hMainWnd = AkelPad.GetMainWnd();
var DT_DWORD    = 3;

if (hMainWnd)
{
  //Get arguments
  if (WScript.Arguments.length)
  {
    sAction = WScript.Arguments(0).toUpperCase();
    MoveWindow(hMainWnd, sAction);
  }
}

function MoveWindow(hWnd, sAction)
{
  var aRect;
  var nX;
  var nY;
  var nW;
  var nH;
  var nShiftV;
  var nShiftH;

  aRect       = GetWindowPos(hWnd);

  nX = aRect.left;
  nY = aRect.top;
  nW = aRect.right - aRect.left;
  nH = aRect.bottom - aRect.top;
  nShiftV = 18; // для 11 Arial
  nShiftH = 10;

switch (sAction)
{
  case "RR": // двигаем правую вправо
    nW += nShiftH;
    break;
  case "RL": // двигаем правую влево
    nW -= nShiftH;
    break;
  case "BB": // двигаем нижнюю вниз
    nH += nShiftV;
    break;
  case "BT": // двигаем нижнюю вверх
    nH -= nShiftV;
    break;
}
// oSys.Call("User32::SetWindowPos", hWnd, 0, 0, 0, nW, nH, 0x16 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE*/);


switch (sAction)
{
  case "LR": // двигаем левую вправо
    nW -= nShiftH;
    nX += nShiftH;
    break;
  case "LL": // двигаем левую влево
    nW += nShiftH;
    nX -= nShiftH;
    break;
  case "TB": // двигаем верхнюю вниз
    nH -= nShiftV;
    nY += nShiftV;
    break;
  case "TT": // двигаем верхнюю вверх
    nH += nShiftV;
    nY -= nShiftV;
    break;
}
oSys.Call("User32::SetWindowPos", hWnd, 0, nX, nY, nW, nH, 0x14 /*SWP_NOZORDER|SWP_NOACTIVATE*/);
}

function GetWindowPos(hWnd)
{
  var lpRect = AkelPad.MemAlloc(16) //sizeof(RECT);
  var aRect  = [];

  oSys.Call("User32::GetWindowRect", hWnd, lpRect);

  aRect.left   = AkelPad.MemRead(_PtrAdd(lpRect,  0), DT_DWORD);
  aRect.top    = AkelPad.MemRead(_PtrAdd(lpRect,  4), DT_DWORD);
  aRect.right  = AkelPad.MemRead(_PtrAdd(lpRect,  8), DT_DWORD);
  aRect.bottom = AkelPad.MemRead(_PtrAdd(lpRect, 12), DT_DWORD);
  AkelPad.MemFree(lpRect);

  return aRect;
}
(ширина и высота шрифта я задал цифрами 7 и 10) Сделай хоткеи типа

Code: Select all

Call("Scripts::Main", 1, "ShiftWindow.js", "LR")
LR = левая граница вправо
BT - нижняя граница вверх
и т.д. с комбинациями BB BT TB TT RR LL RL LR
Одну группу хоткеев можно с модификатором Alt, другую с Shift. Лично у меня Ctrl занят с передвижением строк вверх вниз.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

22106 - Исправить набор En->Ru
22107 - Исправить набор Ru->En
Можно определить язык, чтобы одной клавишей исправлять. Справа влево читать символы пока не встретится буква, по ней определить текущую раскладку. Я, кстати, писал прогу по авто-исправлению набранного текста в неправильной раскладке, но почему то в AkelPad она работает плохо, по 5 раз хоткей надо жать.
Теоретически идеально нужно в настройках сделать набор символов что на что менять, тогда пользователь сам впишет свой вариант замены раскладки без привязки к конкретным языкам.

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

AZJIO wrote:
W0LF wrote:номера строк переходят с 9 на 10 или с 99 на 100 и при скролле весь текст сдвигается вправо.
В Notepad++ ширина изначально задана на 3 символа для среднестатистического файла на 999 строк, а уже более начинает меняться. Вроде как есть смысл, хотя я пока не замечал это недостатком.
Вот-вот, я тоже хотел привести в пример np++, но нашел вариант интереснее :wink: - Code::Blocks:

Image

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

W0LF wrote:Вот-вот, я тоже хотел привести в пример np++
ещё у np++ последнюю строку можно прокрутить наверх, этого не достаёт.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Сделал несколько иконок
Сonsole (для Log)
LineBoard
Sort4
Sort3
Sort1
Sort2
XBrackets

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Добавить бы ком. строку типа

Code: Select all

AkelPad.exe Find"искомое с пробелами"
AkelPad.exe Find10110"или с флагами"

Я в своей программке поиска совершаю прыжок для просмотра, например ищу по файлам текст "Привет", прога выдала результат: список файлов, далее я кликаю на файле, чтобы открыть его, или нажимаю кнопку открытия с поиском, это действие эмулирует Ctrl+F, вставку слова (Ctrl+С или надежнее Shift+Int) и Enter - собственно поиск. Эта комбинация иногда плохо работает в русской раскладке, вместо Ctrl+F может вставить русскую "а" в начало документа, так как под клавишей F находится русская "а". Конечно, для учёта раскладки я пытаюсь обойти эту проблему разными способами в том числе для известного редактора по имени или классу окна вызываю диалог поиска API-командой, но было бы проще вызвать в ком. строке с продолжением поиска по F3

Offline
Site Admin
Posts: 6411
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

AZJIO
Найти в файле после открытия:

Code: Select all

AkelPad.exe "c:\File.txt" /Call("Scripts::Main", 7, "AkelPad.TextFind(0, 'Text for search', 0x280001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXP*/)")

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Instructor
Как из другого языка вызвать AkelPad.GetMainWnd() например?

У меня есть программка автоматизации моих задач на AutoIt3 которая работает с другим редактором, я попробовал указать окно AkelPad и немного подкорректировать, стало неплохо получаться. Пока не получается вставить/извлечь текст, я конечно ещё не все приёмы попробовал, но хотелось бы подобно с AkelPad.ReplaceSel, то есть через методы. Библиотека RichEdit в AutoIt3 почему то с числами работает нормально (число строк и т.д.), а с текстом (получить, найти и т.д.) постоянно приводит к падению AkelPad.
Case $iBtnReplace

$hWnd
= WinWait("[CLASS:AkelPad4]", "", 5)
If Not $hWnd Then ContinueLoop
_SendMessage($hWnd, $WM_COMMAND, 4161, 0)
$hWnd = WinWait("[CLASS:#32770]", "&Регулярные выражения", 2)
ControlSetText($hWnd, "&Регулярные выражения", "Edit1", '\n')
ControlSetText($hWnd, "&Регулярные выражения", "Edit2", '-текст\n')
ControlCommand($hWnd, "&Регулярные выражения", "Button3", 'Check') ; 3 - регулярное выражение

Case $iBtnDel5

$hWnd
= WinWait("[CLASS:AkelPad4]", "", 5)
If Not $hWnd Then ContinueLoop
_SendMessage($hWnd, $WM_COMMAND, 4161, 0)
$hWnd = WinWait("[CLASS:#32770]", "&Регулярные выражения", 2)
ControlSetText($hWnd, "&Регулярные выражения", "Edit1", '^(.*?)$\s+?^(?=.*^\1$)')
ControlSetText($hWnd, "&Регулярные выражения", "Edit2", '')

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Избранное - мне это нравится, я ещё в Notepad++ просил добавить, чтобы некоторые файлы не пропадали в истории последних, но

1. если не трудно делается то хотелось бы с возможностью однократного вложения, то есть добавить папку, а уж в неё файлы.

2. На файле избранного вызвать конт.меню в котором "Открыть папку файла" "Удалить из списка". Во первых простота удаления, во вторых допустим я добавил кодер один файл, и я понимаю, если мне понадобится другой кодер я использую пункт открытия папки и бросание в окно другого файла, то есть это в том числе быстрый доступ к другим файлам сконцентрированным в неком месте, один из которых я добавил в избранное. Конт. меню одинаковое для всех пунктов этого меню, данные берёт под пунктом, то есть не добавляет лишних пунктов событий.
_______________
Ctrl + Y удаление строки - неудачный хоткей, используется как "Повторить" во многих прогах, то есть антоним Ctrl + Z

Архиву иконок (выше) добавил 3 иконки на тему дубликаты/уникальные

Offline
Posts: 3243
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor
Как предлагал много лет назад - удалить "Избранное", чтобы не смущало людей, а часть его функциональности, недостающей в Sessions-плагине перенести туда.
Post Reply