公司用的windows emacs,在官网上下载了编译好的gnu global,配置好环境变量后,用的很好。
回到家做整理的时候,直接搞到第二天4点,洗完澡后不死心地在emacs china上发了求助帖,才去睡的觉。早上去到公司的时候,大牛已经回复我了,威武。昨天回家整个人都是懵的,也没打开电脑验证,今天验证完来写总结了。
下面是求助帖。
https://emacs-china.org/t/mac-emacs-ggtags-zsh-command-not-found-global/16805/3
大牛贴的是emacs推荐配置purcell的解决方法。
我没有很仔细地看……
Purcell提供了一个插件exec-path-from-shell。
在我折腾到4点时,有3个现象:
1.iterm2[A]是可以运行gtags和global的
2.emacs,M-x shell[B]里,也是可以的,不过这两个命令tab不出来
3.[C]使能ggtags-mode后,执行ggtags-find-tag-dwim,报错zsh cannot find global,根据贴出的命令,在[A]和[B]的命令行也都是有输出的
这个时候我基本就确定是环境变量的问题,要配置的是emacs shell的环境变量,还不是我M-x shell出来的那个。
github的说明是,OS X经常会出现这个问题,即[C]没有很好的继承环境变量。
如果iterm2打开emacs的话,估计继承没问题,但我没有验证。
[C]可以通过M-x getenv SHELL查看,我得到的是zsh,这种情况,可以通过插件exec-path-from-shell解决。
因为我最近在鼓捣自己的el文件,所以我尝试了Usage的配置,一个结果是,我的M得通过Esc敲,这点和iterm2打开emacs一样。
我是M-x exec-path-from-shell-initialize,这样再去执行ggtags-find-tag-dwim,得到了正确输出。