Scripts discussion (1)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Подправил сам:
SelCompleteLine.js

Code: Select all

...
var nMinLineIndex = 0;
...
if (nMinSel <= nMaxSel)
...
Last edited by VladSh on Wed Jun 23, 2010 2:49 pm, edited 3 times in total.

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Re: CommonFunctions

Post by wisgest »

VladSh
Функция CorrectFileName убирает только первые вхождения недопустимых символов. Поосоветую такой вариант:

Code: Select all

function CorrectFileName(pFileNameOnly)
{
   return pFileNameOnly.replace(/[\\\/:\*\?"<>\|]/g, "");
}

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

Post by VladSh »

wisgest
Заменил. Спасибо! 8)

EN: Changed CorrectFileName function in CommonFunctions.js.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Вынеси знаки коммента как переменные в начало скрипта - тогда можно будет задавать не только С-комменты, но и хтмл и т.д.

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

Post by VladSh »

Instructor, Отлично, спасибо!
Но DelEmptyLines.js и DelLeadTrailSpaces.js выбрасывает вниз файла - IMHO ненаглядно.

для DelLeadTrailSpaces.js устанавливаю курсор почти туда :) где он стоял до отработки скрипта:

Code: Select all

...
var nSelStart = AkelPad.GetSelStart();
...
...
AkelPad.SetSel(nSelStart, nSelStart);
:idea: Вообще интересно было бы получить номер первого видимого в окне редактирования символа... :D

а для DelEmptyLines.js в начало:

Code: Select all

...
...
AkelPad.SetSel(0, 0);
P.S. По Lines filter приведите кто-нибудь пожалуйста пример использования?! Чего-то по коду не догоняю... :-\

Offline
Posts: 17
Joined: Sat Dec 08, 2007 12:45 pm
Contact:

Post by guest »

I can't register to the forum (it always give me an error about username...), so I borrowed this accunt of somebody else(?). sorry&thx.

I modified the SearchReplace.js file to parse the special char in ReplaceWith text box. But it does not parse \xhh and \uhhhh chars yet.

The following is the link to the file:
http://animecap.white.prohosting.com/SearchReplace.js

The file is saved in Unicode LE, otherwise the russian chars will lead to error.

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Re: Ещё чуток для меню списка свежих файлов

Post by koros »

VladSh Предлагаю немного модифицировать Ваш скрипт NewFilebyRecent.js
Вместо

Code: Select all

      //Считывание содержимого файла
      var Content = AkelPad.ReadFile(fileName, 0x1|0x2, 0, 0);		//2-й параметр: OD_ADT_BINARY_ERROR|OD_ADT_REG_CODEPAGE
      
 
лучше

Code: Select all

//Считывание содержимого файла 
      /
      var Content=AkelPad.GetSelText();
      if (Content == "") var Content = AkelPad.ReadFile(fileName, 0x1|0x2, 0, 0);                 /2-й параметр: OD_ADT_BINARY_ERROR|OD_ADT_REG_CODEPAGE 

При этом новый файл создается из выделенного текста текущего, а, если ничего не выделено, то из всего текущего файла.

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

Post by VladSh »

koros, у меня этот скрипт создаёт новый файл на основе содержимого файла из списка свежих.
То, что предлагаете Вы, просто делеатся так: выделить текст, затем Ctrl+C, клацнуть на создание нового файла, Ctrl+V.

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

VladSh wrote:koros, у меня этот скрипт создаёт новый файл на основе содержимого файла из списка свежих.
То, что предлагаете Вы, просто делеатся так: выделить текст, затем Ctrl+C, клацнуть на создание нового файла, Ctrl+V.
В таком случае вместо Вашего скрипта можно Ctrl+А, затем Ctrl+C, клацнуть на создание нового файла, Ctrl+V :).
В случае использования скрипта я предполагаь пункт в контекстном меню по правой клавиши мыши, или кнопка на тулбаре или хоткей - выделил, клацнул то, на что записан скрипт и получил новый файл с содержимым выделения или НИЧЕГО не выделил и получил то, что предлагаете Вы.
Спасибо за Ваш скрипт, я просто чуть-чуть его модифицировал.

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

Post by VladSh »

koros, мой скрипт работает при RightClick на каком-нибудь файле из СПИСКА СВЕЖИХ! Т.е. ничего открывать и копировать ненужно.

В том, что предлагаете Вы смысл тоже имеется, но тогда нужно корректно переписать скрипт, чтобы зря не определять есть ли файл и т.д... т.к. текст может быть выделен в файле, который не сохранён на диск... Мне этим заниматься, честно, - пока лень, т.к. я не создаю файл по выделению.
koros wrote:Спасибо за Ваш скрипт, я просто чуть-чуть его модифицировал.
Пожалуйста, всегда рад. Когда не лень :mrgreen:

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

