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

Здесь можно обсудить ваш любимый плагин.
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT » Thu 21 Jul, 2005 11:23

Latest post of the previous page:

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

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

Post by mugz » Thu 21 Jul, 2005 12:20

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

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

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

Post by 4ekucT » Thu 21 Jul, 2005 13:47

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

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

Post by mugz » Thu 21 Jul, 2005 13:55

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

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

Post by 4ekucT » Thu 10 Nov, 2005 23:21

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

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

Post by mugz » Sun 13 Nov, 2005 14:22


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

Post by 4ekucT » Mon 14 Nov, 2005 10:08

Зачот!

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

Post by mugz » Sat 29 Jul, 2006 10:23

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

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

Post by mugz » Tue 05 Dec, 2006 08:07

Плагин на 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: 4903
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 3 times
Contact:

Post by t-rex » Tue 05 Dec, 2006 08:12

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

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

Post by mugz » Tue 05 Dec, 2006 08:18

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

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

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

Post by NightRoman » Mon 11 Dec, 2006 14:44

Есть замечание\предложение по 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 » Mon 11 Dec, 2006 14:52

"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 » Mon 11 Dec, 2006 14:58

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

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

Post by NightRoman » Mon 11 Dec, 2006 15:31

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

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

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

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

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

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

Post by NightRoman » Mon 11 Dec, 2006 15:49

Точнее, 2 изменения:

1) удалить в FarDotNetStruct\Editor.cs свойство lines (в нижнем регистре!):

Code: Select all

		virtual public ILines lines {
			get {
				return null;
			}
		}
2) изменить в FarNetPlugin\Selection.cpp метод SelectionImpl::get_Count на

Code: Select all

int SelectionImpl::get_Count(void){
	ITwoPoint *shape=__try_cast<ITwoPoint *>(Shape);
	if(shape==NULL)
		return 0;
	return shape->Height;
}
Кто с исходниками, может сам у себя поправить. А в сорс-базе, может, кто-то это исправит?

User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко » Sat 30 Dec, 2006 09:59

NightRoman
Кстати вышел уже 3-й Framework

Post Reply

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