Latest post of the previous page:
согласен, функционал префиксов и алиасов очень близок, но префиксы как раз удобнее тем, что гарантированно не пересекутся с дос командамиCommandLine — запуск макросов по префиксам командной строки
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
CommandLine — запуск макросов по префиксам командной строки
Вот тут как раз разницы нет, алиасы могут быть и с двоеточием
- hoopoe
- Posts: 263
- Joined: Mon 28 Mar, 2005 07:44
- Location: Нежный Новгород
- Has thanked: 1 time
- Contact:
CommandLine — запуск макросов по префиксам командной строки
дядь, давай на ты
я привык просто к префиксам, и некоторые плуги можно переписать на Lua с меньшим количеством кода и большим функционалом
я привык просто к префиксам, и некоторые плуги можно переписать на Lua с меньшим количеством кода и большим функционалом
CommandLine — запуск макросов по префиксам командной строки
Может поделить строку после префикса на отдельные слова как это делает shell для Си main() и передавать в action массив строкок-параметров с ученом кавычек и т.п. вместо одной строки text?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
CommandLine — запуск макросов по префиксам командной строки
Если выскажется достаточное количество людей в пользу этого, можно будет сделать.
CommandLine — запуск макросов по префиксам командной строки
John Doe, как Вы считаете, если SplitCommandLine будет вызываться до action, то это может комунибудь помешать? Как Вы думаете будут ли у Вас обработчики CommandLine с парметрами, которым функциональность SplitCommandLine будет не нужна?
- hoopoe
- Posts: 263
- Joined: Mon 28 Mar, 2005 07:44
- Location: Нежный Новгород
- Has thanked: 1 time
- Contact:
CommandLine — запуск макросов по префиксам командной строки
да запросто... далеко не всегда нужно пилить ком.строку: при работе с префиксами распил может усложнить жизнь. я за предложение джедая: добавить в API функу для распила - кому надо будет тот распилит. или совсем альтернативное предложение: массив отдавать третьим параметром callback'а (после префикса и оригинальной строки)
CommandLine — запуск макросов по префиксам командной строки
То есть у Вас было так: пишу программу на Си и думаю,-жалко, что не могу получить командную строку целиком, а только в виде отдельных параметров в массиве argv?
- hoopoe
- Posts: 263
- Joined: Mon 28 Mar, 2005 07:44
- Location: Нежный Новгород
- Has thanked: 1 time
- Contact:
CommandLine — запуск макросов по префиксам командной строки
да, когда Far Call писал - нужно было отдать шеллу строку именно в том виде, в котором она пришла
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
CommandLine — запуск макросов по префиксам командной строки
Альтернатива SplitCommandLine:
Code: Select all
local ffi = require"ffi"
local Shell32,C = ffi.load"Shell32",ffi.C
ffi.cdef[[//https://msdn.microsoft.com/library/bb776391
LPWSTR* CommandLineToArgvW(
LPCWSTR lpCmdLine,//_In_
int *pNumArgs //_Out_
);
//http://msdn.microsoft.com/library/ms647492
int lstrlenW(const wchar_t *lpString);
]]
local wsize = ffi.sizeof"wchar_t"
local function CommandLineToArgv(CommandLine)
local pNumArgs = ffi.new("int[1]")
local CommandlineW = win.Utf8ToUtf16(CommandLine).."\0"
local Argv = Shell32.CommandLineToArgvW(ffi.cast("LPCWSTR",CommandlineW),pNumArgs)
if Argv~=nil then
local argv = {}
for i=0,pNumArgs[0]-1 do
argv[i] = win.Utf16ToUtf8(ffi.string(Argv[i],C.lstrlenW(Argv[i])*wsize))
end
return argv
end
end
Last edited by John Doe on Sun 17 Sep, 2017 13:12, edited 1 time in total.
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
CommandLine — запуск макросов по префиксам командной строки
John Doe,
Можно же упростить, избавившись от совершенно ненужной функции _w
Можно же упростить, избавившись от совершенно ненужной функции _w
Shell32.CommandLineToArgvW(win.Utf8ToUtf16(CommandLine.."\0"),pNumArgs)
Разум когда-нибудь победит.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
CommandLine — запуск макросов по префиксам командной строки
Дествительно.Только cast ещё нужен.
Обновил.
Обновил.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
CommandLine — запуск макросов по префиксам командной строки
Если передать CommandLineToArgv пустую строку, то вернётся полное имя far.exe
Ничего о таком поведении в документации не нашёл.
Ничего о таком поведении в документации не нашёл.