index.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { latexIndentService } from './latex-indent-service'
  2. import { shortcuts } from './shortcuts'
  3. import { linting } from './linting'
  4. import { LanguageSupport } 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. beginEnvironmentCompletionSource,
  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. import { figureModal } from '../../extensions/figure-modal'
  20. const completionSources: CompletionSource[] = [
  21. ...argumentCompletionSources,
  22. inCommandCompletionSource,
  23. explicitCommandCompletionSource,
  24. beginEnvironmentCompletionSource,
  25. ...importOverleafModules('sourceEditorCompletionSources').map(
  26. (item: any) => item.import.default
  27. ),
  28. ]
  29. export const latex = () => {
  30. return new LanguageSupport(LaTeXLanguage, [
  31. shortcuts(),
  32. documentOutline,
  33. documentCommands,
  34. documentEnvironmentNames,
  35. latexIndentService(),
  36. linting(),
  37. metadata(),
  38. openAutocomplete(),
  39. ...completionSources.map(completionSource =>
  40. LaTeXLanguage.data.of({
  41. autocomplete: completionSource,
  42. })
  43. ),
  44. figureModal(),
  45. ])
  46. }