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的编辑环境以及环境变量问题的更多相关文章

  1. windows8.1下常用编辑器安装配置(emacs/vim/sublime text3)

    一.下载:在emacs:http://mirrors.ustc.edu.cn/gnu/emacs/windows/里下载emacs-24.3-bin-i386.zip.解压到自定目录,双击bin文件夹 ...

  2. ubuntu14.04 下emacs 24 配置

    目的: 配置emacs 24 适合编程开发 主要参考JerryZhang的配置(Emacs 简易教程) http://www.perfect-is-shit.com/emacs-simple-tuto ...

  3. emacs 配置.emacs

    emacs 配置.emacs (require 'package) (package-initialize) (add-to-list'package-archives '("melpa&q ...

  4. Emacs 安装配置使用教程

    Emacs 安装配置使用教程 来源 https://www.jianshu.com/u/a27b97f900f7 序|Preface 先来一篇有趣的简介:Emacs和Vim:神的编辑器和编辑器之神 - ...

  5. CentOS6.x之emacs安装配置编译

    刚开始学习linux,干学没什么意思,想在linux下写写程序,了解到linux下使用较多的是emacs和vim,在youtobe上分别看了看这两个工具进行开发的视频,个人感觉emacs比较酷一点,所 ...

  6. Emacs安装配置全攻略之中的一个编译安装简单配置

    /*************************************************************************************************** ...

  7. 我也说说Emacs吧(1) - Emacs和Vi我们都学

    好友幻神的<Emacs之魂>正在火热连载中,群里人起哄要给他捧捧场. 作为一个学习Emacs屡败屡战的用户,这个场还是值得捧一下的.至少我是买了HHKB键盘的... 从我的键盘说起 - 有 ...

  8. 我也说说Emacs吧(2) - Emacs其实就是函数的组合

    Emacs本质上是函数的组合 从帮助上看emacs有何不同 Vim和Sublime Text等编辑器,本质上是一个编辑器. 比如我们看看vim的帮助,是这个风格的,比如我要看i命令的帮助: <i ...

  9. emacs使用本地emacs server模式打开远程文件

    使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:use ...

随机推荐

  1. 第七节,Python的可视化包——matplotlib

    1.2D图表 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt # 通过rcParams设置全局横 ...

  2. Django之Xadmin

    零.预备知识 单例对象 方式一:__new__方法 方式二:模块导入,只要在引入的文件中实例了这个对象,不管引道哪里,这个对象都指向同一个内存空间 class My_singleton(object) ...

  3. SQL中笛卡尔积-cross join的用法

    在数学中,笛卡尔乘积是指两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 假设集合A={a ...

  4. 【原创】Linux基础之后台运行

    linux服务器通常都是远程登录的,执行命令或者脚本时,如果连接断掉(执行时间较长或者网络不稳定时),那么进程也就没了,这时只能重新连接重新执行,这时可以使用后台执行: 1 nohup 命令 nohu ...

  5. vertx实例的fileSystem文件系统模块

    初始化 //根据OS区分实现 System.getProperty("os.name").toLowerCase(); Utils.isWindows() ? new Window ...

  6. 金蝶k/3 K3云之家消息查询发送是否成功SQL语句

    金蝶k/3 K3云之家消息查询发送是否成功SQL语句 1是成功,0是还在轮询中未发送,4是发送失败 select * into #tempUserID from ( union select t_Gr ...

  7. kth min_max容斥

    题解: 普通的$min-max$容斥是用来求最后出现元素的期望之类的 $kth min-max$容斥进一步解决倒数第k个出现的元素的期望 给出公式: $kthmax(S)=\sum\limits_{T ...

  8. Python学习(三十五)—— Django之ORM训练专题

    图书管理系统 一.表结构设计 # 书 class Book(models.Model): title = models.CharField(max_length=32) publish_date = ...

  9. 配置maven项目的开发时的默认jdk版本

    配置所有maven项目的默认jdk版本,若不配置则提示"Warning:java: 源值1.5已过时, 将在未来所有发行版中删除" 在settings.xml文件中profiles ...

  10. 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制

    转自:https://m.aliyun.com/yunqi/articles/79700 背景 使用过hadoop的人基本都会考虑集群里面资源的调度和优先级的问题,假设你现在所在的公司有一个大hado ...