Skip to content

Instantly share code, notes, and snippets.

@victorolinasc
Created January 12, 2020 18:03
Show Gist options
  • Save victorolinasc/27c8e87139827048ba93db0bdfa7d3ef to your computer and use it in GitHub Desktop.
Save victorolinasc/27c8e87139827048ba93db0bdfa7d3ef to your computer and use it in GitHub Desktop.
Emacs development packages
; GIT interface for Emacs
(use-package magit
:ensure t
:bind ("C-c m s" . magit-status))
; Auto-complete interface
(use-package company
:ensure t
:diminish company-mode
:bind ("M-/" . company-complete)
:config
(global-company-mode))
; Project management and tools
(use-package projectile
:ensure t
:config
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
(setq projectile-completion-system 'ivy)
(projectile-mode +1)
:init
(add-to-list 'projectile-project-root-files-bottom-up "pubspec.yaml")
(add-to-list 'projectile-project-root-files-bottom-up "BUILD"))
; Sidebar navigation with extras
(use-package treemacs
:ensure t
:config
(treemacs-filewatch-mode t)
(treemacs-git-mode 'extended)
(treemacs-follow-mode -1)
(add-hook 'treemacs-mode-hook (lambda() (display-line-numbers-mode -1))))
; Unifies projectile and treemacs
(use-package treemacs-projectile
:after (treemacs projectile)
:ensure t)
; Makes treemacs show different colors for committed, staged and modified files
(use-package treemacs-magit
:after (treemacs magit)
:ensure t)
; LSP client interface for Emacs
(use-package lsp-mode
:commands (lsp lsp-deferred)
:ensure t
:hook
; some examples
(elixir-mode . lsp-deferred)
(dart-mode . lsp-deferred)
:config
(setq
; I will describe my Elixir setup on a next post :)
lsp-clients-elixir-server-executable "~/Projects/elixir-ls/release/erl21/language_server.sh"
lsp-auto-guess-root t) ; very useful
(setq lsp-file-watch-ignored ; customize this to your liking :)
'("[/\\\\]\\.git$"
"[/\\\\]\\.elixir_ls$"
"[/\\\\]_build$"
"[/\\\\]assets$"
"[/\\\\]cover$"
"[/\\\\]node_modules$"
"[/\\\\]submodules$"
)))
; UX/UI utilities on top of the LSP client
(use-package lsp-ui
:commands lsp-ui-mode
:ensure t
:after (lsp-mode)
:config
:init
(setq lsp-ui-doc-enable nil ; does not work properly at the moment IMHO
lsp-ui-doc-use-webkit t
lsp-ui-sideline-enable nil ; clutters UI too much for my taste
lsp-ui-peek-enable nil) ; clutters UI too much for my taste
:bind
("M-h" . lsp-ui-doc-show) ; toogle functionality for docs
("s-h" . lsp-ui-doc-hide)) ; toogle functionality for docs
; Auto-complete sources from LSP servers
(use-package company-lsp
:commands company-lsp
:ensure t
:after (company lsp)
:config
(setq company-transformers nil
company-lsp-async t
company-lsp-cache-candidates nil)
(push 'company-lsp company-backends))
; Simple docker interface
(use-package docker
:ensure t
:bind ("C-c d" . docker))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment