Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Syn (Lister plugin)
Goto page Previous  1, 2, 3 ... 6, 7, 8 ... 18, 19, 20  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
KF-121



Joined: 13 Feb 2006
Posts: 90

Post (Separately) Posted: Thu Jul 27, 2006 19:55    Post subject: Reply with quote

sepa wrote:

2KF-121
1. так и задумывалось, используй enter
2. если ты про QuickSearch то так и задумано
3. недостаток API листера. в плагин передается только строка и 4 атрибута:
lcs_findfirst Search from the beginning of the first displayed line (not set: find next)
lcs_matchcase The search string is to be treated case-sensitively.
lcs_wholewords Find whole words only.
lcs_backwards Search backwards towards the beginning of the file.
4. не дает работать? =)
5. подправил
6. подправил
7. ты выделять не забываешь?
8. ее и не делал и не собираюсь пока
9. пока не найти причину =(
10. ты чекбокс в опциях включал?
11. ты же тестер, сам знаешь что это плохое сообщение о баге =)


2. Ну и про QuickSearch тоже, и в основном поиске поже не работает. По крайней мере blabla*xxx не ищет!
3. А почемуже тогда это понимает родной листер? Надо предложить чтобы он поправил эту беду!
4. Да нет не мешает, но я думаю можно для Code Explorer`a придумать другое меню.
7. Конечно не забываю.
10. ОК поставил.
11. Так вот и не нашел из-за чего такая трабла, если кто знает подскажите.

А как прикрутить эти разборы функций к разным подсветкам?
Syn 0.7
[-]
1. При наведении в настройках на Edit Function RegEx, то вываливается ошибка "System Error. Code: 1400", Invalid Window Handle
2. При разборе функций отображается в Code Explorer слово Function а не имя ее
а пр такой строке (([fF])+unction|([Ss]+ub)), отобрадается F или f, в зависимости от того как написано слово.
_________________
Во всем виновато КАКАДУ!
--------------------------------
IIIypuk©KF-121
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Thu Jul 27, 2006 21:22    Post subject: Reply with quote

Quote:
При разборе функций отображается в Code Explorer слово Function а не имя ее
В данный момент именем функции считается содержимое вторых скобок регекспа
Хотелось бы завести поле для имени функции, типа:
FunctionName=$3
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Jul 28, 2006 10:29    Post subject: Reply with quote

sepa wrote:
Quote:
И, поскольку поиск по Ctrl+F -> F3 и F7 -> F5 работают независимо, то есть ли горячая клавиша для очистки поля быстрого поиска, чтобы работало F7 -> F3?

не понял. один Search Next от Listera, другой от плагина и они не связаны. Когда у тебя не работает Shift-F3? если ты пользовался QuickSearch то в нем есть текст. Если Ctrl-R то тоже работает. А в листере нет SearchBack.

В листере прямой поиск далее - F3 или F5, обратный поиск - Shift+F3 или Shift+F5.
В Syn же обратный поиск работает только по Shift+F3 при заполненном QuickSearch.
Back to top
View user's profile Send private message
WhiteWind



Joined: 17 Jul 2006
Posts: 19

Post (Separately) Posted: Fri Jul 28, 2006 10:43    Post subject: Reply with quote

Позиция окна Setup где-то внизу - половина окна скрыта краем экрана.

2Lev:
РегЭксп для C/C++ не будет работать, вот поправленый вариант:
Code:
([A-Za-z]+)\s+([A-Za-z_][A-Za-z0-9_:]*)(\([^)]*\))


Мой РегЭксп для Паскаля:
Code:
(function|procedure)\s+([a-z_]+[a-z_0-9\.]+)\s*?(\([^\)]*?\))?\s*?(\:\s*?[0-9a-z]+)?\s*?\;?\s*?(\sbegin|\svar|\sconst|\stype|\{|//)
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Fri Jul 28, 2006 19:11    Post subject: Reply with quote

Quote:
РегЭксп для C/C++ не будет работать
угу, я их кинул, чтобы было от чего оттолкнуться.
попробовал использовать несохраняющие скобки (?:...), чтобы обойти проблему вторых скобок в определителе имени функции - в результате получаю ошибку, с дальнейшим закрытием тотала

образец вышибающего тотал регэкспа (для VB, VBS и т.п.):
Code:
^(private|public|declare)?\s*(?:function|sub)\s*([A-Za-z]+[A-Za-z0-9_.]*\([^)]*\))
Back to top
View user's profile Send private message
sepa



Joined: 12 Jul 2006
Posts: 42

Post (Separately) Posted: Fri Jul 28, 2006 19:29    Post subject: Reply with quote

Кто понимает о чем речь, и кому интересно дальнейшее развитие, выскажите свое мнение здесь
_________________
Syn
Back to top
View user's profile Send private message
Митяй



Joined: 05 Oct 2005
Posts: 102
Location: Москва

Post (Separately) Posted: Mon Jul 31, 2006 11:54    Post subject: Reply with quote

Более точный код для функций и переменных в C++
Code:
FunctionDetect=[A-Za-z]+\s+([A-Za-z_][A-Za-z0-9_]*::)?([A-Za-z_][A-Za-z0-9_]*)(\([^)]*\))
VariableDetect=([A-Za-z]+)\s+([A-Za-z_][A-Za-z0-9_]*)(\[[^\]+]\])?
Back to top
View user's profile Send private message
sepa



Joined: 12 Jul 2006
Posts: 42

Post (Separately) Posted: Mon Jul 31, 2006 22:18    Post subject: Reply with quote

Залажали значит scintill'у ! =) А я уже успел набросать листер на ней с табами. Ну ладно, тогда будем апдейтить этот.

2KF-121
2. blabla*xxx равносилен запросу "xxx". В твоем тексте есть xxx? У меня все нормально ищет
3. Дак родной листер полный доступ имеет к данным. А плагин может знать только то что ему передали и все. Предложить конечно можно, но как то там не очень работа движется по изменению API в версии 7. Ничего кардинально Гислер не решил менять.
4. ну я так и думал, но пока что CodeExplorer примитивный и там попап тот же что и на всех меню
7. я сам именно этой фишкой и пользуюсь а не Tab, Shift-Tab и все пашет вроде нормально. У кого нибудь еще Ctrl-Shift-U,I не работает?
9. нашел, теперь не падает.
10. работает?
Quote:
А как прикрутить эти разборы функций к разным подсветкам?

так же как и раньше через опции (F9) или напрямую через дизайнер подсветок.
1. поподробней. просто мышку задержать над EditBox ?
2. почитай внимательней то, что я выше писал про создание DetectStrings. Он совершенно правильно выводит содержимое второй скобки.
Quote:
Хотелось бы завести поле для имени функции, типа:FunctionName=$3

Да но хотелось бы стандартизации общей. Каков твой случай, может его можно обойти по другому?
Quote:
В листере прямой поиск далее - F3 или F5, обратный поиск - Shift+F3 или Shift+F5.

наконец понял о чем речь, буду фиксить
Quote:
Позиция окна Setup где-то внизу - половина окна скрыта краем экрана.

поправил, теперь будет по центру окна плагина.

Спасибо за тесты регекспов. Охота их уже утвердить и засунуть в подсветки дистрибутива, для тех людей которые не умеют их писать. Забыл упомянуть что поиск идет с модификаторами I, M. Так что можно не использовать [A-Za-z] а просто [a-z], так же ^ значит начало текста/строки. Предварительные результаты:
Apache
FunctionDetect=(\<IfModule)\s+([a-z0-9_\.]+)\>
Cpp
FunctionDetect=[a-z]+\s+([a-z_][a-z0-9_]*:Smile?([a-z_][a-z0-9_]*)(\([^)]*\))
VariableDetect=([a-z]+)\s+([a-z_][a-z0-9_]*)(\[[^\]+]\])?
CSS
FunctionDetect=(.*?)([a-z0-9\.\, \:]+)\{
Delphi
FunctionDetect=(function|procedure)\s+([a-z_]+[a-z_0-9\.]+)\s*?(\([^\)]*?\))?\s*?(\:\s*?[0-9a-z]+)?\s*?\;?\s*?(\sbegin|\svar|\sconst|\stype|\{|//)
INI, Reg, Txt
FunctionDetect=(^)(\[[^\[\]]+\])\s
Java,Perl, VB
(function|sub)\s*?([a-z]+[a-z0-9_.]*?)\s*?(\([^)]\))?\s*?\{
JavaScript
FunctionDetect=(function)\s+([a-z_]+[a-z_0-9]+)\s*?(\([^\)]*?\))?\s\;?\s*?\{
PHP
FunctionDetect=(function)\s+([a-z_]+[a-z_0-9]+)\;?\s*?(\([^\)]*?\))?\s*?\{
VariableDetect=([^\$])(\$[a-z_]+[0-9a-z_]+)(\[[^\]\$]+\])?

Quote:
образец вышибающего тотал регэкспа (для VB, VBS и т.п.):
в приведеном тобой примере первые скобки не обязательны, соответственно проблема вторых скобок не стоит. "?" - значит что может быть, а может и НЕ быть. По поводу того что тотал падал, я наконец разобрался как ошибку перехватить в регекспе. Теперь будет окошко ошибки показывать.
_________________
Syn
Back to top
View user's profile Send private message
Митяй



Joined: 05 Oct 2005
Posts: 102
Location: Москва

Post (Separately) Posted: Tue Aug 01, 2006 11:29    Post subject: Reply with quote

2sepa
Поставь RegExp`ы в [code], а то для C++ посередине строки смайлик Very Happy
Back to top
View user's profile Send private message
Митяй



