LINUX.ORG.RU

elisp, фоновая проверка


0

1

Подскажите, как делают какую-либо фоновую проверку? Я хочу в своём режиме анализировать введённый текст, посвечивая ошибки. Интересует организация процесса. Тредов нет в еслиспе? Какой мexанизм использовать вместо?

★★

> Подскажите, как делают какую-либо фоновую проверку?

А она не фоновая. Просто быстрая. Иногда.

archimag ★★★ ()

можно запускать отдельный процесс, и асинхронно обрабатывать приход данных(flymake так делает).

recon88 ()

На хуках делают.

Вот печальный хук на обход бага с расцветкой черновика в wanderlust:

(defun my-highlight-hook (beg end len)
  (let ((begining (or (save-excursion
			(goto-char beg)
			(re-search-backward "^" nil t))
		      (point-min)))
	(ending (or (save-excursion
		      (goto-char end)
		      (re-search-forward "$" nil t))
		    (point-max))))
    (put-text-property begining ending 'face nil)
    (wl-highlight-message begining ending t nil)
    (wl-highlight-message begining ending t t)))

(add-hook 'wl-draft-mode-hook
          (lambda ()
            (make-local-variable
             'after-change-functions)
            (add-hook 'after-change-functions
                      'my-highlight-hook)))

mv ★★★★★ ()
Ответ на: комментарий от mv

А что за баг? Сам wl пользуюсь, с расцветкой черновика пока только 2 проблемы было: она не обновляется автоматически (но это вроде как фича а не баг) и какие-то проблемы были с большими сообщениями

slav ★★ ()
Ответ на: комментарий от mv

А, понял, не обратил внимания сначала на after-change-functions. А «правильно» (без костылей) оно не чинится в принципе? В других режимах же подсветка нормально при правке текста себя ведет.

slav ★★ ()
Ответ на: комментарий от slav

Чинится, но кому хватит мужества сделать это? :)

mv ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.