分页: 1 / 1

请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-02 15:54
matliu
请问:我想在c++的基础上建立一个eamcs的编辑环境,文件扩展名是.cu,我想打开.cu文件之后就进入c++的环境,然后我可以为这个环境加入一些自定义的关键字,那么我该怎么做呢?

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-04 6:58
babysoul
如果单纯想让.cu以c++模式显示,而不考虑CUDA关键字的话
直接在.emacs下加入

代码: 全选

(add-to-list 'auto-mode-alist '("[.]cu$" . c++-mode))
如果还想显示关键字,可参考
http://forums.nvidia.com/index.php?showtopic=151356

首先配置cc-mode
http://cc-mode.sourceforge.net/

然后下载cuda-mode:
https://github.com/Schnouki/dotfiles/bl ... da-mode.el
假设放到~/.config/emacs文件夹下

在.emacs中加上下面配置:

代码: 全选

(add-to-list 'load-path "~/.config/emacs")
(add-to-list 'load-path "~/.config/emacs/cc-mode")
(autoload 'cuda-mode "cuda-mode.el" "Cuda mode." t)

(add-to-list 'auto-mode-alist '("[.]cu$" . cuda-mode))
(add-to-list 'auto-mode-alist '("[.]h$" . cuda-mode))

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-04 11:07
matliu
好的,谢谢,我先研究一下:) :em05

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-05 15:01
matliu
可能我是除学吧,感觉emacs比cuda还难 :em20
自己写了两行配置文件,请教能否继续完成关键字?该怎么写?

.emacs文件为:

代码: 全选

(load-file "/home/matliu/cuda/cudamode/cuda-mode.el") ; 我的 cuda 配置
cuda-mode.el文件为:

代码: 全选

;;; this is my cuda-mode

;将 cuda 模式加入到 c++-mode 中
(add-to-list 'auto-mode-alist '("[.]cu$" . c++-mode)) 
;(setq auto-mode-alist (append '(("\\.cu$" . c++-mode)) auto-mode-alist))

;加入cuda变量关键字高亮
; 我想自己加入关键字,例如__global__用一些暗红色,不知道一下该怎么写了?

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-06 5:51
babysoul

代码: 全选

(setq cudaKeywords
 '(("__global__\\|__device__\\|__host__" . font-lock-constant-face)
   )
)

(define-derived-mode cuda-mode c++-mode
  (setq font-lock-defaults '(cudaKeywords))
  (setq mode-name "cuda-mode")
  )

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-06 17:42
babysoul
总结一下,简化版本:

代码: 全选

;; Keywords for generalized c++ mode, which can be applied to derived modes
(add-hook 'c++-mode-hook
	  (lambda ()
	    (font-lock-add-keywords 
	     nil
	     '(("\\<\\(FIXME\\|TODO\\|NOTE\\):" 
		1 font-lock-warning-face prepend)
	       ))))

;; user-defined mode - CUDA
(define-derived-mode cuda-mode 
  c++-mode "cuda-mode"
  "Major mode for CUDA"
  ;; (setq font-lock-defaults '(cudaKeywords))
  ;; (setq mode-name "cuda-mode")
  )

;; Keywords applied to only the CUDA modes
(font-lock-add-keywords 'cuda-mode
			'(("\\<\\(__global__\\|__host__\\|__device__\\)\\>" . font-lock-keyword-face) 
			  ("\\<\\(blockDim\\|blockIdx\\|threadIdx\\)\\>" . font-lock-constant-face)
			  ("\\<\\(cudaMalloc\\|cudaMemcpy\\|cudaFree\\)\\>" . font-lock-builtin-face)
			  ))

;; Add extra file extensions according to the suffix
(add-to-list 'auto-mode-alist '("[.]cu$" . cuda-mode))
(add-to-list 'auto-mode-alist '("[.]h$" . cuda-mode))

Re: 请问怎么样依据 cc-mode 配置新的文件类型

发表于 : 2011-12-06 17:46
babysoul
字体颜色可以如下设置

代码: 全选

;(set-face-foreground 'font-lock-comment-face "cadetblue")
;(set-face-foreground 'font-lock-keyword-face "darkred")
;(set-face-foreground 'font-lock-string-face "blue")
;(set-face-foreground 'font-lock-type-face "forestgreen")
;(set-face-foreground 'font-lock-variable-name-face "purple")
;(set-face-foreground 'font-lock-function-name-face "red")
;(set-face-foreground 'font-lock-warning-face "yellow")
;(set-face-foreground 'font-lock-constant-face "darkyellow")
;(set-face-foreground 'font-lock-builtin-face "firebrick")