没有这种操作吧……具体问题是什么?
非常感谢,用了一下感觉很不错,不过好像有些小问题。
我在将你的文件放到指定的目录下,执行
(require 'aweshell)
后会报一些错误,
Debugger entered--Lisp error: (search-failed "available git commands in")
search-forward("available git commands in")
(progn (call-process-shell-command "git" nil (current-buffer) nil "help" "--all") (goto-char 0) (search-forward "available git commands in") (let (commands) (while (re-search-forward "^[[:blank:]]+\\([[:word:]-.]+\\)[[:blank:]]*\\([[:wor..." nil t) (setq commands (cons (match-string 1) commands)) (if (match-string 2) (progn (setq commands (cons (match-string 2) commands))))) (sort commands #'string<)))
(unwind-protect (progn (call-process-shell-command "git" nil (current-buffer) nil "help" "--all") (goto-char 0) (search-forward "available git commands in") (let (commands) (while (re-search-forward "^[[:blank:]]+\\([[:word:]-.]+\\)[[:blank:]]*\\([[:wor..." nil t) (setq commands (cons (match-string 1) commands)) (if (match-string 2) (progn (setq commands (cons ... commands))))) (sort commands #'string<))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process-shell-command "git" nil (current-buffer) nil "help" "--all") (goto-char 0) (search-forward "available git commands in") (let (commands) (while (re-search-forward "^[[:blank:]]+\\([[:word:]-.]+\\)[[:blank:]]*\\([[:wor..." nil t) (setq commands (cons (match-string 1) commands)) (if (match-string 2) (progn (setq commands ...)))) (sort commands #'string<))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
(let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process-shell-command "git" nil (current-buffer) nil "help" "--all") (goto-char 0) (search-forward "available git commands in") (let (commands) (while (re-search-forward "^[[:blank:]]+\\([[:word:]-.]+\\)[[:blank:]]*\\([[:wor..." nil t) (setq commands (cons ... commands)) (if (match-string 2) (progn ...))) (sort commands #'string<))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
pcmpl-git-commands()
(defconst pcmpl-git-commands (pcmpl-git-commands) "List of `git' commands.")
eval-buffer(#<buffer *load*> nil "/home/zmqc/backups/src/aweshell/aweshell.el" nil t) ; Reading at buffer position 14157
load-with-code-conversion("/home/zmqc/backups/src/aweshell/aweshell.el" "/home/zmqc/backups/src/aweshell/aweshell.el" nil t)
require(aweshell)
eval((require 'aweshell) nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
但使用的时候还是可以正常使用,没有任何的问题,感觉好奇怪。
然后在更新了 ecaddac98b87f881910dbee8b51a98f00b6d9d5d
Add `aweshell-search-history' and merge bash/zsh history in `esh-auto…
这条 commit 之后会报
Company: An error occurred in auto-begin
Company: backend esh-autosuggest error "Opening input file: 没有那个文件或目录, /home/zmqc/.zsh_history" with args (candidates ls )
这个错误,我用的是 bash, 我稍微看了下源文件,尝试着删掉了 esh-autosuggest.el 中 zsh 相关的代码 ( bash 相关的部分没有删除 ) 之后就又可以继续使用了,而且可以成功读取我的 bash_history 文件, 就是还会报下面的一个错误
(Shell command failed with code 1 and no output) [3 times]
我也不会单独下载,不过我是 clone 了全部仓库再复制过来用的,印象中 400m+ 吧
可以像 @erStern clone到本地然后用:file
关键字指向那个文件夹。README相关介绍
或者试试 el-get,很强大的包管理器。我没用过所以不是很清楚,但是MELPA是支持git repo下细分文件的。而MELPA似乎用的就是el-get。(是这样吗? @twlz0ne )
写了两个补丁, 防御了一下, 你更新到最新版, 看看还有什么错误没?
原来quelpa
还有:files
这种吗
执行 (require 'aweshell) 时依旧会报上面的错误,之后依旧可以继续使用。
哦,对了,我的 git 在 eshell 里是可以正常使用的,我单独执行
(executable-find "git")
时结果是 “/usr/bin/git” , 感觉如果不管这个错误的话正常使用也没啥问题
第二个问题已经解决了
再次感谢
你要把整个仓库重新更新一遍,你最后一个错误能否详细点?
打开 debug 模式,我看一下报错堆栈
擦,诡异的现象发生了,我发现在命令行下启动(不论是终端模式还是图形模式)都不报错,命令行模式启动的 emacs 即使单独执行 (require 'aweshell) 的时候也不会报错。
只有点那个图标或者用快捷键启动的 emacs 才会报错
谢谢楼主分享, 东西很不错,刚刚简单使用下说说问题:
- 有命令行历史记录提示,但无法补全,遇到如下问题有点麻烦:
我似乎只找到手动敲完补全的办法
- eshell ssh到远程虚拟机或者服务器上的体验依然不好, 可能这点不算是你的软件范畴,但个人觉得shell ssh的使用总是避免不了的功能,对aweshell体验还是有很大间接影响。
以上个人一些看法 还是很谢谢楼主的分享,很不错的东西
按 Ctrl-f 就可以补全了
el-get 本身的设置,请看其主页 Basic Setup
章节。
el-get 用法:
-
el-get 已收录的包
(el-get-bundle foo)
-
el-get 未收录(且 build 过程简单或无需 build)
(el-get-bundle foo :url "https://github.com/johndoe/foo.git")
不仅 git,还支持其他协议,只要是能下载的都支持,总的来说分两大类:
- 仓库: git(gist), hg, …
- 文件:zip, el(例如 “foo/bar.el”)…
具体写法参考 README
-
el-get 未收录(且 build 过程复杂)
需要描述清楚 build 过程,最好写个, 例如 orgmode:
(:name org-mode :website "http://orgmode.org/" :description "Org-mode is for keeping notes, maintaining ToDo lists, doing project planning, and authoring with a fast and effective plain-text system." :type git :url "https://code.orgmode.org/bzg/org-mode.git" :info "doc" :build/berkeley-unix `,(mapcar (lambda (target) (list "gmake" target (concat "EMACS=" (shell-quote-argument el-get-emacs)))) '("oldorg")) :build `,(mapcar (lambda (target) (list "make" target (concat "EMACS=" (shell-quote-argument el-get-emacs)))) '("oldorg")) :load-path ("." "contrib/lisp" "lisp") :load ("lisp/org-loaddefs.el"))
然后像 1 那样使用
如果仅仅是从 github 获取代码,有很多工具,为什么用 el-get?a) 支持浅克隆,b)支持各种协议,如 2 所述。
上面那个错误我昨天也遇到了,估计是你的当前环境 $LANG 不是 en_US.UTF-8,所以 git help --all 输出没那句英文。 你可以用 exec-path-from-shell 手动导入一下环境变量。
补全用 alt + h , 可以定制成其他你喜欢的按键
感谢,好像确实如此。我的 LANG 是 zh_CN.UTF-8,我刚刚试了一下 gnome-terminal 里 git help --all 是全英文的, eshell里执行相关部分是中文的 【在 ‘/usr/lib/git-core’ 下可用的 git 命令】
你现在用aweshell还有问题吗?
没有问题了,感谢
我推送了一个新的补丁, 应该不用改 LANG 环境变量就可以工作了.