index.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { latexIndentService } from './latex-indent-service'
  2. import { shortcuts } from './shortcuts'
  3. import { linting } from './linting'
  4. import { LanguageSupport, indentUnit } from '@codemirror/language'
  5. import { CompletionSource } from '@codemirror/autocomplete'
  6. import { debugPanel } from './debug-panel'
  7. import { openAutocomplete } from './open-autocomplete'
  8. import { metadata } from './metadata'
  9. import {
  10. argumentCompletionSources,
  11. explicitCommandCompletionSource,
  12. inCommandCompletionSource,
  13. } from './complete'
  14. import { documentCommands } from './document-commands'
  15. import importOverleafModules from '../../../../../macros/import-overleaf-module.macro'
  16. import { documentOutline } from './document-outline'
  17. import { LaTeXLanguage } from './latex-language'
  18. import { documentEnvironmentNames } from './document-environment-names'
  19. const completionSources = importOverleafModules('sourceEditorCompletionSources')
  20. .map((item: any) => item.import.default)
  21. .concat(
  22. argumentCompletionSources,
  23. inCommandCompletionSource,
  24. explicitCommandCompletionSource
  25. ) as CompletionSource[]
  26. export const latex = () => {
  27. return new LanguageSupport(LaTeXLanguage, [
  28. indentUnit.of(' '), // 4 spaces
  29. shortcuts(),
  30. documentOutline.extension,
  31. documentCommands.extension,
  32. documentEnvironmentNames.extension,
  33. latexIndentService(),
  34. linting(),
  35. metadata(),
  36. debugPanel(),
  37. openAutocomplete(),
  38. ...completionSources.map(completionSource =>
  39. LaTeXLanguage.data.of({
  40. autocomplete: completionSource,
  41. })
  42. ),
  43. ])
  44. }