Sessions plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »


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

Post by Instructor »

Добавлено: опция для сохранения папки AkelPad'а как %a.

Added: option for saving AkelPad path as %a.


Sessions plugin v8.2

Offline
Posts: 52
Joined: Mon Jan 03, 2011 11:02 pm

Post by ABTOP »

Instructor wrote:
Cuprum wrote:...быстрый доступ к сохраненным сессиям...
Реализовано скриптом. Будет доступно после релиза 4.9.1.
ссылка на пост
А где найти этот скрипт?

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

ABTOP
SessionsOpenMenu.js, брать из архива http://akelpad.sourceforge.net/files/pl ... ructor.zip

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor
Спасибо за возможность:

Code: Select all

-"Открыть в новом окне сессию My_AkelPad" Call("Scripts::Main", 1, "ForceNewInstance.js", `-CmdLine="/Call('Sessions::Main', 1, 'My_AkelPad')"`) Icon("%a\AkelPadImage.dll",1)

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Можно ли сделать проверку при Call("Sessions::Main", 2, "FILE")
Если нет открытых документов или открыта одна пустая вкладка, то при параметре 2 выдавалось бы сообщение о том, что нечего сохранять. О возможности затереть сессию...

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Andrey_A_A
В голове возникла смутная мысль: есть такая либа для вкладок, можно начать с проверки режима if (AkelPad.IsMDI()). Только так с разбегу не вспомню, как нумеруются вкладки - с нуля или единицы. Для общего количества вкладок есть TCM_GETITEMCOUNT.

Хотя плагином, наверное, будет удобнее...

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Skif_off
Уже сколько раз было - пишу скрипт, а потом через какое-то время появляется это в том или ином функционале, поэтому и решил спросить.
Ответят нет - проверим сами))

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

Post by Instructor »

Andrey_A_A
В 4.9.2 можно будет использовать FWS_COUNTNAMED:

Code: Select all

if (AkelPad.SendMessage(AkelPad.GetMainWnd(), 1291 /*AKD_FRAMESTATS*/, 4 /*FWS_COUNTNAMED*/, 0))
  AkelPad.Call("Sessions::Main", 2, "FILE");

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor
Спасибо!

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

Post by Instructor »

Изменено: уменьшено мелькание плавающего окна для версии AkelPad 4.9.2 и выше.
Добавлено: сохранение отметок с флагом - слово целиком.

Changed: reduce dockable window flickering for AkelPad 4.9.2 and higher.
Added: saving marks with flag - whole word.


Sessions plugin v8.3

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor
1. При выделении текста:

Code: Select all

-"1234567" Call("Coder::HighLight", 2, "#FFFFFF","#A0A0FF", 7, 1, 000001, "TEXT")
При сохранении секции в файл попадает такая запись

Code: Select all

%a\MyFiles\File.txt
/Name="File.txt" /Active=1 /Codepage=1251 /Selection=76-76 /FirstVisChar=0 /WordWrap=0 /ReadOnly=0 /Overtype=0 /Bookmarks= /CoderAlias="File.txt" /Folds= /Marks=(#FFFFFF,#A0A0FF,268435459,1,000001,"TEXT")
Откуда берётся число 268435459? Почему не записывается число 7 ?

2. Большинство ключей понятны и есть информация как получить значение из документа.
Подскажите как получить значения в скрипт для ключей
FirstVisChar
Overtype
Folds

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

Post by Instructor »

Andrey_A_A wrote:Откуда берётся число 268435459? Почему не записывается число 7 ?
Sessions плагин хранит флаги не в формате внешнего вызова Coder плагина. Конечно можно привести к одному значению, но потеряется обратная совместимость.
Подскажите как получить значения в скрипт для ключей
FirstVisChar

Code: Select all

SendMessage(hWndEdit, AEM_GETRICHOFFSET, AEGI_FIRSTVISIBLECHAR, 0);
Overtype

Code: Select all

SendMessage(hMainWnd, AKD_GETFRAMEINFO, FI_OVERTYPE, (LPARAM)NULL)
Folds
Тут

Code: Select all

            if (hFoldsStack=(HSTACK *)SendToDoc(lpFrame->ei.hDocEdit, lpFrame->ei.hWndEdit, AEM_GETFOLDSTACK, 0, 0))
            {
              if (hFoldsStack->first)
              {
                if (nSize=GetCollapsedFoldsString(hFoldsStack, NULL))
                {
                  if (wszCoderFolds=(wchar_t *)GlobalAlloc(GPTR, nSize * sizeof(wchar_t)))
                    nSize=GetCollapsedFoldsString(hFoldsStack, wszCoderFolds);
                }
              }
            }
...
int GetCollapsedFoldsString(HSTACK *hFoldsStack, wchar_t *wszString)
{
  AEFOLD *lpFold;
  int nFoldCount=0;
  int nSize=0;

  for (lpFold=(AEFOLD *)hFoldsStack->first; lpFold; lpFold=AEC_NextFold(lpFold, !lpFold->bCollapse))
  {
    ++nFoldCount;

    if (lpFold->bCollapse)
    {
      nSize+=xitoaW(nFoldCount, wszString?wszString + nSize:NULL);

      if (wszString) *(wszString + nSize)=L',';
      ++nSize;
    }
  }
  if (nSize) --nSize;

  if (wszString)
  {
    *(wszString + nSize)=L'\0';
    return nSize;
  }
  return nSize + 1;
}

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

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

И конечно совершенно непонятно с кодом Folds
Похожих примеров, из того, что вы написали нет ни в одном скрипте...
HSTACK, AEFOLD ...
Можно ли сделать код рабочим на js, чтобы потом можно для себя на vbs переложить?

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

Post by Instructor »

Andrey_A_A wrote:Как же быть?
Просто прописывать в том, как хранится.

Флаги внешнего вызова:

Code: Select all

#define MARKFLAG_MATCHCASE 0x1
#define MARKFLAG_REGEXP    0x2
#define MARKFLAG_WHOLEWORD 0x4
Флаги хранения:

Code: Select all

#define AEHLF_MATCHCASE 0x00000001
#define AEHLF_WHOLEWORD 0x00000002
#define AEHLF_REGEXP    0x10000000
Похожих примеров, из того, что вы написали нет ни в одном скрипте...
Можно посмотреть как перебирать элементы кучи, например, в OpenClosedRecentFile.js.
Post Reply