Emacs: Rust improvements, ob-rust race condition, TS with ansi codes compilation
This commit is contained in:
parent
38232c81ab
commit
6703a9fece
@ -252,7 +252,7 @@ Setup other stuff
|
||||
(dolist (mode '( dashboard-mode-hook org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook dirvish-directory-view-mode-hook
|
||||
eshell-mode-hook dired-mode-hook shell-mode-hook magit-mode-hook compilation-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
;; (dolist (mode '(dashboard-mode-hook org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook
|
||||
;; (dolist (mode '(dashboard-mode-hook org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook
|
||||
;; eshell-mode-hook shell-mode-hook magit-mode-hook compilation-mode-hook))
|
||||
;; (add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
|
||||
@ -524,7 +524,7 @@ weren't working, until I randomly saw this in someone's init.el
|
||||
|
||||
#+end_src
|
||||
*** Evil
|
||||
#+begin_src emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
|
||||
(setq evil-want-keybinding nil)
|
||||
(setq evil-undo-system 'undo-fu)
|
||||
@ -558,7 +558,7 @@ weren't working, until I randomly saw this in someone's init.el
|
||||
(add-hook 'emacs-startup-hook
|
||||
(lambda ()
|
||||
(evil-global-set-key 'normal (kbd "<leader>t") tab-prefix-map)
|
||||
(evil-define-key 'normal 'global
|
||||
(evil-define-key 'normal 'global
|
||||
(kbd "<leader>q") 'kill-buffer-and-window
|
||||
(kbd "<leader>k") 'kill-this-buffer
|
||||
(kbd "<leader>h") 'help-command
|
||||
@ -714,6 +714,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
||||
"^\\*lsp-help\\*" lsp-help-mode
|
||||
"^\\*ert\\*" ert-results-mode
|
||||
"^\\*cargo-test\\*" cargo-test-mode
|
||||
"^\\*cargo-run\\*" cargo-run-mode
|
||||
"^\\*rustic-compilation\\*" rustic-compilation-mode
|
||||
;; "^\\*ansi-term\\*$" term-mode
|
||||
("^\\*Warnings\\*$" . hide)
|
||||
@ -742,7 +743,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
||||
(window--display-buffer
|
||||
buffer (get-buffer-window popup-buffer) 'reuse
|
||||
`((body-function . ,#'select-window)))))
|
||||
|
||||
|
||||
((and (eq joe/popper-side-toggle 'right)
|
||||
(window-in-direction 'left))
|
||||
(message "Here")
|
||||
@ -769,7 +770,7 @@ The theme of `C-x 4` bindings is that they operate on other windows, so this fun
|
||||
`((window-height . 0.4)
|
||||
(window-width . 0.4)
|
||||
(direction . below)
|
||||
(body-function . ,#'select-window))))))
|
||||
(body-function . ,#'select-window))))))
|
||||
|
||||
(setq popper-display-function #'joe/popper-display-func)
|
||||
|
||||
@ -1140,50 +1141,8 @@ targets."
|
||||
(message "Opening %s done" file)))
|
||||
|
||||
#+end_src
|
||||
** Org Mode
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'org-bullets)
|
||||
|
||||
(defun joe/org-init ()
|
||||
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
|
||||
(setq org-agenda-files '("~/todo.org"))
|
||||
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(makefile . t)
|
||||
(ocaml . t)
|
||||
(python . t)
|
||||
(C . t)
|
||||
(haskell . t)
|
||||
(rust . t)
|
||||
(shell . t)))
|
||||
|
||||
(require 'org-tempo)
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
(add-to-list 'org-structure-template-alist '("ml" . "src ocaml"))
|
||||
(add-to-list 'org-structure-template-alist '("rs" . "src rust"))
|
||||
(add-to-list 'org-structure-template-alist '("py" . "src python"))
|
||||
(add-to-list 'org-structure-template-alist '("hs" . "src haskell"))
|
||||
(add-to-list 'org-structure-template-alist '("cc" . "src C :includes stdio.h stdlib.h"))
|
||||
(setq org-edit-src-content-indentation 0))
|
||||
(with-eval-after-load 'org (joe/org-init))
|
||||
|
||||
(setq org-blank-before-new-entry
|
||||
'((heading . nil)
|
||||
(plain-list-item . nil)))
|
||||
(setq org-cycle-separator-lines 1)
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-src-window-setup 'current-window)
|
||||
|
||||
(defun joe/org-hook ()
|
||||
(local-set-key (kbd "C-. C-i") 'consult-org-heading)
|
||||
(org-bullets-mode)
|
||||
(org-indent-mode))
|
||||
(add-hook 'org-mode-hook 'joe/org-hook)
|
||||
|
||||
(straight-use-package 'org-kanban)
|
||||
#+end_src
|
||||
** Avy
|
||||
|
||||
@ -1497,6 +1456,25 @@ println!("Hello world");
|
||||
;; (define-key global-map (kbd "C-x C-s) #'save-buffer)
|
||||
(define-key global-map (kbd "<f9>") #'joe/save-then-recompile)
|
||||
(define-key global-map (kbd "<f10>") #'compile)
|
||||
|
||||
(defun joe/colorize-compilation-buffer ()
|
||||
(ansi-color-apply-on-region compilation-filter-start (point)))
|
||||
(add-hook 'compilation-filter-hook 'joe/colorize-compilation-buffer)
|
||||
|
||||
(defun joe/close-compilation-if-no-warn-err (buffer string)
|
||||
"Bury a compilation buffer if succeeded without warnings "
|
||||
(if (and
|
||||
(string-match "compilation" (buffer-name buffer))
|
||||
(string-match "finished" string)
|
||||
(not
|
||||
(with-current-buffer (current-buffer)
|
||||
(search-forward "warning" nil t))))
|
||||
(run-with-timer 1.5 nil
|
||||
(lambda ()
|
||||
(and (eq (point) 1)
|
||||
(string-match "compilation" (buffer-name (current-buffer)))
|
||||
(popper-close-latest))))))
|
||||
(add-hook 'compilation-finish-functions 'joe/close-compilation-if-no-warn-err)
|
||||
#+end_src
|
||||
** Debugging
|
||||
*** DAP
|
||||
@ -1539,7 +1517,8 @@ println!("Hello world");
|
||||
*** Rust
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'rustic)
|
||||
(straight-use-package 'ob-rust) ;; Org-Babel
|
||||
(straight-use-package 'ob-rust)
|
||||
;; Org-Babel
|
||||
;; Disabling until we figure out how to get it working
|
||||
;; (straight-use-package 'parsec) ;; Required by evcxr-mode
|
||||
|
||||
@ -1559,6 +1538,7 @@ println!("Hello world");
|
||||
(with-eval-after-load 'rustic
|
||||
;; Don't autostart
|
||||
(setq rustic-lsp-setup-p nil)
|
||||
(define-key rustic-mode-map (kbd "<f9>") #'rustic-cargo-run)
|
||||
|
||||
(setq lsp-rust-analyzer-server-display-inlay-hints t)
|
||||
(setq lsp-rust-analyzer-display-lifetime-elision-hints-enable "always")
|
||||
@ -1573,6 +1553,11 @@ println!("Hello world");
|
||||
#+begin_src emacs-lisp
|
||||
(global-set-key (kbd "C-x C-r") 'eval-region)
|
||||
#+end_src
|
||||
*** Web
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'typescript-mode)
|
||||
(setq typescript-indent-level 2)
|
||||
#+end_src
|
||||
*** C
|
||||
|
||||
Design some basic functions for compiling. There's also a hook to close the popper window if there
|
||||
@ -1588,21 +1573,6 @@ it doesn't close it.
|
||||
(electric-pair-local-mode t)
|
||||
(c-toggle-comment-style -1))
|
||||
(add-hook 'c-mode-hook #'joe/c-mode-hook)
|
||||
|
||||
(defun joe/close-compilation-if-no-warn-err (buffer string)
|
||||
"Bury a compilation buffer if succeeded without warnings "
|
||||
(if (and
|
||||
(string-match "compilation" (buffer-name buffer))
|
||||
(string-match "finished" string)
|
||||
(not
|
||||
(with-current-buffer (current-buffer)
|
||||
(search-forward "warning" nil t))))
|
||||
(run-with-timer 1.5 nil
|
||||
(lambda ()
|
||||
(and (eq (point) 1)
|
||||
(string-match "compilation" (buffer-name (current-buffer)))
|
||||
(popper-close-latest))))))
|
||||
(add-hook 'compilation-finish-functions 'joe/close-compilation-if-no-warn-err)
|
||||
#+end_src
|
||||
*** Haskell
|
||||
#+begin_src emacs-lisp
|
||||
@ -1619,7 +1589,7 @@ it doesn't close it.
|
||||
(setq cider-show-error-buffer 'only-in-repl)
|
||||
#+end_src
|
||||
*** OCaml
|
||||
#+begin_src emacs-lisp
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(straight-use-package 'tuareg)
|
||||
(straight-use-package 'dune)
|
||||
(straight-use-package 'utop)
|
||||
@ -1646,7 +1616,7 @@ it doesn't close it.
|
||||
We won't use the LSP server but rather directly talk to Merlin, since I guess LSP just wraps Merlin
|
||||
and there's no need for a middle-man when it's already been implemented.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
|
||||
;; (require 'utop)
|
||||
;; Use the opam installed utop
|
||||
@ -1680,6 +1650,51 @@ and there's no need for a middle-man when it's already been implemented.
|
||||
(straight-use-package 'json)
|
||||
(straight-use-package 'markdown-mode)
|
||||
#+end_src
|
||||
** Org Mode
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(straight-use-package 'org-bullets)
|
||||
|
||||
(defun joe/org-init ()
|
||||
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
|
||||
(setq org-agenda-files '("~/todo.org"))
|
||||
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(makefile . t)
|
||||
(ocaml . t)
|
||||
(python . t)
|
||||
(C . t)
|
||||
(haskell . t)
|
||||
(rust . t)
|
||||
(shell . t)))
|
||||
|
||||
(require 'org-tempo)
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
(add-to-list 'org-structure-template-alist '("ml" . "src ocaml"))
|
||||
(add-to-list 'org-structure-template-alist '("rs" . "src rust"))
|
||||
(add-to-list 'org-structure-template-alist '("py" . "src python"))
|
||||
(add-to-list 'org-structure-template-alist '("hs" . "src haskell"))
|
||||
(add-to-list 'org-structure-template-alist '("cc" . "src C :includes stdio.h stdlib.h"))
|
||||
(setq org-edit-src-content-indentation 0))
|
||||
(with-eval-after-load 'org (joe/org-init))
|
||||
|
||||
(setq org-blank-before-new-entry
|
||||
'((heading . nil)
|
||||
(plain-list-item . nil)))
|
||||
(setq org-cycle-separator-lines 1)
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-src-window-setup 'current-window)
|
||||
|
||||
(defun joe/org-hook ()
|
||||
(local-set-key (kbd "C-. C-i") 'consult-org-heading)
|
||||
(org-bullets-mode)
|
||||
(org-indent-mode))
|
||||
(add-hook 'org-mode-hook 'joe/org-hook)
|
||||
|
||||
(straight-use-package 'org-kanban)
|
||||
#+end_src
|
||||
** Magit
|
||||
|
||||
The best git porcelain/client I've ever used. Also kill stray magit buffers left over as explained [[https://manueluberti.eu/emacs/2018/02/17/magit-bury-buffer/][here]]
|
||||
|
Loading…
x
Reference in New Issue
Block a user