Всем привет.
В конфиге имакса держу несколько вариаций какого-нибудь режима, вот пример двух вариантов для Flymake для JavaScript:
(defconst use-closure-compiler-for-js-flymake t)
(defconst use-jslint-wsh-for-js-flymake nil)
;; --------------------------------------------------
;; flymake for js-mode
;; --------------------------------------------------
(defvar flymake-loaded nil)
;; jslint for wsh
(when (and use-jslint-wsh-for-js-flymake
(try-require 'flymake)
(try-require 'flymake-for-jslint-for-wsh))
(setq flyjs-jslintwsh-location "~/.emacs.d/site-lisp/jslint/jslint.js")
(setq flymake-loaded t))
;; google closure compiler
(when (and use-closure-compiler-for-js-flymake
(try-require 'flymake))
(defun flymake-closure-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "closure.cmd"
(list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.js\\'" flymake-closure-init))
(setq flymake-loaded t))
;; toggle flymake
(defvar flymake-state t)
(defun js-mode-flymake-toggle ()
"Toggles flymake mode for js-mode."
(interactive)
(if flymake-state
(flymake-mode 1)
(flymake-mode 0))
(setq flymake-state (not flymake-state)))
(add-hook
'js-mode-hook
(lambda ()
(define-key js-mode-map (kbd "C-c f") 'js-mode-flymake-toggle)))
Сам код ниже первого комментария устраивает, но этот выбор одного варианта из множества значений defconst -ами - это безобразно. Подскажите красивое решение.
Наверно, на лету выгружать то, что загрузилось произвольным requirе -ом никак нельзя? Тогда если не полную загрузку / выгрузку в рантайме, то хотя бы что-то на замену ручной установке единственного t в группе defconst -ов.