修改的compile命令,为emacs实现快捷键绑定的编译功能:
F9编译,没有存的文件会提示存盘
C-F9是无提示的直接存盘+编译。
编译是编译的当前buffer文件,即在任何buffer窗口中按下'F9'或者'C-F9',都会直接编译该buffer对应的代码文件。
默认参数是使用g++ -g并加入了一些常用的库文件和头文件,路径做成list列表可能会更方便,这个以后闲了再改造。
特性:
1.编译当前buffer,生成的执行文件名是默认以当前buffer为名生成+".exe"后缀,在编译完之后会被立刻调用,如果你是linux下用记得在compile-command里面改改后缀以及注意在执行文件前加'./'。
2.缩小的compile窗口(只占emacs窗体1/4),避免其和代码窗口平分屏幕,尤其是代码窗口和compile窗口是上下分布的情况,这点更为重要。
3.编译和执行过程中焦点会始终保持在所编译的代码buffer的窗口,不会切到compile窗口或者其他窗口。
好处:
特别适合编译那些小demo,算法演示一类的代码,避开维护笨重的make
下面是code(需要把这些code加入到文件_emacs或者.emacs):
;;下面代码保证emacs在新打开compile窗口的时候只会水平分割窗口
(setq split-height-threshold 0)
(setq split-width-threshold nil)
;;编译
;; F9 调用 compile 并设置编译命令
;; C-F9 则保存所有文件并编译(无提示)
(defun defineCompileCmd()
(interactive)
(setq boost_path
"E:/workspace/C++/lib/boost/boost1.46")
(setq ace_src_path
"E:/workspace/C++/lib/ace/ace6.0.4/ACE_wrappers")
(setq ace_include_path
"E:/workspace/C++/lib/ace/ace6.0.4/ace/include")
(setq ace_mingw_lib_d
"E:/workspace/C++/lib/ace/ace6.0.4/ace/lib_gcc/lib_d")
(setq ace_mingw_lib
"E:/workspace/C++/lib/ace/ace6.0.4/ace/lib_gcc/lib")
(setq compile_file_name (substring (buffer-name (current-buffer)) 0 (string-match "[.]" (buffer-name (current-buffer)))))
(setq compile_file_name (concat compile_file_name ".exe"))
(setq compile-command
(concat "g++ -g -I"
boost_path
" -I"
ace_src_path
" -I"
ace_include_path
" -L"
ace_mingw_lib
" -lACE "
(buffer-name (current-buffer))
" -o "
compile_file_name
" && "
compile_file_name
))
)
(defun shrink-compile-window()
"shrink compile window, avoid compile window occupy 1/2 hight of whole window"
(interactive)
;;(select-window (get-buffer-window "*compilation*"))
(setq compiled_buffer_name (buffer-name (current-buffer)))
(switch-to-buffer-other-window "*compilation*")
(if (< (/ (frame-height) 3) (window-height))
(shrink-window (/ (window-height) 2)))
(switch-to-buffer-other-window compiled_buffer_name)
)
;;C-F9保存当前所有未保存的buffer并编译当前buffer
(global-set-key [C-f9] '(lambda()
"Save buffers and start compile"
(interactive)
(save-some-buffers t)
(defineCompileCmd)
(compile compile-command)
(shrink-compile-window)
)
)
;;F9调用compile编译当前buffer
(global-set-key [f9] '(lambda ()
(interactive)
(defineCompileCmd)
(compile compile-command)
(shrink-compile-window)
)
)
在emacs的代码窗口,按下F9或者C-F9,编译并运行文件,效果如下:
- 大小: 86.2 KB
分享到:
相关推荐
emacs编辑命令速查手册。。摘自Learning Gnu Emacs.比较全的手册
emacs基本命令 取之于網絡,回歸于網絡!
emacs常用命令.pdf
emacs常用命令,手工做成word格式,希望大家喜欢。Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全 emacs功能的操作系统
很全的emacs编辑技巧和命令。emacs编辑器是一款在linux下编辑代码的软件,要比vi好用许多。
EMACS常用操作命令
编辑神器Emacs命令大全Emacs_command_tables.pdf,是Linux程序员成为emacs高手的必备武器。
vi emacs 命令 手册 网上搜集的好资料,制作成一个PDF
这是一份简洁清晰的emacs命令手册,对UNIX/Linux程序员会非常有用。
这是使用freemind 绘制的emacs常用命令学习思维导图,它包含了emacs若干入门级命令。学会这些,基本上就可以使用emacs了。
emacs的一些常用命令,快捷键,让你更快入门这一强大的文本工具
emacs基本编辑命令,适合初学者上手,高手不必理会
是不是还在因为记不住emacs神器的命令而烦恼?回答前不妨看看这里,答案就会不一样
EMACS 的 VIPOR 模式的参考卡片, 使用EMACS 的 VIPOR 模式的时候放在手边很方便。 使用 EMACS 的时候, 又感觉 VI 的击键快捷很爽, 可以用 EMACS 的 VIPOR 模式, 这可以说是有点另类的程序员的选择。
emacs-lastpass:Emacs LastPass命令包装
emacs使用手册和常用命令 emacs使用手册和常用命令
自己整理的,来源是互联网上的文件。 Emacs确实是非常好用的编辑器,基本操作可以只集中于常用的那部分区域,用熟了可以大大提高效率,然而凡事利弊,需要熟悉一些常用操作。
Emacs英文教程,详细介绍Emacs以及Emacs命令
GNU Emacs 是什麽 GNU EMACS 的特质 Emacs 的线上辅助说明 Emacs 的基本知识 Emacs 的自学教材 Ctrl-h 的用法 Emacs 的 info 使用说明 Emacs 的整合环境 如何在 Emacs 中执行 Shell 的指令 有关目录的编辑...