使用csharp模式和单声道

本文关键字:声道 单声道 csharp 模式 使用 | 更新日期: 2023-09-27 18:03:45

我在OS x上的Emacs 23中使用csharp模式。我想让flymake语法检查工作,但我对Emacs lisp不够熟悉,不知道在哪里改变csharp模式。El文件更改编译器。如有任何帮助,不胜感激。

使用csharp模式和单声道

如果将以下内容添加到Emacs init文件中,应该可以完成工作:

(add-hook  'csharp-mode-hook 'flymake-mode)
从EmacsWiki:

最初的flymake-for-csharp来自MSDN的一篇博客文章。此后,它得到了推广、更新,并变得更加可靠和可靠灵活。2011年5月,它被集成到csharp模式中。

为了改变编译器,你可以在你的c#代码的顶部添加注释:

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

有关更改编译器选项的更多详细信息,请参阅csharp模式中的注释。源代码文件(搜索"csharp-flymake-get-cmdline").

编辑:好吧,根据你下面关于不想把flymake注释行放在你的c#代码的评论,我想出了一个替代的解决方案。将以下代码放入Emacs init文件中。将(setq my-csharp-default-compiler "mono @@FILE@@")行更改为所需的任何编译行。现在,无论何时打开c#文件,都应该能够使用flymake,而无需在c#源代码中添加注释行。如果在稍后的某个阶段,您希望使用标准的csharp模式机制(在c#源文件中查找flymake注释),则只需将语句更改为(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)))