кто может написать плагин для работы с проектом?

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

кто может написать плагин для работы с проектом?

Post by rono »

приветствую. хочу спросить, может ли кто-то написать плагин.
мне для работы нужен текстовый редактор, который может работать с древовидной структурой проекта, но не создавая собственный формат документа, который объединяет все в один файл, а скорее как менеджер текстовых файлов. То есть, чтобы проект просто объединял между собой лежащие в структуре папок отдельные текстовые документы, которые можно было бы открыть любым другим внешним редактором.

ищу подобную программу или человека, который мог бы ее написать уже несколько лет, но все кого я спрашивал, отказываются и советуют поискать получше. В результате, нашел недавно программу zim wiki. Она создает файл проекта, без слияния остальных файлов. Казалось бы, то что нужно, но она громоздкая и подглючивает. Продолжаю поиски, на днях протестировал программу Akelpad, но такой функции не обнаружил. Хоть и увидел плагин для работы с сессиями, но это не то. Решил воспользоваться форумом. не представляю, насколько это сложно, но если кто-то заинтересовался или может посоветовать такую программу, было бы здорово.

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

Post by Instructor »

Code: Select all

// http://akelpad.sourceforge.net/forum/viewtopic.php?t=2107
// Version: 1.0
// Author: Shengalts Aleksander aka Instructor
//
//
// Description(1033): Merge contents of all specified documents in one file.
// Description(1049): Соединить содержимое всех указанных документов в один файл.
//
// Arguments:
// -Save=false  -Read files (default).
// -Save=true   -Save files.
//
// Usage:
// "Read files" Call("Scripts::Main", 1, "MergeProject.js", `-Save=false`)
// "Save files" Call("Scripts::Main", 1, "MergeProject.js", `-Save=true`)
//
// Document format:
// ||||c:\Folder\MyFile1.txt
// Some text 1
// ||||c:\Folder\MyFile2.txt
// Some text 2...

//Arguments
var bSave=AkelPad.GetArgValue("Save", false);

//Variables
var oSys=AkelPad.SystemFunction();
var pFileText;
var pSelFile;
var pSelText;
var nInitSelStart;
var nInitSelEnd;
var nSelEnd;
var nOffset;

if (bSave)
{
  nInitSelStart=AkelPad.GetSelStart();
  nInitSelEnd=AkelPad.GetSelEnd();
}
nOffset=AkelPad.TextFind(0, "(?<=^\\|\\|\\|\\|).*?", 0x2C0001 /*FRF_DOWN|FRF_BEGINNING|FRF_REGEXPNONEWLINEDOT|FRF_REGEXP*/);
if (nOffset > -1)
{
  do
  {
    pSelFile=AkelPad.GetSelText();
    if (!bSave)
      pFileText=AkelPad.ReadFile(pSelFile);
    if (!IsFileExist(pSelFile))
    {
      WScript.Echo("Not found: " + pSelFile);
      break;
    }
    //Skip new line
    nSelEnd=AkelPad.GetSelEnd();
    AkelPad.SetSel(nSelEnd + 1, nSelEnd + 1);
    nOffset=AkelPad.TextFind(0, ".*?(?=^\\|\\|\\|\\||\\Z)", 0x80001 /*FRF_DOWN|FRF_REGEXP*/);
    if (!bSave)
      AkelPad.ReplaceSel(pFileText);
    else
    {
      pSelText=AkelPad.GetSelText(3/*\r\n*/);
      AkelPad.WriteFile(pSelFile, pSelText, -1, 65001, true);
    }
    if (nOffset > -1)
      nOffset=AkelPad.TextFind(0, "(?<=^\\|\\|\\|\\|).*?", 0xC0001 /*FRF_DOWN|FRF_REGEXPNONEWLINEDOT|FRF_REGEXP*/);
  }
  while (nOffset > -1)
}
if (bSave)
{
  AkelPad.SetSel(nInitSelStart, nInitSelEnd);
}

function IsFileExist(pFile)
{
  if (oSys.Call("kernel32::GetFileAttributes" + _TCHAR, pFile) == -1)
    return false;
  return true;
}


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

Code: Select all

||||c:\Folder\MyFile1.txt

||||c:\Folder\MyFile2.txt
2. Считываете содержимое файлов проекта:

Code: Select all

Call("Scripts::Main", 1, "MergeProject.js", `-Save=false`)
3. Меняете содержимое.
4. Сохраняете изменения:

Code: Select all

Call("Scripts::Main", 1, "MergeProject.js", `-Save=true`)
Для работы скрипта используйте текущую разрабатываемую версию AkelPad'а.

Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

Post by rono »

О, благодарю, Александр)
Только чувствую себя как Буратино) пока не понимаю, как его запустить в программе. Файл создал и поместил в (AkelPad-4.9.7-bin-rus\AkelFiles\Plugs\Scripts)

PS
рекомендованную "текущую версию" тоже скачал, но понятнее не стало)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

rono
Плагинами ToolBar, ContextMenu или HotKeys отобразить пунктами меню/кнопками указанные Call-команды(для HotKeys привязать к горячей клавише)

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

rono
Посмотрите картинку и пост выше.
Может Sessions Plugin все-таки то, что нужно?

Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

Post by rono »

00
Last edited by rono on Mon Jul 04, 2016 8:31 pm, edited 2 times in total.

Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

Post by rono »

Kley
благодарю, пытаюсь разобраться.
насколько я понимаю, Sessions plugin создает только файл, который объединяет другие файлы, но не создает папку, а сами файлы остаются лежать там, откуда их открыли. То есть, структура создается только внутри самой оболочки. В общем и целом, это не проблема. И плагин, действительно, почти то, что нужно.
А про запуск скрипта вообще не понял. Открывал ToolBar, ContextMenu и HotKeys, но не понимаю, что делать с окном, которое всплывает. А при запуске скрипта вообще ничего не происходит. Извините, вероятно туплю. Или может просто не имею опыта работы с подобными программами. И как тут, в форуме прикрепить принтскрин, тоже чего-то не понимаю... Не писал никогда на форумах.

Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

Post by rono »

Instructor
я прошу прощения, вы не могли бы подробнее описать, как запустить скрипт. я не сталкивался с подобным, поэтому не понял, что нужно сделать.

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

Post by Instructor »


Offline
Posts: 6
Joined: Mon Jun 27, 2016 4:40 pm

Post by rono »

Instructor
В той степени, в которой я понял, я все это уже это проделывал. При запуске скрипта не происходит вообще ничего.

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

rono
скрипт MergeProject.js кладете в ПапкаAkelPad\AkelFiles\Plugs\Scripts;
добавляем в меню две строки:

Code: Select all

"Read files (MergeProject)" Call("Scripts::Main", 1, "MergeProject.js", `-Save=false`)
"Save files (MergeProject)" Call("Scripts::Main", 1, "MergeProject.js", `-Save=true`)
в любой ПАПКЕ создаем два файла Readme1.txt, Readme2.txt (с каким-нибудь текстом);
рядом с этими файлами создаем еще один: Project.txt. Открываем его в AkelPad;
печатаете текст:

Code: Select all

||||путь\к вашей\ПАПКЕ\Readme1.txt

||||путь\к вашей\ПАПКЕ\Readme2.txt

можно сохранить, для дальнейшего использования;
жмем пункт меню: "Read files".
Между строк "||||..." появляется текст файлов Readme1.txt, Readme2.txt.
ЕГО можно править, и сохранить: пункт меню "Save files" (MergeProject).
Файл Project.txt можно закрыть не сохраняя.
Post Reply