Joined: 05 Oct 2005
Posts: 102
Location: Москва

Post (Separately) Posted: Tue Aug 01, 2006 11:49    Post subject: Reply with quote

Ещё более правильный код для C++:
Code:
FunctionDetect=^\s*[a-z_][a-z0-9_]+\s+([a-z_][a-z0-9_]*::)?~?([a-z_][a-z0-9_]*)(\([^)]*\))

Недостатки:
Код не распознаёт конструкторы и деструкторы:
Code:
TClass::TClass()
TClass::~TClass()

Добавляет function() если стоит код
Code:
if(i==0)
  ...
else
  function();

Считает функцией конструкцию
Code:
return function();

В последнем случае слово function() добавляется в список столько раз, сколько раз был вызван return.
2sepa
Пускай одинаковые функции добавляются в список только 1 раз.
Back to top
View user's profile Send private message
Борис



Joined: 13 Jul 2006
Posts: 10

Post (Separately) Posted: Tue Aug 01, 2006 15:30    Post subject: Reply with quote

В файле Cpp.hgl ЕСТЬ Фрагмент
Code:

   <CustomData>
      <Entry Name="CommentBlockStart" Value="/*"/>
      <Entry Name="CommentBlockMid" Value="# "/>
      <Entry Name="CommentBlockEnd" Value="*/"/>
      <Entry Name="FunctionDetect" Value="FunctionDetect=^\s*[a-z_][a-z0-9_]+\s+([a-z_][a-z0-9_]*::)?~?([a-z_][a-z0-9_]*)(\([^)]*\))"/>
      <Entry Name="VariableDetect" Value="VariableDetect=([a-z]+)\s+([a-z_][a-z0-9_]*)(\[[^\]+]\])?"/>
   </CustomData>

