SynEdit/ru

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) русский (ru) 中文(中国大陆)‎ (zh_CN)

Общее

SynEdit находящийся в Lazarus основан на SynEdit 1.0.3 [[1]], и была адаптированна и расширенна довольно сильно. Например поддержка UTF-8 и свертывание кода были добавлены.

Пакет содержащий исходник компонента называется TSynEdit, некоторые syntax highlighters и другие компоненты используют исходник редактора.

Он лицензирован под теми же условиями что и оригинал SynEdit (MPL или GPL)

Synedit 2.0.5 port

Альтернативный порт текущей версии оригинального SynEdit :

http://wiki.lazarus.freepascal.org/SynEdit/port

code: https://github.com/rnapoles/

SynEdit в IDE

SynEdit в Лазарус является встроенным пакетом, потому что его использует IDE. Вот почему нет файлов .lpk. Компонент может быть найден в палитре компонентов на странице 'SynEdit'.

Использование SynEdit

Подсветка

  • Используйте существующую подсветку или загрузите другую из Подсветка для SynEdit
  • Используйте настраеваимую подсветку (SynAnySyn или SynPositionSyn) (Смотрите прмеры того как использовать)
  • Напишите свою собственную SynEdit_Highlighter

(Авто-)завершение

Существует 2 плагина для SynEdit, для завершения:

  • TSynCompletion (используется в IDE)
  • TSynAutoComplete

Примечание: TSynAutoComplete (из палитры компонентов) не имеет выпадающего списка.

Смотрите примеры как использовать их обоих.

Изменение текста из кода

Текст может быть получен через SynEdit.Lines. изменение текста через свойство Lines не работает с undo/redo.

Используйте TextBetweenPoints и TextBetweenPointsEx для изменения текста, если вы хотите чтобы undo/redo работали.

Закладки

Пожалуйста обратитесь к следующей теме на форуме: http://forum.lazarus.freepascal.org/index.php/topic,14948.msg79794.html

Примеры

Примеры можно найти в каталоге lazarus/examples/synedit

Как добавить поддержку Copy, Paste, Cut, Undo, Redo и др.

Эти возможности могут быть реализованны использованием комманд SynEdit.

uses
  ...
  SynEdit, SynEditKeyCmds;
 
procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) then
  begin
    case Key of
    VK_C: synCodigo.CommandProcessor(TSynEditorCommand(ecCopy), ' ', nil);
    VK_V: synCodigo.CommandProcessor(TSynEditorCommand(ecPaste), ' ', nil);
    VK_X: synCodigo.CommandProcessor(TSynEditorCommand(ecCut), ' ', nil);
    end;
  end;
end;

Дальнейшее развитие, обсуждение

  • RTL (right-to-left): started by Mazen
  • automatic monospace font selection: At the moment SynEdit starts with a font 'courier'. But it would be better, if SynEdit would start with a monospace font (meaning: every character has the same width). At the moment the LCL TFont does not provide such a property. At the moment the user has to choose the right font.
  • automatic UTF-8 font selection: Same as above monospace, but also with an UTF-8 font, so that for example umlaute are shown correctly. At the moment the user has to choose the right font.
  • Dead keys. Most keyboards support typing two or more keys to create one special character (like accented or umlaut characters).
  • Redesign of the SynEdit component. The primary goal is more reliable display and navigation in the text. A more modular approach also allows for better integration of extensions, and for specialized controls, for use outside of Lazarus.

Смотрите также