|
|
|
(require 'cl)
|
|
|
|
|
|
|
|
(defvar my-packages '(ag
|
|
|
|
;; Completion Frameworks
|
|
|
|
company
|
|
|
|
company-irony
|
|
|
|
company-emacs-eclim
|
|
|
|
jedi-core
|
|
|
|
|
|
|
|
;; We don't need the `jedi` package
|
|
|
|
;; since we are using company. If we
|
|
|
|
;; include both we get an annoying
|
|
|
|
;; *Python Completions* buffer that
|
|
|
|
;; isn't useful to us.
|
|
|
|
company-jedi
|
|
|
|
|
|
|
|
eclim
|
|
|
|
irony
|
|
|
|
counsel
|
|
|
|
swiper
|
|
|
|
|
|
|
|
;; LSP is compatible with company and the lsp-ui gives a
|
|
|
|
;; vscode-like experience.
|
|
|
|
lsp-mode
|
|
|
|
lsp-ui
|
|
|
|
lsp-python-ms
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
cmake-ide
|
|
|
|
cmake-mode
|
|
|
|
clang-format+
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; Programming modes
|
|
|
|
cc-mode
|
|
|
|
feature-mode
|
|
|
|
gitignore-mode
|
|
|
|
gradle-mode
|
|
|
|
magit
|
|
|
|
markdown-mode
|
|
|
|
meson-mode
|
|
|
|
nasm-mode
|
|
|
|
paredit
|
|
|
|
protobuf-mode
|
|
|
|
elpy
|
|
|
|
yaml-mode
|
|
|
|
slime
|
|
|
|
|
|
|
|
;; Rails
|
|
|
|
rinari
|
|
|
|
|
|
|
|
;; Ruby autocomplete
|
|
|
|
robe
|
|
|
|
|
|
|
|
;; RVM support
|
|
|
|
rvm
|
|
|
|
;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; Test helpers
|
|
|
|
python-pytest
|
|
|
|
|
|
|
|
;; Cleanup
|
|
|
|
ws-butler
|
|
|
|
;;;;;;;;;;
|
|
|
|
|
|
|
|
;; Shell helpers
|
|
|
|
exec-path-from-shell
|
|
|
|
;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; Editing Utility
|
|
|
|
autopair
|
|
|
|
|
|
|
|
;; Keeps things indented even when you don't want it to
|
|
|
|
aggressive-indent
|
|
|
|
;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
;; UI
|
|
|
|
fill-column-indicator
|
|
|
|
golden-ratio
|
|
|
|
linum-relative
|
|
|
|
powerline
|
|
|
|
rainbow-delimiters
|
|
|
|
wrap-region
|
|
|
|
expand-region
|
|
|
|
wrap-region
|
|
|
|
material-theme
|
|
|
|
oceanic-theme
|
|
|
|
arjen-grey-theme
|
|
|
|
;;;;;
|
|
|
|
|
|
|
|
;; Project Interaction/Search/Syntax
|
|
|
|
flycheck
|
|
|
|
flycheck-pos-tip
|
|
|
|
flycheck-rtags
|
|
|
|
grizzl
|
|
|
|
smex
|
|
|
|
projectile
|
|
|
|
counsel-gtags
|
|
|
|
rtags
|
|
|
|
company-rtags
|
|
|
|
|
|
|
|
;; Environments
|
|
|
|
pyenv-mode
|
|
|
|
|
|
|
|
;; Python specific stuff
|
|
|
|
py-autopep8
|
|
|
|
|
|
|
|
;;General
|
|
|
|
use-package
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
)
|
|
|
|
"Packages to make sure are installed")
|
|
|
|
|
|
|
|
(defun my-packages-installed-p ()
|
|
|
|
(loop for p in my-packages
|
|
|
|
when (not (package-installed-p p)) do (return nil)
|
|
|
|
finally (return t)))
|
|
|
|
|
|
|
|
(unless (my-packages-installed-p)
|
|
|
|
;; check for new packages (package versions)
|
|
|
|
(package-refresh-contents)
|
|
|
|
;; install the missing packages
|
|
|
|
(dolist (p my-packages)
|
|
|
|
(when (not (package-installed-p p))
|
|
|
|
(package-install p))))
|