глобальный слом апи.

Разработка Far.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: глобальный слом апи.

Post by DrKnS »

Latest post of the previous page:

Видимо, для упрощения кода плагинов.
В фаре при отсутствии выделения все операции выполняются над текущим файлом, как если бы он был выделен.
Фича избавляет плагин от дополнительного кода типа:

if (!SelectedItemsNumber && current != "..")
{
ProcessFile(current);
}

как по мне - вполне нормальный ход, пусть живёт.
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: глобальный слом апи.

Post by SUSim »

спорный вопрос... но да пусть живет - просто другие парятся будут... но их меньше и они не фартим...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: глобальный слом апи.

Post by John Doe »

DrKnS wrote:как по мне - вполне нормальный ход, пусть живёт.
А у плагина есть возможность узнать наличие реально выделеных файлов?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: глобальный слом апи.

Post by DrKnS »

В цитате написано же.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: глобальный слом апи.

Post by John Doe »

сорри
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: глобальный слом апи.

Post by Alexey Samlyukov »

А что у нас сейчас в AccelKey? для писания.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: глобальный слом апи.

Post by zg »

Alexey Samlyukov wrote:А что у нас сейчас в AccelKey? для писания.
уже FarKey. спасибо.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: глобальный слом апи.

Post by Maximus5 »

Есть предложение добавить FCTL_GETPANELCOLUMNS (и может быть выкинуть FCTL_GETCOLUMNTYPES, FCTL_GETCOLUMNWIDTHS). Чтобы возвращать не просто строку, а и уже распарсенную структуру, в том числе с текущими реальными ширинами колонок.
Для чего могут понадобиться колонки в строковом виде плагинам? Я что-то ни одного usecase придумать не могу. Они нужны для того, чтобы плагин выполнил мартышкин труд по разбору колонок. Так, например, поступает FarHints, ConEmu (приходится в плагине держать свой собственный парсер).

Видится мне что-то вроде

Code: Select all

struct ViewSettingsColumn
{
    UINT Type;      // ИД колонки (имя, расширение, размер, C0, и т.п.)
    UINT WidthType; // ячейки или проценты
    UINT Width;     // количество, указанное в настройке в WidthType
    UINT CurrentWidth; // реальное количество ячеек на экране
    size_t Flags; // выравнивание и прочее
    const wchar_t *AsString; // мож кому надо
};

struct GetPanelColumnsInfo
{
    size_t StructSize;
    struct ViewSettingsColumn PanelColumns[10];
    struct ViewSettingsColumn StatusColumns[10];
};
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: глобальный слом апи.

Post by DrKnS »

Maximus5 wrote:

Code: Select all

struct GetPanelColumnsInfo
{
    size_t StructSize;
    struct ViewSettingsColumn PanelColumns[10];
    struct ViewSettingsColumn StatusColumns[10];
};
Только не [10], а *Columns + size_t ColumnsCount, мало ли.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: глобальный слом апи.

Post by Maximus5 »

По колонкам (в области стутуса) есть предложение дать расширенную возможность форматирования. Например обрамить значения фиксированными строками (префиксом/суффиксом). Т.е. добавить

Code: Select all

struct ViewSettingsColumn
{
    ...
    const wchar_t *Prefix, *Suffix;
};
Например, для удобочитаемости размера файла указывать его в фигурных кавычках. Или вообще, для многострочной области дать настроить что-то вроде

Code: Select all

File:    Far.exe
Version: 3.0 build 3000
Size:    2 004 496
Ну, предложение на будущее, но чтобы плагины не отвалились от изменения размера структуры - ставим '**'.

Code: Select all

struct GetPanelColumnsInfo
{
    size_t StructSize;
    size_t PanelColumnsCount;
    struct ViewSettingsColumn **PanelColumns;
    size_t StatusColumnsCount;
    struct ViewSettingsColumn **StatusColumns;
};
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: глобальный слом апи.

Post by Maximus5 »

Глюк в struct PanelInfo
ItemsNumber и SelectedItemsNumber - size_t,
но CurrentItem и TopPanelItem почему-то int.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: глобальный слом апи.

Post by Alexey Samlyukov »

едем дальше, определены макросы, например:
#define DlgList_AddString(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_LISTADDSTR,ID,(INT_PTR)Str)
(INT_PTR) уже устарело.

здесь же, настроек стало в разы больше чем определено в /defs/index.html

и еще:
есть пару мест, где Reserved не приведен к DWORD_PTR

далее. начал переписывать AdvControl, что теперь ждет ACTL_WAITKEY?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: глобальный слом апи.

Post by zg »

Alexey Samlyukov wrote:далее. начал переписывать AdvControl, что теперь ждет ACTL_WAITKEY?
исправил, спасибо. а какие плагины это используют?
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: глобальный слом апи.

Post by Alexey Samlyukov »

продолжаем:

в struct WindowType.Type нужно привести к enum WINDOWINFO_TYPE Type;
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: глобальный слом апи.

Post by Shmuel »

zg wrote:
Alexey Samlyukov wrote:далее. начал переписывать AdvControl, что теперь ждет ACTL_WAITKEY?
исправил, спасибо.
При проверке исправленного ACTL_WAITKEY наблюдаю непонятный эффект: нажатия клавиш, на которые назначены макросы, игнорируются, кроме одной, которая таки выполняет свой макрос (эта клавиша не совпадает с заданной в ACTL_WAITTKEY). Данный макрос содержит вызов CallPlugin (если это имеет значение).

P.S.
Просьба объяснить, если кто знает. Выглядит это, как баг, то-есть макрос исполняется "внутри" вызова ACTL_WAITKEY, и после завершения работы макроса ACTL_WAITKEY продолжает ждать "свою" (или любую) клавишу.

P.S.2
Данный эффект наблюдается при вызове из ProcessEditorInputW и не наблюдается при вызове из OpenW.
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

Re: глобальный слом апи.

Post by Kerberos464 »

а не планируется ли ещё раз изменение формата highlight.db? а то хотелось бы уже окончательно цвета настроить =)
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.
Locked

Return to “Development”