index.ts 1.6 KB

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