emacs go 开发环境

golang快速入门[6.2]-集成开发环境-emacs详解 前文 golang快速入门[1]-go语言导论 golang快速入门[2.1]-go语言开发环境配置-windows golang快速入门[2.2]-go语言开发环境配置-macOS golang快速入门[2.3]-go语言开发环境配置-linux golang快速入门[3]-go语言helloworld golang快速入门[4]-go语言如何编译为机器码 golang快速入门[5... 阅读详情

gocode+auto-complete搭建emacs的go语言自动补全功能

 

下面是我的配置,写给自己看的

(add-to-list 'load-path "/home/wangjunsheng/go/emacs/go-mode")
(require 'go-mode)
(define-key go-mode-map [(meta ?g)] 'godef-jump)

(custom-set-variables '(gofmt-command "goimports"))
(define-key go-mode-map "\C-c\C-f" 'gofmt)


(add-to-list 'load-path "/home/wangjunsheng/.emacs.d")
(require 'go-autocomplete)
(require 'auto-complete-config)
(ac-config-default)

 

(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)

 

如果 godef 无法跳转 可以加入 -debug 参数看看 原因

比如下面是成功的

godef -debug -f root_run.go mqttpubsub.NewBackend
2019/02/20 15:45:18 exprType tuple:false pkg: *ast.SelectorExpr mqttpubsub.NewBackend [
2019/02/20 15:45:18 exprType tuple:false pkg: *ast.Ident mqttpubsub [
2019/02/20 15:45:18 exprType tuple:false pkg: *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub" [
2019/02/20 15:45:18 ] -> 0x0, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:45:18 ] -> 0x1a6004b0, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:45:18 member Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"} 'NewBackend' {
2019/02/20 15:45:18 } -> &{func NewBackend 0x1a5619e0 <nil> <nil>}
2019/02/20 15:45:18 exprType tuple:false pkg: *ast.Ident NewBackend [
2019/02/20 15:45:18 exprType tuple:false pkg: *ast.FuncType func(c newMQTT.BackendConfig) (*Backend, error) [
2019/02/20 15:45:18 ] -> 0x0, Type{type "" *ast.FuncType func(c newMQTT.BackendConfig) (*Backend, error)}
2019/02/20 15:45:18 ] -> 0x1a530330, Type{func "" *ast.FuncType func(c newMQTT.BackendConfig) (*Backend, error)}
2019/02/20 15:45:18 ] -> 0x1a530330, Type{func "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub" *ast.FuncType func(c newMQTT.BackendConfig) (*Backend, error)}
/home/wangjunsheng/go/gopath/src/github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub/backend.go:38:6

 

 再比如下面这个不成功的例子

godef -debug -f root_run.go mqttpubsub.NewBackend
2019/02/20 15:23:05 exprType tuple:false pkg: *ast.SelectorExpr mqttpubsub.NewBackend [
2019/02/20 15:23:05 exprType tuple:false pkg: *ast.Ident mqttpubsub [
2019/02/20 15:23:05 exprType tuple:false pkg: *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub" [
2019/02/20 15:23:05 ] -> 0x0, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:23:05 ] -> 0x194f8000, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:23:05 member Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"} 'NewBackend' {
2019/02/20 15:23:06 	/home/wangjunsheng/go/gopath/src/github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub/metrics.go:7:2: cannot find identifier for package "github.com/prometheus/client_golang/prometheus": cannot find package "github.com/prometheus/client_golang/prometheus" in any of:
	/home/wangjunsheng/go/go/src/github.com/prometheus/client_golang/prometheus (from $GOROOT)
	/home/wangjunsheng/go/gopath/src/github.com/prometheus/client_golang/prometheus (from $GOPATH)
2019/02/20 15:23:06 } -> <nil>
2019/02/20 15:23:06 ] -> 0x0, Type{bad "" <nil> }
2019/02/20 15:23:06 exprType tuple:false pkg: *ast.SelectorExpr mqttpubsub.NewBackend [
2019/02/20 15:23:06 exprType tuple:false pkg: *ast.Ident mqttpubsub [
2019/02/20 15:23:06 exprType tuple:false pkg: *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub" [
2019/02/20 15:23:06 ] -> 0x0, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:23:06 ] -> 0x194f8000, Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"}
2019/02/20 15:23:06 member Type{package "" *ast.ImportSpec "github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub"} 'NewBackend' {
2019/02/20 15:23:06 	/home/wangjunsheng/go/gopath/src/github.com/brocaar/lora-gateway-bridge/internal/legacy/backend/mqttpubsub/metrics.go:7:2: cannot find identifier for package "github.com/prometheus/client_golang/prometheus": cannot find package "github.com/prometheus/client_golang/prometheus" in any of:
	/home/wangjunsheng/go/go/src/github.com/prometheus/client_golang/prometheus (from $GOROOT)
	/home/wangjunsheng/go/gopath/src/github.com/prometheus/client_golang/prometheus (from $GOPATH)
2019/02/20 15:23:06 } -> <nil>
2019/02/20 15:23:06 ] -> 0x0, Type{bad "" <nil> }
godef: no declaration found for mqttpubsub.NewBackend

借助日志,我们可以看到是因为没有相应的 go 第三方库导致的。 下载这些库可以解决问题

Golang 新手入门教程(二):Go 常用开发工具介绍 将介绍几款常用的开发工具以及特点。可根据自已爱好以及经济实力自行选择。 阅读详情

相关推荐

go-mode.el:Go编程语言的Emacs模式

这是go模式,即用于编辑Go代码的Emacs模式。 它完全重写了Go 1.0.3和更高版本附带的go-mode,并且在Go 1.3之前一直是Go 1.1的一部分。 从Go 1.4开始,编辑器集成将不再是Go发行版的一部分,这使该存储库成为go-mode的规范位置。 特征 除了正常的功能,如fontification和压痕,并与熟悉的Emacs的功能(例如像基于语法的导航紧密结合beginning-of-defun ),进入模式具有以下额外的功能,以提供更佳的体验: 与集成gofmt通过提供相同名称的命令, gofmt-before-save ,它可以在一个钩子可以使用保存之前格式化围棋缓冲区。 设置gofmt-command变量还允许使用goimports 。 使用参数列表设置gofmt-args变量可以使用例如gofmt -s 。 通过功能godoc和godoc-at-poin

推荐开源项目:Go-Mode for Emacs - 现代化的Go语言开发利器

是一个为Emacs编辑器打造的专业Go语言开发模式扩展。它提供了全面的语法高亮、自动补全、代码跳转、重构等功能,旨在提高Go开发者在Emacs环境中的工作效率。 ## 技术分析 ### 1. 语法规则支持 Go-Mode基于广义的词法分析(lexical analysis)和抽象语法树(AST),准确地解析Go源码,提供精确的语法高亮和错误提示。这意味着它可以理解和处理复杂的Go代码结构,包

gitblog_00001的博客 548

Go-一个纯Go编写的轻量级emacs

一个纯Go编写的轻量级emacs

Go语言Debug调试

Go语言Debug调试

YIYIYI 5407

lsp-mode:用于语言服务器协议的Emacs客户端库

标题 描述 LSP模式-对Emacs的语言服务器协议支持 语言服务器协议支持,多种语言支持Emacs 对Emacs的语言服务器协议支持 ••••••• 为什么? :red_heart_selector: 社区驱动 :gem_stone: 功能齐全-支持语言服务器协议v3.14中的所有功能。 :rocket: 快速查看。 :glowing_star: 灵活-在具有华丽UI的功能完善的IDE或最小的干扰之间进行选择。 :gear_selector: 易于配置-开箱即用,如果存在其他软件包,则自动升级。 总览 (v3.14)的客户端。 旨在通过与最流行的Emacs软件包(例如company , flycheck和projectile可选集成来提供类似于IDE的体验。 非阻塞异步调用 当Emacs> 26(需要flymake> = 1.0.5)时,通过 (推荐)或flymake进行实时诊断/ 代码完成company-capf / completion-at-point (请注意,不再支持 )。 悬停-使用LSP 代码操作-通过lsp-execute-code-action ,

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

VSCODE中godef无法跳转到定义的问题

原文链接:http://targetliu.com/vscode-can-not-go-to-def/ 之前研究GOLANG时一直用LiteIDE,不得不说,LiteIDE的确不错,但是总感觉缺乏美感,是一款很中规中矩的编辑器。网上看到大家对VSCODE评价不错,尝试后发现的确不错,布局简洁、插件化、支持中文,通过VSCODE GO扩展能...

weixin_34265814的博客 4705

Qt Installer Framework4.6.1的最基础使用1(win10+离线安装包 )

因工作需要,win程序发布后,打包成一可执行exe文件,且兼容win7系统笔者记录了一些关键要点,供有需要的小伙伴使用。

aggs1990的专栏 904

golang从0到1实战系统八:Emacs

Emacs 传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发。环境,这些功能如让使用者置身于全功能的操作系统中。图 1.10 Emacs 编辑 Go 主界面。

Mr_Roki的博客 930

Python | KS检验以及其余非参数检验的实现

Python | KS检验以及其余非参数检验的实现1 什么是KS检验2 KS检验分类?3 KS检验的Python实现3.1 检验指定的数列是否服从正态分布3.2 检验指定的两个数列是否服从相同分布4 其余的非参数检验4.1 Wilcoxon符号秩检验(t检验的非参数版本)4.2 Kruskal-Wallis H检验(方差分析的非参数版本)4.3 Mann-Whitney秩检验5 参考 1 什么是KS检验 定义:检验一个分布f(x)与理论分布g(x)【比如正态分布】是否一致,或两个观测值分布是否有显著差异的检

RUC_Lee的博客 1万+

AI协议助手:法律文本解析与智能问答技术解析

自然语言处理(NLP)技术在法律文本解析中展现出巨大潜力,通过BERT等预训练模型实现条款分类与语义理解。结合OCR与知识图谱技术,AI协议助手能快速提取合同核心条款,并以问答形式解释法律术语,显著提升商务场景的决策效率。测试数据显示,该系统对NDA协议的识别准确率达92%,响应时间仅1.2秒,特别适用于人力资源竞业协议、云服务SLA评估等场景。随着RAG架构与法律术语向量库的应用,AI+法律正推动合同审核成本下降67%,未来将在跨境合规、智能谈判等方向持续演进。

weixin_29053577的博客 131

搭建emacs的go编程语言环境

关于emacs就不说明了,直接切入主题。关于我的emacs配置,可以直接参考GitHub上的lienhua34/myemacs-conf。 go-mode 安装 关于go-mode的安装,可以直接参考GitHub。从github上下载go-mode.el或go-mode-autoloads.el文件到你本地的某个目录下,然后在~/.emacs文件中输入下面内容: (add-to-lis...

weixin_33797791的博客 197

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 304

freebsd emacs_golang快速入门[6.2]-集成开发环境-emacs详解

golang快速入门[6.2]-集成开发环境-emacs详解前文golang快速入门[1]-go语言导论golang快速入门[2.1]-go语言开发环境配置-windowsgolang快速入门[2.2]-go语言开发环境配置-macOSgolang快速入门[2.3]-go语言开发环境配置-linuxgolang快速入门[3]-go语言helloworldgolang快速入门[4]-go语言如何编译...

weixin_39637151的博客 514

标准测试测试数据STDF学习笔记

本文介绍了STDF(Standard Test Data Format)文件的结构与解析方法。首先详细说明了STDF记录的组成,包括记录头类型(REC_TYP和REC_SUB)、数据类型定义、时间日期格式以及无效数据标识。重点分析了25种主要记录类型的功能、数据内容和出现位置,如FAR、MIR、MRR等关键记录。然后介绍了基于pystdf开源工具的解析方法,包括自带脚本的使用和自编程解析流程,通过事件驱动机制处理数据流。特别指出测试数据是按照PIR→PTR/MPR/FTR→PRR的循环模式组织。文章为ATE

歌颂苦难的行为是无耻的; 1513

飞牛 NAS 部署 Hermes Agent 全指南:打造 24 小时在线、自我进化的 AI 智能体!

当大多数人还在把 AI 当聊天机器人使用时,我已经把它部署到了家里的飞牛 NAS 上,让它 24 小时在线工作、记忆我的习惯、自动执行任务,甚至还能不断学习新的技能。今天带你从零搭建这个真正属于自己的 AI Agent。🚀

XiaoqiangClub的博客 1228

Vuetify 4.2 月度更新全解读:Select 家族交互升级、@vuetify/v0 运行时依赖与 Sass 变量清理

**2026 年 8 月的核心是 Vuetify 4.2 版本的发布**:框架代码库合并了 33 个 PR,发布 8 个版本,其中最引人注目的变化是自 4.2 起 `vuetify` 将 `@vuetify/v0` 作为运行时依赖引入。本文基于仓库内 [august-2026-update.md](https://link.gitcode.com/i/a9e5a7c873482a050d96bbd

gitblog_00211的博客 679

Aip1640、TM1640驱动程序

本文介绍了AIP1640/TM1640驱动芯片的编程实现,主要包括硬件接口定义和通信协议函数。通过宏定义配置时钟(CLK)和数据线(DIO)的GPIO控制,实现了I2C协议的启动、停止、字节发送等基本操作。核心函数AIP1640_Disp_Drive()完成显示驱动流程:先发送0x40命令设置地址自增模式,再发送0xC0起始地址和16字节显示数据,最后设置亮度参数。文中还包含5微秒延时函数、显示数据缓冲区定义,以及LED和数码管(SMG)的位映射注释说明。该代码适用于控制LED数码管显示,支持亮度调节功能。

zqx的博客 1402

emacs php 支持,emacs支持golang吗

Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。 (推荐学习:go)EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMA...

weixin_39625305的博客 138

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

打造超级舒适的Go开发环境之VIM配置

最近博主已经从VIM迁移到了EMACS作为主要生产工具,目的是为了学习Lisp和体验EMACS操作系统之美,哈哈,不要被我弄的技术焦虑,没错,我就是换了个吃饭的盘子。写下这篇博客也是为了纪念我顺利的“从VIM毕业了”。 在阅读本文之前,你需要: 准备一个UNIX like的操作系统 一个可以跨过山和大海的代-理 话不多说,开始吧~ (1)下载必要的Go工具链 go get -v github....

许少年的读书笔记 2232

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Emacs中Golang的设置

欲善其事,先利其器。下面记录一些使用Emacs24做golang开发中的一些有用设置,备忘用。 一,golang中的代码跳转 emacs24的go-mode中默认用godef-describe,godef-jump和godef-jump-other-window来做代码跳转,而godef-*这几个命令需要用到外部程序godef来寻找函数定义。安装步骤如下: 1,安装godef 1)设置GOP...

weixin_30270889的博客 89

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

入坑emacs之配置文件 .emas.d/init.el -v1.0

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

weixin_34087301的博客 576

prelude-go.el

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

weixin_34389926的博客 111

emacs windows mysql_Mac 安装 Emacs,配置python,java,go 环境

安装Homebrew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"卸载命令为:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast...

weixin_28674303的博客 275

emacs + gocode 让编写go语言更加给力

      首先在这里我要感谢 dataangel (qq:996421165) 童鞋。个人领悟能力比较差,但他还是耐性教导。这里呢只是吧自己接触go语言的遇到的问题。安装配置环境,编写代码环境 跟编译环境配置做一个整合。希望能给学习go语言的友友带来便利。我使用windows版下编写。其他系统未配置过。有空配置的话,会继续写博客~~!刚刚开始学写博客写的不好还望多多包涵。go语言群:102319854一些常用链接:http://golang.org/                            

小宇的专栏 7521
上一篇: loraserver 源码解析 (一) 构建
下一篇: ubuntu 16.04 安装 postgresql 10 并 配置成loraserver需要的
乃不知有汉
博客等级 码龄17年 96粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值