请问怎么样依据 cc-mode 配置新的文件类型
- matliu
- 帖子: 38
- 注册时间: 2008-11-01 16:17
请问怎么样依据 cc-mode 配置新的文件类型
请问:我想在c++的基础上建立一个eamcs的编辑环境,文件扩展名是.cu,我想打开.cu文件之后就进入c++的环境,然后我可以为这个环境加入一些自定义的关键字,那么我该怎么做呢?
-
- 帖子: 75
- 注册时间: 2008-10-31 16:22
- 系统: Ubuntu 12.10
Re: 请问怎么样依据 cc-mode 配置新的文件类型
如果单纯想让.cu以c++模式显示,而不考虑CUDA关键字的话
直接在.emacs下加入
如果还想显示关键字,可参考
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中加上下面配置:
直接在.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))
Hasee F545T: Core2 Duo T5450, 2G RAM, 320G HD, ATI HD2400 14.4, Archlinux
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
- matliu
- 帖子: 38
- 注册时间: 2008-11-01 16:17
Re: 请问怎么样依据 cc-mode 配置新的文件类型
好的,谢谢,我先研究一下:) 

- matliu
- 帖子: 38
- 注册时间: 2008-11-01 16:17
Re: 请问怎么样依据 cc-mode 配置新的文件类型
可能我是除学吧,感觉emacs比cuda还难
自己写了两行配置文件,请教能否继续完成关键字?该怎么写?
.emacs文件为:
cuda-mode.el文件为:

自己写了两行配置文件,请教能否继续完成关键字?该怎么写?
.emacs文件为:
代码: 全选
(load-file "/home/matliu/cuda/cudamode/cuda-mode.el") ; 我的 cuda 配置
代码: 全选
;;; 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__用一些暗红色,不知道一下该怎么写了?
-
- 帖子: 75
- 注册时间: 2008-10-31 16:22
- 系统: Ubuntu 12.10
Re: 请问怎么样依据 cc-mode 配置新的文件类型
代码: 全选
(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")
)
Hasee F545T: Core2 Duo T5450, 2G RAM, 320G HD, ATI HD2400 14.4, Archlinux
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
-
- 帖子: 75
- 注册时间: 2008-10-31 16:22
- 系统: Ubuntu 12.10
Re: 请问怎么样依据 cc-mode 配置新的文件类型
总结一下,简化版本:
代码: 全选
;; 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))
Hasee F545T: Core2 Duo T5450, 2G RAM, 320G HD, ATI HD2400 14.4, Archlinux
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
-
- 帖子: 75
- 注册时间: 2008-10-31 16:22
- 系统: Ubuntu 12.10
Re: 请问怎么样依据 cc-mode 配置新的文件类型
字体颜色可以如下设置
代码: 全选
;(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")
Hasee F545T: Core2 Duo T5450, 2G RAM, 320G HD, ATI HD2400 14.4, Archlinux
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04
Lenovo ideapad Y580: i7 3630M, 8G RAM, 1T HD, nVidia GTX660M, Ubuntu 13.04