Использование csharp-mode и Mono - PullRequest
5 голосов
/ 28 июля 2011

Я использую csharp-mode в Emacs 23 на OS X. Мне бы хотелось, чтобы проверка синтаксиса flymake работала, но я недостаточно знаком с emacs lisp, чтобы знать, где что-то изменить в csharp -mode.el файл для изменения компилятора. Любая помощь будет оценена.

1 Ответ

5 голосов
/ 28 июля 2011

Если вы добавите в файл инициализации Emacs следующее, это должно сделать эту работу:

(add-hook  'csharp-mode-hook 'flymake-mode)

От EmacsWiki :

История Оригиналflymake-for-csharp пришел из поста в блоге на MSDN.С тех пор оно было обобщено, обновлено и сделано более надежным и гибким.В мае 2011 года он был интегрирован в сам режим csharp.

Чтобы изменить компилятор, вы можете добавить комментарий вверху кода C #:

// flymake: csc.exe /t:module /R:MyAssembly.dll @@FILE@@

Подробнее о параметрах изменения компилятора см. В комментариях в исходном файле csharp-mode.el (поиск «csharp-flymake-get-cmdline»).

РЕДАКТИРОВАТЬ: ОК, в зависимости от вашегокомментарий ниже о том, что вы не хотите помещать строку комментария flymake в ваш код C #, я нашел альтернативное решение.Поместите следующий код в файл инициализации Emacs.Измените строку (setq my-csharp-default-compiler "mono @@FILE@@") на любую нужную вам строку компиляции.Теперь, когда вы открываете файл C #, вы можете использовать flymake, не добавляя строку комментария в ваш источник C #.Если на более позднем этапе вы захотите использовать стандартный механизм csharp-mode (для поиска комментария flymake в исходном файле C #), вам просто нужно изменить оператор на (setq my-csharp-default-compiler nil),

;; Basic code required for C# mode
(require 'flymake)
(autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
(setq auto-mode-alist  (append '(("\\.cs$" . csharp-mode)) auto-mode-alist))

;; Custom code to use a default compiler string for all C# files
(defvar my-csharp-default-compiler nil)
(setq my-csharp-default-compiler "mono @@FILE@@")

(defun my-csharp-get-value-from-comments (marker-string line-limit)
  my-csharp-default-compiler)

(add-hook 'csharp-mode-hook (lambda ()
                              (if my-csharp-default-compiler
                                  (progn
                                    (fset 'orig-csharp-get-value-from-comments
                                          (symbol-function 'csharp-get-value-from-comments))
                                    (fset 'csharp-get-value-from-comments
                                          (symbol-function 'my-csharp-get-value-from-comments))))
                              (flymake-mode)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...