Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Pygin — Python adapter

Post by DrKnS » Wed 30 Dec, 2015 17:52

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by techie » Wed 30 Dec, 2015 21:18

DrKnS wrote: В аттаче пример для Python. Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.
Я понимаю, шо новый год, но это ж прям праздник какой-то. =) Только бы вот если бы он ещё не крэшился.
Last edited by techie on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [spoiler]

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by DrKnS » Wed 30 Dec, 2015 21:55

techie wrote: Только бы вот если бы он ещё не крэшился.
Питон не нашло? Фар, старее, чем сегодняшний 4498, будет падать, если не нашло.
Надо версия 3.5 и чтобы в %PATH% путь прописан был, см. readme.

tstr
Posts: 513
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by tstr » Wed 30 Dec, 2015 22:33

эх, если бы в _macroinit.lua эти пути выставлять...

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by techie » Thu 31 Dec, 2015 06:14

DrKnS wrote: Питон не нашло? Фар, старее, чем сегодняшний 4498, будет падать, если не нашло.
4498 уже не падает.
DrKnS wrote: Надо версия 3.5 и чтобы в %PATH% путь прописан был, см. readme.
Класс. Работает. =)

А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.

Когда ошибка в скрипте, непонятно как дебажить. Всё что есть это .

Не перегружается плагин, если отредактировать его. Неудобно.
Last edited by techie on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [code], [spoiler]

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by DrKnS » Thu 31 Dec, 2015 09:53

techie wrote: А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Нельзя, увы. Линкуется с pythonNN.dll статически, другого способа я не знаю.
techie wrote: Когда ошибка в скрипте, непонятно как дебажить. Всё что есть это вот.
Ошибка выводится в stdout. Если запусить с погашенными панелями, будет видно.

User avatar
HaRT
Moderator
Posts: 8109
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

Адаптеры (или плагины на любых языках и с любым интерфейсом)

Post by HaRT » Thu 31 Dec, 2015 14:19

DrKnS wrote: другого способа я не знаю
Интересно, как PTVS дружит с несколькими экземплярами установленного питона на выбор…
Фар есть инструмент, а не нянька. © 2009 DrKnS

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Использование адаптера питона

Post by gotar » Fri 01 Jan, 2016 21:24

Создаю каталог helloworld. В него записываю __init__.py из архива. Делаю load:helloworld. В меню по f11 ничего не появляется. Что я делаю не так? Если каталог helloworld переписать в %FARHOME%\Plugins и перезапустить far, то все работает.

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Использование адаптера питона

Post by DrKnS » Fri 01 Jan, 2016 22:46

load:__init__.py

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Использование адаптера питона

Post by gotar » Sat 02 Jan, 2016 12:45

Можно ли таким образом загрузить другой плагин на питоне и чем он должен отличаться от первого?

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Использование адаптера питона

Post by DrKnS » Sat 02 Jan, 2016 14:28

С этой версией будет можно.
Отличаться должен гуидом.
Точек в именах папок быть не должно.

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Использование адаптера питона

Post by gotar » Sat 02 Jan, 2016 23:33

unload: реализован?

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Использование адаптера питона

Post by DrKnS » Sun 03 Jan, 2016 09:56

Наверное, попробуй.

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Использование адаптера питона

Post by gotar » Sun 03 Jan, 2016 15:16

У меня не получается изменить текст, печатываемый плагином, без перезагрузки Фара.

Нельзя ли сделать так, чтобы в load: можно было указывать имя каталога, содержащего __init.py__ , чтобы было видно какой plugin грузится?

User avatar
DrKnS
Posts: 4642
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Использование адаптера питона

Post by DrKnS » Sun 03 Jan, 2016 18:23

gotar wrote: У меня не получается изменить текст, печатываемый плагином, без перезагрузки Фара.
Питон не особо умеет выгрузку вообще. Но перегрузить вроде бы можно. Версия в шапке обновлена.
gotar wrote: Нельзя ли сделать так, чтобы в load: можно было указывать имя каталога, содержащего __init.py__ , чтобы было видно какой plugin грузится?
Можно запускать load:имя_папки\__init__.py из папки уровнем выше, например.

User avatar
cmd.exe
Posts: 340
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 172 times
Been thanked: 5 times
Contact:

Python adapter

Post by cmd.exe » Sun 03 Jan, 2016 20:46

DrKnS wrote:Питон не особо умеет выгрузку вообще. Но перегрузить вроде бы можно. Версия в шапке обновлена.
Но мы можем reload(module).
Для Python 2 использования встроенной функции перезагрузки ():
reload(module)
Для Python 2 и 3,2-3,3 использования перезагрузки модуля с имп:
imp.reload(module)
Но imp устарела начиная с версии 3.4 в пользу importlib, так что используйте:
importlib.reload(module)
Возможно добавить такую возможность в pygin?
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

Post Reply

Return to “Разработка плагинов”