[daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题
1. 安装go 安装go-mode
使用emacs编辑go代码的时候,你需要有正常可运行的go环境。
并且有emacs的go-mode package
https://www.emacswiki.org/emacs/GoLangMode
https://github.com/dominikh/go-mode.el
1.1 安装索引工具
还要分别安装如下两个索引工具
go get -v golang.org/x/tools/cmd/guru
go get -v github.com/rogpeppe/godef
2. 环境变量引入
除了1之外,正确运行的go环境还需要一个环境变量 GOPATH,一般我们会将GOPATH放在 ~/.bachrc或~/.bash_profile中。
这个时候,在emacs中有一点比较特殊的情况。
2.1
emacs在console中直接使用 emacs -nw来运行会自动继承环境变量,所以没有问题。
2.2
如果在x环境中启动emacs,它并不能引入环境变量。
这里有如下几个方法解决。
2.2.1 使用package exec-path-from-shell
它的用途就是把bash的环境变量引进来,见:https://github.com/purcell/exec-path-from-shell
但是我用的是fish,在~/.bashrc最下面有一行 exec fish。这会导致这个package报错,不做赘述。
2.2.2 使用自定义函数,如下:
(defun set-exec-path-from-shell-PATH ()
(let ((path-from-shell (shell-command-to-string "/bin/bash -c 'echo $PATH'")))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator)))) (defun set-exec-path-from-shell-GOPATH ()
(let ((path-from-shell (shell-command-to-string "/bin/bash -c 'echo $GOPATH'")))
(setenv "GOPATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator)))) ;(set-exec-path-from-shell-PATH)
;(set-exec-path-from-shell-GOPATH)
好用是好用的,但是我最终用来下面的方案
2.2.3 用~/.xprofile文件
x环境在启动时不会source ~/.bash_profile, 但是会source .xprofile. 所以,在他下面追加如下行
╰─>$ tail -n ~/.xprofile
# add by tong
source ~/.bash_profile
并保证,所以环境变量,都写在/bash_profile里,其他bash交互相关的才写在~/.bashrc里,因为bashrc里有这样一行,使非交互场景绕开:
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
这样的话,emacs就天然有了环境变量,并且vitual stdio code也有了。
3 附一个有关go的emacs的配置,其中改了写快捷键,是go与c环境快捷键统一。
另外,要想各种跳转都好用,你的go工程能够编译通过也是十分重要的。
代码的跳转等,由go-mode支持,不在需要cscope了。不过全文搜索怎么实现还没配置。(
(add-hook 'go-mode-hook
(lambda ()
(fci-mode)
(display-line-numbers-mode)
(line-number-mode)
(column-number-mode)
(whitespace-mode)
(local-set-key (kbd "C-c C-]") 'godef-jump)
(local-set-key (kbd "C-c C-r") 'go-guru-referrers)
(local-set-key (kbd "C-c C-t") 'pop-tag-mark)))
[daily][emacs][go] 配置emacs go-mode的编辑环境以及环境变量问题的更多相关文章
- windows8.1下常用编辑器安装配置(emacs/vim/sublime text3)
一.下载:在emacs:http://mirrors.ustc.edu.cn/gnu/emacs/windows/里下载emacs-24.3-bin-i386.zip.解压到自定目录,双击bin文件夹 ...
- ubuntu14.04 下emacs 24 配置
目的: 配置emacs 24 适合编程开发 主要参考JerryZhang的配置(Emacs 简易教程) http://www.perfect-is-shit.com/emacs-simple-tuto ...
- emacs 配置.emacs
emacs 配置.emacs (require 'package) (package-initialize) (add-to-list'package-archives '("melpa&q ...
- Emacs 安装配置使用教程
Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...
- CentOS6.x之emacs安装配置编译
刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...
- Emacs安装配置全攻略之中的一个编译安装简单配置
/*************************************************************************************************** ...
- 我也说说Emacs吧(1) - Emacs和Vi我们都学
好友幻神的<Emacs之魂>正在火热连载中,群里人起哄要给他捧捧场. 作为一个学习Emacs屡败屡战的用户,这个场还是值得捧一下的.至少我是买了HHKB键盘的... 从我的键盘说起 - 有 ...
- 我也说说Emacs吧(2) - Emacs其实就是函数的组合
Emacs本质上是函数的组合 从帮助上看emacs有何不同 Vim和Sublime Text等编辑器,本质上是一个编辑器. 比如我们看看vim的帮助,是这个风格的,比如我要看i命令的帮助: <i ...
- emacs使用本地emacs server模式打开远程文件
使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:use ...
随机推荐
- 让你爱不释手的 Python 模块
 一. logzero 在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为.我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些 ...
- Alpha 冲刺 (9/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之9 团队部分 后敬甲(组长) 过去两天完成了哪些任务 答辩准备中 和大佬们跟进进度 接下来的计划 准备答辩 ...
- html基础技巧:点击、placeholder、文本、字体、清楚浮动
点击处理: 消除a标签点击后的边框,颜色(background:#fff) 1:a:focus{outline:none;} button去除边框 1:border:none 2:border:0px ...
- yum install 报错[Errno 14] curl#37 - Couldn't open file /mnt/repodata/repomd.xml
最近在玩centos7,之前装系统没太注意yum这个东东,今天用别人装好的系统想用yum install 一个东西,结果报各种错,所以就是: 1.然后按照网上的一些修改,先是执行: yum cleam ...
- P2947 [USACO09MAR]向右看齐Look Up--单调栈
单调栈真的很好用呢! P2947 [USACO09MAR]向右看齐Look Up 题目描述 Farmer John's N (1 <= N <= 100,000) cows, conven ...
- android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
手工设置文本与图片相对位置时,常用到如下方法: setCompoundDrawables(left, top, right, bottom) setCompoundDrawablesWithIntri ...
- 酷痞运行于openwrt路由系统
欢迎你进入酷痞的物联网世界.这里有着自由的空气和自然的气息.接下来我将告诉你如果一步步建立一个自己专属的物联网平台. 酷痞官网地址:http://icoolpy.com 由于openwrt系统复杂 ...
- html_头部<meta>设置
<!DOCTYPE html> : 定义HTML的规则类型:浏览器兼容性最好 <!DOCTYPE html><html> <head> <!--编 ...
- python运算符——逻辑运算符
not命令是取反命令,真的变成假的,假的变成真的(True是真的,False是假的) b = Trueprint(not b) 原本是真的,但是加了“not”指令就变成了假的,not指令是一元运算符, ...
- 我是如何用redis做实时订阅推送的
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的. 先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了... 其中 ...