Syn (Lister plugin)

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

sepa
Сообщения: 42
Зарегистрирован: Ср июл 12, 2006 17:53

Сообщение sepa »

С версии 0.9 начались гиганские проблемы с Ctrl+Z.
Вполне может быть, потому что сейчас ковыряемся чтобы undo/redo работало с CodeFolding и даже что то получается =). Я правда описанный баг не замечал ни разу.
Строка для запуска cscript Param2Console.vbs q qq qqq
Так в том то и дело что одной строкой не обойтись. Посмотри для примера любой php макрос из дистрибутива. Там видно что скрипту передается весь текст файла, выделенный текст и т.д. А они могут содержать любые символи, в том числе и сами быть кодом на VB. И еще одно, для исполнения vb скрипта нужен отдельный парсер? Давай может пока начнем с таких языков у которых парсер в винду встроен? Например js или wsh. Для php можно большие параметры передавать через серверный массив, который их читает из глобальных переменных окружения. Но тут тоже есть свои минусы, поэтому сейчас реализовано немного по другому:
Выделенный текст и тест файласохраняются в системную темп-папку как SYNsel.~tmp и SYNtxt.~tmp.
Потом генерится шапка вида

<?
$_SERVER['Text']=get_file_contents('c:\path\to\tmp\SYNtxt.~tmp'); //The TEXT of the open file.
$_SERVER['SelectedText']=get_file_contents('c:\path\to\tmp\SYNsel.~tmp'); //SELECTED TEXT.
$_SERVER['FileName']='name.php'; //The name of the open file.
$_SERVER['FileSaved']=0; //1 - File is SAVED; 0 - File is NOT SAVED.
$_SERVER['CurX']=12; //Cursor position. CHAR POSITION.
$_SERVER['CurY']=15; //Cursor position. LINE POSITION.
$_SERVER['SelectedBlockX']=0; //Selected text bounds. LEFT.
$_SERVER['SelectedBlockY']=0; //Selected text bounds. TOP.
$_SERVER['SelectedBlockX1']=40; //Selected text bounds. RIGHT.
$_SERVER['SelectedBlockY1']=10; //Selected text bounds. BOTTOM.
?>

и присоединяется к запускаемому макросу. Т.е. если макрос был:
<?
$_SERVER['SelectedText']="<b>{$_SERVER['SelectedText']}</b>";
while (list($var, $value) = each($_SERVER)) print "$var=$value".chr(27);
?>

то получаем для исполнения

<?
$_SERVER['Text']=get_file_contents('c:\path\to\tmp\SYNtxt.~tmp'); //The TEXT of the open file.
$_SERVER['SelectedText']=get_file_contents('c:\path\to\tmp\SYNsel.~tmp'); //SELECTED TEXT.
$_SERVER['FileName']='name.php'; //The name of the open file.
$_SERVER['FileSaved']=0; //1 - File is SAVED; 0 - File is NOT SAVED.
$_SERVER['CurX']=12; //Cursor position. CHAR POSITION.
$_SERVER['CurY']=15; //Cursor position. LINE POSITION.
$_SERVER['SelectedBlockX']=0; //Selected text bounds. LEFT.
$_SERVER['SelectedBlockY']=0; //Selected text bounds. TOP.
$_SERVER['SelectedBlockX1']=40; //Selected text bounds. RIGHT.
$_SERVER['SelectedBlockY1']=10; //Selected text bounds. BOTTOM.
?>
<?
$_SERVER['SelectedText']="<b>{$_SERVER['SelectedText']}</b>";
while (list($var, $value) = each($_SERVER)) print "$var=$value".chr(27);
?>

В конце макроса идет вывод всех параметров в консоль. Эта строка одинакова во всех файлах и можно было бы ее и прогой дописывать, но делал так чтобы формат был совместим с phpEE. (у меня остались от него макросы свои)
Так вот наверно для любого языка можно сделать. Приведите какая должна быть тогда шапка, как сбросить все переменные обратно в консоль в этом формате, и как запустить сам макрос. (Например: "php.exe macro.php")
Syn 0.9 - при попытке просмотра rtf-файла TC вылетает, при отключении Syn 0.9, rtf работает
Это просто мега прикол. В листере что то наворочено для просмотра rtf файлов, да так что это окошко вылазит поверх окна плагина когда выделять начинаешь. У меня так и Syn и SynPlus глючат. Непонятно как бороться, через syn.exe rtf нормально открывались. А валилось из-за того что я перехватываю окно листера, а при просмотре rtf там еще и одно окно вылазило! =) Вобщем сейчас если расширение rtf, то окно не перехватывается, поэтому если закрывать по крестику то не будет кнопки 'Cancel'. Но баг с появлением второго окна остался, надо писать Гислеру.

