Files
azos/pkgs/elisp/azos-emacs-dev.org
T
2024-11-18 09:11:55 +02:00

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