summaryrefslogtreecommitdiff
path: root/emacs/inits/20-programming.el
diff options
context:
space:
mode:
authortslil clingman <>2019-09-11 19:18:14 -0400
committertslil clingman <>2019-09-11 19:18:14 -0400
commitac1a4884d03fc0495c773500d8a13f84b695fa43 (patch)
tree29e5ec49e0ce957d80d8f11a155b47840c74f488 /emacs/inits/20-programming.el
Init
Diffstat (limited to 'emacs/inits/20-programming.el')
-rw-r--r--emacs/inits/20-programming.el121
1 files changed, 121 insertions, 0 deletions
diff --git a/emacs/inits/20-programming.el b/emacs/inits/20-programming.el
new file mode 100644
index 0000000..e2e0494
--- /dev/null
+++ b/emacs/inits/20-programming.el
@@ -0,0 +1,121 @@
+;; Time-stamp: <2019-09-11 11:30:39 (tslil@basingstoke)>
+
+;; -----------------------------------------------------------------------------
+;; General setup
+
+(defadvice compile (around split-horizontally activate)
+ (let ((split-width-threshold 0)
+ (split-height-threshold nil))
+ ad-do-it))
+
+(defadvice compile (after resize-window-properly activate)
+ (let ((ww (window-width)))
+ (when (< ww (+ 5 fill-column))
+ (enlarge-window-horizontally (- (+ 5 fill-column) ww)))))
+
+(defun programming-setup ()
+ (subword-mode 1)
+ (electric-pair-local-mode)
+ ;; Emacs25 compat
+ (if (fboundp 'display-line-numbers-mode)
+ (display-line-numbers-mode)
+ (linum-mode))
+ (setq auto-hscroll-mode t))
+
+(add-hook 'prog-mode-hook #'programming-setup)
+
+;; -----------------------------------------------------------------------------
+;; Specific packages
+
+(use-package shift-number
+ :ensure t
+ :bind (("C-c S-i" . shift-number-up)
+ ("C-c S-d" . shift-number-down)))
+
+(use-package comment-dwim-2
+ :ensure t
+ :bind (("M-;" . comment-dwim-2)))
+
+(use-package aggressive-indent
+ :ensure t
+ :defer t)
+
+(use-package yasnippet
+ :ensure t
+ :defer t)
+
+(use-package elec-pair
+ :defer t
+ :config
+ (setq electric-pair-delete-adjacent-pairs t
+ electric-pair-skip-self t
+ electric-pair-preserve-balance t
+ electric-pair-skip-whitespace t))
+
+(use-package js-comint
+ :ensure t
+ :defer t
+ :config
+ (setq js-comint-program-command "node"
+ js-comint-program-arguments nil))
+
+(use-package js2-mode
+ :ensure t
+ :defer t
+ :after js-comint
+ :mode "\\.js$"
+ :bind (:map js2-mode-map
+ ("TAB" . js2-indent-line)
+ ("C-x C-e" . js-send-last-sexp)
+ ("C-c C-b" . js-send-buffer)
+ ("C-c C-l" . js-load-file))
+ :hook (js2-mode . (lambda ()
+ (auto-revert-mode -1)
+ (yas-minor-mode-on))))
+
+;; What are these?
+;; (setq gdb-show-threads-by-default nil
+;; gdb-many-windows nil
+;; gdb-show-main nil)
+
+
+(use-package flycheck
+ :defer t
+ :ensure t)
+
+(use-package irony
+ :ensure t
+ :defer t
+ :hook (lambda ()
+ (irony-cdb-autosetup-compile-options)
+ (company-irony-setup-begin-commands)))
+
+(use-package cc-mode
+ :defer t
+ :config
+ (c-set-offset 'case-label '+)
+ (setq-default c-basic-offset 2))
+
+(add-hook 'c-mode-hook
+ (lambda ()
+ (irony-mode)
+ (abbrev-mode 0)
+ (flycheck-mode)
+ (flycheck-irony-setup)
+ (c-toggle-hungry-state 1)
+ (c-toggle-electric-state 1)
+ (c-toggle-syntactic-indentation 1)))
+
+(use-package flycheck-rust
+ :after flycheck
+ :ensure t
+ :defer t)
+
+(use-package rust-mode
+ :ensure t
+ :defer t
+ :bind (:map rust-mode-map
+ ("C-c C-c" . rust-compile))
+ :hook (rust-mode . (lambda ()
+ (flycheck-mode)
+ (flycheck-rust-setup))))