166 lines
3.4 KiB
Org Mode
166 lines
3.4 KiB
Org Mode
#+title: Aner's Emacs Development Configuration
|
|
#+property: header-args :results silent
|
|
|
|
* Base dev
|
|
|
|
** Require
|
|
|
|
#+begin_src emacs-lisp
|
|
(require 'azos-emacs-base)
|
|
#+end_src
|
|
|
|
** Flycheck
|
|
|
|
Flycheck is for syntax checking. Mode-specific configs in their relevant sections.
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package flycheck
|
|
:config
|
|
(global-flycheck-mode 1)
|
|
)
|
|
#+end_src
|
|
|
|
* Dev modes
|
|
** Irony-mode
|
|
|
|
Must work on this. While it does work, can get slow and for weird projects can
|
|
show errors.
|
|
|
|
Namespace indent disabling based on:
|
|
https://stackoverflow.com/questions/13825188/suppress-c-namespace-indentation-in-emacs
|
|
|
|
#+begin_src emacs-lisp
|
|
;; == irony-mode ==
|
|
(use-package irony
|
|
:ensure t
|
|
:defer t
|
|
:init
|
|
(add-hook 'c++-mode-hook 'irony-mode)
|
|
(add-hook 'c-mode-hook 'irony-mode)
|
|
(add-hook 'objc-mode-hook 'irony-mode)
|
|
:config
|
|
;; replace the `completion-at-point' and `complete-symbol' bindings in
|
|
;; irony-mode's buffers by irony-mode's function
|
|
(defun azos/irony-mode-hook ()
|
|
(define-key irony-mode-map [remap completion-at-point]
|
|
'irony-completion-at-point-async)
|
|
(define-key irony-mode-map [remap complete-symbol]
|
|
'irony-completion-at-point-async))
|
|
(add-hook 'irony-mode-hook 'azos/irony-mode-hook)
|
|
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
|
|
|
|
(defconst azos/cc-style
|
|
'("gnu"
|
|
(c-offsets-alist . ((innamespace . [0])))
|
|
(c-basic-offset . 4)))
|
|
|
|
(c-add-style "azos/cc-style" azos/cc-style)
|
|
(add-hook 'irony-mode-hook (lambda () (c-set-style "azos/cc-style")))
|
|
)
|
|
#+end_src
|
|
|
|
Integration with flycheck
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package flycheck-irony
|
|
:after flycheck irony
|
|
:config
|
|
(add-hook 'flycheck-mode-hook #'flycheck-irony-setup)
|
|
(add-hook 'c++-mode-hook (lambda () (setq flycheck-checker 'irony)))
|
|
)
|
|
#+end_src
|
|
|
|
** CMake
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package cmake-mode)
|
|
#+end_src
|
|
|
|
** YAML
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package yaml-mode)
|
|
#+end_src
|
|
|
|
** Nix
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package nix-mode)
|
|
#+end_src
|
|
|
|
** Python
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq
|
|
;; python-shell-interpreter "python3"
|
|
python-shell-completion-native-enable nil)
|
|
|
|
(defun azos/python/set-fringes () "Sets fringes for python"
|
|
(setq left-fringe-width 10 right-fringe-width 0))
|
|
|
|
(add-hook 'python-mode-hook 'azos/python/set-fringes)
|
|
|
|
(use-package elpy
|
|
:ensure t
|
|
:defer t)
|
|
;; :init
|
|
;; (elpy-enable))
|
|
|
|
(define-key azos/global-minor-mode/open-keymap
|
|
(kbd "r p") 'run-python)
|
|
#+end_src
|
|
|
|
*** org src block
|
|
|
|
#+begin_src emacs-lisp
|
|
(setq org-babel-python-command "python3")
|
|
#+end_src
|
|
|
|
** Rust
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package rust-mode)
|
|
#+end_src
|
|
|
|
** Jupyter (ein)
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package ein
|
|
:config
|
|
(setq ein:output-area-inlined-images t)
|
|
(add-hook 'ein:notebook-mode-hook (lambda () (progn
|
|
;; (elpy-mode -1)
|
|
(define-key ein:notebook-mode-map (kbd "C-c C-k") nil)))))
|
|
#+end_src
|
|
|
|
** Python
|
|
|
|
*** Python version for ORG
|
|
|
|
#+begin_src emacs-lisp
|
|
(require 'ob)
|
|
(setq org-babel-python-command "python3")
|
|
#+end_src
|
|
|
|
* ORG
|
|
|
|
** Async blocks
|
|
|
|
#+begin_src emacs-lisp
|
|
(use-package ob-async
|
|
:config
|
|
;Setting command of async blocks to Python3
|
|
(add-hook 'ob-async-pre-execute-src-block-hook
|
|
'(lambda ()
|
|
(setq org-babel-python-command "python3")
|
|
))
|
|
)
|
|
#+end_src
|
|
|
|
* Provide
|
|
|
|
#+begin_src emacs-lisp
|
|
(provide 'azos-emacs-dev)
|
|
(add-hook 'after-init-hook (lambda () (require 'azos-emacs-dev)))
|
|
#+end_src
|