v 1.0
  • Shortcuts customization
  • Small bug when detecting extention for highlighter
  • Wrong position of Codepage & LineEndings popups when style non OfficeXP
  • Collapse level 0/1 added to open by default settings
  • Some bugs with repaint of toolbars when style is 'default' in syn.exe
  • Now search for space char works in Ctrl-R
  • Optionally saving of .bak files
  • Bug with view position in history when WordWrap enabled
  • Simple integration with phpExpertDebugger (www.ankord.com),Ctrl-F5 - set/clear breakpoint
  • Included files recognition and parsed Vars/Funcs added to ACP (example in php.hgl)
  • Seldom crush when selecting text
  • Reads files opened for writing by other application
  • Reads full contents in binary files (dont stops at first #0 char)
  • Crush when open *.rtf files
Наконец добавил парсинг include/require файлов в CodeExplorer с добавлением в ACP, что давно хотел. Пока IncludeDetectString прописана только в php.hgl. Вероятно для других языков это и не актуально... для них и так IDE есть.
Шоркуты теперь можно редактировать. Список состоит из двух частей: шоткаты программы и самого редактора. Некоторые действия повторяются (Copy, Paste ...) для того чтобы можно было назначить несколько шорткатов на одно действие. 'Copy text as unicode' работает только если шоткат назначен на программу, а не редактор. Остальные из дублирующих действий назначены только на редактор, т.к. так они быстрее работают. Можно назначить и действие и на среднюю кнопку мыши, но доступно только для програмных шорткутов.
Аватара пользователя
KF-121
Сообщения: 90
Зарегистрирован: Пн фев 13, 2006 11:00

Сообщение KF-121 »

Я уже писал но еще раз попрашу.
Сдеть диалоге поиска кнопку для вывода строк, где встречается то что искали. Либо эту фичу прикрутить на кнопку Find All and Mark сгалочко выводить такое окно или нет и чтобы была возможность копировать в буфер весь этот список. Аналог как в UltraEdit. Очень удобная фича. Сильно помогает на работе.

Еще пару замечаний
3. Не переходит по Ctrl по функциям если не открыт Code Explorer. Я так понимаю что фунции читаются только тогда когда открыт Code Explorer.
4. Глюкнутый Hint для Quick Search, остается тень посленнего, и не как ее не удалишь, пока тачку не перегрузишь.

Еще можно чтобы найденные функции он автоматически в ставлял в .acp файл
и раскажи про формат файла. Что пишеться после |.
Также может когда нибудь будет реализованно (надеюсь :))
Есть у меня в скрипте функции которые объявленны в определенном(ых) файле(ах), так вот можно также сделать навигачию по этим функциям из моего скрипта. Поясняю гдето в настройках указываешь папку с этими файлами, а лучше прикрутить это к цветовой схеме. он там ищет все функции добавляет в их в список джля навигации, а открывать файл в новом окне ели функциия находится в другом файле.

Еще одна просьба, у кого с англицким пролохо, писать изменения в плагине на русском, хотябы на форуме.
Во всем виновато КАКАДУ!
--------------------------------
IIIypuk©KF-121
sepa
Сообщения: 42
Зарегистрирован: Ср июл 12, 2006 17:53

Сообщение sepa »

Я уже писал но еще раз попрашу.
А я еще раз отвечу, что совершенно не заинтересован в этом пока. Если тебе надо список строк, в которых встречается подстрока получать - напиши макрос.
3. Ага, надо же электричество экономить =)
4. Тачку перегружать не надо, попробуй просто закрыть тотал. У меня этого глюка сейчас вроде нигде нет, но в версии 0.1 он был для хинтов полей статусбара. На кнопках хинты у меня вроде нормально появляются, и на кодекспорере тоже. У тебя только над QuickSearch хинт глючит? А если через syn.exe запустить?
Еще можно чтобы найденные функции он автоматически в ставлял в .acp файл
это зачем?
сделать навигачию по этим функциям из моего скрипта
Я не знаю как програмно открыть новое окно листера. Если кто знает - ткните в линк. А то что ты предлагаешь по папке с файлами, то это смотря сколько там функций. Кодексплорер примитивный. Если ему скормить например для дельфи каждый файл из юзес

