我一直試圖結合公司模式和gocode設置在emacs自動完成。我跟着這個link。但結果並不是gocode的github頁面中提到的。菜單不會自行顯示,並且函數聲明不會顯示在小緩衝區中。emacs自動完成去語言
這是我的.emacs文件(gocode和公司模式的設定是最後一個):
;(invert-face 'default) ;;weird with nw mode
;(blink-cursor-mode 0)
(load-file "/home/sudeep/.emacs.d/shortcuts.el")
;; (defadvice ido-find-file (after find-file-sudo activate)
;; "Find file as root if necessary."
;; (unless (and buffer-file-name
;; (file-writable-p buffer-file-name))
;; (find-alternate-file (concat "/sudo:[email protected]:" buffer-file-name))))
;(setq debug-on-error t)
(setq custom-file "/home/sudeep/.emacs.d/custom.el")
(load custom-file 'noerror)
(iswitchb-mode 1)
;disables scroll bar
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(menu-bar-mode -1)
(tool-bar-mode -1)
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) ;.h files are treated as c files instaed of c++ in emacs. Remove it!
;; -- laoding images in org mode
;; enable image mode first
(setq-default iimage-mode t)
;Splitted window switching with C-ESC
(global-set-key (kbd "<C-escape>") 'other-window)
;
;hiding code(hiding the contents of a function)C-c @ C-h and C-c @ C-s
(add-hook 'c++-mode-common-hook #'hs-minor-mode)
(add-hook 'c-mode-common-hook #'hs-minor-mode)
(add-hook 'python-mode-common-hook #'hs-minor-mode)
(add-hook 'elisp-mode-common-hook #'hs-minor-mode)
(add-hook 'java-mode-common-hook #'hs-minor-mode)
(blink-cursor-mode -1)
;miscellaneous
(setq max-mini-window-height .70)
(which-function-mode)
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
;; (load-file "~/.emacs.d/tabbar.el")
;; (require 'cl)
;; (when (require 'tabbar nil t)
;; (setq tabbar-buffer-groups-function
;; (lambda (b) (list "All Buffers")))
;; (setq tabbar-buffer-list-function
;; (lambda()
;; (remove-if
;; (lambda(buffer)
;; (find (aref (buffer-name buffer) 0) " *"))
;; (buffer-list))))
;; (tabbar-mode))
;; (setq tabbar-buffer-groups-function
;; (lambda()
;; (list "All")))
;; (require 'tabbar)
;; (tabbar-mode 1)
;; (global-set-key [(C-S-iso-lefttab)] 'tabbar-backward)
;; (global-set-key (kbd "C-<tab>") 'tabbar-forward)
;bookmarks
(global-set-key (kbd "C-c C-z") 'bookmark-set)
(global-set-key (kbd "C-c C-j") 'bookmark-jump)
(global-set-key (kbd "C-c C-q") 'bookmark-delete)
;(global-set-key (kbd "C-!") 'gtags-pop-stack)
(defadvice bookmark-jump (after bookmark-jump activate)
(let ((latest (bookmark-get-bookmark bookmark)))
(setq bookmark-alist (delq latest bookmark-alist))
(add-to-list 'bookmark-alist latest)))
(display-time-mode 1)
;highlighting todo,fixme, bug
(add-hook 'prog-mode-common-hook
(lambda()
(font-lock-add-keywords nil
'(("\\<\\(FIXME\\|TODO\\|BUG\\):" 1 font-lock-warning-face t)))))
;; (load-file "/home/sudeep/.emacs.d/sr-speedbar.el")
;; (require 'sr-speedbar)
;; (make-face 'speedbar-face)
;; ;(set-face-font 'speedbar-face "8")
;; (setq speedbar-mode-hook '(lambda() (buffer-face-set 'speedbar-face)))
;; (speedbar-add-supported-extension ".c")
;; (speedbar-add-supported-extension ".c++")
;; (speedbar-add-supported-extension ".s")
;; (speedbar-add-supported-extension ".asm")
;; (speedbar-add-supported-extension ".java")
;; (speedbar-add-supported-extension ".py")
(setq c-default-style "linux"
c-basic-offset 3)
;indentation customization(replacing tabs by 4 spaces)
(setq-default c-basic-offset 3
tab-width 3
indent-tabs-mode t)
(defun dos2unix()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
;(set-face-attribute 'default nil :height 105)
(setq url-proxy-services
'(("no_proxy" . "^\\(localhost\\|10.*\\)")
("http" . "10.3.100.207:8080")
("https" . "10.3.100.207:8080")
("ftp" . "10.3.100.207:8080")
("socks" . "10.3.100.207:8080")))
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")
("elpa" . "http://tromey.com/elpa/")))
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(add-to-list 'load-path "/home/sudeep/.emacs.d/")
(defun djcb-opacity-modify (&optional dec)
"modify the transparency of the emacs frame; if DEC is t,
decrease the transparency, otherwise increase it in 10%-steps"
(let* ((alpha-or-nil (frame-parameter nil 'alpha)) ; nil before setting
(oldalpha (if alpha-or-nil alpha-or-nil 100))
(newalpha (if dec (- oldalpha 10) (+ oldalpha 10))))
(when (and (>= newalpha frame-alpha-lower-limit) (<= newalpha 100))
(modify-frame-parameters nil (list (cons 'alpha newalpha))))))
;; C-8 will increase opacity (== decrease transparency)
;; C-9 will decrease opacity (== increase transparency
;; C-0 will returns the state to normal
(global-set-key (kbd "C-8") '(lambda()(interactive)(djcb-opacity-modify)))
(global-set-key (kbd "C-9") '(lambda()(interactive)(djcb-opacity-modify t)))
(global-set-key (kbd "C-0") '(lambda()(interactive)
(modify-frame-parameters nil `((alpha . 10)))))
(setq large-file-warning-threshold 100000000)
;(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
;(load-theme 'junio t)
;(load-theme 'zenburn t)
;(load-file "~/.emacs.d/arjen-theme.el")
;(load-file "~/.emacs.d/sanityinc-tomorrow-night-theme.el")
;(set-background-color "black")
;(require 'color-theme-sanityinc-tomorrow)
;(load-theme 'color-theme-sanityinc-tomorrow-black t)
;(load-theme 'sanityinc-solarized-dark)
(defun electric-pair()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
(add-hook 'js-mode-hook
(lambda()
(define-key js-mode-map "(" 'electric-pair)
(define-key js-mode-map "[" 'electric-pair)
(define-key js-mode-map "{" 'electric-pair)))
;;js2-mode setup
;(semantic-mode)
;(require 'icicles)
;(icy-mode t)
;; (add-to-list 'load-path "/home/sudeep/.emacs.d/elpa/auto-complete-20160107.8/") ; Load the default configuration
;; (require 'auto-complete-config) ; Make sure we can find the dictionaries
;; (add-to-list 'ac-dictionary-directories "/home/sudeep/.emacs.d/elpa/auto-complete-20160107.8/dict") ; Usedictionaries by default
;; (setq-default ac-sources (add-to-list 'ac-sources 'ac-source-dictionary))
;; (global-auto-complete-mode t)
;; ; Start auto-completion after 2 characters of a word
;; (setq ac-auto-start 2)
;; ; case sensitivity is important when finding matches
;; (setq ac-ignore-case nil)
;; ;(autoload 'js2-mode "js2" nil t)
;; (ac-config-default)
;; (set-default 'ac-sources
;; '(ac-source-abbrev
;; ac-source-dictionary
;; ac-source-yasnippet
;; ac-source-words-in-buffer
;; ac-source-words-in-same-mode-buffers
;; ac-source-semantic))
;; (dolist (m '(c-mode c++-mode java-mode go-mode))
;; (add-to-list 'ac-modes m))
;; (global-auto-complete-mode t)
;; ;;yasnippet
;; (add-to-list 'load-path
;; "~/.emacs.d/plugins/yasnippet")
;; (require 'yasnippet)
;; ;(yas-global-mode 1)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
(js2-imenu-extras-mode)
;; yes or no becomes y or n
(defalias 'yes-or-no-p 'y-or-n-p)
;; ;;yasnippet
;; (yas-global-mode 1)
;; ;; auto-complete
;; (require 'auto-complete-config)
;; (add-to-list 'ac-dictionary-directories "~/.emacs.d/elpa/auto-complete/dict")
;; (set-default 'ac-sources
;; '(ac-source-abbrev
;; ac-source-dictionary
;; ac-source-yasnippet
;; ac-source-words-in-buffer
;; ac-source-words-in-same-mode-buffers
;; ac-source-semantic))
;; (ac-config-default)
;; (dolist (m '(c-mode c++-mode java-mode emacs-lisp-mode))
;; (add-to-list 'ac-modes m))
;; (global-auto-complete-mode t)
(global-aggressive-indent-mode 1)
(add-to-list 'aggressive-indent-excluded-modes 'html-mode)
(ido-mode 1)
;;go-mode
;(require 'go-autocomplete)
(require 'company) ; load company mode
;(require 'company-go) ; load company mode go backend
(add-hook 'go-mode-hook (lambda()
(set (make-local-variable 'company-backends) '(company-go))
(company-mode)))
(setq company-tooltip-limit 20) ; bigger popup window
(setq company-idle-delay .1) ; decrease delay before autocompletion popup shows
(setq company-echo-delay 0) ; remove annoying blinking
(setq company-begin-commands '(self-insert-command)) ; start autocompletion only after typing
(global-company-mode)
;; (eval-after-load "go-mode"
;; '(progn
;; (flycheck-declare-checker go-gofmt
;; "A Go syntax and style checker using the gofmt utility."
;; :command '("gofmt" source-inplace)
;; :error-patterns '(("^\\(?1:.*\\):\\(?2:[0-9]+\\):\\(?3:[0-9]+\\): \\(?4:.*\\)$" error))
;; :modes 'go-mode)
;; (add-to-list 'flycheck-checkers 'go-gofmt)))
;(ac-go-expand-arguments-into-snippets)
;(add-hook 'go-mode-hook 'flycheck-mode)
請幫助我瞭解和修復缺少的東西。
這裏是調試消息,當我輸入一些字母后執行company-complete
:
Debugger entered--Lisp error: (error "GOCODE PANIC: Please check your code by \"go build\"")
signal(error ("GOCODE PANIC: Please check your code by \"go build\""))
error("GOCODE PANIC: Please check your code by \"go build\"")
company-go--candidates()
company-go(candidates #("Clien" 0 5 (fontified t)))
apply(company-go (candidates #("Clien" 0 5 (fontified t))))
#[0 "\302 !\203\303 \300\"\207\303\304 \300#\207" [(candidates #("Clien" 0 5 (fontified t))) company-backend functionp apply company--multi-backend-adapter] 4 "\n\n(fn)"]()
company-call-backend-raw(candidates #("Clien" 0 5 (fontified t)))
apply(company-call-backend-raw (candidates #("Clien" 0 5 (fontified t))))
company--force-sync(company-call-backend-raw (candidates #("Clien" 0 5 (fontified t))) company-go)
company-call-backend(candidates #("Clien" 0 5 (fontified t)))
company--fetch-candidates(#("Clien" 0 5 (fontified t)))
company-calculate-candidates(#("Clien" 0 5 (fontified t)))
#[0 "\n\203 \nC\202\n\211\205\233\[email protected]\3009\204\306!\203<9\2036\307N\310=\2046\307N?\[email protected]\311!\[email protected]\312!\[email protected]\313\312\"\240\210\[email protected]\203\224\314\[email protected]!\203\216\315\[email protected]!\211\301\316\f!\240\210\[email protected]:\204w
\203i\317\320!\210\[email protected]\310=\203\216\321\322!\210\202\216
\203\[email protected]\323\[email protected]!\210\324\325\326 \"\210\327\330!\210\331\332\[email protected]\"\210A\266\202\202\n\207" [((#("Clien" 0 5 (fontified t)) . t)) (nil) company-backend company-backends company-prefix company--manual-action functionp company-init t company-init-backend prefix company--multi-backend-adapter company--good-prefix-p company--prefix-str company-calculate-candidates message "No completion found" company-cancel unique company-update-candidates run-hook-with-args company-completion-started-hook company-explicit-action-p company-call-frontends show throw --cl-block-nil-- company--manual-prefix] 6 "\n\n(fn)"]()
funcall(#[0 "\n\203 \nC\202\n\211\205\233\[email protected]\3009\204\306!\203<9\2036\307N\310=\2046\307N?\[email protected]\311!\[email protected]\312!\[email protected]\313\312\"\240\210\[email protected]\203\224\314\[email protected]!\203\216\315\[email protected]!\211\301\316\f!\240\210\[email protected]:\204w
\203i\317\320!\210\[email protected]\310=\203\216\321\322!\210\202\216
\203\[email protected]\323\[email protected]!\210\324\325\326 \"\210\327\330!\210\331\332\[email protected]\"\210A\266\202\202\n\207" [((#("Clien" 0 5 (fontified t)) . t)) (nil) company-backend company-backends company-prefix company--manual-action functionp company-init t company-init-backend prefix company--multi-backend-adapter company--good-prefix-p company--prefix-str company-calculate-candidates message "No completion found" company-cancel unique company-update-candidates run-hook-with-args company-completion-started-hook company-explicit-action-p company-call-frontends show throw --cl-block-nil-- company--manual-prefix] 6 "\n\n(fn)"])
company--begin-new()
company--perform()
#[0 "\301 \210\207" [company-candidates company--perform] 1 "\n\n(fn)"]()
company-auto-begin()
company-manual-begin()
company-complete()
call-interactively(company-complete record nil)
command-execute(company-complete record)
execute-extended-command(nil "company-complete")
call-interactively(execute-extended-command nil nil)
編輯 添加(require 'cl)
在開始解決了這個問題。
看看編輯 – sudeepdino008