view .elisp/settings/80.go.el @ 307:e37b00236907

zshrc: work around my shell function that turns on utf8 in screen The zsh built in which was getting confused by the function, and always claimed screen was installed. I'm finally running into machines with tmux but not screen, so I noticed.
author Augie Fackler <raf@durin42.com>
date Sat, 19 Jan 2013 19:29:58 -0600
parents a8caf664abdc
children aa5afa13e12c
line wrap: on
line source

;; completions for go
(defun af-go-hook ()
  ;; enable tabs
  (setq tab-width 2)
  (setq indent-tabs-mode t)
  (make-variable-buffer-local 'whitespace-style)
  (setq whitespace-style '(trailing lines-tail indentation trailing empty))
  )

(defun af-get-go-elisp-location ()
  (let* ((gobinary (shell-command-to-string "which go"))
         (gobin (substring (let ((x (file-name-directory gobinary)))
                             (if x x "z")) 0  -1))
         (goroot (file-name-directory gobin)))
    (if goroot (concat goroot "misc/emacs") "")))

(defun af-get-gocode-elisp-location ()
  (let* ((binary (shell-command-to-string "which gocode"))
         (bin (substring (let ((x (file-name-directory binary)))
                               (if x x "z")) 0 -1))
         (basedir (file-name-directory bin)))
    (if basedir
        (concat basedir "src/github.com/nsf/gocode/emacs-company/")
      "")))

(let* ((goloc (af-get-go-elisp-location))
       (goel (concat goloc "/go-mode.el")))
  (if (file-exists-p goel)
      (progn
        (message "Go is installed, loading go-mode")
        (add-to-list 'load-path goloc)
        (require 'go-mode)
        (add-hook 'go-mode-hook          'af-go-hook)
        (let* ((loc (af-get-gocode-elisp-location))
               (el (concat loc "/company-go.el")))
          (if (file-exists-p el)
              (progn
                (message "Found gocode, loading company-mode support...")
                (add-to-list 'load-path loc)
                (require 'company-go))
            (message "gocode missing, skipping company-mode support."))))
    (message "Go appears to not be installed, skipping Go setup.")))