Код: Выделить всё

uses
  Windows, Messages, SysUtils, Classes, Graphics, Forms,
  Dialogs, ImgList, StrUtils, ActnList, Menus, ComCtrls,
  ExtCtrls, StdCtrls, unCP, Controls, Clipbrd, shellapi ... 
то это будет несколько тысяч функций и памяти будет жрать и тормозить неплохо. Так что для стандартных функций лучше просто готовый .acp использовать. В основном эта фишка для php была написана. Если надо серьезно файлы на других языках редактировать, то для этого есть специальные IDE и с ними тягаться нет резона =)
и раскажи про формат файла
Ну там я думал и так все ясно, Митяй же разобрался =) Например
array explode(string separator, string string [, int limit]) |Split a string by string (PHP 3, PHP 4, PHP 5)
, где:
1. тип возращаемого значения (не может содержать пробел) показывается перед именем функции в ACP
2. имя функции с параметрами. параметры могут разделятся запятой или ; в таком виде и будут выводится в хите по параметрам
3. описание функции, показывается в заголовке ACP при выборе функции
Т.е. строка состоит из 3 частей. Первые две разделены пробелом. Описание отделено пайпом '|' потому что после последней скобки от функции может еще что нибудь идти с пробелом, например тип возращаемого значения в дельфи. Может и не быть скобок с параметрами. Если нет типа возращаемого значения, то строка должна начинаться с пробела:

Код: Выделить всё

 test(param string) : boolean |Description
void exit |Exit from func
Еще одна просьба, у кого с англицким пролохо, писать изменения в плагине на русском, хотябы на форуме.
постараюсь
Аватара пользователя
KF-121
Сообщения: 90
Зарегистрирован: Пн фев 13, 2006 11:00

Сообщение KF-121 »

sepa писал(а):А я еще раз отвечу, что совершенно не заинтересован в этом пока. Если тебе надо список строк, в которых встречается подстрока получать - напиши макрос.
Макрос не переходит по этим срокам после поиска. Да и макросы поддерживает только PHP. Это не так сложно. Тем болле у тебя большая чать уже реализована на кнопке Find All & Mark, остается забить все это в лист и запомнить на какой строке эта строка. А в компаненте в котором выводится все найденное, вешаешь событие OnClick, и Move Cursor to Line.
Сделать это можно опционально.
sepa писал(а):На кнопках хинты у меня вроде нормально появляются, и на кодекспорере тоже. У тебя только над QuickSearch хинт глючит? А если через syn.exe запустить?
Сегодня пытался получить этот глюк, но так и не чего не вышло.
sepa писал(а):это зачем?
А для того чтобы не забивать все это в ручную, а только потом коменты поправил и все.
sepa писал(а):Я не знаю как програмно открыть новое окно листера. Если кто знает - ткните в линк. А то что ты предлагаешь по папке с файлами, то это смотря сколько там функций. Кодексплорер примитивный. Если ему скормить например для дельфи каждый файл из юзес
то это будет несколько тысяч функций и памяти будет жрать и тормозить неплохо. Так что для стандартных функций лучше просто готовый .acp использовать. В основном эта фишка для php была написана. Если надо серьезно файлы на других языках редактировать, то для этого есть специальные IDE и с ними тягаться нет резона =)
Да в моем случае это несколько может сотен функций. Сделать это можно опционально.
Да можно не окно листера запустать,а твой редактор Syn.exe.
Во всем виновато КАКАДУ!
--------------------------------
IIIypuk©KF-121
Аватара пользователя
Maximus
Сообщения: 927
Зарегистрирован: Чт апр 07, 2005 10:51
Откуда: Украина, Кировоградская обл., г. Знаменка
Контактная информация:

Сообщение Maximus »

Если пользоваться не отдельным окном поиска/замены, а присобачить его к верху основного окна, то были замечены пара таких багов:
1. Остается интересный артефакт (горизонтальная полоса)
Изображение
причем остается он не только в окне Сина, но и во всех остальных и на рабочем столе - в общем везде.
2. Поиск/замена "слова1" - ищем, заменяем и все хорошо.
Но если закрыть это окно специальным крестиком слева и воспользоваться потом быстрым поиском Ctrl+F для "слова2", то при поиске следующего "слова2" по F3 будет искать совсем не "слово2", а "слово1".[/img]
sepa
Сообщения: 42
Зарегистрирован: Ср июл 12, 2006 17:53

