Pygin — Python adapter
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
Latest post of the previous page:
Сабж, если что, создавался как Proof-of-Concept адаптера, дабы убедиться, что оно реализуемо, работоспособно и т. п.
Мной не двигало стремление в одиночку создать полноценную интерацию с питоном.
Скорее, предоставить минимальный каркас, на базе которого можно потом что-то строить.
Цель эта, в принципе, достигнута, и на этом можно было бы и закончить.
Процесс, однако, оказался весьма затягивающим и доставляющим, так что я продолжу.
Но не стоит ждать каких либо обещаний и сроков: вдохновение может прийти завтра, а может и через год.
Как обычно: код доступен, если присылать патчи @ делать пулл реквесты - дело пойдет быстрее.
Python adapter
Портировать интерфейсы Far ручками долго. CFFI может сгенерить обёртки для C, и для С++ есть инструменты, но не компилируется уже совсем у меня в мозгах, да и визуал студии нет. Если бы можно было клонировать код и пересобрать одной командой сразу в Far, то можно было бы попробовать, а так слишком много времени уходит.
Сейчас мне надо сделать обёртку для того, чтобы открыть панель с файликами, которые я получаю по команде git diff, и соответственно обрабатывать префикс git: плагином.
Сейчас мне надо сделать обёртку для того, чтобы открыть панель с файликами, которые я получаю по команде git diff, и соответственно обрабатывать префикс git: плагином.
Python adapter
Как задать IncludePath правильно, чтобы скомпилялся? https://ci.appveyor.com/project/techton ... ild/1.0.22
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
Вы же ещё недавно жаловались, что какие-то жалкие ууиды - это не пайтонвэй.
А с этим вашим FFI вообще все богомерзкие сишные потроха с явными типами и ручным управлением памятью будут торчать наружу.
И зачем так жить? Лучше тогда сразу на сишечке, там хоть синтаксис проще.
Python adapter
А какой альтеративный путь? Есть другие генераторы - https://github.com/pybind/pybind11 например, но я тоже ими не пользуюсь.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
Путь один - ручками.
Механически портировать один в один вредно и бессмысленно.
Например, InputBox, которая пишет строку в переданный адрес и возвращает true/false. В питоне тоже можно извратиться и передать, скажем, пустой список, куда эта строка будет записана, но это маразм и ересь, проще тупо вернуть строку или None, если отменили.
Добавил GetMsg, InputBox, Menu, Message, ShowHelp.
Новые билды - на AppVeyor.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
В шапке ссылка на гитхаб, там, если прокрутить страницу вниз, автоматически показывается readme.md, в верхнем левом углу которого серо-зелёная кнопка с надписью "build passing", которая ведет на AppVeyor. Там жмите на любой job, потом artifacts, потом 7z.
P.S. Добавил кнопку в шапку.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Pygin — Python adapter
Не прошло и двух лет, как стало можно - теперь линкуется с python3.dll и должен работать с любой 3.x.
Pygin — Python adapter
При открытии плагина вызывается OpenW(self, info), сейчас в info - только Guid.
Цель экспериментального плагина - обработать флаги из info.OpenFrom для, например OPEN_COMMANDLINE и OPEN_FROMMACRO, с получением ссотв. структур OpenCommandLineInfo и OpenMacroInfo соответственно.
первая для обработки вызова плагина через комстроку (для эксперимента с
1. переименованием переданных имён файлов;
2. для обработки наподобие lua: префикса например через питоновский eval()),
вторая для создания макро-функции. например ….eval(), ну или интерфейсного аналога Lunatic Python: python.execute(statement), python.eval(expression), python.globals(), python.locals(), python.builtins() etc.
Цель экспериментального плагина - обработать флаги из info.OpenFrom для, например OPEN_COMMANDLINE и OPEN_FROMMACRO, с получением ссотв. структур OpenCommandLineInfo и OpenMacroInfo соответственно.
первая для обработки вызова плагина через комстроку (для эксперимента с
1. переименованием переданных имён файлов;
2. для обработки наподобие lua: префикса например через питоновский eval()),
вторая для создания макро-функции. например ….eval(), ну или интерфейсного аналога Lunatic Python: python.execute(statement), python.eval(expression), python.globals(), python.locals(), python.builtins() etc.