Monaco Editor SQL提示

482 阅读1分钟

主要分两部分

一、Keywords的定义

因为没找到正确引入配置的方法,直接从文件摘出

monaco-editor/esm/vs/basic-languages/sql/sql.js

export const keywords = [
  'ABORT',
  'ABSOLUTE',
  'ACTION',
  'ADA',
  'ADD',
  'AFTER',
  'ALL',
  'ALLOCATE',
  'ALTER',
  'ALWAYS',
  'ANALYZE',
  'AND',
  'ANY',
  'ARE',
  'AS',
  'ASC',
  'ASSERTION',
  'AT',
  'ATTACH',
  'AUTHORIZATION',
  'AUTOINCREMENT',
  'AVG',
  'BACKUP',
  'BEFORE',
  'BEGIN',
  'BETWEEN',
  'BIT',
  'BIT_LENGTH',
  'BOTH',
  'BREAK',
  'BROWSE',
  'BULK',
  'BY',
  'CASCADE',
  'CASCADED',
  'CASE',
  'CAST',
  'CATALOG',
  'CHAR',
  'CHARACTER',
  'CHARACTER_LENGTH',
  'CHAR_LENGTH',
  'CHECK',
  'CHECKPOINT',
  'CLOSE',
  'CLUSTERED',
  'COALESCE',
  'COLLATE',
  'COLLATION',
  'COLUMN',
  'COMMIT',
  'COMPUTE',
  'CONFLICT',
  'CONNECT',
  'CONNECTION',
  'CONSTRAINT',
  'CONSTRAINTS',
  'CONTAINS',
  'CONTAINSTABLE',
  'CONTINUE',
  'CONVERT',
  'CORRESPONDING',
  'COUNT',
  'CREATE',
  'CROSS',
  'CURRENT',
  'CURRENT_DATE',
  'CURRENT_TIME',
  'CURRENT_TIMESTAMP',
  'CURRENT_USER',
  'CURSOR',
  'DATABASE',
  'DATE',
  'DAY',
  'DBCC',
  'DEALLOCATE',
  'DEC',
  'DECIMAL',
  'DECLARE',
  'DEFAULT',
  'DEFERRABLE',
  'DEFERRED',
  'DELETE',
  'DENY',
  'DESC',
  'DESCRIBE',
  'DESCRIPTOR',
  'DETACH',
  'DIAGNOSTICS',
  'DISCONNECT',
  'DISK',
  'DISTINCT',
  'DISTRIBUTED',
  'DO',
  'DOMAIN',
  'DOUBLE',
  'DROP',
  'DUMP',
  'EACH',
  'ELSE',
  'END',
  'END-EXEC',
  'ERRLVL',
  'ESCAPE',
  'EXCEPT',
  'EXCEPTION',
  'EXCLUDE',
  'EXCLUSIVE',
  'EXEC',
  'EXECUTE',
  'EXISTS',
  'EXIT',
  'EXPLAIN',
  'EXTERNAL',
  'EXTRACT',
  'FAIL',
  'FALSE',
  'FETCH',
  'FILE',
  'FILLFACTOR',
  'FILTER',
  'FIRST',
  'FLOAT',
  'FOLLOWING',
  'FOR',
  'FOREIGN',
  'FORTRAN',
  'FOUND',
  'FREETEXT',
  'FREETEXTTABLE',
  'FROM',
  'FULL',
  'FUNCTION',
  'GENERATED',
  'GET',
  'GLOB',
  'GLOBAL',
  'GO',
  'GOTO',
  'GRANT',
  'GROUP',
  'GROUPS',
  'HAVING',
  'HOLDLOCK',
  'HOUR',
  'IDENTITY',
  'IDENTITYCOL',
  'IDENTITY_INSERT',
  'IF',
  'IGNORE',
  'IMMEDIATE',
  'IN',
  'INCLUDE',
  'INDEX',
  'INDEXED',
  'INDICATOR',
  'INITIALLY',
  'INNER',
  'INPUT',
  'INSENSITIVE',
  'INSERT',
  'INSTEAD',
  'INT',
  'INTEGER',
  'INTERSECT',
  'INTERVAL',
  'INTO',
  'IS',
  'ISNULL',
  'ISOLATION',
  'JOIN',
  'KEY',
  'KILL',
  'LANGUAGE',
  'LAST',
  'LEADING',
  'LEFT',
  'LEVEL',
  'LIKE',
  'LIMIT',
  'LINENO',
  'LOAD',
  'LOCAL',
  'LOWER',
  'MATCH',
  'MATERIALIZED',
  'MAX',
  'MERGE',
  'MIN',
  'MINUTE',
  'MODULE',
  'MONTH',
  'NAMES',
  'NATIONAL',
  'NATURAL',
  'NCHAR',
  'NEXT',
  'NO',
  'NOCHECK',
  'NONCLUSTERED',
  'NONE',
  'NOT',
  'NOTHING',
  'NOTNULL',
  'NULL',
  'NULLIF',
  'NULLS',
  'NUMERIC',
  'OCTET_LENGTH',
  'OF',
  'OFF',
  'OFFSET',
  'OFFSETS',
  'ON',
  'ONLY',
  'OPEN',
  'OPENDATASOURCE',
  'OPENQUERY',
  'OPENROWSET',
  'OPENXML',
  'OPTION',
  'OR',
  'ORDER',
  'OTHERS',
  'OUTER',
  'OUTPUT',
  'OVER',
  'OVERLAPS',
  'PAD',
  'PARTIAL',
  'PARTITION',
  'PASCAL',
  'PERCENT',
  'PIVOT',
  'PLAN',
  'POSITION',
  'PRAGMA',
  'PRECEDING',
  'PRECISION',
  'PREPARE',
  'PRESERVE',
  'PRIMARY',
  'PRINT',
  'PRIOR',
  'PRIVILEGES',
  'PROC',
  'PROCEDURE',
  'PUBLIC',
  'QUERY',
  'RAISE',
  'RAISERROR',
  'RANGE',
  'READ',
  'READTEXT',
  'REAL',
  'RECONFIGURE',
  'RECURSIVE',
  'REFERENCES',
  'REGEXP',
  'REINDEX',
  'RELATIVE',
  'RELEASE',
  'RENAME',
  'REPLACE',
  'REPLICATION',
  'RESTORE',
  'RESTRICT',
  'RETURN',
  'RETURNING',
  'REVERT',
  'REVOKE',
  'RIGHT',
  'ROLLBACK',
  'ROW',
  'ROWCOUNT',
  'ROWGUIDCOL',
  'ROWS',
  'RULE',
  'SAVE',
  'SAVEPOINT',
  'SCHEMA',
  'SCROLL',
  'SECOND',
  'SECTION',
  'SECURITYAUDIT',
  'SELECT',
  'SEMANTICKEYPHRASETABLE',
  'SEMANTICSIMILARITYDETAILSTABLE',
  'SEMANTICSIMILARITYTABLE',
  'SESSION',
  'SESSION_USER',
  'SET',
  'SETUSER',
  'SHUTDOWN',
  'SIZE',
  'SMALLINT',
  'SOME',
  'SPACE',
  'SQL',
  'SQLCA',
  'SQLCODE',
  'SQLERROR',
  'SQLSTATE',
  'SQLWARNING',
  'STATISTICS',
  'SUBSTRING',
  'SUM',
  'SYSTEM_USER',
  'TABLE',
  'TABLESAMPLE',
  'TEMP',
  'TEMPORARY',
  'TEXTSIZE',
  'THEN',
  'TIES',
  'TIME',
  'TIMESTAMP',
  'TIMEZONE_HOUR',
  'TIMEZONE_MINUTE',
  'TO',
  'TOP',
  'TRAILING',
  'TRAN',
  'TRANSACTION',
  'TRANSLATE',
  'TRANSLATION',
  'TRIGGER',
  'TRIM',
  'TRUE',
  'TRUNCATE',
  'TRY_CONVERT',
  'TSEQUAL',
  'UNBOUNDED',
  'UNION',
  'UNIQUE',
  'UNKNOWN',
  'UNPIVOT',
  'UPDATE',
  'UPDATETEXT',
  'UPPER',
  'USAGE',
  'USE',
  'USER',
  'USING',
  'VACUUM',
  'VALUE',
  'VALUES',
  'VARCHAR',
  'VARYING',
  'VIEW',
  'VIRTUAL',
  'WAITFOR',
  'WHEN',
  'WHENEVER',
  'WHERE',
  'WHILE',
  'WINDOW',
  'WITH',
  'WITHIN GROUP',
  'WITHOUT',
  'WORK',
  'WRITE',
  'WRITETEXT',
  'YEAR',
  'ZONE',
];

二、提示的注册

  function handleEditorBeforeMount(monaco) {
    monaco.languages.registerCompletionItemProvider('sql', {
      provideCompletionItems: function () {
        return {
          suggestions: keywords.map((key) => ({
            label: key,
            kind: monaco.languages.CompletionItemKind.Enum,
            insertText: key,
          })),
        };
      },
    });
  }
  
   <Editor
      beforeMount={(monaco) => {
        handleEditorBeforeMount(monaco);
      }}
    />