Сообщение sepa »

Да можно не окно листера запустать,а твой редактор Syn.exe.
Я уже вроде нашел как листер открывать, только не совсем получается пока =)
Остается интересный артефакт
это тень от хинта поля QuickSearch, по идее баг должен быть исправлен в 1.1 проверьте. (у меня просто и до этого нормально было)
Поиск/замена
Да, раньше надо было именно через Cancel выходить. Теперь проверяет открыта ли панель

v 1.1
  • Шорткуты отображаются в хинтах над кнопками
  • Быстрый поск по дереву (частичное совпадение, через контекстное меню) совпадение от начала - нажатие кнопок когда дерево активно
  • Хинт с описанием функции если мышку задержать над именем на 1сек.
  • Обновляет CodeExplorer при открытии файла даже если панель закрыта. (но не обновляет закрытую панель при дальнейшей работе)
  • 'Copy link adress' добавлено в контекстное меню на ссылке
  • Ctrl-Click не сбрасывает курсор в начало файла, если функция не найдена
  • История навигации по функциям (Alt+Left - назад, Alt+Right - вперед)
  • Добавлено еще немного действий для назначения в списке шорткутов
  • Найденные функции/переменные добавляются в подсветку, в стили начинающиеся на 'function' и 'var' (если эти стили типа Keywords)
  • Match Bracket расширен до Match Token. В дополнение к скобкам {[(< считывает CodeFolding ranges для подсветки парных токенов
  • В опциях добавлен цвет для парного токена без пары
  • Не сбрасывает позицию курсора в начало файла при Ctrl-[
  • Можно сохранить содержимое CodeExplorer в .acp файл (для облегчения создания нового ACP для языка)
Можно придумать подключение дополнительного acp файла. Например через еще одно поле в подсветке в CustomData, или если файл acp лежит в папке с редактироемым файлом. Или просто еще один пользовательский ACP который можно подключить в опциях и он будет для всех языков. В общем не знаю пока как лучше будет.
Еще добавлена подсветка для файлов ACP и небольшое описание по созданию подсветки в папке HL\
Аватара пользователя
Митяй
Сообщения: 102
Зарегистрирован: Ср окт 05, 2005 12:28
Откуда: Москва

Сообщение Митяй »

В Syn v1.1

- Неправильно отображается номер версии.
- Перестали действовать кнопки изменеия интерфейса (Code Folding, Special Chars, Show Numbers)
- Не подсвечиваются парные токены из hgl (непарные токены подсвечиваются нормально)
sepa
Сообщения: 42
Зарегистрирован: Ср июл 12, 2006 17:53

Сообщение sepa »

первые два- баги, пофикшу
Насчет подсветки парных токенов. Конкретнее укажи какие токены в какой пдсветке? Для подсветки delphi.hgl нормально подсвечивает begin и end которые там считаны из CodeFolding ranges. При подсветке xhtml.hgl например тэги <td и </td> не будут подсвечиваться потому как их имена состоят из нескольких токенов. ('<' и 'td') Все скобки во всех подсветках у меня нормально светит.
Аватара пользователя
Митяй
Сообщения: 102
Зарегистрирован: Ср окт 05, 2005 12:28
Откуда: Москва

Сообщение Митяй »

Разобрался. Никогда не подсвечиваются парные токены в комментариях. А проблема была в том, что я использую комментарии для Doxygen (не /* */, а /** */). А в этом случае Syn подсвечивает */ как ошибочный токен. Поведение неприятное, но вполне логичное.
Аватара пользователя
KF-121
Сообщения: 90
Зарегистрирован: Пн фев 13, 2006 11:00

Сообщение KF-121 »

Syn 1.1
[-]
1. Ctrl + A +Delete = Access Violation at adress ... Причем не как не лечится.
2. Найденные переменные и функции сохраняются криво.
В файле строка
Function SetVarableValue(ThirdDspDis, ThirdKhz, ExtenRange)
в acp
user SetVarableValuevoid |e(ThirdDspDis, ThirdKhz, ExtenRange)
RegEx для функции
(function|sub)\s(?P<name>[a-z_]+[a-z_0-9]+)\s*(\([^)]\))?\s*?

Переменные вроде нормально добовляет.
Во всем виновато КАКАДУ!
--------------------------------
IIIypuk©KF-121
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Багрепорт на английском форуме.
evkogan
Сообщения: 19
Зарегистрирован: Чт авг 25, 2005 09:02

Сообщение evkogan »

Извиняюсь, что долго молчал. На работе запарки.
Из-за этого же пока не видел последних версий, но вроде то о чем пишу в изменениях не написано.
1. Нельзя настроить соотнесение подсветки расширению. ".VBS" почему-то открывает без подсветки. Очень надоело.
2. Открывает все файлы подряд, так как стоит в начале списка, то... Логичьнее сделать при 1 проходе открывать список расширений 1. При 2 список 2 гораздо шире. Что-то такое сделанно в старом hpg_ed. SynPlus тоже прикрутил, что-то похожее, но у него при 2 проходе открывает все файлы, как показала практика это терпимо, но не очень удобно.
Причем если после Syn открывать SynPlus воспринимает это как 2 проход.

По поводу других скриптовых языков.
1. Для VBS/JS в винду встроен парсер. Но их встроенно 2. Один консольный cscript, другой GUI wscript. По умолчанию запускает wscript.
2. Про алгоритм действий для запуска макроса.
Я так понимаю, что скопированный текстовый файл измененный макросом потом копируется на место основнового?
Зачем нужно возвращать параметры из скрипта? Т.е. как то, что вернулось обрабатывает плагин?
sepa
Сообщения: 42
Зарегистрирован: Ср июл 12, 2006 17:53

Сообщение sepa »

2KF-121
1. пофиксил
2. пофиксил, но у тебя строка не верная. Она не отлавливает параметры. Если параметры не нужны то можно просто:
(function|sub)\s(?P<name>[a-z_]+[a-z_0-9]+)
если нужны то
(function|sub)\s(?P<name>[a-z_]+[a-z_0-9]+)\s*(\([^)]+\))?
а еще лучше
(function|sub)\s(?P<name>[a-z_]+[a-z_0-9]+)\s*(?P<param>\([^)]*?\))?
Багрепорт на английском форуме.
У меня с того форума не приходит письмо о регистрации, но он писал про этот баг в англ. комментах, я ему там и ответил.
Нельзя настроить соотнесение подсветки расширению
По умолчанию и так идет подсветка Vbs.hgl и она нормально открывается для файлов vbs. Ты как это настраиваешь?
Открывает все файлы подряд, так как стоит в начале списка
Так поставь в конец списка =) ты хочешь чтобы листер открывал файлы для которых нет подсветки?
По поводу других скриптовых языков.
1. круто, и вроде пашет =)
2. нет, макрос ничего не знает о текстовом файле. Он лишь обрабатывает переменные которые получил, и выводит их все на консоль. Если ничего не менял в некоторых из них, то все равно выводит. Эти 2 темповых текстовых файла сохраняются только для того чтобы заполнить переменные. (Потому как текста может быть много и он может содержать код, так что обыкновенным var='text' здесь не обойтись)

