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

zzj的博客

风起风过

 
 
 

日志

 
 

Emacs 成功实现一键编译  

2010-08-21 23:44:47|  分类: 个人日记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
也许这个我折腾了一个半小时才弄出来的结果不算什么,不过也就当是为这个许久没来的博客扫扫灰吧。

好,先说正话。Emacs用了一年多了,不久前重装了一次Ubuntu,然后就又得悲剧的全部重新设置,包括Emacs(上次的配置文件没有存下来)。不过很深的一个体会是,每次配一次Emacs,每次都会不同的体会。原来是打算睡觉的,不过突然想到我的Emacs还一直都没有弄出来过一键编译(是编译单个文件),于是就想弄弄看。

先是上网查了半天,主要是分为两种,一个是用smart-compile.el的,一个就是大牛们自己写出来的配置。不知道为什么,对于那个插件没什么兴趣。于是就开始看大牛们是怎么写的。看了下,就是一个自己实现的smart-compile。我用了用,也没用出来。然后一个失败了就再找。就这样往复了很久,我终于决定,自己想想怎么弄。其实我现在不用makefile的话,那么只要改compile-command就行了,于是,就再次进入搜索框内……

终于找到了一个(compile comcat("str here"))的函数。于是就做了些修改。成型如下:
(defun onekey-compile ()
   "Compile current buffer"
  (interactive)
  (compile (concat "g++ -g " (file-name-nondirectory buffer-file-name) " -o " (file-name-sans-extension (file-name-nondirectory buffer-file-name)))))
取文件名和去年文件名后缀的方法笨了点,不过确实是实现了我想到的功能。之后再试,c, c++代码都能用这个函数。很开心啊。

好了,就是这样。快开学了,不过我已经在学校待了20天了,剩下的10天差不多也要继续。娘了个亲的。

====================================以下为更新===============================================

今天又改了改这个onekey-compile函数。更好看,也更好用了。如下:
(defun onekey-compile ()
   "Compile current buffer"
  (interactive)
  (let (filename suffix progname compiler)
    (setq filename (file-name-nondirectory buffer-file-name))
    (setq progname (file-name-sans-extension filename))
    (setq suffix (file-name-extension filename))
    (if (string= suffix "c") (setq compiler (concat "gcc -g -o " progname " ")))
    (if (or (string= suffix "cc") (string= suffix "cpp")) (setq compiler (concat "g++ -g -o " progname " ")))
    (if (string= suffix "tex") (setq compiler "latex "))
    (compile (concat compiler filename))))
这下更好用了。
  评论这张
 
阅读(487)| 评论(9)
推荐 转载

历史上的今天

评论

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

页脚

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