index.ts 1.5 KB

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