2019独角兽企业重金招聘Python工程师标准>>>

在emacs下一直没有找到合适的工程项目类插件,于是自己写了一个。主要的痛点如下:

  1. 配置clang补全的时候需要指定搜索头文件的路径,没办法在.emacs文件里把所有的路径都加上,并且每次新创建一个工程项目的时候就要修改一次emacs配置文件实在是太痛苦了
  2. 由于开发机器不是linux,所以不能在本地编译,需要本地编辑完成后上传到开发机上编译(不想用tramp,因为不知到怎么在远程编辑的时候配置补全,估计就算折腾成功后也会很慢;没法mount远端目录到本地,因为网速太慢;不想在远程shell里面使用emacs,那个神奇的平台没有编译好的emacs包)

插件的主要功能:

  1. C-x p 打开一个项目,项目的定义文件存放在一个特定目录下,用lisp来描述加载这个项目的时候需要执行的初始化操作。
  2. 提供函数 proj-save-rsync 用来保存当前所有的 buffer 并调用一个脚本讲本地的源码上传的远程开发机器。

插件安装方法:

  1. 复制下面的代码到 .emacs 中:

    (defun proj-save-rsync ( ) "Save buffers and do a command."(save-some-buffers)(shell-command proj-rsync-script )(interactive) )(defun proj-load (arg)(interactive(list(completing-read "Choose one project: " (directory-files "~/.emacs.d/projects" nil "\\.el$") )))(load (concat "~/.emacs.d/projects/" arg));(insert arg))(global-set-key (kbd "C-x p") 'proj-load)
    (global-set-key [f8] 'proj-save-rsync)
  2. 创建目录
    mkdir ~/.emacs.d/projects
  3. 创建一个工程
    创建一个工程其实就是在 ~/.emacs.d/projects 里面创建一个 projectname.el 文件,里面的内容爱写啥就写啥,使用C-x p打开这个项目的时候会执行这个projectname.el。下面是我的一个项目文件:

    (setq proj-root "/path/to/the/source/root")    ;配置项目root path
    (setq proj-rsync-script "/rsync/script.exp")   ;设置上传代码的脚本
    (proj-ac-config proj-root)                     ;自定义的一个函数,设置clang搜索头文件时候的路径
    (find-file proj-root)                          ;打开project的root path (cscope-set-initial-directory proj-root)       ;初始化cscope
    (cscope-index-files proj-root)

转载于:https://my.oschina.net/u/575122/blog/151835

自创小插件让emacs支持工程项目相关推荐

  1. 苹果x微信语音十秒就断_微信一秒语音,QQ一秒语音软件,支持安卓和苹果系统,一秒播放一首歌,只需要一个小插件!...

    现在在微信群或者QQ群里,经常能看到很多小伙伴发一些一秒语音,但点开之后,实际上是一段音乐,这些音乐都是比较火的DJ或者抖音歌曲,很能活跃气氛. 那么这些语音都是怎么操作出来的呢?其实很简单,今天我就 ...

  2. 杨浦区双创小巨人、科技小巨人申请条件及奖励政策

    杨浦区双创小巨人.科技小巨人 一.主管部门 杨浦区科学技术委员会 二.政策依据 <上海市杨浦区小巨人工程实施办法>(杨府规[2017]1号) <关于开展2021年度上海市杨浦区双创小 ...

  3. safari html5插件安装,Safari巧用小插件 体验不输第三方浏览器

    想必大家平常应该很少使用Safari浏览器,一般都会在手机上下载第三方浏览器来使用,虽然Safari一直在优化但却不及第三方的浏览器来的方便以及用着总有点不顺手.没关系,本篇文章将为您介绍巧妙的装一些 ...

  4. 记录《时间进度》(人生进度条)(包含自定义进度、小插件)的开发

    前言 开发的本意是想看到可视化的时间,让我们心存敬畏,珍惜时间,毕竟时间一去不复返! 最近灵感突突然袭来,想着做一个时间精度条:今天度过了多少,这周度过了多少,这个月度过了多少,今年度过了多少(以及这 ...

  5. html页面中该插件不受支持,该插件不受支持怎么解决

    我们经常会在电脑中使用浏览器来浏览各种网页,可是最近有很多小伙伴在浏览某网页视频的时候,却显示该插件不受支持,导致无法正常浏览,这该怎么办呢,其实解决方法也不难,为了帮助大家解决这个问题,小编这就给大 ...

  6. 大商创小程序前端_正版授权风暴!大商创商城系统开启免费送授权活动

    最近,电子商务服务商大商创掀起了一场"红色授权风暴"!公司开启了免费授权系统活动. 当前市场上充斥着大量的盗版商城系统,这样的商城系统存在很多安全隐患,对企业用户来说很不安全,同时 ...

  7. 开源一个IDA小插件:修复VMP dump导入函数

    简述: 通常我们在静态分析vmp加壳后的程序或者驱动时,都会选择将其跑开然后看dump文件.但是vmp会将某些函数地址进行混淆,所以当我们想看一个函数时,常常会见到如下图所示代码段: 面对上述情况,我 ...

  8. VueJs+chrome-extension+element-ui天气预报的小插件

    这里通过chrome-extension + VueJs + element-ui来实现个天气预报的小插件,如下图: 一.项目初始化.基础配置及相关插件安装 1.1 创建项目 通过vue-cli脚手架 ...

  9. python数学公式编辑工具_1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器...

    原标题:1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器 来源:量子位 关注前沿科技 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧箫 发自 凹非寺 ...

最新文章

  1. leetcode-93-复原ip地址
  2. openfiler 工具栏和快捷方式
  3. 第四十章:基于SpringBoot Quartz完成定时任务分布式多节点负载持久化
  4. Linux环境下安装OpenOffice 4.1.8
  5. mysql导出txt到client_mysql导出导入txt以及sftp自动下载(一)
  6. Cordova插件中JavaScript代码与Java的交互细节介绍
  7. 生信宝典Linux学习系列文章整理
  8. Kubernetes Node Controller源码分析之配置篇
  9. 微信表情html代码大全,微信表情代码
  10. STM8S103之独立看门狗和窗口看门狗
  11. pdf editor android,MaxiPDF PDF editor builder
  12. FC协议监控卡(FC协议分析仪),FC Monitor
  13. 三年有效期SSL证书将于2018年3月1日下架
  14. Chartboost 广告添加使用
  15. AtCoder Grand Contest 021完整题解
  16. VB MsgBox 函数 了解一下
  17. PointFusion: Deep Sensor Fusion for 3D Bounding Box Estimation
  18. 《历》·陕西帝王陵寝一览
  19. 大数据之Hive:正则表达式
  20. 博彦科技面试—20190802—周五 14:00

热门文章

  1. 计算机图学测试题及答案,《计算机图形学》练习测试题及参考答案
  2. 二元函数图像生成器_GAN生成图像综述
  3. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
  4. 咋安装redhatlinux镜像在哪下载_Windows7正版系统安装教程
  5. 2019运管取消了滴滴还查吗_劳务资质2019年取消吗?劳务资质新标准你真的了解吗?...
  6. 网站服务器商标属于哪类,网络水晶头属于商标哪个类别
  7. mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)
  8. Apache安装、配置、卸载
  9. html设置照片模糊效果,CSS如何实现照片模糊?
  10. Java三维文字特效设计_jQuery实现3D文字特效的方法