📄 synhighlighterprogress.pas
字号:
'ansi-only anywhere append appl-alert appl-alert-boxes ' +
'application as-cursor ask-overwrite attachment auto-endkey ' +
'auto-end-key auto-go auto-indent auto-resize auto-zap ' +
'available-formats average avg backwards base-key ' +
'batch batch-mode bgc bgcolor ' +
'binary bind-where block-iteration-display border-bottom border-bottom-chars ' +
'border-bottom-pixels border-left border-left-chars border-left-pixels border-right ' +
'border-right-chars border-right-pixels border-top border-top-chars border-top-pixels ' +
'both bottom box box-select box-selectable ' +
'browse browse-header btn-down-arrow btn-left-arrow btn-right-arrow ' +
'btn-up-arrow buffer buffer-chars buffer-compare buffer-copy ' +
'buffer-lines button buttons cache cache-size ' +
'cancel-break cancel-button can-query can-set caps ' +
'cdecl character_length charset checked clear-select ' +
'clear-selection code codepage codepage-convert col-of ' +
'colon-align colon-aligned color-table column-bgcolor column-dcolor ' +
'column-fgcolor column-font column-label-bgcolor column-label-dcolor column-label-fgcolor ' +
'column-label-font column-of column-scrolling com1 com2 ' +
'com3 com4 com5 com6 com7 ' +
'com8 com9 combo-box command complete ' +
'com-self con connect connected ' +
'constrained contains contents context context-popup ' +
'control-container convert convert-3d-colors convert-to-offset count ' +
'cpcase cpcoll cpinternal cplog cpprint ' +
'cprcodein cprcodeout cpterm crc-value create-control ' +
'create-result-list-entry create-test-file current_date current-column ' +
'current-iteration current-result-row current-row-modified current-value cursor-char ' +
'cursor-line cursor-offset data-entry-return data-type date-format ' +
'day db-references dcolor dde-error dde-id ' +
'dde-item dde-name dde-topic debug default-button ' +
'default-extension defined delete-current-row delete-selected-row delete-selected-rows ' +
'deselect-focused-row deselect-rows deselect-selected-row design-mode dialog-box ' +
'dialog-help dir disabled display-message display-type ' +
'drag-enabled drop-down drop-down-list dump dynamic ' +
'echo edge edge-chars edge-pixels edit-can-undo ' +
'editor edit-undo empty end-key entered ' +
'eq error error-col error-column error-row ' +
'events event-type exp expand extended ' +
'extent external extract fetch-selected-row fgc ' +
'fgcolor file filename file-name ' +
'file-offset file-type filled fill-in filters ' +
'first-child first-column first-proc first-procedure first-server ' +
'first-tab-item fixed-only focused-row font-table force-file ' +
'foreground forwards frame-spacing frame-x frame-y ' +
'frequency from-current full-height full-height-chars full-height-pixels ' +
'full-pathname full-width full-width-chars full-width-pixels function ' +
'ge get-blue get-blue-value get-char-property get-double ' +
'get-dynamic get-file get-float get-green get-green-value ' +
'get-iteration get-license get-long get-message get-number ' +
'get-pointer-value get-red get-red-value get-repositioned-row get-selected ' +
'get-selected-widget get-short get-signature get-size get-string ' +
'get-tab-item get-text-height get-text-height-chars get-text-height-pixels get-text-width ' +
'get-text-width-chars get-text-width-pixels get-unsigned-short grayed grid-factor-h ' +
'grid-factor-horizontal grid-factor-v grid-factor-vertical grid-set grid-snap ' +
'grid-unit-height grid-unit-height-chars grid-unit-height-pixels grid-unit-width grid-unit-width-chars ' +
'grid-unit-width-pixels grid-visible gt height height-chars ' +
'height-pixels help-context hidden horizontal hwnd ' +
'image image-down image-insensitive image-size image-size-chars ' +
'image-size-pixels image-up immediate-display indexed-reposition index-hint ' +
'info information init initial initial-dir ' +
'initial-filter initiate inner inner-chars inner-lines ' +
'insert-backtab insert-file insert-row insert-string insert-tab ' +
'internal-entries is-lead-byte is-row-selected is-selected item ' +
'items-per-row join-by-sqldb keep-frame-z-order keep-messages keep-tab-order ' +
'key keyword-all label-bgc label-bgcolor label-dc ' +
'label-dcolor label-fgc label-fgcolor label-font label-pfc ' +
'label-pfcolor labels languages large large-to-small ' +
'last-child last-proc last-procedure last-server last-tab-item ' +
'lc le leading left-aligned left-trim ' +
'length line list-events list-items list-query-attrs ' +
'list-set-attrs list-widgets load load-control loadcontrols ' +
'load-icon load-image load-image-down load-image-insensitive load-image-up ' +
'load-mouse-pointer load-small-icon log-id lookahead lower ' +
'lpt0 lpt1 lpt2 lpt3 lpt4 ' +
'lpt5 lpt6 lpt7 lpt8 lpt9 ' +
'lt manual-highlight margin-extra margin-height margin-height-chars ' +
'margin-height-pixels margin-width margin-width-chars margin-width-pixels matches ' +
'max max-chars max-data-guess max-height ' +
'max-height-chars max-height-pixels maximize maximum max-rows ' +
'max-size max-value max-width max-width-chars max-width-pixels ' +
'memory menu menubar menu-bar menu-item ' +
'menu-key menu-mouse message-area message-area-font message-line ' +
'min min-height min-height-chars min-height-pixels minimum ' +
'min-size min-value min-width min-width-chars min-width-pixels ' +
'mod modified modulo month mouse-pointer ' +
'movable move-after move-after-tab-item move-before move-before-tab-item ' +
'move-column move-to-bottom move-to-eof move-to-top multiple ' +
'multiple-key multitasking-interval must-exist name native ' +
'ne new-row next-column next-sibling next-tab-item ' +
'next-value no-apply no-assign no-bind-where no-box ' +
'no-column-scrolling no-convert no-current-value no-debug no-drag ' +
'no-echo no-focus no-index-hint no-join-by-sqldb no-lookahead ' +
'no-return-value no-row-markers no-scrolling no-separate-connection no-separators ' +
'no-underline no-word-wrap num-buttons num-columns num-copies ' +
'numeric numeric-format num-formats num-items num-iterations ' +
'num-lines num-locked-columns num-messages num-results num-selected ' +
'num-selected-rows num-selected-widgets num-tabs num-to-retain octet_length ' +
'ok ok-cancel on-frame on-frame-border ordinal ' +
'orientation os-drives os-error ' +
'os-getenv outer outer-join override owner ' +
'paged page-size page-width parent partial-key ' +
'pascal pathname pfc pfcolor pinnable ' +
'pixels-per-col pixels-per-column pixels-per-row popup-menu popup-only ' +
'position precision preselect prev prev-column ' +
'prev-sibling prev-tab-item primary printer-control-handle printer-name ' +
'printer-port printer-setup private-data prn procedure ' +
'progress-source proxy put-double put-float put-long ' +
'put-short put-string put-unsigned-short query-off-end question ' +
'radio-buttons radio-set random raw-transfer read-file ' +
'read-only real recursive refresh refreshable ' +
'remote remove-events-list replace replace-selection-text replication-create ' +
'replication-delete replication-write request resizable resize ' +
'retry-cancel return-inserted returns return-to-start-dir return-value ' +
'right-aligned right-trim round row ' +
'row-markers row-of rule rule-row rule-y ' +
'save-file screen-value scrollable scrollbar-h scrollbar-horizontal ' +
'scroll-bars scrollbar-v scrollbar-vertical scroll-delta scrolled-row-pos ' +
'scrolled-row-position scroll-horiz-value scrolling scroll-offset scroll-to-current-row ' +
'scroll-to-item scroll-to-selected-row scroll-vert-value se-check-pools section ' +
'se-enable-off se-enable-on selectable selected selected-items ' +
'select-focused-row selection-end selection-list selection-start selection-text ' +
'select-next-row select-prev-row select-repositioned-row select-row send ' +
'sensitive se-num-pools separate-connection separators server ' +
'set-blue set-blue-value set-break set-cell-focus set-contents ' +
'set-dynamic set-green set-green-value set-leakpoint set-pointer-value ' +
'set-property set-red set-red-value set-repositioned-row set-selection ' +
'set-size set-wait-state se-use-message side-label-handle side-labels ' +
'silent simple single size size-chars ' +
'size-pixels slider smallint sort source ' +
'sql sqrt start status-area status-area-font ' +
'status-bar stdcall stenciled stopped stored-procedure ' +
'string sub-average sub-count sub-max sub-maximum ' +
'sub-menu sub-menu-help sub-min sub-minimum substitute ' +
'substr substring sub-total subtype sum ' +
'suppress-warnings system-alert-boxes system-help tab-position target ' +
'temp-dir temp-directory temp-table terminate text-selected ' +
'three-d through thru tic-marks time-source ' +
'title-bgc title-bgcolor title-dc title-dcolor title-fgc ' +
'title-fgcolor title-font today toggle-box ' +
'tool-bar tooltip tooltips top topic ' +
'to-rowid total trailing trunc truncate ' +
'type unbuffered unique-id unload upper ' +
'use use-dict-exps use-filename use-text v6display ' +
'validate validate-condition validate-message valid-event valid-handle ' +
'var variable vertical virtual-height virtual-height-chars ' +
'virtual-height-pixels virtual-width virtual-width-chars virtual-width-pixels visible ' +
'wait warning weekday widget-enter widget-leave ' +
'widget-pool width width-chars width-pixels window-name ' +
'window-state window-system word-wrap x ' +
'x-of y year year-offset yes-no ' +
'yes-no-cancel y-of';
DefaultEvents: string =
'abort any-key any-printable append-line backspace ' +
'back-tab block blue bottom-column break-line ' +
'bs cancel cancel-move cancel-pick cancel-resize ' +
'choices choose close compile container-event ' +
'copy cr ctrl-alt-del ctrl-break ctrl-g ' +
'ctrl-j ctrl-l cursor-down cursor-left cursor-right ' +
'cursor-up cut data-refresh-line data-refresh-page dde-notify ' +
'default-action default-pop-up del del-char delete-char ' +
'delete-character delete-column delete-end-line delete-field delete-line ' +
'delete-word del-line deselect deselect-extend deselection ' +
'deselection-extend dismiss-menu dos-end down-arrow editor-backtab ' +
'editor-tab empty-selection end-box-selection end-error endkey ' +
'end-move end-resize end-search enter enter-menubar ' +
'erase esc execute exit ' +
'ff find-next find-previous focus-in formfeed ' +
'forward get go goto help-key ' +
'home horiz-end horiz-home horiz-scroll-drag ins ' +
'ins-char insert-column insert-field insert-field-data insert-field-label ' +
'insert-here insert-mode ins-line iteration-changed left ' +
'left-arrow left-end left-mouse-click left-mouse-dblclick left-mouse-down ' +
'left-mouse-up lf line-del line-down line-erase ' +
'linefeed line-ins line-left line-right line-up ' +
'main-menu menu-drop middle-mouse-click middle-mouse-dblclick middle-mouse-down ' +
'middle-mouse-up mouse-extend-click mouse-extend-dblclick mouse-extend-down mouse-extend-drag ' +
'mouse-extend-up mouse-menu-click mouse-menu-dblclick mouse-menu-down mouse-menu-drag ' +
'mouse-menu-up mouse-move mouse-move-click mouse-move-dblclick mouse-move-down ' +
'mouse-move-drag mouse-move-up mouse-select-click mouse-select-dblclick mouse-select-down ' +
'mouse-select-drag mouse-select-up move new-line next-error ' +
'next-frame next-page next-scrn next-word object ' +
'off-end off-home open-line-above options out-of-data ' +
'page-down page-erase page-left page-right page-right-text ' +
'page-up parent-window-close paste pgdn pgup ' +
'pick pick-area pick-both popup-menu-key prev-frame ' +
'prev-page prev-scrn prev-word recall red ' +
'remove reports reset resume-display ' +
'right right-arrow right-end right-mouse-click ' +
'right-mouse-dblclick right-mouse-down right-mouse-up row-display row-entry ' +
'row-leave save-as scrollbar-drag scroll-left ' +
'scroll-mode scroll-notify scroll-right select-extend selection ' +
'selection-extend settings shift-tab start-box-selection start-extend-box-selection ' +
'start-move start-resize start-search stop stop-display ' +
'tab top-column u1 u10 u2 ' +
'u3 u4 u5 u6 u7 ' +
'u8 u9 unix-end up-arrow value-changed ' +
'white window-close window-resized window-restored';
DefaultDataTypes: string =
'char character com-handle date dec ' +
'decimal double float handle int ' +
'integer log logical raw rowid ' +
'widget widget-handle';
implementation
uses
{$IFDEF SYN_CLX}
QSynEditStrConst;
{$ELSE}
SynEditStrConst;
{$ENDIF}
var
Identifiers: array[#0..#255] of ByteBool;
mHashTable: array[#0..#255] of Integer;
{------------------------------------------------------------------------------}
procedure MakeIdentTable;
var
c: char;
begin
FillChar(Identifiers, SizeOf(Identifiers), 0);
for c := 'a' to 'z' do
Identifiers[c] := TRUE;
for c := 'A' to 'Z' do
Identifiers[c] := TRUE;
for c := '0' to '9' do
Identifiers[c] := TRUE;
Identifiers['_'] := TRUE;
Identifiers['-'] := TRUE;
FillChar(mHashTable, SizeOf(mHashTable), 0);
for c := 'a' to 'z' do
mHashTable[c] := 1 + Ord(c) - Ord('a');
for c := 'A' to 'Z' do
mHashTable[c] := 1 + Ord(c) - Ord('A');
for c := '0' to '9' do
mHashTable[c] := 27 + Ord(c) - Ord('0');
mHashTable['_'] := 37;
mHashTable['-'] := 38;
end;
function TSynProgressSyn.KeyHash(ToHash: PChar): Integer;
begin
Result := 0;
while ToHash^ in fIdentChars do
begin
{$IFOPT Q-}
Result := 3 * Result + mHashTable[ToHash^];
{$ELSE}
Result := (3 * Result + mHashTable[ToHash^]) and $FFFFFF;
{$ENDIF}
inc(ToHash);
end;
Result := Result and $3FF;
fStringLen := ToHash - fToIdent;
end;
function TSynProgressSyn.KeyComp(const aKey: string): Boolean;
var
i: integer;
pKey1, pKey2: PChar;
begin
pKey1 := fToIdent;
// Note: fStringLen is always > 0 !
pKey2 := pointer(aKey);
for i := 1 to fStringLen do
begin
if mHashTable[pKey1^] <> mHashTable[pKey2^] then
begin
Result := FALSE;
exit;
end;
Inc(pKey1);
Inc(pKey2);
end;
Result := TRUE;
end;
function TSynProgressSyn.IdentKind(MayBe: PChar): TtkTokenKind;
var
Entry: TSynHashEntry;
begin
fToIdent := MayBe;
Entry := fHashList[KeyHash(MayBe)];
while Assigned(Entry) do begin
if Entry.KeywordLen > fStringLen then
break
else if Entry.KeywordLen = fStringLen then
if KeyComp(Entry.Keyword) then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -