monaco-editor自定义定制/扩展其他语言

时间:2025-02-18 09:09:23
  • import { language as sqlLanguage } from "monaco-editor/esm/vs/basic-languages/sql/sql";
  • import { language as javaLanguage } from "monaco-editor/esm/vs/basic-languages/java/java";
  • const { keywords: sqlKeywords } = sqlLanguage;
  • const { keywords: javaKeywords } = javaLanguage;
  • export default function registryCompletion(monaco) {
  • registerJavascript(monaco)
  • registerSql(monaco)
  • registerJava(monaco)
  • }
  • export function registerJavascript(monaco) {
  • monaco.languages.registerCompletionItemProvider('javascript', {
  • provideCompletionItems: (model, position) => {
  • const word = model.getWordUntilPosition(position);
  • const range = {
  • startLineNumber: position.lineNumber,
  • endLineNumber: position.lineNumber,
  • startColumn: word.startColumn,
  • endColumn: word.endColumn
  • };
  • return {
  • suggestions: [
  • {
  • label: 'console',
  • kind: monaco.languages.CompletionItemKind.Module,
  • insertText: 'console',
  • documentation: 'The console object provides access to the browser\'s debugging console.',
  • range
  • }
  • // ...其他建议项
  • ]
  • };
  • }
  • })
  • }
  • export function registerSql(monaco) {
  • monaco.languages.registerCompletionItemProvider("sql", {
  • // 触发提示的字符
  • triggerCharacters: [...sqlKeywords],
  • provideCompletionItems: () => {
  • const keywordsSuggests = sqlKeywords.map((key) => ({
  • label: key,// 显示的名称
  • kind: monaco.languages.CompletionItemKind.Keyword,
  • insertText: key,// 真实补全的值
  • }))
  • return {
  • suggestions: [...keywordsSuggests]
  • }
  • }
  • })
  • }
  • export function registerJava(monaco) {
  • monaco.languages.registerCompletionItemProvider("java", {
  • // 触发提示的字符
  • triggerCharacters: [...javaKeywords],
  • provideCompletionItems: () => {
  • const keywordsSuggests = javaKeywords.map((key) => ({
  • label: key,// 显示的名称
  • kind: monaco.languages.CompletionItemKind.Keyword,
  • insertText: key,// 真实补全的值
  • }))
  • return {
  • suggestions: [...keywordsSuggests]
  • }
  • }
  • })
  • }