LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1980|回复: 4

emacs打开以.h为后缀的C++头文件,语法高亮不对

[复制链接]
发表于 2007-8-28 22:57:41 | 显示全部楼层 |阅读模式
打开.h文件时语法按c的头文件来解释了,文件名改成.hpp就很好看了。
实际应用中,.h也常常用作C++的头文件

~/.emacs 部分配置:


  1. ;;>>>>>>>>>>>>>>>>>>C/C++ 程序<<<<<<<<<<<<<<<<<<<<<<<<<<
  2. (add-hook 'c-mode-hook 'linux-c-mode)
  3. (add-hook 'c++-mode-hook 'linux-cpp-mode)
  4. ;; 设置imenu的排序方式为按名称排序
  5. (setq imenu-sort-function 'imenu--sort-by-name)

  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7. (defun linux-c-mode()
  8.   ;; 将回车代替C-j的功能,换行的同时对齐
  9.   (define-key c-mode-map [return] 'newline-and-indent)
  10.   (interactive)
  11.   ;; 设置C程序的对齐风格
  12.   (c-set-style "K&R")
  13.   ;; 自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
  14.   (c-toggle-auto-state)
  15.   ;; 此模式下,当按Backspace时会删除最多的空格
  16.   (c-toggle-hungry-state)
  17.   ;; TAB键的宽度设置为4
  18.   (setq c-basic-offset 4)
  19.   ;; 在菜单中加入当前Buffer的函数索引
  20.   (imenu-add-menubar-index)
  21.   ;; 在状态条上显示当前光标在哪个函数体内部
  22.   (which-function-mode)
  23. )

  24. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  25. (defun linux-cpp-mode()
  26.   (define-key c++-mode-map [return] 'newline-and-indent)
  27.   (define-key c++-mode-map [(control c) (c)] 'compile)
  28.   (interactive)
  29.   (c-set-style "K&R")
  30.   (c-toggle-auto-state)
  31.   (c-toggle-hungry-state)
  32.   (setq c-basic-offset 8)
  33.   (imenu-add-menubar-index)
  34.   (which-function-mode)
  35. )

  36. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  37. ;; 语法加亮
  38. (global-font-lock-mode t)

  39. ;;;; CC-mode配置  http://cc-mode.sourceforge.net/
  40. (require 'cc-mode)
  41. (c-set-offset 'inline-open 0)
  42. (c-set-offset 'friend '-)
  43. (c-set-offset 'substatement-open 0)

  44. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-8-29 15:50:35 | 显示全部楼层
在 .h 文件第一行写
  1. /* -*- C++ -*- */
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-8-29 15:54:04 | 显示全部楼层
如果你的所有的 .h 文件都是  c++ mode ,也可以这样
  1. (setq auto-mode-alist
  2.       (cons '("\\.h$" . c++-mode)
  3.             auto-mode-alist))
复制代码

或者定制一下那个正则表达式,比如某个目录下的 .h 文件都是 C++ mode 也是可以的。
回复 支持 反对

使用道具 举报

发表于 2007-9-28 03:25:41 | 显示全部楼层
扩展名用H不要用h
回复 支持 反对

使用道具 举报

发表于 2007-9-28 11:09:55 | 显示全部楼层
Post by sunwt
扩展名用H不要用h
如果一个文件系统不区分名字中的大小写(如 Fat32、NTFS),这个方法是无效的。所以保险的方法还是利用文件变量。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表