Emacs. Пакет julia-formatter

Emacs. Пакет julia-formatter

2026-03-21 · 1 мин. для прочтения
blog computer-science

Emacs. Пакет julia-formatter.

Содержание

1 Общая информация

2 Базовая настройка

(require 'julia-formatter)
(add-hook 'julia-mode-hook #'julia-formatter-mode)
  • При каждом сохранении буфера с расширением .jl Emacs будет автоматически форматировать код через JuliaFormatter.jl.

2.1 Проблема первого запуска

  • Пакет julia-formatter запускает JuliaFormatter.jl как фоновый JSON-RPC сервис, чтобы избежать задержек при каждом форматировании.
  • При первом вызове форматирования Emacs может зависнуть на несколько секунд или минут.
    • Julia компилирует форматтер и сохраняет системный образ.
  • При первой загрузке julia-formatter-mode Emacs спросит: Compile Julia system image?
    • Нажмите y (Yes).
  • Можно выполнить настройку вручную:
    ;; Принудительно разрешить компиляцию образа
    (setq julia-formatter-should-compile-julia-image 'always-compile)
    

2.2 Форматирование при наборе

  • Чтобы код форматировался не только при сохранении, но и по мере набора текста (например, при нажатии Enter), используйте aggressive-indent-mode:

    (require 'julia-formatter)
    (add-hook 'julia-mode-hook #'julia-formatter-mode)
    (add-hook 'julia-formatter-mode-hook #'aggressive-indent)
    
  • Предварительно установите пакет aggressive-indent.

2.3 Проверка работоспособности

  • Откройте любой .jl файл.

  • Напишите неотформатированный код (например, x=1).

  • Сохраните файл (C-x C-s).

  • Код должен превратиться в x = 1.

  • Если этого не происходит, проверьте:

    • Установлен ли JuliaFormatter.jl в вашей системе Julia?
    • Нет ли синтаксических ошибок в коде (незакрытых end или скобок)? Пакет требует, чтобы код был синтаксически завершен для парсинга.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.