FarNet — плагин для написания плагинов на .NET языках

Здесь можно обсудить ваш любимый плагин.
mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

Latest post of the previous page:

<add key="FarManager.Plugins" value="%FARHOME%\..\Plugins.NET" />
обрабатывает ЗагрузчикПлагинов (см. исходник посланный вчера), а
<probing privatePath="%FARHOME%\..\Lib"/> сам фреймфорк.

Может в список рассылки перейдем?

User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

mugz wrote:Может в список рассылки перейдем?
Ай, я не шарю что это такое :P ... А чем тут плохо?

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

http://groups-beta.google.com/group/shp-dev

там просто еще народ, которому базар может быть интересен

User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

А ну тода можно. Пропиши меня в группу

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

пойди по ссылке, там есть "Присоединиться к этой группе"

User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Win2003+SP1+.NET2.0 = поломался плуг - не работает радактор полносью.

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »


User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

Зачот!

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

Перекомпилил под VS2k5 - вроде работает
http://belugin.info/far.net.3.1.rar

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

Плагин на boo ( http://boo.codehaus.org )

Code: Select all

import FarManager;
class HelloBoo(BasePlugin):
	menuItem as IPluginMenuItem
	def Connect():
		menuItem=Far.CreatePluginsMenuItem()
		menuItem.Name="Hello Boo"		
		menuItem.OnOpen += def: 
			Far.Msg("Hello, world from boo","Far.NET") 

		Far.RegisterPluginsMenuItem(menuItem)			
		Far.RegisterPrefix("hello, boo", {s| Far.Msg("Boo: Hello, "+s)});
	def Disconnect():
		Far.UnregisterPluginsMenuItem(menuItem)

User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

Post by t-rex »

mugz
Может кто нить на brainfuck напишет плагин? :D

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

если будет реализация, компилящщая классы, а то только экзешники:
http://p-nand-q.com/humor/programming_l ... k_net.html

поэтому, например, пока нельзя написать на IronPython

User avatar
NightRoman
Posts: 5940
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 14 times
Been thanked: 15 times
Contact:

Post by NightRoman »

Есть замечание\предложение по FarManager.IMenu.Show() : Boolean.

То, что метод возвращает Boolean, а не int, не соответствует Far API. Я не хочу сказать, что все должно соответствовать, но это, кажется тот случай. Меню Far API возвращает индекс выбранного пункта или -1, если меню отменили. В Far.Net получается, я могу только знать, был ли выбран пункт или нет (true/false). Концепция с делегатами, прикрепленными к пунктам меню очень гибкая, пусть она будет, как есть, но иногда это перебор - например, когда у меня есть просто массив строк (или данных, которые я представлю строками для меню) и я предлагаю юзеру выбрать одну. Приходится придумывать и создавать обработчик, в котором, кстати, инфа об индексе, вроде, тоже отсутствует, поэтому и еще дополнительная работа появляется.

Итак, предложение: пусть FarManager.IMenu.Show() возвращает int: индекс выбранного пункта или -1, это удобно и соответствует Far API.

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

"C:\Program Files\Far\Plugins.Net\Megatest\Megatest.js"

Code: Select all

     function testMenu(sender:Object, eventArgs:EventArgs){
        	var m=Far.CreateMenu();
        	m.Items.Add("Test Checked").Checked=true;
        	m.Items.Add("Test IsSeparator").IsSeparator=true;
        	m.Items.Add("Test Selected").Selected=true;
        	m.Show();
        	Far.Msg(m.Selected);
        }

mugz
Posts: 175
Joined: Thu 02 Jun, 2005 13:36
Contact:

Post by mugz »

кстати, ты собираешься выкладывать свои доработки f.n а то твой плагин без них не работает

User avatar
NightRoman
Posts: 5940
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 14 times
Been thanked: 15 times
Contact:

Post by NightRoman »

Ага, недоглядел - проверил, работает. Что ж, это нормальный вариант, во всяком случае, функциональность не страдает.

Про выкладывание доработок - принципиальный фикс требуется только один - удалить странное свойство lines из FarManager.Impl.BaseEditor, которое дублирует Lines и нарушает CLS compliant правила, что для PS, оказалось, фатально.

Стоит ли мне выкладывать (я еще и не знаю, как) это одно примитивное изменение? Может, кто-нибудь это просто сделает? Ну или посоветуйте, как я могу выложить.

Остальные доработки, которые мы обсуждали - не принципиальные пока, а просто улучшения PS синтаксиса для доступа к Far.Net (сейчас вместо свойств надо использовать get_X\set_X).

Кстати, плагин PowerShellFar должен работать и без этого фикса, только к редактору доступ не будет работать (ну и еще то, что с подозрением на проблемы перевода Far.Net на .Net 2.0).

Post Reply

Return to “Обсуждение плагинов”