Emacs htmlize в пакетном режиме? - PullRequest
7 голосов
/ 28 августа 2010

Мне нравится использовать htmlize-file в emacs для преобразования исходных файлов clojure в html.

Я хочу использовать его из командной строки linux или программно из самой clojure.

Я пытался

$ emacs --eval "(htmlize-file \"/home/john/file.clj\" ) (kill-emacs)"

и

$ emacs -batch --eval "(htmlize-file \"/home/john/file.clj\" )"

Обе работы, с предостережениями.

Первая открывает X-окно, которое кажется немного не элегантным, но это делаетсделайте точно такое же выделение, которое я бы увидел в буфере, что я и хочу.

Второй работает в пакетном режиме, но единственное выделение синтаксиса, которое он делает, - это курсив строк.Я предполагаю, что это не загрузка Clojure-режима или моей любимой цветовой схемы.

Может кто-нибудь найти способ получить вторую версию, которая дает те же результаты, что и первая?Кажется, они оба загружают мой файл .emacs, прежде чем вычислить бит (htmli ....).

Кроме того, есть ли способ отправить команды уже запущенному emacs?И таким образом сэкономить время запуска?

Ответы [ 5 ]

5 голосов
/ 28 августа 2010

emacsclient -e "(htmlize-file \"/home/john/file.clj\" )" -a ""

4 голосов
/ 29 августа 2010

Работает ли первый с -nw? это должно препятствовать открытию X-окна, но все еще должно быть достаточно части GUI, присутствующей в emacs, чтобы иметь возможность инициализировать систему лица. Он по-прежнему не такой элегантный, как -batch (он не будет работать, если он запускается из нетерминального процесса, например, crontab), но это будет меньше раздражать.

4 голосов
/ 28 августа 2010

Я пока не могу дать вам идеальный ответ (я собираюсь провести некоторое исследование по этому вопросу), но я читал, что при вызове в пакетном режиме Emacs игнорирует специфичные для дисплея команды, такие как color-lock color. Это затрудняет выполнение любого сценария, который использует свойства отображения (например, htmlize) в пакетном режиме.

Я на самом деле довольно заинтересован в изменении htmlize в какой-то момент, чтобы позволить ему передавать цветовые темы, а не использовать текущую тему; то, что хорошо выглядит в моей сессии Emacs, не обязательно будет хорошо выглядеть при экспорте в HTML. Например, я склонен использовать blipp-blopp для htmlize, но при кодировании я использую полночь, комидии или уголь. Я предполагаю, что если бы htmlize мог принять спецификацию цветовой темы напрямую, он мог бы избежать проверки текущих свойств блокировки шрифтов и затем работал бы в пакетном режиме.

Извините, я не мог быть более полезным.

1 голос
/ 13 ноября 2015

Существует пример использования htmlize в режиме --batch

http://sebastien.kirche.free.fr/emacs_stuff/elisp/my-htmlize.el

;; Make sure the the htmlize library is in load-path.
;; You might want to load ~/.emacs

;; USAGE:
;;     emacs -batch -l my-htmlize.el INFILE > OUTFILE


;; Example:
(custom-set-faces 
 '(default                      ((t (:foreground "#ffffff" :background "black"))))
 '(font-lock-builtin-face       ((t (:foreground "#ff0000"))))
 '(font-lock-comment-face       ((t (:bold t :foreground "#333300"))))
 '(font-lock-constant-face      ((t (:foreground "magenta"))))
 '(font-lock-function-name-face ((t (:bold t :foreground "Blue"))))
 '(font-lock-keyword-face       ((t (:foreground "yellow3"))))
 '(font-lock-string-face        ((t (:foreground "light blue"))))
 '(font-lock-type-face      ((t (:foreground "green"))))
 '(font-lock-variable-name-face ((t (:foreground "cyan" :bold t))))
 '(font-lock-warning-face       ((t (:foreground "red" :weight bold)))))

(setq htmlize-use-rgb-map 'force)
(require 'htmlize)

(find-file (pop command-line-args-left))
(font-lock-fontify-buffer)
(with-current-buffer (htmlize-buffer)
  (princ (buffer-string)))
1 голос
/ 10 марта 2012

Следующий код Elisp указывает Htmlize создавать имена классов CSS вместо необработанных стилей.

(setq org-export-htmlize-output-type 'css)

Затем вы можете добавить CSS в ваш HTML-файл, чтобы получить любые цвета, которые вы хотите. Это работает с Emacs в пакетном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...