Сконфигурируйте Emacs FlyMake для использования Rakefile, а также Makefile - PullRequest
4 голосов
/ 27 декабря 2008

Я уже некоторое время учусь использовать Emacs. Пока что мне это очень нравится.

Моя проблема в том, что для маленьких C-кодов я предпочитаю использовать Rake вместо Make. Однако Flymake, похоже, не хочет ничего, кроме Make. Как жалуется, что не может найти Makefile. Из командной строки Rake используется так же, как Make, поэтому мне было интересно, есть ли какая-нибудь конфигурация emacs, в которую я мог бы войти, чтобы позволить Rake использоваться flymake?

Чтобы немного исправить то, что я делаю. Я на самом деле не редактирую Rakefile. И flymake-ruby совсем не помогает. Я работаю с кодом C Я просто использую RAKE для компиляции кода c, используя gcc вместо MAKE.

Ответы [ 3 ]

2 голосов
/ 31 декабря 2008

Правильно, получил это сейчас; извините за раннюю путаницу.

Быстро просматривая flymake.el, для * .c файлов, вызов 'make' в конечном итоге происходит отсюда:

(defun flymake-get-make-cmdline (source base-dir)
  (list "make"
    (list "-s"
          "-C"
          base-dir
          (concat "CHK_SOURCES=" source)
          "SYNTAX_CHECK_MODE=1"
          "check-syntax")))

Это вызывается flymake-simple-make-init, который вызывается потому, что *.c файлы сопоставляются с flymake-allowed-file-name-masks.

Итак, ответ right будет модифицировать flymake-allowed-file-name-masks для сопоставления *.c файлов с другим init-defun, а затем написать этот defun для вызова rake так, как вы хотите. Существует множество этих defuns, уже написанных для разных вещей, и большинство из них довольно короткие и приятные - поэтому, даже если вы не знаете Emacs Lisp, вы, вероятно, можете заставить что-то работать с минимумом фьюзинга. (Ответ действительно правильный будет состоять в том, чтобы изменить flymake-simple-make-init так, чтобы имя команды было прочитано из переменной defcustom, а затем отправить это изменение обратно в поток ...)

Быстрый и грязный ответ, учитывая, что вы сказали, что все, что вам нужно сделать - это вызвать 'rake' с теми же аргументами, что и 'make', - это взять копию flymake.el, вставив ее в начале load-path и наберите строку 'make' в flymake-get-make-cmdline, чтобы вместо этого прочитать 'rake'. Это, по крайней мере, приведет вас к следующему шагу ...

0 голосов
/ 30 декабря 2008

Чтобы продолжить то, что сказал Чарли, узел FlymakeRuby на EmacsWiki имеет именно тот код, который вам нужен, включая биты, чтобы включить его в rakefiles.

0 голосов
/ 27 декабря 2008

Rake - это синтаксис Ruby, так что достаточно просто включить flymake для rby в файле. Эта ссылка - это чей-то код elisp для этого. EmacsWiki также имеет много . (На самом деле, вы должны читать EmacsWiki в целом, там много полезного.)

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