From 48142c5b0353edac1cd039966bf601e5f0e5f0d2 Mon Sep 17 00:00:00 2001 From: tmu Date: Thu, 4 Jan 2024 17:42:21 -0800 Subject: latex and haskell stuff for emacs --- emacs/coding-config.el | 87 ++++++++++++++++++++++++--------- emacs/init.el | 128 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 155 insertions(+), 60 deletions(-) diff --git a/emacs/coding-config.el b/emacs/coding-config.el index 340f0c0..3f6ebbc 100644 --- a/emacs/coding-config.el +++ b/emacs/coding-config.el @@ -42,25 +42,25 @@ (global-hl-todo-mode 1) -(require 'sr-speedbar "~/.emacs.d/sr-speedbar.el" nil) -(defun speedbar-switch-and-setup () - "Switch in and out of the speedbar, opening as necessary." - (interactive) - (if (eq major-mode 'speedbar-mode) - (select-window (previous-window)) - (let ((cur (current-buffer)) - (win (get-buffer-window "*SPEEDBAR*"))) - (if win - (select-window win) - (sr-speedbar-toggle) - (select-window (get-buffer-window "*SPEEDBAR*"))) - (sr-speedbar-refresh) - (speedbar-find-selected-file (buffer-file-name cur)) - (speedbar-expand-line)))) - -(define-key speedbar-mode-map (kbd "q") 'sr-speedbar-toggle) -(global-unset-key (kbd "M-i")) -(global-set-key (kbd "M-i") 'speedbar-switch-and-setup) +;; (require 'sr-speedbar "~/.emacs.d/sr-speedbar.el" nil) +;; (defun speedbar-switch-and-setup () +;; "Switch in and out of the speedbar, opening as necessary." +;; (interactive) +;; (if (eq major-mode 'speedbar-mode) +;; (select-window (previous-window)) +;; (let ((cur (current-buffer)) +;; (win (get-buffer-window "*SPEEDBAR*"))) +;; (if win +;; (select-window win) +;; (sr-speedbar-toggle) +;; (select-window (get-buffer-window "*SPEEDBAR*"))) +;; (sr-speedbar-refresh) +;; (speedbar-find-selected-file (buffer-file-name cur)) +;; (speedbar-expand-line)))) + +;; (define-key speedbar-mode-map (kbd "q") 'sr-speedbar-toggle) +;; (global-unset-key (kbd "M-i")) +(global-set-key (kbd "M-i") 'imenu) (global-set-key (kbd "M-Z") 'suspend-frame) @@ -170,6 +170,32 @@ BEG and END define the region." (kbd "b") 'fold-this-fold-backward (kbd "l") 'hs-hide-level) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;;;;;;;;;;;;;;;; LaTeX ;;;;;;;;;;;;;;;;; +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; ##### Don't forget to configure +;; ##### Okular to use emacs in +;; ##### "Configuration/Configure Okular/Editor" +;; ##### => Editor => Emacsclient. (you should see +;; ##### emacsclient -a emacs --no-wait +%l %f +;; ##### in the field "Command". + +(add-hook 'LaTeX-mode-hook 'turn-on-reftex) +(setq reftex-plug-into-AUCTeX t) + +;; ##### Always ask for the master file +;; ##### when creating a new TeX file. +(setq-default TeX-master nil) + +;; ##### Enable synctex correlation. From Okular just press +;; ##### Shift + Left click to go to the good line. +(setq TeX-source-correlate-mode t + TeX-source-correlate-start-server t) + +;; ### Set Okular as the default PDF viewer. +(eval-after-load "tex" + '(setcar (cdr (assoc 'output-pdf TeX-view-program-selection)) "Okular")) (add-hook 'tex-mode-hook (lambda () (setq spell-fu-faces-exclude @@ -177,7 +203,8 @@ BEG and END define the region." font-lock-builtin-face font-lock-keyword-face font-lock-function-name-face - font-lock-variable-name-face)))) + font-lock-variable-name-face)) + (outline-minor-mode 1))) (defun clean-prog-file (buffer) "Fixes whitespace in buffer" @@ -201,9 +228,20 @@ BEG and END define the region." (clean-prog-file (current-buffer))))))) +;; (add-hook 'haskell-mode-hook (lambda () +;; (evil-define-key 'normal local-map (kbd "M-.") 'haskell-jump-to-def) +;; )) +(setq haskell-tags-on-save t) (add-hook 'haskell-mode-hook (lambda () - (evil-define-key 'normal local-map (kbd "M-.") 'haskell-jump-to-def) - )) + (hindent 1) + (interactive-haskell-mode 1) + (eldoc-mode 1))) +(setq haskell-process-type 'cabal-repl) +;; (speedbar-add-supported-extension ".hs") +(eval-after-load 'haskell-mode + '(define-key haskell-mode-map (kbd "C-c C-o") 'haskell-compile)) +(eval-after-load 'haskell-cabal + '(define-key haskell-cabal-mode-map (kbd "C-c C-o") 'haskell-compile)) ;; (use-package flymake-diagnostic-at-point ;; :after flymake @@ -269,6 +307,9 @@ BEG and END define the region." (global-set-key (kbd "M-M") 'recompile) (setq compilation-always-kill t compilation-scroll-output t) +;; Allow compilation buffer to be dedicated across frames +(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist) + ;; better searching (setq counsel-grep-base-command @@ -278,7 +319,7 @@ BEG and END define the region." (define-key evil-normal-state-map (kbd "C-r") 'counsel-rg) (require 'persp-mode) -(persp-mode 1) +;; (persp-mode 1) (with-eval-after-load "persp-mode" diff --git a/emacs/init.el b/emacs/init.el index 36c32b3..b141056 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -5,6 +5,14 @@ ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. + '(TeX-source-correlate-method 'synctex) + '(TeX-source-correlate-mode t) + '(TeX-source-correlate-start-server t) + '(TeX-view-program-selection + '(((output-dvi has-no-display-manager) "dvi2tty") + ((output-dvi style-pstricks) "dvips and gv") + (output-dvi "Okular") (output-pdf "Okular") + (output-html "xdg-open"))) '(comment-style 'extra-line) '(connection-local-criteria-alist '(((:application tramp :protocol "kubernetes") @@ -126,21 +134,60 @@ '("/home/tmu/Desktop/eway/sway" "/home/tmu/Desktop/eway/cage" "/home/tmu/Desktop/eway/wlroots" "/home/tmu/Desktop/eway/comp" "/home/tmu/Desktop/eway")) + '(evil-collection-mode-list + '(2048-game ag alchemist anaconda-mode apropos arc-mode atomic-chrome + auto-package-update beginend bluetooth bm bookmark + (buff-menu "buff-menu") calendar cider cmake-mode + color-rg comint company compile consult corfu crdt + (custom cus-edit) cus-theme dashboard daemons deadgrep + debbugs debug devdocs dictionary diff-hl diff-mode + dired dired-sidebar disk-usage distel doc-view docker + ebib ebuku edbi edebug ediff eglot elpaca ement + explain-pause-mode eldoc elfeed elisp-mode elisp-refs + elisp-slime-nav embark emms emoji epa ert eshell + eval-sexp-fu evil-mc eww fanyi finder flycheck flymake + forge free-keys geiser ggtags git-timemachine gited + gnus go-mode grep guix hackernews helm help helpful + hg-histedit hungry-delete ibuffer (image image-mode) + image-dired image+ imenu imenu-list (indent "indent") + indium info ivy js2-mode leetcode lispy lms log-edit + log-view lsp-ui-imenu lua-mode kotlin-mode macrostep + man (magit magit-repos magit-submodule) magit-section + magit-todos markdown-mode monky mpc mpdel mu4e + mu4e-conversation neotree newsticker notmuch nov + omnisharp org org-present org-roam osx-dictionary + outline p4 (package-menu package) pass (pdf pdf-view) + popup proced (process-menu simple) prodigy profiler + python quickrun racer racket-describe realgud reftex + replace restclient rg ripgrep rjsx-mode robe rtags + ruby-mode scheme scroll-lock selectrum sh-script + shortdoc simple simple-mpc slime sly snake so-long + speedbar tab-bar tablist tabulated-list tar-mode telega + (term term ansi-term multi-term) tetris thread tide + timer-list transmission trashed tuareg typescript-mode + vc-annotate vc-dir vc-git vdiff vertico view vlf vterm + vundo w3m wdired wgrep which-key woman xref xwidget + yaml-mode youtube-dl zmusic + (ztree ztree-diff ztree-dir))) + '(helm-minibuffer-history-key "M-p") '(menu-bar-mode nil) '(package-selected-packages - '(haskell-mode pyim-wbdict solarized-theme evil-commentary - frog-jump-buffer evil-collection evil-easymotion - sideline-flymake sideline-lsp tree-sitter company-go - pyim-basedict evil-snipe evil-surround 2048-game - evil ibuffer-project persp-mode-projectile-bridge - persp-mode fish-mode chinese-conv esup buffer-move - flymake-diagnostic-at-point emms-state - emms-player-simple-mpv eshell-fringe-status esh-help - eshell-vterm rustic benchmark-init ivy-prescient eat - emms eyebrowse highlight dumb-jump volume workgroups - async bongo hydra free-keys gxref fold-this xelb - oauth2 imenu-anywhere popwin folding gdscript-mode)) + '(2048-game async auctex benchmark-init bongo buffer-move + calc-prog-utils chinese-conv company-cabal company-go + dumb-jump eat emms emms-player-simple-mpv emms-state + esh-help eshell-fringe-status eshell-vterm esup evil + evil-collection evil-commentary evil-easymotion + evil-snipe evil-surround exwm eyebrowse fish-mode + flymake-diagnostic-at-point fold-this folding free-keys + frog-jump-buffer gdscript-mode gxref haskell-mode + helm-hoogle highlight hindent hydra ibuffer-project + imenu-anywhere ivy-prescient oauth2 persp-mode + persp-mode-projectile-bridge popwin pyim-basedict + pyim-wbdict rustic shm sideline-flymake sideline-lsp + solarized-theme tree-sitter volume workgroups xelb)) + '(persp-restore-window-conf-method nil) '(scroll-bar-mode nil) + '(tags-revert-without-query t) '(tool-bar-mode nil) '(transient-mark-mode nil) '(whitespace-style @@ -159,6 +206,10 @@ (lambda () (setq gc-cons-threshold (expt 2 23)))) +;; Don't kill scratch ever +(with-current-buffer "*scratch*" + (emacs-lock-mode 'kill)) + (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) @@ -213,7 +264,6 @@ (set-frame-parameter nil 'alpha-background alpha-transparency)))) ;; custom func keybinds -(global-set-key (kbd "M-w") 'copy-region-as-kill) ;;make copying not flash cursor (defun wrap-region-paren () "Wraps the region in parens. Similar to pressing ( with the region active." @@ -226,7 +276,6 @@ Similar to pressing ( with the region active." (goto-char (+ end 1)) (insert ")") ))) -(global-set-key (kbd "M-(") 'wrap-region-paren) (defun zap-whitespace () "zaps the whitespace around the point in both directions" (interactive) @@ -238,7 +287,6 @@ Similar to pressing ( with the region active." (pop-mark) (goto-char (mark)) (pop-mark)) -(global-set-key (kbd "M-z") 'zap-whitespace) (defun wrap-sexp (&optional arg) "Wraps the following sexp in a pair of parens. Places inside the new pair, with prefix arg do the same backwards, pushing the @@ -250,39 +298,39 @@ mark. Does the same of ARG number sexps if given" (push-mark) (insert-pair -1 ?\( ?\))) (insert-pair 1 ?\( ?\)))) +(global-set-key (kbd "M-w") 'copy-region-as-kill) ;;make copying not flash cursor +(global-set-key (kbd "M-(") 'wrap-region-paren) +(global-set-key (kbd "M-z") 'zap-whitespace) (global-set-key (kbd "C-M-z") 'wrap-sexp) - ;;move buffers between windows in a convient way (require 'buffer-move) (global-set-key (kbd "C-x -") 'buf-move-right) - ;; quick window switching (global-set-key (kbd "M-o") 'other-window) - -;; save/restore window config -(setq current-saved-layout ?0) -(seq-do (lambda (number) - (let* ((string (int-to-string number)) - (char (string-to-char string)) - (key (kbd (concat "M-" string)))) - (global-unset-key key) - (global-set-key key (lambda () - (interactive) - (window-configuration-to-register current-saved-layout) - (unless (window-configuration-p (car (get-register char))) - (window-configuration-to-register char)) - (jump-to-register char) - (setq current-saved-layout char))))) - '(0 1 2 3 4 5 6 7 8 9)) - ;; get me a calculator (global-unset-key (kbd "M-c")) (global-set-key (kbd "M-c") 'calc) - -;; buffer kills (global-unset-key (kbd "M-k")) (global-set-key (kbd "M-k") 'kill-current-buffer) (global-set-key (kbd "M-K") 'kill-buffer-and-window) +(global-set-key (kbd "M-U") 'scroll-lock-mode) +(global-set-key (kbd "M-Q") 'auto-fill-mode) + +;; save/restore window config +;; (setq current-saved-layout ?0) +;; (seq-do (lambda (number) +;; (let* ((string (int-to-string number)) +;; (char (string-to-char string)) +;; (key (kbd (concat "M-" string)))) +;; (global-unset-key key) +;; (global-set-key key (lambda () +;; (interactive) +;; (window-configuration-to-register current-saved-layout) +;; (unless (window-configuration-p (car (get-register char))) +;; (window-configuration-to-register char)) +;; (jump-to-register char) +;; (setq current-saved-layout char))))) +;; '(0 1 2 3 4 5 6 7 8 9)) ;; latex stuff (require 'tex-mode) @@ -409,6 +457,10 @@ mark. Does the same of ARG number sexps if given" (add-hook 'prog-mode-hook (lambda () (modify-syntax-entry ?_ "w") )) +(add-hook 'dired-mode-hook (lambda () + (define-key evil-normal-state-local-map (kbd "C-o") + 'dired-display-file))) + ;;; sashka bindings ;; movement (defun evil-window-split-and-switch () @@ -451,7 +503,9 @@ mark. Does the same of ARG number sexps if given" (load-file "~/.emacs.d/coding-config.el") -;; (load-file "~/.emacs.d/single-header.el") +(load-file "~/.emacs.d/exwm-pref.el") + +(load-file "~/.emacs.d/single-header.el") (put 'dired-find-alternate-file 'disabled nil) (put 'upcase-region 'disabled nil) -- cgit v1.2.3