FeyFre
Спасибо! Вот так всегда - перед глазами лежит, так нет...полез в Параметры... А все оказалось намного проще
Posted: Mon Oct 10, 2011 1:40 pm
by Cuprum
В других редакторах есть такая функция - ставим курсор в любое место строки, нажимаем Ctrl+D, строка с текстом, на которой установлен курсор, копируется под саму себя. Подскажите, как в Акелпаде добиться подобного?
Posted: Mon Oct 10, 2011 3:04 pm
by VladSh
Cuprum
Использовать скрипт Инструктора GetOffset.js /всё не хватает времени в свою библиотеку засунуть и переписать скрипты/, переименовать его, например, в CloneRow.js и вместо WScript.Echo(тра-та-та) поставить:
var hWndEdit = AkelPad.GetEditWnd();
var oSys = AkelPad.SystemFunction();
var ss = AkelPad.GetSelStart();
var se = AkelPad.GetSelEnd();
var line1Start = GetOffset(hWndEdit, 18 /*AEGI_WRAPLINEBEGIN*/, ss);
var line2End = GetOffset(hWndEdit, 19 /*AEGI_WRAPLINEEND*/, se);
setRedraw(hWndEdit, false);
AkelPad.SetSel(line1Start, line2End);
var pText = AkelPad.GetSelText();
AkelPad.ReplaceSel(pText + "\r" + pText);
var selAdd = pText.length + 1;
AkelPad.SetSel(ss + selAdd, se + selAdd);
setRedraw(hWndEdit, true);
// GetOffset.js - http://akelpad.sourceforge.net/forum/viewtopic.php?p=11382#p11382
function GetOffset(hWndEdit, nType /*AEGI_*/, nOffset)
{
var lpIndex;
if (lpIndex=AkelPad.MemAlloc(_X64?24:12 /*sizeof(AECHARINDEX)*/))
{
if (nOffset != -1)
AkelPad.SendMessage(hWndEdit, 3137 /*AEM_RICHOFFSETTOINDEX*/, nOffset, lpIndex);
AkelPad.SendMessage(hWndEdit, 3130 /*AEM_GETINDEX*/, nType, lpIndex);
nOffset=AkelPad.SendMessage(hWndEdit, 3136 /*AEM_INDEXTORICHOFFSET*/, 0, lpIndex);
AkelPad.MemFree(lpIndex);
}
return nOffset;
}
function setRedraw(hWnd, bRedraw) {
AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0);
bRedraw && oSys.Call("user32::InvalidateRect", hWnd, 0, true);
}
(выделение переносится в изначальном виде на добавленные строки)
Posted: Mon Oct 10, 2011 6:20 pm
by Cuprum
Infocatcher
Да, во время нажатия Ctrl+D не мелькает выделение строки. Спасибо!
Posted: Tue Oct 11, 2011 12:27 pm
by Cuprum
Если клинуть ПКМ на вкладке то в контексте наблюдаю пункт "Копировать путь". Судя по ContextMenu-плагину за данную функцию отвечает EvalCmd.js
Мне нужно добавить пункт "Копировать имя", подразумевая, что в буфер будет копироваться только название файла в формате "имя файла.расширение". Подскажите, как такого добиться?
Cuprum
Пожалуй, стоит начать отсюда.
P.S. Скрипт, который Вы хотите.. как вариант - FileNameCopyToCB.js.
Posted: Tue Oct 11, 2011 3:24 pm
by arestarh
Здравствуйте!
Если есть возможность, помогите по такому вопросу...
Задача стояла передо мной такая - преобразовать текст субтитров (формат .srt (файл содержит кроме текста также временные метки для его отображения)) из варианта "ВСЕ ПРОПИСНЫЕ" в нормальный, удобоваримый вид. Я воспользовался внутренней командой akelpad'a под номером 4177 "Преобразовать в "Как в предложениях."", но получил только частично удовлетворяющий результат. Хотя в итоге смог получить более приемлимый результат, используя в паре с akelpad'ом редактор субтитров DSRT (сам процес описал под спойлером):
Открываем в DSRT нужный .srt файл с субтитрами и выбираем пункт меню "Скрипт" -> "Передать текст фраз в MS Word" или жмем сочетание клавиш Alt + W. Далее, в открывшемся окне Word выделяем весь текст ("Выделить все" или жмем сочетание клавиш Ctrl + A) и копируем его, а затем вставляем в AkelPad. В окне AkelPad в поле редактирования текста жмем правой кнопкой мыши и выбираем пункт меню "Преобразовать" -> "Как в предложениях." и преобразованный текст копируем назад в то же самое окно Word, заменяя при этом весь находящийся там текст, и затем жмем в DSRT в появившемся диалоговом сообщении "По окончании проверки орфографии нажмите кнопку Ok" OK. После чего, можно "Сохранить" или "Сохранить как..." полученный результат.
Вопрос в том, почему если делать конвертацию akelpad'ом "Преобразовать" -> "Как в предложениях." непосредственно в файле .srt, то результат преобразования содержит ошибки в тех местах, где при точно таком же преобразовании переданного в Word DSRT'ом текста, их нет ?
В архив по ссылке ниже вложил файлы для иллюстрации сказанного: http://www.mediafire.com/?oa0iarekrjyvw0a
Содержимое архива: Subtitles_Upper.case.srt - файл субтитров с текстом полностью в верхнем регисте. TextOnly_from_Subtitles_Upper.case.txt - текст, извлеченный с помощью DSRT, из Subtitles_Upper.case.srt. Subtitles_Sentence.case(after conversion directly in akelpad).srt - файл субтитров с текстом после конвертации непосредственно в akelpad'е через "Преобразовать" -> "Как в предложениях.". TextOnly_Sentence.case(after conversion TextOnly directly in akelpad).txt - текст как результат конвертации содержимого TextOnly_from_Subtitles_Upper.case.txt непосредственно в akelpad'е.
Например, типичную ошибку преобразования можно наблюдать в Subtitles_Sentence.case(after conversion directly in akelpad).srt с 42 по 44 фразу (строки 175 - 186), которой нету в TextOnly_Sentence.case(after conversion TextOnly directly in akelpad).txt (строки 91 - 98).
Сорри, если как-то путано объяснил ситуацию.
Posted: Tue Oct 11, 2011 4:07 pm
by Cuprum
se7h, VladSh
Спасибо! В ветке с коллекцией скриптов их столько, что поиск нужного весьма затруднен
Posted: Tue Oct 11, 2011 4:59 pm
by opk44
arestarh wrote:почему если делать конвертацию akelpad'ом "Преобразовать" -> "Как в предложениях." непосредственно в файле .srt, то результат преобразования содержит ошибки в тех местах, где при точно таком же преобразовании переданного в Word DSRT'ом текста, их нет ?
Штука в том, как именно определяется начало предложения. Для Word-а жесткий перевод строки равносилен новому абзацу (а раз так, то следующее слово равносильно началу нового предложения). Вы делаете "поспешный вывод", что и в плайн-тексте также. Но для плайн-текста жесткий перевод строки "еще не аргумент". Поэтому происходит примерно вот что (описывается с намеренными искажениями "для пущей наглядности"). Берем фрагмент 171-176:
171: ТЫ ВООБЩЕ ПРОПУСКАТЬ НЕ ДОЛЖЕН...
172:
173: 42
174: 00:06:10,412 --> 00:06:13,123
175: ШКОЛА - ЭТО ВАЖНО...
176: ВАЖНЕЕ ВСЕГО.
здесь слово "школа" считается не началом предложения (поскольку, мол, "начинается сновой строки"), а всего лишь продолжением оного, поскольку ему (слову) предшествует некий текст, не заканчивающийся ни точкой ни каким-то иным знаком препинания, которым обычно заканчиваются все предложения (".!?"). В тексте "00:06:13,123 ШКОЛА - ЭТО ВАЖНО" слово "школа" приводится к нижнему регистру. Так понятно?
Когда же вы пропускаете текст через некую утилиту, то она убирая номера и временнЫе интервалы, как бы смыкает 171 и 175.
Получается "НЕ ДОЛЖЕН... ШКОЛА". Теперь "ШКОЛА" превратится в "Школа", потому что из-за предшествующего ей многоточия ("полноправный конец предложения") оно (слово "ШКОЛА") расценивается как настоящее начало предложения. Так понятней?
Posted: Tue Oct 11, 2011 6:06 pm
by Instructor
arestarh
Изменение регистра "Как в предложениях." с помощью скрипта SearchReplace.js: