`
ppgunjack
  • 浏览: 81259 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

改造Emacs compile命令

 
阅读更多

修改的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编辑命令速查手册

    ### Emacs编辑命令速查手册详解 #### 文件处理命令(Chapter1) Emacs作为一个功能强大的文本编辑器,提供了丰富的文件操作命令。以下是一些常见的文件处理命令及其用途。 1. **打开文件** - `C-x C-f`: 使用`...

    emacs基本命令

    ### Emacs基本命令详解 #### 一、概述 Emacs是一款高度可配置且功能强大的文本编辑器,被广泛用于各种编程语言的开发环境之中。本文档旨在介绍Emacs中的一些基本命令,帮助用户快速掌握Emacs的基本操作方法。这些...

    emacs常用命令.pdf

    Emacs是一款功能强大的文本编辑器,它提供了一整套的快捷键组合来执行各种命令和操作。在介绍emacs常用命令之前,需要了解的是,Emacs命令的输入方式通常结合使用Ctrl(控制键)、Meta(可选的元键,通常为Alt或ESC...

    Emacs命令全集Emacs_command_tables.pdf

    文档“Emacs命令大全Emacs_command_tables.pdf”是一份关于Emacs所有命令的详细列表,帮助程序员深入了解并使用Emacs的各种功能。 文件中提到的Emacs主要模式(Major modes)是针对特定类型的文件或任务定制的编辑...

    emacs常用命令

    ### Emacs常用命令详解 #### 一、进入与退出Emacs - **命令**: `C-z` - **功能**: 挂起Emacs。 - **命令**: `C-x C-c` - **功能**: 永久离开Emacs。 #### 二、基本操作 - **命令**: `C-p` - **功能**: 移至上...

    emacs用法和实用命令

    Emacs提供了多种用于文件管理的命令,方便用户进行文件的查找、打开、保存和关闭等操作。 - **C-x C-f**:查找并打开文件。此命令会在新的缓冲区中打开文件,适合于同时编辑多个文件。 - **C-x C-v**:替换文件。将...

    EMACS常用操作命令_VerilogEMACS_

    6. **编译与调试**:通过`M-x` `compile`可以运行make命令,集成GDB进行源码级调试。 7. **代码折叠**:使用`M-x` `hide-subtree`和`M-x` `show-subtree`可以折叠和展开代码块,方便查看和管理大型代码文件。 8. *...

    emacs快捷键表/命令

    ### Emacs快捷键与命令详解 #### 引言 Emacs是一款功能强大且高度可定制的文本编辑器,深受程序员和技术人员的喜爱。对于初学者来说,掌握Emacs的基本操作及快捷键能够极大地提高工作效率。本文将详细介绍Emacs的...

    emacs 快速记忆命令

    ### Emacs 快速记忆命令详解 #### 一、引言 Emacs是一款极其强大的文本编辑器,被广大程序员和文字工作者誉为“编辑器之神”。然而,由于其功能繁多,很多用户在初次接触时可能会觉得难以掌握,尤其是如何快速记住...

    EMACS 的 VIPOR 模式命令卡片

    ### EMACS 的 VIPOR 模式命令卡片解析 #### 一、引言 在文本编辑领域,Emacs 和 Vim(源自 Vi)都是极为强大的编辑器。对于习惯了 Vim 的快捷键而又想利用 Emacs 强大功能的用户来说,VIPOR 模式提供了一个很好的...

    emacs学习文档常用命令

    这是使用freemind 绘制的emacs常用命令学习思维导图,它包含了emacs若干入门级命令。学会这些,基本上就可以使用emacs了。

    三本emacs书籍:生存于emacs+生活于emacs+emacs手册

    《GNU Emacs Pocket Reference》则是一本实用的手册,提供快速参考信息,帮助用户查找常用命令和功能。这本书通常以紧凑的形式列出Emacs的关键操作,包括文本操作、搜索和替换、缓冲区和窗口管理,以及各种模式的...

    vi emacs 命令手册

    ### vi和emacs命令手册知识点详解 #### 一、vi编辑器概述 - **vi编辑器简介**:vi(visual editor)是一种广泛使用的文本编辑器,它最初是在UNIX系统上开发的,现在几乎所有的类Unix系统(包括Linux)都内置了vi...

    EMACS 命令速查表

    【EMACS 命令速查表】 EMACS是一款强大的文本编辑器,尤其对UNIX/Linux程序员来说,它的功能强大且自定义性极强。这份简明的EMACS命令手册涵盖了基本的操作,帮助用户快速上手。 ### 文件和编辑缓冲区操作 1. **C...

    emacs基本编辑命令

    emacs基本编辑命令,适合初学者上手,高手不必理会

    Emacs中文手册.pdf

    本手册将Emacs的操作命令分成多个类别,包括基本操作、编辑、查找和替换、窗口操作、格式化等,每个类别下面又分成多个子命令,以便于用户更好地理解和掌握Emacs的使用。 基本操作 Emacs的基本操作包括启动Emacs、...

    emacs用户手册(中文版).pdf

    - **启动与退出Emacs**:Emacs可以通过命令行启动,通过特定的命令或快捷键退出。 - **屏幕布局**:Emacs允许用户自定义屏幕布局,包括缓冲区与窗口的管理。 - **在线帮助**:Emacs内置了详尽的帮助文档,用户可以...

    emacs使用手册和常用命令

    在本文中,我们将深入探讨Emacs的基本使用、常用命令以及如何查阅使用手册。 1. **Emacs基本概念** - **窗口与缓冲区**:在Emacs中,一个窗口可以显示多个缓冲区,缓冲区是存储文本的地方,而窗口则是显示缓冲区...

Global site tag (gtag.js) - Google Analytics