diff --git a/06company-yasnippet.el b/06company-yasnippet.el index 4b1c2f4..31e3795 100644 --- a/06company-yasnippet.el +++ b/06company-yasnippet.el @@ -23,21 +23,19 @@ (global-company-mode 1) (yas-global-mode 1) -(setq-default company-backends '(company-capf ;; Backend for default complete-at-point function - company-tern ;; Javascript - (company-keywords ;; Keyword list for all languages - company-yasnippet ;; Snippets for all programming languages - company-etags ;; Ctags - ) +(setq-default company-backends '(company-tern ;; Javascript + (company-yasnippet ;; Snippets for all programming languages + company-etags) ;; Ctags for any language company-elisp ; Emacs Lisp company-clang company-cmake ;; C company-lsp ;; Language server protocol - company-robe ;; Ruby company-ansible ;; Ansible alchemist-company ;; Elixir company-racer ;; Rust company-web-html ;; HTML (company-dabbrev-code company-dabbrev company-abbrev) ;; abbrev + company-capf ;; Backend for default complete-at-point function + company-keywords ;; Keywords for all languages company-files ; files & directory )) @@ -52,3 +50,35 @@ (define-key text-mode-map (kbd "C-c y") 'company-yasnippet) (define-key text-mode-map (kbd "") 'company-yasnippet) + +;; Sentinel function for capturing ctags +(defun ctags-process-callback (process event) + "Show status of asynchronous ctags-process after it finishes." + (cond + ((string-equal event "finished\n") + (message "Creating tag files...completed") + (kill-buffer (get-buffer "*ctags*")) + (visit-tags-table (format "%sTAGS" (projectile-project-root)))) + (t + (message "Creating tags file...failed") + (pop-to-buffer (get-buffer "*ctags*")) + ))) + +;; (setq ctags-commands +;; '(("emacs-lisp-mode" . "Some string")) +;; ("enh-ruby-mode" . "Some other string") +;; ) + +;; (defun buffer-mode-as-string (&optional-buffer) +;; "Get current mode from &OPTIONAL-BUFFER or current buffer." +;; (when option) + +;; (message "%s" +;; (cdr +;; (assoc +;; (format "%s" (buffer-local-value 'major-mode +;; (current-buffer))) ctags-commands))) + +;; (message (format "%s" (buffer-local-value 'major-mode (current-buffer)))) + +;; (message ()) diff --git a/20ruby.el b/20ruby.el index 1ad722e..d138ba7 100644 --- a/20ruby.el +++ b/20ruby.el @@ -1,37 +1,25 @@ -;; Start rvm before starting robe +;; Require Enhanced Ruby Mode (require 'enh-ruby-mode) -(defadvice inf-ruby-console-auto (before activate-rvm-for-robe activate) - (rvm-activate-corresponding-ruby)) - ;; Refresh tags in Ruby projects (defun ruby-refresh-etags () - "Recreate ctags for ruby" + "Recreate ctags for Ruby." (interactive) - (message "Refreshing Ruby ctags.") - - (shell-command - (format "ctags -e -R --languages=ruby --exclude=.git --exclude=log -f %sTAGS %s. $(bundle list --paths)" - (projectile-project-root) (projectile-project-root))) - - (visit-tags-table (format "%sTAGS" (projectile-project-root))) - - (message "Refresh finished.")) + (message "Starting ctags process") + (start-process-shell-command "ctags" "*ctags*" + (format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)" + (projectile-project-root) (projectile-project-root))) + (set-process-sentinel (get-process "ctags") 'ctags-process-callback)) ;; Ruby specific key bindings -(define-key enh-ruby-mode-map (kbd "C-c j") 'robe-jump) (define-key enh-ruby-mode-map (kbd "C-c E") 'ruby-refresh-etags) (define-key enh-ruby-mode-map (kbd "C-c \\") 'nil) (add-hook 'ruby-mode-hook 'enh-ruby-mode) -(add-hook 'enh-ruby-mode-hook 'robe-mode) (add-hook 'enh-ruby-mode-hook 'rspec-mode) (add-hook 'enh-ruby-mode-hook 'ruby-end-mode) -(eval-after-load 'company - '(push 'company-robe company-backends)) - (eval-after-load 'rspec-mode '(rspec-install-snippets))