繁体   English   中英

使用csharp-mode和Mono

[英]Using csharp-mode and Mono

我在OS X的Emacs 23中使用csharp-mode。我想使flymake语法检查正常工作,但我对emacs lisp并不熟悉,无法知道在哪里将csharp-mode.el文件中的内容更改为更换编译器。 任何援助将不胜感激。

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

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

EmacsWiki

历史最初的flymake-for-csharp来自MSDN上的博客文章。 此后已对其进行了概括,更新,并使其更加可靠和灵活。 在2011年5月,它已集成到csharp-mode本身。

为了更改编译器,您可以在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机制(在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)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM