首先呢,我不是Emacs大师,也是新手,所以这里记述的也是初级配置。
首先介绍一个网页:http://tuhdo.github.io/c-ide.html
我是按照这个网页的配置做的。中间遇到一些问题,所以记述一下。
第一,按照链接网页《quick setup》走一边。我采用了《ggtags》而非《helm-gtags》是以需要修改init.el
第二,如链接网页所述,必须要学会用package,其实我就学会了安装和查看,但是不耽误往下进行了。
第三,在第一步下载下来作者的配置:
git clone https://github.com/tuhdo/emacs-c-ide-demo.git ~/.emacs.d
我以为下载下来配置以后就直接可以使用作者的操作进行练习了,其实不然,需要修改一些东西。
第三,安装GUN GLOBAL,
sudo apt-get install global
第四,利用package安装ggtags,并修改init.el, 因为我用了ggtags, 所以我需要执行命令“ggtags-create-tags”生成源码TAGS,这样才能进行跳转之类的操作。
第五,package 里安装 sr-speedbar, column-enforce-mode;
第六,这篇文章没有提到颜色方案。我用package安装了颜色方案"color-theme-sanityinc-tomorrow"
选择一个自己喜欢的theme,修改init.el自动加载.
第七,该配置文件默认把缩进配置成空格缩进,需要修改。分别注释掉custom/setup-general.el
和custom/setup-editing.el的如下语句:
(setq-default indent-tabs-mode nil)
并在custom/setup-general.el把TAB宽度改为8:
(setq-default tab-width 8)
最后贴上我的init.el.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
(add-to-list 'load-path "~/.emacs.d/custom")
(require 'setup-general)
(if (version< emacs-version "24.4")
(require 'setup-ivy-counsel))
;; (require 'setup-helm)
;; (require 'setup-helm-gtags))
;;(require 'setup-ggtags)
(require 'setup-cedet)
(require 'setup-editing)
(require 'ggtags)
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
(ggtags-mode 1))))
;;(define-key ggtags-mode-map (kbd "C-c g s") 'ggtags-find-other-symbol)
;;(define-key ggtags-mode-map (kbd "C-c g h") 'ggtags-view-tag-history)
;;(define-key ggtags-mode-map (kbd "C-c g r") 'ggtags-find-reference)
;;(define-key ggtags-mode-map (kbd "C-c g f") 'ggtags-find-file)
;;(define-key ggtags-mode-map (kbd "C-c g c") 'ggtags-create-tags)
;;(define-key ggtags-mode-map (kbd "C-c g u") 'ggtags-update-tags)
;;(define-key ggtags-mode-map (kbd "M-,") 'pop-tag-mark)
(require 'column-enforce-mode)
(setq sr-speedbar-right-side nil)
(setq sr-speedbar-width 25)
(global-column-enforce-mode)
(require 'sr-speedbar)
(sr-speedbar-open)
;;(require 'color-theme)
;;(color-theme-initialize)
;;(color-theme-sanityinc-tomorrow-night)
;;(require 'color-theme-sanityinc-tomorrow)
;;(color-theme-sanityinc-tomorrow--define-theme night)
(load-theme 'sanityinc-tomorrow-blue t)
(setq indent-tabs-mode t)
(setq c-basic-offset 8)
(setq c-default-style "linux")
(setq default-tab-width 8)
;; function-args
;; (require 'function-args)
;; (fa-config-default)
;; (define-key c-mode-map [(tab)] 'company-complete)
;; (define-key c++-mode-map [(tab)] 'company-complete)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-enabled-themes (quote (sanityinc-tomorrow-night)))
'(custom-safe-themes
(quote
("06f0b439b62164c6f8f84fdda32b62fb50b6d00e8b01c2208e55543a6337433a" "2540689fd0bc5d74c4682764ff6c94057ba8061a98be5dd21116bf7bf301acfb" default)))
'(package-selected-packages
(quote
(egg color-theme-sanityinc-tomorrow column-enforce-mode ggtags zygospore helm-gtags helm yasnippet ws-butler volatile-highlights use-package undo-tree iedit dtrt-indent counsel-projectile company clean-aindent-mode anzu))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)