刚刚开始接触emacs,感觉不错。
linux系统为debian 7,
(1) 首先用apt-get 下载安装emacs
sudo apt-get install emacs
(2) emacs退出时,都会自动备份,生成 .filename~ (生成的隐藏备份文件),如想去掉此功能,可在其配置文档~/.emacs加入如下代码
;;turn off the backup
(setq make-backup-files nil)
(3) emacs非C/C++模式下,TAB有八个空格长度;在C/C++模式下有两个空格长度,如想修改此模式的TAB长度为四个空格长度,可在配置文档添加如下代码
;; tab and space
;; when true, emacs use mixture of tab and space to achieve offset
(setq-default indent-tabs-mode nil)
;; control length used to offset.
(setq-default c-basic-offset 4)
;; control how emacs explain TAB.
(setq-default tab-width 4)
(4) 完成以上三项配置,就可以做一些基本的编程了,为了方便管理大型程序,可以配置cscope(C/C++浏览工具)
1、 首先下载安装cscope
sudo apt-get install cscope
2、 安装好后发现确少xcscope.el(用于连接emacs和cscope),在网上下载此文件放入/usr/share/emacs/site-lisp,
然后打开.emacs,加入如下代码
;;LOAD_PATH use cscope
(require 'xcscope)
(5) 安装yasnippet(单词补全插件),使用如下一条指令,即可安装并使用
sudo apt-get install yasnippet
(6.1) 下载安装auto-compete(自动补全插件,在emacs中可以yasnippet为source进行补全,使补全功能更强大)
1、 http://cx4a.org/software/auto-complete/ 进入该网站下载软件包auto-complete-1.3.1.tar.bz2
2、 解压缩软件包,生成auto-complete-1.3.1,进入该文件打开终端输入make,生成一些必需文件
3、 新建安装目录 /usr/local/emacs_AC(也可以是其他安装目录),由于在此路径下要root权限才能操作,所以输入以下指令进行安装
sudo make install
然后会有提示输入安装路径:/usr/local/emacs_AC
安装成功后会给出几条代码:(add-to-list 'load-path "/usr/local/emacs_AC")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "/usr/local/emacs_AC/ac-dict")
(ac-config-default)
将以上代码加入.emacs中,然后进入emacs,M-x auto-complete-mode 就可以使用了。
(!!注意第3步中的sudo make install,如果安装目录操作需要root权限,却直接make install,会安装到一半提示,权限不够,而且auto-complete-1.3.1里面的一些安装文件的属性会变化(比如有些文件图案会出现小锁,刚开始时候都没有),这样还是进入此解压文件auto-complete-1.3.1进行sudo make install 会提示安装成功,但emacs却不能调用auto-complete的情况)
(6.2) 1、 如果上述方法不成功,将上述方法产生的文件都删除,重新解压auto-complete-1.3.1.tar.bz2,生成auto-complete-1.3.1,进入该文件,打开终端,输入make
2、 新建安装目录/home/debian/emacs_AC(注意:此目录操作不需要root权限)
3、 确认解压文件auto-complete-1.3.1中的文件都是可读写的,即文件图案上没有小锁,在进入etc文件夹,打开emacs,输入指令M-x load-file,然后提示加载文件, 输入:install.el
4、 等待提示输入安装目录:/home/debian/emacs_AC
5、 安装成功后同样会给出代码:(add-to-list 'load-path "/home/debian/emacs_AC")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "/home/debian/emacs_AC/ac-dict")
(ac-config-default)
将以上代码加入.emacs中,然后进入emacs,M-x auto-complete-mode 就可以使用了。
(!!注意此方法的安装目录的操作权限必需是普通权限,因为在emacs安装此插件时,只能操作非root权限的文件夹)
(7) 接下来,将yasnippet和auto-complete结合起来使用,在.emacs添加如下代码,添加完成后会自动提示,橘红色的是yasnippet,剩下的是auto-complete本身的。
;;========================================================
;; Yasnippet and Auto-complete settings
;;========================================================
(require 'yasnippet)
(yas-global-mode 1)
(require 'auto-complete)
(require 'auto-complete-config)
;;使用增强列表
(require 'pos-tip)
(setq ac-quick-help-prefer-pos-tip)
;;启用默认ac设置
(ac-config-default)
(auto-complete-mode 1)
;;添加backspac触发列表
(setq ac-trigger-commands
(cons 'backward-delete-char-untabify ac-trigger-commands))
;;使用帮助模式
(setq ac-use-quick-help t)
(setq ac-quick-help-delay 1.0)
;;开启ac-dwin
(setq ac-dwim t)
;;设置ac数据文件位置
;;(setq ac-comphist-file (expand-file-name "ac-comphist/ac-comphist.dat" prelude-savefile-dir))
;;(check-temp-dir (expand-file-name "ac-comphist/" prelude-savefile-dir))
;;添加ac补全源
(set-default 'ac-sources
'(ac-source-semantic ;;ac使用semantic的分析结果
ac-source-yasnippet
ac-source-abbrev
ac-source-words-in-buffer
ac-source-words-in-all-buffer
ac-source-imenu
ac-source-files-in-current-dir
ac-source-filename))
;;yasnippet补全源的界面显示设置,这里颜色是红色的,用来与ac本身的补全相区分
(defface ac-yasnippet-candidate-face
'((t (:background "sandybrown" :foreground "black")))
"Face for yasnippet candidate.")
(defface ac-yasnippet-selection-face
'((t (:background "coral3" :foreground "white")))
"Face for the yasnippet selected candidate.")
(defvar ac-source-yasnippet
'((candidates . ac-yasnippet-candidate)
(action . yas/expand)
(candidate-face . ac-yasnippet-candidate-face)
(selection-face . ac-yasnippet-selection-face))
"Source for Yasnippet.")
(8) 最后一步,使用flymake自动提示错误,在源程序目录下编写Makefile, 最后打开emacs,M-x flymake,即可使用
CXX=gcc
CHK_SOURCES=test1.c
.PHONY: check-syntax
check-syntax:
$(CXX) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)