在emacs中使用go

在emacs中,只加载基础配置。项目配置用脚本加载。go语言使用go-langserverlsp-mode,其他的yasnippet,补全,都是基础功能。
bash <(curl -L -s https://install.direct/go.sh)

;;<for line numbers>
;; if you clipboard don't use well, close numbers, then you can copy and paste
(global-linum-mode 1) ; always show line numbers                                                                                                                                                                                                                              
(setq linum-format "%4d| ")
(setq-default fill-column 80)
;;

;;<for find path backspace>
(global-set-key "\C-h" 'backward-delete-char-untabify)
(global-set-key "\d" 'delete-char)
;;

;; <for copy>                                                                                                                                                                                                                                                                 
;; http://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/                                                                                                                                                                                                
;; I prefer using the "clipboard" selection (the one the                                                                                                                                                                                                                      
;; typically is used by c-c/c-v) before the primary selection                                                                                                                                                                                                                 
;; (that uses mouse-select/middle-button-click)                                                                                                                                                                                                                               
(setq x-select-enable-clipboard t)

;; If emacs is run in a terminal, the clipboard- functions have no                                                                                                                                                                                                            
;; effect. Instead, we use of xsel, see                                                                                                                                                                                                                                       
;; http://www.vergenet.net/~conrad/software/xsel/ -- "a command-line                                                                                                                                                                                                          
;; program for getting and setting the contents of the X selection"                                                                                                                                                                                                           
(unless window-system
  (when (getenv "DISPLAY")
    ;; Callback for when user cuts                                                                                                                                                                                                                                            
    (defun xsel-cut-function (text &optional push)
      ;; Insert text to temp-buffer, and "send" content to xsel stdin                                                                                                                                                                                                         
      (with-temp-buffer
        (insert text)
        ;; I prefer using the "clipboard" selection (the one the                                                                                                                                                                                                              
        ;; typically is used by c-c/c-v) before the primary selection                                                                                                                                                                                                         
        ;; (that uses mouse-select/middle-button-click)                                                                                                                                                                                                                       
        (call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
    ;; Call back for when user pastes                                                                                                                                                                                                                                         
    (defun xsel-paste-function()
      ;; Find oout what is current selection by xsel. If it is different                                                                                                                                                                                                      
      ;; from the top of the kill-ring (car kill-ring), then return                                                                                                                                                                                                           
      ;; it. Else, nil is returned, so whatever is in the top of the                                                                                                                                                                                                          
      ;; kill-ring will be used.                                                                                                                                                                                                                                              
      (let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
        (unless (string= (car kill-ring) xsel-output)
          xsel-output )))
    ;; Attach callbacks to hooks                                                                                                                                                                                                                                              
    (setq interprogram-cut-function 'xsel-cut-function)
    (setq interprogram-paste-function 'xsel-paste-function)
    ;; Idea from                                                                                                                                                                                                                                                              
    ;; http://shreevatsa.wordpress.com/2006/10/22/emacs-copypaste-and-x/                                                                                                                                                                                                      
    ;; http://www.mail-archive.com/help-gnu-emacs@gnu.org/msg03577.html                                                                                                                                                                                                       
    ))


;; </for copy>                                                                                                                                                                                                                                                                

;; <for ctags>                                                                                                                                                                                                                                                                

;; </for ctags>

所有emacs配置出现问题的原因都是对elisp了解少导致的,emacs的插件源有清华的也有emacs-china的,清华的地址:

(setq package-archives '(("gnu"   . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")))

future:
(1)自动安装package,放到自定义目录
(2)项目中创建一个空的.projectile配置文件,当打开一个项目的文件夹后会自动打开响应的lsp后端,开启lsp-mode。

首先安装polipo,然后写配置文件:

#必填
socksParentProxy = "localhost:1080"
socksProxyType = socks5

安装lsp的go语言后端gopls,lsp-mode包括UI之类的提供一套共同的操作,配置不同的后端就可以做成和ide一样:
GO111MODULE=on https_proxy=127.0.0.1:8123 http_proxy=127.0.0.1:8123 go get -v golang.org/x/tools/gopls@latest

安装bingo后端。

go语言补全,跳转,需要的工具参考:
https://blog.yuantops.com/tech/emacs-config-go-dev-environ/

要么多试几次,将包下载下来,要么更改go.mod,增加replace配置,示例如下:

module tx
require github.com/sirupsen/logrus v1.2.0 // indirect
replace (
    golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
    golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
    golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
    golang.org/x/sys v0.3.0=>github.com/golang/sys v0.3.0
)

如果过程中卡主了,可以使用nload,回车键切换查看ip流量是否正常。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容