а в CodeExplorer - функций ноль, переменных ноль. Как лечить?
Back to top
View user's profile Send private message
Митяй



Joined: 05 Oct 2005
Posts: 102
Location: Москва

Post (Separately) Posted: Tue Aug 01, 2006 16:23    Post subject: Reply with quote

2Борис
У меня по этим регэкспам всё находит. Ты другие пробовал?
А может у тебя просто имена функций не подходят под этот код. Определяются только те функции, которые объявлены и объявление должно стоять в начале строки. Например так:
Code:
int function(void)
Back to top
View user's profile Send private message
Борис



Joined: 13 Jul 2006
Posts: 10

Post (Separately) Posted: Tue Aug 01, 2006 16:31    Post subject: Reply with quote

2Митяй
Например, есть у меня
Code:

void CSortStringArray::Sort()
{
   BOOL bNotDone = TRUE;   
   while(bNotDone)   
   {
      bNotDone = FALSE;
      for(INT pos = 0; pos < GetUpperBound(); pos++)
         bNotDone |= CompareAndSwap(pos);   
   }
}

Вот тут и не находит
Back to top
View user's profile Send private message
Митяй



Joined: 05 Oct 2005
Posts: 102
Location: Москва

Post (Separately) Posted: Tue Aug 01, 2006 16:35    Post subject: Reply with quote

Понял. Неправильно. Правильно так:
Code:
<CustomData>
      <Entry Name="CommentBlockStart" Value="/*"/>
      <Entry Name="CommentBlockMid" Value="# "/>
      <Entry Name="CommentBlockEnd" Value="*/"/>
      <Entry Name="FunctionDetect" Value="^\s*[a-z_][a-z0-9_]+\s+([a-z_][a-z0-9_]*::)?~?([a-z_][a-z0-9_]*)(\([^)]*\))"/>
      <Entry Name="VariableDetect" Value="([a-z]+)\s+([a-z_][a-z0-9_]*)(\[[^\]+]\])?"/>
   </CustomData>

"FunctionDetect=" в значение поля вписывать не надо.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Tue Aug 01, 2006 16:43    Post subject: Reply with quote

Quote:
Java,Perl, VB
(function|sub)\s*?([a-z]+[a-z0-9_.]*?)\s*?(\([^)]\))?\s*?\{

ну и зачем Basic'у фигурные скобки?
мало того, что за подсветку для vbs выдаётся какая-то java подсветка реагирующая на расширение js, так теперь и новые стандарты языка пошли Smile

Quote:
"?" - значит что может быть, а может и НЕ быть

(?: ) - это группирующие несохраняющие скобки, номер им не присваивается и вторыми скобками в моём примере считаются скобки идущие за ними


Last edited by Lev on Tue Aug 01, 2006 17:10; edited 2 times in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 6, 7, 8 ... 18, 19, 20  Next
Page 7 of 20

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group