登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我行我素

 
 
 

日志

 
 

under g++ 03  

2006-11-20 14:02:50|  分类: 郁闷自己 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        还是继续在Emacs下的C++征程。由于在china-pub上订购的书还没有到,所以教程方面,依然是来自网络的。以下的技巧说明,分别参考了曹乐的个人主页(http://www.caole.net/),水木清华的以前的Linux(现在的LinuxApp板)的luyy75、althea和brep的文档。所有的文字,遵循GPL条款。

        首先,是关于auto-dient的问题:
(一)如果是要在编辑c/c++/java源程序时提供自动格式化, 就要先enable ccmode,然后再用Ctrl-c Ctrl-a进入autonewline mode, 还有用Ctrl-C Ctrl-h进入hungry delete mode. 这样就可以在你敲入一些特定字符时自动进行格式美化。
(二)在.emacs中加入如下语句:
(global-set-key [return] ‘newline-and-indent)
这样就可以在回车之后就自动缩进了。




        Emacs在C/C++代码中的操作:
M-a     移动到当前语句的开始
M-e 移动到当前语句的末尾
C-M-a 移动到当前函数的开始
C-M-e 移动到当前函数的结尾
M-q 若光标在注释文本中间,则进行段落重排,保留缩进和前导字符
C-M-h 把光标放在当前函数开头,把文本块标记放在函数结尾,
即把函数整个选作为一个文本块。
C-c C-q 对整个函数进行缩进
C-x h 选定整个buffer, 然后C-M-\可以对代码进行重新排版
C-c C-u 移动到当前预处理条件的开始位置
C-c C-p 移动到上一个预处理条件
C-c C-n 移动到下一个预处理条件
M-; 对当前行进行注释
C-x C-x 快速返回移动前的光标位置
C-c C-c 对一块代码进行注释;取消注释用命令 uncomment-region













        一直在修改.emacs到自己顺手为止,但是之前每修改一次.emacs都不得不重启emacs,仿佛很白痴。后来
看了一下,可以这样直接使修改后的.emacs生效:
M-x eval-current-buffer
(但必须是直接用emacs来修改.emacs才可以。但是一直以来修改.***的配置文件,都用习惯了vim了,所以这里我
弄了好半天才明白过来……)


 











最后花了一个下午的时间,终于将我的emacs配置得比较顺手了,一下是我的.emacs的文件内容,备份一下:

#################################################
#################################################
#################################################






;; .emacs


;; turn on font-lock mode
(when (fboundp 'global-font-lock-mode)
(global-font-lock-mode t))



;; 配色方案
(setq default-frame-alist
'(
(foreground-color . "Wheat")
(background-color . "DarkSlateGray")
(cursor-color . "Orchid")
)
)



;;语言环境设定
;; 设置中文语言环境,打开文件时为自动判断是否中文
(set-language-environment 'Chinese-GB)

;; 写文件的编码方式
(set-buffer-file-coding-system 'gb2312)

;; 新建文件的编码方式
(setq default-buffer-file-coding-system 'gb2312)

;; 终端方式的编码方式,如M-x shell
(set-terminal-coding-system 'utf-8)

;; 键盘输入的编码方式
(set-keyboard-coding-system 'gb2312)

;; 读取或写入文件名的编码方式
(setq file-name-coding-system 'utf-8)






;;字体配置
(create-fontset-from-fontset-spec
(concat
"-*-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier,"
"chinese-gb2312:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gb2312*-*,"
"mule-unicode-0100-24ff:-*-simsun-medium-r-*-*-14-*-*-*-c-*-iso10646*-*,"
"korean-ksc5601:-*-*-medium-r-*-*-14-*-*-*-*-*-ksc5601*-*,"
"chinese-cns11643-5:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"chinese-cns11643-6:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"chinese-cns11643-7:-*-simsun-medium-r-*-*-14-*-*-*-c-*-gbk*-*,"
"sjis:-*-medium-r-normal--14-*-jisx0208*-*"))

;;;;emacs使用这个fontset
(set-default-font "fontset-courier")

;;创建新的frame时使用这个fontset
(setq default-frame-alist
(append
'((font . "fontset-courier")) default-frame-alist))





;;其他小配置

;; 显示行号与列号
(setq column-number-mode t)
(setq line-number-mode t)

;;;; 显示时间
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time)

;;;; 关闭启动画面
(setq inhibit-startup-message t)

;;;;设置大的kill ring
(setq kill-ring-max 150)

;;;;修改标题栏,显示buffer的名字
(setq frame-title-format "%b")

;;;;高亮当前行
;;(require 'hl-line)
;;(global-hl-line-mode t)




;;;;导入CEDET的各个插件
;; ---------------------------------------
;; Load CEDET
(load-file "/usr/share/emacs/site-lisp/cedet-1.0pre3/common/cedet.el")

;; Enabling various SEMANTIC minor modes. See semantic/INSTALL for more ideas.
;; Select one of the following
(semantic-load-enable-code-helpers)
;; (semantic-load-enable-guady-code-helpers)
;; (semantic-load-enable-excessive-code-helpers)

;; Enable this if you develop in semantic, or develop grammars
;; (semantic-load-enable-semantic-debugging-helpers)
;; ---------------------------------------


;;;;配置Sementic的检索范围

(setq semanticdb-project-roots
(list
(expand-file-name "/")))

;;;;配置Semantic分析文件的目录

(setq semanticdb-default-save-directory (expand-file-name "/usr/share/emacs/site-lisp/cedet-1.0pre3/semantic/"))




;;;;自动补齐策略

(defun my-indent-or-complete ()
(interactive)
(if (looking-at "\\>")
(hippie-expand nil)
(indent-for-tab-command))
)

(global-set-key [(control tab)] 'my-indent-or-complete)

(autoload 'senator-try-expand-semantic "senator")

(setq hippie-expand-try-functions-list
'(
senator-try-expand-semantic
try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-expand-list
try-expand-list-all-buffers
try-expand-line
try-expand-line-all-buffers
try-complete-file-name-partially
try-complete-file-name
try-expand-whole-kill
)
)





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

;;;;根据后缀判断所用的mode
;;;;注意:我在这里把.h关联到了c++-mode
(setq auto-mode-alist
(append '(("\\.h$" . c++-mode)) auto-mode-alist))


;;;;我的C/C++语言编辑策略

(defun my-c-mode-common-hook()
(setq tab-width 4 indent-tabs-mode nil)
;;; hungry-delete and auto-newline
(c-toggle-auto-hungry-state 1)
;;按键定义
(define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
(define-key c-mode-base-map [(return)] 'newline-and-indent)
(define-key c-mode-base-map [(f7)] 'compile)
(define-key c-mode-base-map [(f8)] 'ff-get-other-file)
(define-key c-mode-base-map [(meta \`)] 'c-indent-command)
;; (define-key c-mode-base-map [(tab)] 'hippie-expand)
(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
(define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
;;预处理设置
(setq c-macro-shrink-window-flag t)
(setq c-macro-preprocessor "cpp")
(setq c-macro-cppflags " ")
(setq c-macro-prompt-flag t)
(setq hs-minor-mode t)
(setq abbrev-mode t)
(setq tab-width 4 indent-tabs-mode nil)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

;;;;我的C++语言编辑策略
(defun my-c++-mode-hook()
(setq tab-width 4 indent-tabs-mode nil)
(c-set-style "stroustrup")
;; (define-key c++-mode-map [f3] 'replace-regexp)
)

(add-hook 'c++-mode-hook 'my-c++-mode-hook)

;;;;C/C++语言启动时自动加载semantic对/usr/include的索引数据库
(setq semanticdb-search-system-databases t)
(add-hook 'c-mode-common-hook
(lambda ()
(setq semanticdb-project-system-databases
(list (semanticdb-create-database
semanticdb-new-database-class
"/usr/include")))))


;;;;我的Java语言编辑策略
(defun my-java-mode-hook()
(setq tab-width 4 indent-tabs-mode nil)
)

(add-hook 'java-mode-hook 'my-java-mode-hook)




;;;;以下是我的快捷键设置
;; ----------------------- Short Cut -------------------------
(global-set-key [(meta g)] 'goto-line)
;;(global-set-key [(meta ?/)] 'hippie-expand)

;;;F4:切换到shell模式
(global-set-key [(f4)] 'ansi-term)


;;;F5:打开speedbar
(global-set-key [(f5)] 'speedbar)

;;;;F7:调用compile
(global-set-key (kbd "<f7>") 'compile)



(custom-set-variables
;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
'(auto-compression-mode t nil (jka-compr))
'(case-fold-search t)
'(compile-command "g++")
'(current-language-environment "Chinese-GB")
'(default-input-method "chinese-py-punct")
'(global-font-lock-mode t nil (font-lock)))
(custom-set-faces
;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
)


  评论这张
 
阅读(479)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018