Модераторы: Vitalik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SynEdit2.0.3stable + CodeFolding(MyStix0.31), совместный пакет 
:(
    Опции темы
Sep.
Дата 25.5.2006, 14:05 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Скрестил SynEdit2.0.3 и CodeFolding из MyStix0.31. Так что теперь возможен градиент на гуттере и indent guides одновременно. Так же в код внесены некоторые изменения:
Исправления:
  • открытие возможности использовать экспорт текста с подсветкой в файлы HTML или RTF. (//###mod export to htm)
  • Закоментирован код, который приводил к выводу нераскрашенных слов к конце каждой строки (//###mod paintlines) ORMADA
  • Показывает свойства CodeFolding в редакторе форм (//###mod formeditor) NaumLeNet
  • Неправильные первоначальные переносы строк по Ctrl-V (//###mod wordwrap) Paul S.
  • Ошибка при наведении мышки на [...] (//###mod access violation)
  • Ошибка при отображении хинта по [...] в некоторых позициях экрана (//###mod access violation)
  • Баг с неправильным фоном иконки ворд-врапа на гутере при включенном фолдинге и градиенте гутера (//###mod wrapglyph)
  • Неверное положение хинта на экране при наведении мышки на [...] (//###mod wrong place on hint over [...])
  • При фолдинге строки добавлять закрывающий тэг в нижнем регистре (//###mod closing token to lowercase)
Улучшения:
  • Переместить [...] между откр. и закр. тегами при фолдинге строки (//###mod pos of [...] to left)
  • Смена шрифта хинта над [...] (//###mod hint font name)
Легкая установка через dpk файл (Vitalik):
1. Скачать архив ниже.
2. Распаковываем только что скачанный архив в какую-нибудь папку. Для условности будем называть её %SynEdit%
3. Открываем настройки Delphi: Tools » Environment options » Library » Library path » [...] » [...], выбираем папку %SynEdit%\Source\. Нажимаем Add, OK, OK.
4. Открываем нужный пакетный файл из папки %SynEdit%\Packages\. Например, если у вас Delphi 6, то имя нужного пакетного файла будет SynEdit_D6.dpk.
5. Нажимаем кнопку Compile. Если выскакивет ошибка по поводу .res файла, то надо нажать Compile еще раз. Если только warning'и и hint'ы - то все нормально.
6. Нажимаем кнопку Install.
7. Закрываем пакетный файл, не сохраняя изменения.

user posted image
Скачать (400 кб)

Если кто отлавливал еще какие то баги, или написал какие-то дополнения в коде - напишите здесь плиз. Родина вас не забудет!   

Это сообщение отредактировал(а) Sep. - 14.6.2006, 09:14
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Seldon
Дата 4.6.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



Sep, а ты как-нибудь помечал места в коде, которые правил? 
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Sep.
Дата 6.6.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



там исправлено в 2-3х местах только. А весь кодфолдинг помечен как
Код
 
      //### Code Folding ###
...
      //### End Code Folding ###

Но надо будет пометить обязательно. Я просто там хотел еще небольшие изменения внести еще. Как сделаю, перезалью с пометками. 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Vit
Дата 11.6.2006, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



А небольшой примерчик использования кодфолдинга можно подкинуть... А то что-то вроде с разгону не очень очевидно, а с самим  MyStix авторы нафигачили проект в несколько тысяч строк с многочисленными глюками... я его сначала пол-часа компиллировал, потом ещё час отыскивал их ошибки, потом лазил по коду в поисках полезной информации... В общем крайне неудачный пример какой-то... Я поставил твой пакет, попробовал загрузить highlighter и включил кодефолдинг, только что-то не очень-то это работает... Наверное что-то пропустил. Брось пару строк описания, кода, и желательно пример highlighter'а для тестирования... 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Sep.
Дата 11.6.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Пример Vitalik тут приводил по свойствам и динамическому созданию.
А если надо из подсветки читать, то она должна быть второй версии. Т.е. те что из мистикса или WDS не подойдут, их надо конвертировать. Привожу подсветку (17кб) для ASP/JS/VBS/WML/CSS/PHP с фолдингом 100% работающюю. Или можно создать самому в дизайнере второй версии. А потом просто:
Код
 
  SynUniSyn1.LoadFromFile('xhtml.hgl');
  SynEdit1.InitCodeFolding;
  SynEdit1.Repaint;

и любуешся на баги =)
Сразу советую вставить SynEdit1.InitCodeFolding в onChange к SynEdit1 что ли. А то положения маркеров относительно текста не всегда обновляет.
Потом в SynEdit.pas на строке 11308 идет функция function TCustomSynEdit.GetLineIndent(Strings: TStrings;
    ALine: Integer): Integer;
в нее добавляем 
Код

  begin
    Result := 0;
    if ALine >= Strings.Count then exit; //добавлено
    Line := PChar(Strings[ALine]);
    repeat

и в SynCompletionProposal.pas коряво написан код вывода подсказки свернутого кода при наведении мышки на [...] и надо
подправить бы на 2362:
Код

    if tmpY + tmpHeight > GetWorkAreaHeight then
    begin
      tmpY := tmpY - tmpHeight -2;// (Form.CurrentEditor  as TCustomSynEdit).LineHeight -2;
      if tmpY < 0 then
        tmpY := 0;
    end;

Эти все исправления я делал просто чтобы что то работало, пока еще не особо копался. Если кто то уже разобрался что да как пишите здесь, и внесем исправления в пакет. 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Sep.
Дата 13.6.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Баг с неправильным фоном иконки ворд-врапа на гутере при включенном фолдинге и градиенте гутера:
SynEdit.pas (2991)
Код

...
      if not fGutter.Gradient then
       Canvas.FillRect(AClip);

//было здесь

        //### Code Folding ###
        if CodeFolding.Enabled then
        begin
            rect2 := AClip;
            rect2.Left := xpos;
            rect2.Right := xpos + Gutter.RightOffset - 4;

            // Paint fold bar
            Canvas.Brush.Color := CodeFolding.FolderBarColor;
            Canvas.FillRect(rect2);
            Canvas.Brush.Color := fGutter.Color;

          // Paint folding bar dividing line
          Canvas.Pen.Color := clBtnShadow;
          Canvas.MoveTo(rect2.Left, rect2.Top);
          Canvas.LineTo(rect2.Left, rect2.Bottom);
        end;
        //### End Code Folding ###

      {$IFDEF SYN_WIN32}
        // draw word wrap glyphs transparently over gradient
        if fGutter.Gradient then
          Canvas.Brush.Style := bsClear;
      {$ENDIF}
      // paint wrapped line glyphs
      if WordWrap and fWordWrapGlyph.Visible then
...

т.е. просто перенести секцию IFDEF SYN_WIN32 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Sep.
Дата 14.6.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Пометил исправления в коде и перезалил по старому адресу. Покопался с багами вывода хинта при наведении мышки на [...] и поисправлял некоторые баги. Хинт выводится средствами CompletionProposal , (т.е. как подсказка параметров функции в дельфи) 
Чтобы поменять что-то в хинте, вы можете посмотреть демку ParamCompletionDemo.dpr чтоб узнать имена параметров. Сами параметры можно настроить в SynEdit.pas (2434), например смена шрифта:
Код
 
  TSynCompletionProposal(fHint).Editor := Self;
  TSynCompletionProposal(fHint).Font.Name := 'lucida console';  //###mod hint font name
//TSynCompletionProposal(fHint).ExecuteEx('', X + 10, Y + Top, ctHint);
  TSynCompletionProposal(fHint).ExecuteEx('', Mouse.CursorPos.X + 10 , Mouse.CursorPos.Y, ctHint); //###mod wrong place on hint over [...]
  TSynCompletionProposal(fHint).Tag := 1;

Это будет распространятся на все хинты к [...], во всех программах которые вы компилируете. Так что может стоит подумать как это вынести в настройки. Хинты при CompletionProposal не затрагиваются.

Исправления:
  • открытие возможности использовать экспорт текста с подсветкой в файлы HTML или RTF. (//###mod export to htm)
  • Закоментирован код, который приводил к выводу нераскрашенных слов к конце каждой строки (//###mod paintlines) ORMADA
  • Показывает свойства CodeFolding в редакторе форм (//###mod formeditor) NaumLeNet
  • Неправильные первоначальные переносы строк по Ctrl-V (//###mod wordwrap) Paul S.
  • Ошибка при наведении мышки на [...] (//###mod access violation)
  • Ошибка при отображении хинта по [...] в некоторых позициях экрана (//###mod access violation)
  • Баг с неправильным фоном иконки ворд-врапа на гутере при включенном фолдинге и градиенте гутера (//###mod wrapglyph)
  • Неверное положение хинта на экране при наведении мышки на [...] (//###mod wrong place on hint over [...])
  • При фолдинге строки добавлять закрывающий тэг в нижнем регистре (//###mod closing token to lowercase)

Улучшения:
  • Переместить [...] между откр. и закр. тегами при фолдинге строки (//###mod pos of [...] to left)
  • Смена шрифта хинта над [...] (//###mod hint font name)

Также исправлен первый пост и его картинка, чтоб это как-то отобразить. 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Quadr0
Дата 25.6.2006, 13:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:28
  Вверх
navykeds
Дата 25.6.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



Код

var
  WheelDone: Boolean = False;

{$IFDEF SYN_CLX}
{$ELSE}

procedure TCustomSynEdit.WMMouseWheel(var Msg: TMessage);
var
  nDelta: integer;
  nWheelClicks: integer;
{$IFNDEF SYN_COMPILER_4_UP}
const
  LinesToScroll = 3;
  WHEEL_DELTA = 120;
  WHEEL_PAGESCROLL = MAXDWORD;
  SPI_GETWHEELSCROLLLINES = 104;
{$ENDIF}
begin
  if csDesigning in ComponentState then
    exit;

{$IFDEF SYN_COMPILER_4_UP}
  // In some occasions Windows will not properly initialize mouse wheel, but
  // will still keep sending WM_MOUSEWHEEL message. Calling inherited procedure
  // will re-initialize related properties (i.e. Mouse.WheelScrollLines)
  if not WheelDone then
    inherited;
  WheelDone := True;
{$ENDIF}

  if GetKeyState(VK_CONTROL) >= 0 then
  begin
{$IFDEF SYN_COMPILER_4_UP}
    nDelta := Mouse.WheelScrollLines
{$ELSE}
    if not SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @nDelta, 0) then
      nDelta := LinesToScroll;
{$ENDIF}
  end
  else
    nDelta := LinesInWindow shr Ord(eoHalfPageScroll in fOptions);

  Inc(fMouseWheelAccumulator, SmallInt(Msg.wParamHi));
  nWheelClicks := fMouseWheelAccumulator div WHEEL_DELTA;
  fMouseWheelAccumulator := fMouseWheelAccumulator mod WHEEL_DELTA;
  if (nDelta = integer(WHEEL_PAGESCROLL)) or (nDelta > LinesInWindow) then
    nDelta := LinesInWindow;
  TopLine := TopLine - (nDelta * nWheelClicks);
  Update;
  if Assigned(OnScroll) then OnScroll(Self, sbVertical);
end;


Исправление ошибки, которая возникает, если удерживать левую кнопку мыши и одновременно крутить колесом. 
PM MAIL   Вверх
navykeds
Дата 25.6.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



И еще дополнение. Файл SynEditKeyCmds.pas. Там есть надпись, цитирую:

Код

  //****************************************************************************
  // NOTE!  If you add an editor command, you must also update the
  //    EditorCommandStrs constant array in implementation section below, or the
  //    command will not show up in the IDE.
  //****************************************************************************


Итак, нужно добавить строковые константы (в EditorCommandStrs) smile

Код

  //### Code Folding ###
    (Value: ecCollapse; Name: 'ecCollapse'),
    (Value: ecUncollapse; Name: 'ecUncollapse'),
    (Value: ecCollapseLevel; Name: 'ecCollapseLevel'),
    (Value: ecUncollapseLevel; Name: 'ecUncollapseLevel'),
    (Value: ecCollapseAll; Name: 'ecCollapseAll'),
    (Value: ecUncollapseAll; Name: 'ecUncollapseAll'),
    (Value: ecCollapseCurrent; Name: 'ecCollapseCurrent'));
  //### End Code Folding ###
 

+ поправить само объявление:

Код

EditorCommandStrs: array[0..107]
  

Это сообщение отредактировал(а) navykeds - 25.6.2006, 22:23
PM MAIL   Вверх
Vitalik
Дата 29.6.2006, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Гм.. Заметил я одну печальную вещь.. 
CodeFolding немножко не совместим с Delphi5 и C++Builder5.. smile
Завтра буду копать глубже.. 
PM MAIL WWW ICQ YIM   Вверх
Sep.
Дата 29.6.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Цитата(navykeds @  25.6.2006,  22:01 Найти цитируемый пост)
Исправление ошибки, которая возникает, если удерживать левую кнопку мыши и одновременно крутить колесом. 

Слушай, а как эту ошибку получить? зажимаю левую, кручу колесо - растягивается выделение и все вроде нормально. До конца файла тоже доходит...
Комманды процессора для кодфолдинга добавлю в след. версии. Но фактически они бесполезны, потому что проще юзать
Код

SynEdit.UncollapseAll;
чем
SynEdit.CommandProcessor(ecUncollapseAll, #0, nil);
 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Vitalik
Дата 30.6.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(Vitalik @  29.6.2006,  01:09 Найти цитируемый пост)
CodeFolding немножко не совместим с Delphi5 и C++Builder5.. smile
Завтра буду копать глубже..  

Гм.. Легко эта проблема не поддалась.. smile
Исправил там несколько несовместимостей с 5-ми версиями делфей и билдера, но все равно когда кидаешь компонент на форму почему-то вылетает сообщение "Abstract Error." user posted image

Добавлено @ 14:14 
P.S. SynEdit 2.0.3 без CodeFolding'а ставится исправно smile 
PM MAIL WWW ICQ YIM   Вверх
Sep.
Дата 30.6.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Еще один из багов кодфолдинга:
Закладки при фолдинге региона не перемещаются вместе со строками. 
Так что есть что править =) 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Quadr0
Дата 30.6.2006, 19:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:29
  Вверх
Vitalik
Дата 1.7.2006, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Гм.. Там какая-то запара с этим объектом TSynEditCodeFoldingPlugin.. 
Закоментил все, что его касается этого "плагина" и заработало нормально..

P.S. Жаль, что изменения становятся видными только после переустановки компонента.. smile 
PM MAIL WWW ICQ YIM   Вверх
Vitalik
Дата 2.7.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(Sep. @  25.5.2006,  13:05 Найти цитируемый пост)
Неверное положение хинта на экране при наведении мышки на [...] (//###mod wrong place on hint over [...])

Гм.. Я бы тот код
Код
FoldRange.HintMarkLeft := ((nTokenPos + nTokenLen) * CharWidth)
заменил не на 
Код
FoldRange.HintMarkLeft := ((nTokenPos - 5) * CharWidth)
а на 
Код
FoldRange.HintMarkLeft := ((nTokenPos - 9) * CharWidth) + Gutter.Width
Так у меня лучше работает.. 
Но опять же все это только на вскидку, цифра "9" подобрана также как и, я думаю, "5" - опытным путем, а не путем логических изысканий... smile 
PM MAIL WWW ICQ YIM   Вверх
Sep.
Дата 2.7.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Цитата(Vitalik @  2.7.2006,  13:35 Найти цитируемый пост)
Неверное положение хинта на экране при наведении мышки на [...] (//###mod wrong place on hint over [...])

Это немного не тот мод. Тот о котором идет речь - это:
Переместить [...] между откр. и закр. тегами при фолдинге строки (//###mod pos of [...] to left)
и он находится в категории улучшения, т.е. мод чисто для себя =)
Работает правильно когда стоит Gutter.Autosize=true и Gutter.DigitCount=2
Цифра 5 там стоит потому как я ниже в строке 11282 добавляю 5 пробелов и на их место значек [...] и выводится
Код

Lines[FromLine-1] := Lines[FromLine-1] + '     '; //###mod pos of [...] to left

Если поставить Gutter.DigitCount=8 то конечно положение значка [..] неверно. Можно конечно дописать там еще
Код

+((Gutter.DigitCount - 2)*Charwidth) 

но это будет корректно только если ширина шрифта на гуттере такая же, как и в зоне редактирования. А как узнать ширину шрифта на гуттере не известно.
Короче говоря, одноразовый это мод...для себя делался. =) 
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Sep.
Дата 8.7.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Т.к. в версии 2.0beta появилась возможность получить аттрибуты подсветки для любой позиции в тексте, то теперь можно доработать GetMatchingBracketEx. Чтобы парная скобка не была найдена внутри коментария или строковой переменной. 
Код

                  if (Test = BracketInc) or (Test = BracketDec) then
                  begin
                    if GetHighlighterAttriAtRowCol( p, vDummy, attr ) then
                     // isCommentOrString:=                                                          //###mod bracket search improve
                     //  (attr = Highlighter.StringAttribute) or (attr=Highlighter.CommentAttribute) //###mod bracket search improve
                     begin                                                                           //
                       attr.Name:=LowerCase(attr.Name);                                              //
                       if (pos('remark',attr.Name)<>0 )or                                            //
                          (pos('string',attr.Name)<>0 )or                                            //
                          (pos('comment',attr.Name)<>0)then isCommentOrString:=true                  //
                       else isCommentOrString:=false;                                                //
                     end                                                                             //###mod bracket search improve
                    else isCommentOrString:=false;
                    if (Test = BracketInc) and (not isCommentOrString) then
                      Inc(NumBrackets)
                    else if (Test = BracketDec) and (not isCommentOrString) then

... и чуть ниже еще раз

                  if (Test = BracketInc) or (Test = BracketDec) then
                  begin
                    if GetHighlighterAttriAtRowCol( p, vDummy, attr ) then
                     // isCommentOrString:=                                                          //###mod bracket search improve
                     //  (attr = Highlighter.StringAttribute) or (attr=Highlighter.CommentAttribute) //###mod bracket search improve
                     begin                                                                           //
                       attr.Name:=LowerCase(attr.Name);                                              //
                       if (pos('remark',attr.Name)<>0 )or                                            //
                          (pos('string',attr.Name)<>0 )or                                            //
                          (pos('comment',attr.Name)<>0)then isCommentOrString:=true                  //
                       else isCommentOrString:=false;                                                //
                     end                                                                             //###mod bracket search improve
                    else isCommentOrString:=false;
                    if (Test = BracketInc) and (not isCommentOrString) then
                      Inc(NumBrackets)

Будет работать если подсветка написана в хорошем тоне как все стандартные, и коментарии там названы как Remark или Comment, a строки как String. 
Сам код для подсветки парных скобок приводился здесь, в нем тоже можно доработать чтобы внутри коментарием даже не начинался поиск парных скобок. 
Но не хватает мне левела чтобы исправить тот же баг с поиском границ фолдинга внутри комментов и строк. Код находится в SynEdit.pas, procedure ScanUsingFoldRegions. Может кто поглядит из отцов?  

Это сообщение отредактировал(а) Sep. - 9.7.2006, 09:26
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Quadr0
Дата 14.7.2006, 17:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:36
  Вверх
Sep.
Дата 15.7.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Баг с подсказкой по [...]:
Если используете SynCompletionProposal то после вывода подсказки при наведении мышки на [...] текст в подсказке по Ctrl-Space не ваш а от хинта [...]
Пока решил только полной чисткой InsertList и ItemList. В вашем SynCompletionProposal.onExecute прийдется заново заполнять листы. Если кто знает как решить лучше - велкам =)
Код
 
procedure AfterCollapsedHintCleanUp;
begin
  if Cursor <> crIBeam then
    Cursor := crIBeam;

  if TSynCompletionProposal(fHint).Tag = 1 then
  begin
    TSynCompletionProposal(fHint).Tag := 0;
    TSynCompletionProposal(fHint).CancelCompletion;
    TSynCompletionProposal(fHint).ItemList.Clear;    //###mod clear [...]hint
    TSynCompletionProposal(fHint).InsertList.Clear;  //###mod clear [...]hint
    //Refresh;
  end;
end;
  
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Vitalik
Дата 22.7.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(Quadr0 @  14.7.2006,  16:59 Найти цитируемый пост)
Цитата(Sep. @  8.7.2006,  18:06 Найти цитируемый пост)
Может кто поглядит из отцов?
Если только Vitalik. У меня сейчас времени просто нет. Попробуй стукнуть ему в асю или лучше в YIM...

У меня к сожалению тоже сейчас нет времени на CodeFolding.. Я ведь в его внутренностях пока что совсем не разбираюсь, а на это нужно определенное время.. smile
А появившееся время очень хочется все же потратить на родной компонент smile 
PM MAIL WWW ICQ YIM   Вверх
Vitalik
Дата 22.7.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Кстати, получилось ликвидировать некоторые утечки памяти в CodeFolding'е! smile
Вроде бы это основные утечки, остались только какие-то совсем небольшие и что самое печальное - непонятные smile

Файл SynEdit.pas

Код
destructor TCustomSynEdit.Destroy;
var
  i: integer;
begin
  //### Code Folding ###
  fCodeFolding.Free(); //###mod memory leak
  fAllFoldRanges.Free;
...
end

Код
procedure TCustomSynEdit.ReScanForFoldRanges;
var
...
begin
...
  TemporaryAllFoldRanges := fAllFoldRanges;
  TemporaryAllFoldRanges.Clear;
  fAllFoldRanges := TSynEditAllFoldRanges.Create;
  ScanForFoldRanges(fAllFoldRanges, TemporaryLines);
  FreeAndNil(TemporaryLines); //###mod memory leak
  TemporaryAllFoldRanges.Ranges.Assign(fAllFoldRanges.Ranges);
...
end

Код
procedure TCustomSynEdit.ScanForFoldRanges(
  var TopFoldRanges: TSynEditAllFoldRanges; Strings: TStrings);
var
...
  procedure ScanUsingFoldRegions(FoldRegions: TFoldRegions;
    ParentRegion: TFoldRegionItem);
  begin
  ... //большой кусок кода
  end;
begin
...
  if (CodeFolding.HighlighterFoldRegions) and (Assigned(Highlighter)) then
    ScanUsingFoldRegions(Highlighter.FoldRegions, nil)
  else
    ScanUsingFoldRegions(CodeFolding.FoldRegions, nil);

  Parents.Free(); //###mod memory leak
end;


Файл SynEditCodeFolding.pas

Код
//###mod functions for clearing and freeing list and it's items
procedure ClearList(var List: TList);
var i: Integer;
begin
  if not Assigned(List) then Exit;
  for i := 0 to List.Count-1 do TObject(List[i]).Free();
  List.Clear();
end;

procedure FreeList(var List: TList);
var i: Integer;
begin
  if not Assigned(List) then Exit;
  for i := 0 to List.Count - 1 do TObject(List[i]).Free();
  FreeAndNil(List);
end;
//###mod functions for clearing and freeing list and it's items


Код
procedure TSynEditAllFoldRanges.ClearAll;
begin
  //###mod memory leaks
  //fAllRanges.Clear;
  ClearList(fAllRanges);
  //###mod memory leaks
end;

...

destructor TSynEditAllFoldRanges.Destroy;
begin
  //###mod memory leaks
  //fAllRanges.Free();
  FreeList(fAllRanges);
  //###mod memory leaks
  inherited;
end;
 
PM MAIL WWW ICQ YIM   Вверх
Sep.
Дата 22.7.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



2Vitalik
Мегареспект за исправление утечек памяти!

Версия от 22.07
Включает все предыдущиеисправления в этой теме плюс:
  • //###mod IndentGiudes calculation fix
    Исправление расчета положения подсказки по отступу.
  • //###mod collapsed line edit
    запрет редактирования свернутой строки
  • //###mod <40 lines in hint
    В хинте появляющемся при наведении мышки на [..] не более 40 строк
  • //###mod change cursor on [..]
    Смена курсора мышки когда она наведена на [..] на вопросительный
  • //###mod wrong place of hint over [...]
    Наконец смог правильно расположить хинт по [...] ! =)
  • //###mod black frame around [...] и //###mod black dots in [...]
    Сбивался при некоторых настроках цвет значка [..] и он выводился цветом RightMargin
  • //###mod IndentGiudes change highlight
    подсветка отступа подсвечивается пожирней
  • //###mod select yo
    Даблклик на слове в котором есть Ё или Й не выделял слово целиком.
  • //###mod caret beyond EOL
    В свернутой строке при CursorBeyondEOL и курсоре стоящем за концом строки по нажатию Enter строка не переносилаь
  • //###mod collapse current - moves cursor
    Когда выполяется CollapseCurrent то курсор встает на свернутую строку
К сожалению делал еще какие то исправления но не обозначил их =(. Диффом пройтись лень, если кто найдет то отпишитесь и я обьясню для чего это было.
Качаем там же  

Это сообщение отредактировал(а) Sep. - 22.7.2006, 23:00
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
Vitalik
Дата 23.7.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(Vitalik @  22.7.2006,  20:51 Найти цитируемый пост)
Вроде бы это основные утечки, остались только какие-то совсем небольшие и что самое печальное - непонятные

Ура! Теперь и с этими утечками покончено! smile
Они оказались зашитыми в PChar и GetMem smile

Файл SynEditCodeFolding.pas

Код
  TSkipRegionItem = class(TCollectionItem)
  private
  ...
  public
    destructor Destroy(); override; //#mod memory leak
    property Open: PChar read fOpen write SetOpen;

Код
destructor TFoldRegionItem.Destroy;
begin
  //#mod memory leak
  if fOpen <> nil then FreeMem(fOpen);
  if fClose <> nil then FreeMem(fClose);
  if fRegExpOpen <> nil then FreeMem(fRegExpOpen);
  if fRegExpClose <> nil then FreeMem(fRegExpClose);
  //#mod memory leak
  fSubFoldRegions.Free;
  inherited;
end;

Код
function TFoldRegions.Add(AType: TFoldRegionType; AAddEnding,
    ANoSubFoldRegions, AWholeWords: Boolean; AOpen, AClose: PChar;
  AParentRegion: TFoldRegionItem): TFoldRegionItem;
begin
  ...
  //#mod memory leak
  //GetMem(Result.fOpen, StrLen(AOpen) + 1);
  //StrCopy(Result.fOpen, AOpen);
  Result.Open := AOpen;
  //GetMem(Result.fClose, StrLen(AClose) + 1);
  //StrCopy(Result.fClose, AClose);
  Result.Close := AClose;
  //#mod memory leak

  Result.fParentRegion := AParentRegion;
end;

Код
procedure TFoldRegionItem.SetClose(const Value: PChar);
begin
  if fClose <> nil then FreeMem(fClose); //#mod memory leak
  GetMem(fClose, StrLen(Value) + 1);
  StrCopy(fClose, Value);
end;

Код
procedure TFoldRegionItem.SetOpen(const Value: PChar);
begin
  if fOpen <> nil then FreeMem(fOpen); //#mod memory leak
  GetMem(fOpen, StrLen(Value) + 1);
  StrCopy(fOpen, Value);
end;

Код
procedure TFoldRegionItem.SetRegExpClose(const Value: PChar);
begin
  if fRegExpClose <> nil then FreeMem(fRegExpClose); //#mod memory leak
  GetMem(fRegExpClose, StrLen(Value) + 1);
  StrCopy(fRegExpClose, Value);
end;

Код
procedure TFoldRegionItem.SetRegExpOpen(const Value: PChar);
begin
  if fRegExpOpen <> nil then FreeMem(fRegExpOpen); //#mod memory leak
  GetMem(fRegExpOpen, StrLen(Value) + 1);
  StrCopy(fRegExpOpen, Value);
end;

Код
procedure TSkipRegionItem.SetEscape(const Value: PChar);
begin
  if fEscape <> nil then FreeMem(fEscape); //#mod memory leak
  GetMem(fEscape, StrLen(Value) + 1);
  StrCopy(fEscape, Value);
end;

Код
destructor TSkipRegionItem.Destroy(); //#mod memory leak
begin
  if fOpen <> nil then FreeMem(fOpen);
  if fClose <> nil then FreeMem(fClose);
  if fEscape <> nil then FreeMem(fEscape);
end;


Но должен заметить, что если CodeFolding проглючит и безвозвратно потеряется скрытый текст, то произойдут утечки.. 
Но я думаю это именно баг CodeFolding'а и с его исправлением исчезнут и утечки smile

Добавлено @ 11:54 
Вот еще забыл:

Файл SynEdit.pas

Код
procedure TCustomSynEdit.InitCodeFolding;
var
  fr: TFoldRegions;
  
  procedure MakeFRCaseInsensitive(aFoldRegions: TFoldRegions);
  var
    i: Integer;
  begin
    begin
      if aFoldRegions[i].SubFoldRegions.Count > 0 then
        MakeFRCaseInsensitive(aFoldRegions[i].SubFoldRegions);

      //#mod memory leak (indirect)
      //aFoldRegions[i].Open := StrUpper(aFoldRegions[i].Open);
      //aFoldRegions[i].Close := StrUpper(aFoldRegions[i].Close);
      StrUpper(aFoldRegions[i].Open);
      StrUpper(aFoldRegions[i].Close);
      //#mod memory leak
      ...
    end;
  end;
...
 
PM MAIL WWW ICQ YIM   Вверх
Vitalik
Дата 23.7.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Sep., а тебе мегареспект за:

Цитата(Sep. @  22.7.2006,  21:59 Найти цитируемый пост)
//###mod select yo
Даблклик на слове в котором есть Ё или Й не выделял слово целиком.

user posted image

Очень уж досадный баг был smile 
PM MAIL WWW ICQ YIM   Вверх
Vitalik
Дата 1.8.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12




M
Vitalik
English part of this discussion was moved to the new subject "SynEdit2.0.3stable + CodeFolding(MyStix0.31) [ENG]".
That subject was created specially for english-speaking users ;-)


Это сообщение отредактировал(а) Vitalik - 2.8.2006, 11:51
PM MAIL WWW ICQ YIM   Вверх
SergV
Дата 4.8.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Извиняюсь если не туда. У меня проблемма с этим SynEdit2.0.3, пока в дельфине запускаю, всё работает, но стоит закрыть, и запустить ексешник, всё работает до момента сохранения, и попытке открыть новый документ, на этом прога просто вылетает без предупреждения. С темже кодом и стандартным TRichEdit без проблем. Код стандартный для сохранить как, 
Код

procedure TForm1.FileSaveAs1Accept(Sender: TObject);
begin
memo1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);
end;

да вот ток, чтот не так. Могу открыть хот 100 раз документ без сохранения, но достаточно одного раза с сохранением и всё.
Думал проблемма в компаненте с сайта производителей, посмотрел тут у вас, вы его вовсю правите этот набор, скачал от вас, переустановил, нечего не изменилось. В чём может быть проблемма, у меня Delphi 2005.
PM   Вверх
Sep.
Дата 5.8.2006, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



версия от 04.08.06
 * улучшено редактирование около свернутой строки    (DavidCl0nel)
 * добавлены исправления утечек памяти (Vitalik)
 * убран лишний индент строк (от 2 до 4 пробелов в начале каждой строки)
 * стирание свернутой строки если она была в выделении
 * при выключении кодфолдинга выполняется UncollapseAll (DavidCl0nel)
 по старому адресу
 
 
Цитата

 В чём может быть проблемма, у меня Delphi 2005.
 

 А если стандартный LightEditor скомпилить который с UniHighlighter идет, или демку с сохранением из дистрибутива SynEdit ? Там тоже сохранение багает? У меня BDS2006 - все ок.
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
SergV
Дата 5.8.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Sep., из демок я не всё посмотрел, то что глянул, там небыло сохранения, надо поглядеть остальное.
А UniHighlighter я ещё не пробовал, щас посмотрю что там.
Спасибо за наводку.
PM   Вверх
SergV
Дата 9.8.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Походу какаята проблема с компанентом для 2005-го дельфина, так как демка вылетает тоже, или же дельфин барахлит, незнаю что делать, хоть опять дополнитнльно 7-ку ставь. А в UniHighlighter нет для 2005-й версии дельфина.
PM   Вверх
Sep.
Дата 11.8.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



SynMix update 11/08/06 download (400kb)
Изменений много , в основном исправления багов кодфолдинга. Подробнее описано в ветке:
http://forum.vingrad.ru/index.php?showtopic=106449

2SergV
Ставь от 7ки  смело. У меня стоит и SynEdit и SynUniHighlighter пакаджи на 2006 от 7ки.

--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
navykeds
Дата 11.8.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



Не мог бы кто-либо выложить скомпилированное demo (потестировать codefolding)? На slil.ru, например. Был бы очень признателен.
PM MAIL   Вверх
Sep.
Дата 13.8.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



navykeds
Если тебя устроит, скачай Syn. Там есть .exe так что сам TotalCommander не нужен. Версия 0.9 скомпилена со всеми последними измениями в SynMix
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
winsoft
Дата 14.8.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



В этой версии в кодфолдинге присутствует все равно глюк. Если вы какой-либо кусок кода свернете кнопкой "минус", а затем на свернутой строке нажмете Enter и продолжите вводить код, то кнопка "плюс" перемещается со свернутой строки на строку, которую вы вводите.
PM MAIL WWW ICQ   Вверх
winsoft
Дата 18.8.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



Еще происходит ошибка памяти при выделении текста в SynEdit. Оченб глючный компонент, разберитесь, пожалуйста!
PM MAIL WWW ICQ   Вверх
SergV
Дата 23.8.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Вопрос снят, вчера ступил почёрному, всё нашлось и запахало. После перекомпиляции прога перестала вылетать, хотя поставил тотже компанент, походу дельфин парил.

Это сообщение отредактировал(а) SergV - 24.8.2006, 17:42
PM   Вверх
Sep.
Дата 24.8.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



SynMix update 24/08/06 great thanx to DavidCl0nel
download 400kb
подробнее об изменениях в английской ветке, в основном баги undo, redo и selText для кодфолдинга


Цитата
Оченб глючный компонент, разберитесь, пожалуйста!

Вообще то ветка создана чтобы не притензии писать, а решения. Баги и сами можем найти =)
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
winsoft
Дата 30.8.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



Цитата(Sep. @  24.8.2006,  21:08 Найти цитируемый пост)
Вообще то ветка создана чтобы не притензии писать, а решения. Баги и сами можем найти =) 


А я не претензии, а конструктивную критику высказал  smile  smile 


Кстати, ошибка с плюсами/минусами исправлена, а вот при выделении текста - осталась  smile 

Это сообщение отредактировал(а) winsoft - 30.8.2006, 10:45
PM MAIL WWW ICQ   Вверх
Sep.
Дата 7.9.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



 SinMix update 7/09/06
  
  • //###mod bug with onGutterClick
     Не всегда вызывался onGutterClick
      
  • //###mod Copy to Clipboard as unicode
     Если возможно копирует текст в уникоде. Нужно в основном для руской локали на WinNT без патча cpl1250->1251.
      
  • //###mod IndentGuides change highlight style
     не меняет цвет подсветки отступа
      
  • //###mod missed for CaseSensitive
     забытый код когда используются CaseSesitive foldranges
      
  • //###mod GutterAutoSize calc
     неверно расчитывалась ширина гуттера когда посворачиваешь строки 
      
  • //###mod gutter font
     Наконец-то пофиксил неверный расчет гуттера когда шрифты гуттера и текста отличались!!!
      
  • //###mod access violation
      Иногда вылезал AV в GetWordAtRowCol
      
  • //###mod CF-range in comments
      Не искать foldranges в строках/комментариях. Этот мод медленный и закоментирован по умолчанию. Работает только с SynUniHL и правильной подсветкой. Надо бы внести некоторые изменения в SynUniHL для более быстрого доступа к типу токена.
      
  • //###mod highlight current IndentGuide
      Когда курсор внутри foldrange то его indentguide подсвечивается. При этом происходит очень частый Repaint, и если быстро печатать загрузка проца доходит до 40%. Короче у кого тормозит, сперва закоментите этот мод
      
  • небольшие фиксы Copy/Cut/Undo/Redo свернутых строк
      
  • небольшие фиксы в //###mod wrong place of hint over [...]

--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
winsoft
Дата 10.9.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



А где же, собссно, апдейт-то качать?  smile  smile 
PM MAIL WWW ICQ   Вверх
Sep.
Дата 10.9.2006, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



ссылка не меняется с первого поста
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
winsoft
Дата 10.9.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



Спасибо.
PM MAIL WWW ICQ   Вверх
Seldon
Дата 11.9.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



а в этом codefolding'e можно сделать такую фишку: юзер выделяет кусок текста, вызывает команду, и этот текст становится fold регионом?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Sep.
Дата 11.9.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 22.7.2004

Репутация: 6
Всего: 6



Думаю да, надо будет поглядеть. Может запостишь в англицкой ветке - там сейчас главная разработка идет, может David тоже подумает =)
--------------------
Syn - TotalCommander lister plugin |  SynTree - coders sourcebook  
PM MAIL   Вверх
VictorIn
Дата 16.10.2006, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.10.2006

Репутация: нет
Всего: нет



Извиняюсь, что не в английскую ветку, но все же...

Поставил себе SynMix.
с подсветкой все вроде ок.

но вот решил поюзать CodeFolding
и напоролся на следующий баг:

про добавлении вот такого региона 
FoldRegion:=SynUniSyn1.FoldRegions.Add( rtKeyWord, False, False, False, 'Object:', 'End', nil);
нижеследующий код фолдится некорректно, обрамление заканчивается раньше, чем слово End
(строка 45-46, в этом месте есть комментарий)

Код

Object: MainPanel
FilterClass=Panel
Left=5
Top=5
Width=265
Height=65
Object: FromDate
FilterClass=DateTimePicker
Left=60
Top=5
Width=85
Height=25
End
Object: ToDate
FilterClass=DateTimePicker
Left=160
Top=5
Width=85
Height=25
End
Object: TextLabel3
FilterClass=TextLabel
Left=5
Top=5
Width=55
Height=25
Caption=Период: c
End
Object: TextLabel4
FilterClass=TextLabel
Left=145
Top=5
Width=15
Height=25
Caption=по
End
Object: CurrencyBox
FilterClass=ComboBox
Left=60
Top=30
Width=85
Height=25
SQL=
 /* -!!! Вот сдесь ерунда творится - */
Select CURRENCY_FIELDEND,   CURRENCY_NAME
from CURRENCY_FIELDEND_NAMES
^
End
Object: TextLabel6
FilterClass=TextLabel
Left=15
Top=30
Width=45
Height=25
Caption=Валюта
End
Object: CurrentClientBalansPanel
FilterClass=Panel
Left=295
Top=10
Width=115
Height=20
SQL=
select SUM(BALANS<:Parent.CurrencyBox>) as CURRENTBALANS
from CLIENTS where MIX_ID=1
^
End
Object: DeltaClientBalansPanel
FilterClass=Panel
Left=295
Top=30
Width=115
Height=20
SQL=
select
SUM( ( 2*Kind-1)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1, IIF(DOC_ID =1, -1,  0  )   )))  as DELTABALANS
From
CLIENTSVIEW cl
JOIN CHECKS c
ON (c.CLIENT_ID=cl.CLIENT_ID)
where cl.MIX_ID=1 and c.CHECK_DATE>="<:Parent.FromDate>"
^
End
Object: CurrentMoneyAmountPanel
FilterClass=Panel
Left=545
Top=10
Width=115
Height=20
SQL=
select SUM(DEBETPAY<:Parent.CurrencyBox>-CREDITPAY<:Parent.CurrencyBox>) as CURRENTMONEYAMOUNT
from CLIENTS where MIX_ID=1
^
End
Object: DeltaMoneyAmountPanel
FilterClass=Panel
Left=545
Top=30
Width=115
Height=20
SQL=
select
SUM(-( 2*Kind-1)*(AMOUNT<:Parent.CurrencyBox>) )  as DELTAMONEYAMOUNT
From CHECKS c JOIN CLIENTS cl ON (c.CLIENT_ID=cl.CLIENT_ID)
 where c.DOC_ID=1 and c.CHECK_DATE>="<:Parent.FromDate>"
and cl.MIX_ID=1
^
End
Object: ResultPanel
FilterClass=Panel
Left=295
Top=60
Width=365
Height=45
SQL=
select NormalDate(CHECK_DATE) as CHECK_DATE,
SUM(( Kind)*(PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as STOCKSAMOUNTIN,
SUM(( 1-Kind)*(PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as STOCKSAMOUNTOUT,


SUM(( 2*Kind-1)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1, IIF(DOC_ID =1, -1,  0  )   )))  as DELTABALANS,


SUM( ( 1-Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =1, 1, 0  )))  as MONEYAMOUNTIN,
SUM( ( Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =1, 1, 0  )))  as MONEYAMOUNTOUT,
SUM(( 1-Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as AMOUNTOUT,
SUM( (1-Kind)*(Amount<:Parent.CurrencyBox>-PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as PRIB
from
CLIENTSVIEW cl
JOIN CHECKS c
ON (c.CLIENT_ID=cl.CLIENT_ID)
where cl.MIX_ID=1 and c.DOC_ID in (1,2)
and c.CHECK_DATE>="<:Parent.FromDate>"
and c.CHECK_DATE<="<:Parent.ToDate>: 23.59"
/*and cl.MIX_ID=1*/
Group by 1
Order by c.CHECK_DATE
^
End
Object: BeginStocksAmountPanel
FilterClass=Panel
Left=420
Top=10
Width=120
Height=20
SQL=
select SUM(( 2*Kind-1)*(PartCost<:Parent.CurrencyBox>) )  as BEGINSTOCKSAMOUNT
From CHECKS c JOIN CLIENTS cl ON (cl.CLIENT_ID=c.CLIENT_ID)
where c.DOC_ID=2 and c.CHECK_DATE<"<:Parent.FromDate>"
and cl.MIX_ID=1
^
End
End


в исходниках я не копался, как-то не до этого,
думаю эта информация будет интересна для тех кто фиксит сей продукт.
Может что-то я не так делаю?
PM MAIL   Вверх
WhiteWind
Дата 16.10.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Ага, чекбокс "Keyords must be whole words" не работает.
PM   Вверх
aag
Дата 25.10.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Если кому интересно...
Я как-то тоже наткнулся на Mystix, но не понравились многочисленные баги, сильная сырость и тесное переплетение с SynEdit-ом. В тоже время он подтолкнул меня на написание своего code folding. 
Прнципиальным было желание не менять (по крайней мере сильно) кода SynEdit. С другой стороны, я не собирался делать этот code folding полностью универсальным - в Mystix он привязан к Highlighter, мне это было  совершенно ненужным. Code folding (outlining в терминологии MS) был реализовыван только для .SQL (конкретно - для T-SQL), поддерживает стандартные директивы #region..#endregion и блоки begin..end. Хотя расширить как раз список ключевых слов не сложно. В отличии от Mystix поленился и делал все через строки, без PChar - впрочем, скорости обработки вполне хватает
Вся обработка заключается в модуле регионов и в обвеске редактора. Результат можно увидеть тут (наличие работающего сервера не обязательно, он понимает и файлы .sql) 
Эллипсов ([...]) в заголовке региона нет - пробовал делать, но не понравилось. Основная трабла - как совместить редактирование этой строки с ними.
Если кому интересно - пишите, код могу выслать.
PM MAIL   Вверх
aag
Дата 26.10.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Кстати, а не мог бы кто-нибудь выложить примерчик к  SynMix? Ссылки с форума не работают, схем подсветки тоже нет.
PM MAIL   Вверх
Seldon
Дата 28.10.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



aag, а твой codefolding изменяет содержимое .Lines или модифицирует отрисовку строк?
а ссылка кстати мёртвая

Это сообщение отредактировал(а) Seldon - 28.10.2006, 01:02
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 28.10.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



2 Seldon
Нет конечно, зачем? Алгоритм очень грубо такой - проходим по Lines, строим список регионов (т.е. тот самый folding), на отрисовке Gutter рисуем линии/крестики. На OnSpecialLines дополнительно подсвечиваем эти строки. Модификация отрисовки строк понадобится для рисования этих самых [...]
По уму, конечно, надо... 
Ссылка рабочая, я на нее захожу спокойно. Может у тебя прокси барахлит? В общем, если есть желание - могу выслать.

Что касается SynMix... Штука хорошая, авторам респект. Но баги Mystix из нее торчат по прежнему - сворачиваем регион, идем на строчку вверх, нажимаем Enter (т.е. добавляем строку) - и регион пропадает. Вместе со свернутой информацией. 
Справедливости ради, в BDS2006 кодефолдинг тоже глючит по-черному.
PM MAIL   Вверх
Seldon
Дата 28.10.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



хм, по ссылке теперь заходит, а вот файл качать отказываецца... если можно, вышли пожалуйста код твоего фолдинга на seldon.mib dog gmail dot com

в SynMix я даже не ковырялся потому что мне не нравицца сама идея менять Lines при сворачивании\разворачивании регионов. и я так и не понял из твоего поста - твой фолдинг при сворачивании\разворачивании регионов меняет содержимое Lines или нет?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 29.10.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



При сворачивании, скрываемые строки сохраняются в StringList самого региона. При разворачивании - восстанавливаются.
В SynMix примерно также. И как можно не менять Lines при сворачивании/разворачивании, я плохо представляю. Разве что заводить отдельно какой-нибудь VisualLines - так это будут те же яйца, только сбоку. Один фиг, все сводится к необходимости гарантировать что при свертке не будут потеряны данные.
Фрагменты послал.
PM MAIL   Вверх
Seldon
Дата 29.10.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



Цитата

Один фиг, все сводится к необходимости гарантировать что при свертке не будут потеряны данные.
да, но ещё надо гарантировать правильную работу внутренних механизмов SynEdit'a (Undo\Redo например) с учётом скрытых строк... 

Цитата

И как можно не менять Lines при сворачивании/разворачивании, я плохо представляю.
ну мне кажецца можно сделать так, как сделан WordWrap - пересчёт координат и можификация отрисовки строк, чтобы свёрнутые строке не рисовались. а Lines при этом неизменен.
ну да ладно, может как-нить попытаюсь сделать что-нибудь подобное.

Цитата

Фрагменты послал.
пришло только 1 письмо без аттачей - "Совсем забыл - ехе-шник при запуске..."
хм, gmail походу не пропускает exe файлы в аттачах  smile заархивируй плиз чем-нибудь.

Это сообщение отредактировал(а) Seldon - 29.10.2006, 22:50
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 30.10.2006, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Цитата
да, но ещё надо гарантировать правильную работу внутренних механизмов SynEdit'a (Undo\Redo например) с учётом скрытых строк... 

Я при сворачивании делаю начало региона readonly. И хотя специально не заморачивался с undo, все работает корректно.
Цитата
ну мне кажецца можно сделать так, как сделан WordWrap - пересчёт координат и можификация отрисовки строк, чтобы свёрнутые строке не рисовались...

WordWrap строки не скрывает.
gmail похоже, вообще не пропускает аттачи больше мегабайта.

PM MAIL   Вверх
Seldon
Дата 30.10.2006, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



спасибо, уже не надо - скачал с сайта
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
salexn
Дата 8.11.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 30.6.2006

Репутация: нет
Всего: нет



а RegEx работает? Если да, то как сделать сворачивание для любого XML
По идеи должно быть 
open <.>
close </.>
PM MAIL   Вверх
mr.Anderson
Дата 8.3.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Нашел еще пару глюков. Использую SynMix в C++ Builder 6-й версии.

Первый: нельзя выделить текст "справа налево". По стандарту, слева направо, можно. А вот справа налево - нельзя.

Второй: если написать следующий код:
Код

void __fastcall SynCopyProperties( TSynEdit *Source, TSynEdit *Target )
{
 Target->BookmarkOptions = Source->BookmarkOptions;
 Target->SelectedColor = Source->SelectedColor;
 Target->WordWrapGlyph = Source->WordWrapGlyph;
}

То при закрытии такой программы будут выданы ошибки Access Violation. Только на этих трех свойствах, остальные копируются нормально.

А также у меня два вопроса:
1. Можно ли как-нибудь отключить подсветку в SynEdit?
2. Чем отличаются SynEdit и SynMemo ?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Seldon
Дата 9.3.2007, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



попробуй
Target->WordWrapGlyph->Assign(Source->WordWrapGlyph);
или как там в Сях вызвать метод объекта....

возможно аналогично поступить надо с  BookmarkOptions
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
mr.Anderson
Дата 9.3.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
А также у меня два вопроса:
1. Можно ли как-нибудь отключить подсветку в SynEdit?
2. Чем отличаются SynEdit и SynMemo ?

smile

Это сообщение отредактировал(а) mr.Anderson - 9.3.2007, 14:23


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Seldon
Дата 9.3.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



SynMemo - SynEdit, имеющий свойства и методы, сходные с TMemo, т.е. он предназначен для быстрой замены TMemo.
Выключить подсветку - установить Highlighter в nil.
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
mr.Anderson
Дата 10.3.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Да я вроде пробежался по свойствам - они у меня у SynEdit и SynMemo одинаковы... Какая же разница, не пойму.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
MaxKoshelev
Дата 17.3.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



http://www.2ccc.com/article.asp?articleid=3974 - SynEdit Studio 5.5 (Основан именно на SynMix) - диалоги, правда на Китайском, но у нас, как я понимаю, это второй "родной" язык. Правится на Английский за полчаса.

Реализованы : 
Modify Line (A-la BDS-2006)
+ tSynEditor Class(SynEdit)
+ tSynManager Class
+ tSynEvents Class
Codefolding (через UniSynEdit) - правда, пока не всегда корректен :(
проявляется в следующем : Если есть класс объявленный след. Образом: tSynEditor = Class;, то все, что ниже, он сворачивает тоже, хоть и не должен.

Имеют место существовать Actions (Embedded to ActionList/ActionManager)

Может, имеет смысл его взять за основу?

PM MAIL   Вверх
Seldon
Дата 17.3.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



объясни пожалуйста как качать с этого чудо-сайта?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
MaxKoshelev
Дата 19.3.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Цитата(Seldon @ 17.3.2007,  22:55)
объясни пожалуйста как качать с этого чудо-сайта?

Залогиниваешься и ссылки для скачивания активизируются


_http://2ccc.com 
Логин yyttuu пароль 112233

_http://www.tomore.com/ 
Логин и пароль ChinaWillDie 

PM MAIL   Вверх
MaxKoshelev
Дата 23.3.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



eControl SyntaxEditor кто просил?

http://www.rapidshare.ru/221146
PM MAIL   Вверх
winsoft
Дата 7.5.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Президент WINsoft



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2005

Репутация: нет
Всего: нет



Тут вышел SynEdit 2.0.5. Скажите, к нему будут SYnMix и UniHighlighter?   smile 
PM MAIL WWW ICQ   Вверх
navykeds
Дата 14.5.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.3.2006

Репутация: 3
Всего: 3



Цитата(winsoft @ 7.5.2007,  21:07)
Тут вышел SynEdit 2.0.5. Скажите, к нему будут SYnMix и UniHighlighter?   smile

Не знаю насчет SynMix, но UniHighlighter вполне работает.
PM MAIL   Вверх
wsx
Дата 11.6.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.6.2007

Репутация: нет
Всего: нет



Подскажите, плз, как доработать стандартные компоненты подсветки для работы с фолдингом?
PM MAIL   Вверх
DeniZka
Дата 25.6.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.6.2007

Репутация: нет
Всего: нет



Работаю в D2006, не могу зайти в FoldRegions[...] - это раз

в коде
 SynEdit1.CodeFolding.FoldRegions.Add()
не доступен TFoldRegionType - это два

Если через Uni настроить, то на неоткомпиленой форме все отображается. А на скомпилированном проекте пусто. - ну и три.

помогите
PM MAIL   Вверх
mr.Anderson
Дата 28.7.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Послушайте, люди добрые. Сюда кто-нибудь вообще заходит? Нашел ошибку, сам исправить не смог, сколько ни рылся.

Если написать код, провоцирующий его выделение как блока (ну, например, так:
Код

if()
{
}

Затем код свернуть, а затем эту строчку, которая свернута, выделить и нажать Del. А потом еще раз Del. А потом попробовать развернуть строчку... Получим очень неприятную ошибку. И отменить удаление такое, кстати, тоже нельзя. Прошу исправить!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Vitalik
Дата 29.7.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(wsx @  11.6.2007,  08:22 Найти цитируемый пост)
Подскажите, плз, как доработать стандартные компоненты подсветки для работы с фолдингом?

Задавай конкретные вопросы - попробуем совместно разобраться..


PM MAIL WWW ICQ YIM   Вверх
mr.Anderson
Дата 29.7.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Vitalik, дайте, пожалуйста, свою реальную аську или хотя бы мыло (напишите мне в личку плз), просто я внес в SynMix много собственных исправлений и дополнений, мне хотелось бы их опубликовать и внести в зарегистрированный на SourceForge проект. Нужно ваше мнение. Поэтому прошу дать мне ваше мыло или лучше аську. А лучше и то и другое. smile Исправлений, повторю, довольно много, поэтому желательно с вами все обсудить.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Vasiles
Дата 25.9.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.9.2007

Репутация: нет
Всего: нет



вопрос снят

Это сообщение отредактировал(а) Vasiles - 25.10.2007, 09:11
PM MAIL   Вверх
Seldon
Дата 25.9.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



править код, как всегда
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
Vasiles
Дата 27.9.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.9.2007

Репутация: нет
Всего: нет



вопрос снят

Это сообщение отредактировал(а) Vasiles - 25.1.2008, 13:12
PM MAIL   Вверх
ta2i4
Дата 2.12.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.12.2008

Репутация: 1
Всего: 1



SynEdit Studio 5.8
Может кому-то нужно еще. Пароль и логин выше в теме.
Кстати, на Unicode SynEdit перенос кодефолдинга и unihighlighter'а не планируется?
PM MAIL   Вверх
ZoNe
  Дата 2.12.2008, 23:14 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2008

Репутация: нет
Всего: нет



Умоляю подскажите какой и где ее взять прогой пользыватся для вырезания голоса из песен!!!

PM MAIL   Вверх
ZoNe
Дата 3.12.2008, 12:37 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2008

Репутация: нет
Всего: нет



ау тут кто то живой есть?
PM MAIL   Вверх
Vitalik
Дата 3.12.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(ta2i4 @  2.12.2008,  13:39 Найти цитируемый пост)
SynEdit Studio 5.8
Может кому-то нужно еще. Пароль и логин выше в теме.

Гм.. Прикольно! smile
То есть еще некое развитие компонентов идет?

Цитата(ta2i4 @  2.12.2008,  13:39 Найти цитируемый пост)
Кстати, на Unicode SynEdit перенос кодефолдинга и unihighlighter'а не планируется? 

У меня не получилось перейти по ссылке.. "Страница не найдена".. :(

Добавлено через 51 секунду
ZoNe, ты в курсе, что ты злобно оффтопишь ;)
PM MAIL WWW ICQ YIM   Вверх
ZoNe
Дата 3.12.2008, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2008

Репутация: нет
Всего: нет



Извени но я пока не чё не понял что ты сказал!!!Просто я тут новенький и я пока тут не чё не знаю!!!и я просто споросил где мона взять эту прогу и вообще она на этом форуме розсматривается или хотябы какието проги для музыки?

PM MAIL   Вверх
ta2i4
Дата 4.12.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.12.2008

Репутация: 1
Всего: 1



Странно, ссылка _http://mh-nexus.de/en/unisynedit.php работает. В крайнем случае сам сайт _http://mh-nexus.de/en/ , там вкладка Components.

На оффсайте SynEdit на эту вариацию указывает ссылка _http://mh-nexus.de/unisynedit.htm

Прямые ссылки на "Unicode SynEdit October 3, 2008"
_http://mh-nexus.de/downloads/UniSynEdit.zip
_ftp://wa651f1:[email protected]/UniSynEdit.zip
PM MAIL   Вверх
FFF
Дата 19.12.2008, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.4.2008

Репутация: нет
Всего: нет



Скачал последнюю студию. Когда ставлю на форму компонент TSynEditor и зпускаю программу, дельфи выдает ошибку:
Код

Project Name.exe raised exception class EReadError with message 'Property ActiveLine.Background does not exist'.

В чем дело?
PM MAIL   Вверх
s1lver
Дата 19.12.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Подскажите как UniSyn запихать на RadStudio 2007 ?


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
vmazz
Дата 13.4.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2009
Где: В городе где нет метро...

Репутация: нет
Всего: нет



Напишите инструкцию по сркрещению SynEdit2.0.3stable + CodeFolding(MyStix0.31) и UniHighlighter 2.0 Beta4. А то установка происходит в ручном режиме smile 
PM MAIL WWW ICQ   Вверх
Crw
Дата 14.4.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: 1
Всего: 4



Дык. Ведь информация о том как установить есть в файлах "SynUniHigh2b4\Information\" install_2_0a.htm, install_2_0b1.htm 
От ручной установки никуда не денешься smile
PM MAIL   Вверх
vmazz
Дата 29.4.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2009
Где: В городе где нет метро...

Репутация: нет
Всего: нет



Crw, Это все понятно. На SynEdit 2.0.6 я ставлю УниПодсветку без проблем. Но на ЭТОТ пакет не ставится. Вернее ставится если закомментировать {$DEFINE CODEFOLDING}. Но какой мне тогда понт ставить сей пакет. Вот и спрашиваю у тех кто нормально поставил подсветку на этот пак.

Конкретно такие ошибки.
1 - [Error] SynUniFormatNativeXml20.pas(590): Undeclared identifier: 'FoldRegions'. Так, ладно, добавляем var FoldRegions:TFoldRegions;
идем дальше
2 - [Error] SynUniDesignerForm.pas(752): Undeclared identifier: 'CodeFolding'
[Error] SynUniDesignerForm.pas(752): Missing operator or semicolon
[Error] SynUniDesignerForm.pas(753): Undeclared identifier: 'InitCodeFolding'. Опять сворачивание кода..... и все это при том что
property CodeFolding: TSynCodeFolding read fCodeFolding; есть в SynEdit.pas
И очень много Warning`ов при компиляции.

Вот после этого я и написал на форум. Может CodeFolding отключен по стандарту в пакете? Почему вылазит столько много ошибок и все на нем?
PS:Ставлю на D7.

Это сообщение отредактировал(а) vmazz - 29.4.2009, 22:28
PM MAIL WWW ICQ   Вверх
BenderM
Дата 12.6.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.6.2009

Репутация: нет
Всего: нет



Здравствуйте. Подскажите, VitalikSep., или кто другой. SynMix доступный для скачивания в этой ветке последний по обнослениям или есть что-то более свежее. Спасибо.

Это сообщение отредактировал(а) BenderM - 12.6.2009, 19:05
PM MAIL   Вверх
Рузаль
Дата 5.12.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.7.2009
Где: Казань

Репутация: нет
Всего: нет



BenderM, это последняя версия, если хочешь то можешь дорабатывать..
PM MAIL WWW ICQ   Вверх
vmazz
Дата 25.2.2010, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2009
Где: В городе где нет метро...

Репутация: нет
Всего: нет



Подскажите знатоки SynMix`а, как мне задать регионы со СТРОГИМ соответствием линии.

Т.е. по стандарту компонент ищет вхождения либо символа либо слова в строку (rtChar,rtKeyWord), а мне нужно чтобы rtKeyWord СТРОГО соответствовал строке . Как мне это сделать? Нуждаюсь в помощи, а то программу ужевыпускать, а мне обязательно нужно строгое соответствие......

И еще заметил - во всплывающем хинте (когда на [...] наводиш курсор) в первой строке отсутствует последний символ. Т.е. было func void MyFunc(); а стало func void MyFunc()           (без ";").
PM MAIL WWW ICQ   Вверх
LinkPar
Дата 9.6.2014, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.5.2013

Репутация: нет
Всего: нет



(http://sepa.spb.ru/d.php?syn/SynMix.rar) - ссылка дохлая, может кто-нибудь поделиться ?

UPD^

Нашёл. Если кому надо - http://i.sepa.spb.ru/_/syn/SynMix.rar

Это сообщение отредактировал(а) LinkPar - 9.6.2014, 12:10
PM MAIL   Вверх
FlutoMAX
Дата 28.11.2014, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.2.2014

Репутация: нет
Всего: нет



Цитата(vmazz @ 25.2.2010,  05:18)
Подскажите знатоки SynMix`а, как мне задать регионы со СТРОГИМ соответствием линии.


Присоединяюсь к вопросу. Каким образом?
Например, нужно  с 4 по 8 стоку свернуть, вроде функции, наподобие 
Код

function TFoldRegions.Add(const FromLine, ToLine: Integer): TFoldRegionItem;

Это было бы крайне полезно  smile 

Это сообщение отредактировал(а) FlutoMAX - 28.11.2014, 19:06
PM MAIL   Вверх
FlutoMAX
Дата 28.11.2014, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.2.2014

Репутация: нет
Всего: нет



Вопрос решил самостоятельно, 
в SynEdit.pas в классе TCustomSynEdit вынес private fAllFoldRanges из в protected и
метод InitCodeFolding определил как virtual, 
затем создал класс наследник TSynEdit, где этот метод переопределил.

Код

procedure TABCEdit.InitCodeFolding;
var
FoldRange: TSynEditFoldRange;

procedure AddFoldRange(const i: integer);
begin
if FoldRange=nil then exit;
FoldRange.ToLine:=i;
fAllFoldRanges.AddFold(FoldRange);
end;

var
i: integer;
s: string;
begin
fAllFoldRanges.Clear;
fAllFoldRanges.ClearAll;
FoldRange:=nil;
for i:=0 to Lines.Count-1 do begin
s:=Trim(Lines[i]);
if Length(s)>2 then
if (s[1]='V') and (s[2]=':') then begin
AddFoldRange(i);
FoldRange:=TSynEditFoldRange.Create;
FoldRange.FromLine:=i+1;
end;
end;
AddFoldRange(i);
end;


Необходимо было создать регионы по меткам V: для синтаксиса ABC нотации.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.4797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.