VladSh wrote:koros, мой скрипт работает при RightClick на каком-нибудь файле из СПИСКА СВЕЖИХ!
А что такое СПИСОК СВЕЖИХ? Я использовал этот скрипт по RightClick на каком-нибудь открытом файле. Насколько я понял по выражению var Content = AkelPad.ReadFile(fileName, 0x1|0x2, 0, 0) скрипт просто считывает содержимое файла. Я же просто предлагаю считывать содержимое выделения, а,если ничего не выделено, то считывать содержимое всего файла, как и было у Вас.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

От нечего делать решил немного попрограммить :lol:

Скрипт для комментирования / снятия комментирования:
comments.js

Code: Select all

var commentsSet = {
	"js": ["/*", "*/", "//"],
	"html": ["<!--", "-->", null],
	"css": ["/*", "*/", null]
};
задает формат комментариев:
"расширение_файла": ["символы_начала_комментария", "символы окончания комментария", "однострочный_комментарий,_если есть"]

Текущая логика работы:
есть выделение? – комментируем выделение – выход;
есть комментирование – удаляем его – выход;
может быть одностроковое комментирование? – ищем – удаляем, если нашли – выход, если удалили;
несколько строк или невозможны одностроковые комментирии – комментируем все вошедшие строки, иначе – делаем одностроковый комментарий;

Одно но: дрыгает...
Т.е. основная проблема – получение всего текста:

Code: Select all

AkelPad.SetSel(0, -1);
this.allText = AkelPad.GetSelText();
После чего скроллит в самый низ.

Вот ведь неспроста мне такое поведение не нравилось. :D
Отсюда 1) как насчет изменения поведения команды «выделить все»? 2) можно ли как нибудь еще, кроме сохранить – AkelPad.ReadFile (таки это извращение), получить в распоряжение весь текст без злосчастной прокрутки в окне редактирования?

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

Post by VladSh »

koros wrote:А что такое СПИСОК СВЕЖИХ?
Меню: Файл -> Последние файлы. На любом из них клацаем RightClick и выбираем пункт контекстного меню, который запускает скрипт NewFilebyRecent.js.
Infocatcher wrote:Скрипт для комментирования / снятия комментирования
Так есть же такой - я писал, посмотрите в этой же теме здесь.
Для того, чтобы окно не прыгало нужно в начале выполнения скрипта отключить прорисовку окна, а в конце включить. См. в SelCompleteLine.js функции AutoRedrawOff и AutoRedrawOn.
Для того, чтобы вырнуть курсор туда, где он был до выполнения скрипта, - запоминайте начальную позицию курсора (у меня такое тоже есть - см. там же процу SaveSelection).
Last edited by VladSh on Fri Nov 06, 2009 10:11 am, edited 1 time in total.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:Так есть же такой - я писал, посмотрите в этой же теме здесь.
Я видел :). Просто мне хотелось странного :D – работы с однострочными комментариями и комментирования в других языках.
Для того, чтобы окно не прыгало нужно в начале выполнения скрипта отключить прорисовку окна, а в конце включить. См. в SelCompliteLine.js функции AutoRedrawOff и AutoRedrawOn.
Угу, смотрел, смотрел... Однако в JCommentDel.js текущая позиция все равно смещается...
Для того, чтобы вырнуть курсор туда, где он был до выполнения скрипта, - запоминайте начальную позицию курсора (у меня такое тоже есть - см. там же процу SaveSelection).
Главная проблема в том, что восстановить желательно исходную позицию курсора. А если при этом получать весь текст (выделить всё – получить выделение), текущая позиция станет самой верхней строчкой (именно это и происходит в JCommentDel.js).

В общем, мне хотелось получить нечто вроде того, что делает PSPad по Ctrl+Shift+A – снимать / ставить комментирование одним сочетанием клавиш.

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

Post by VladSh »

мне хотелось странного – работы с однострочными комментариями и комментирования в других языках.
C однострочными коментариями ведь работает!
А чтобы сделать в др. языках я жду, может когда-то сделают настроечные файлы для скриптов :)
Главная проблема в том, что восстановить желательно исходную позицию курсора.
Чтобы её восстановить, её нужно каждый раз пересчитывать, т.к. символы добавляются/убираются.
А если при этом получать весь текст (выделить всё – получить выделение), текущая позиция станет самой верхней строчкой (именно это и происходит в JCommentDel.js).
Тогда надо использовать GetFirstVisibleChar.js, но мне с этим реально лень было заморачиваться..
В общем, мне хотелось получить нечто вроде того, что делает PSPad по Ctrl+Shift+A – снимать / ставить комментирование одним сочетанием клавиш.
Также мои скрипты и делают, за исключением тонкостей с перебросом фокуса :)
Locked