v1.2
Ничего особо нового, просто быстрое обновление изза критических багов
  • Ошибка при входе в Setup в режиме QuickView
  • Пофикшен 'Read beyond end of file'
  • Забытые действия на кнопках 'Code Folding', 'SpecChars', 'ShowNumber', 'RightMargin'
  • Ошибка с клавишей 'none' в шорткутах для редактора
  • Баг с выделением колонкой, del и потом undo
  • Улучшения в отрисовке дерева
  • Баг с сохранением в acp функций без параметров
  • Баги с сортировкой всего файла, Ctrl-A Del, WordWrap в конце файла
  • Баг при перемещении в первую позицию истории навигации по CodeExplorer (Alt-Left)
  • Немного увеличена скорость показа окна Setup, баг с показом имени .qc файла в Setup
  • Примитивное открытие инклюженых файлов в CodeExplorer через Ctrl-Click
  • Баг при выборе цвета (Ctrl-Shift-Up) когда CodeExplorer обновляется
  • Немного пофикшены баги CodeFolding, Undo, Redo (thanx DavidCl0nel)
Аватара пользователя
KF-121
Сообщения: 90
Зарегистрирован: Пн фев 13, 2006 11:00

Сообщение KF-121 »

2KF-121
1. пофиксил
1. Не пофиксил
Во всем виновато КАКАДУ!
--------------------------------
IIIypuk©KF-121
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

На страничке плагина написано, что тебе не удаётся повторить баг с выделением, и что он всего у пары человек, буду третьим.
Выделяем кусок текста, отпускаем кнопку мыши, кликаем выделение и не отпуская кнопки тащим его наверх, на панель инструментов - получаем кучу ошибок и вылет
Ответить