2026-02-05T22:56:10
This commit is contained in:
424
config.el
424
config.el
@@ -32,7 +32,25 @@
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'doom-one)
|
||||
;; (setq doom-theme 'doom-one)
|
||||
;; (setq doom-theme 'catppuccin)
|
||||
;; (setq doom-theme 'doom-palenight)
|
||||
;;
|
||||
;; (use-package evangelion-theme
|
||||
;; :custom
|
||||
;; ;; `nil' to disable background for comments
|
||||
;; (evangelion-comment-background-enabled . t)
|
||||
;; :config (load-theme 'evangelion t))
|
||||
;; (setq doom-theme 'evangelion)
|
||||
;;
|
||||
;; (use-package evangelion-theme
|
||||
;; :config (load-theme 'evangelion t))
|
||||
;; (evangelion-comment-background-enabled . t)
|
||||
;; (setq doom-theme 'evangelion)
|
||||
|
||||
(setq doom-theme 'doom-dracula)
|
||||
|
||||
(add-hook 'pdf-view-mode-hook (lambda () (pdf-view-themed-minor-mode t)))
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
@@ -40,7 +58,38 @@
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/org/")
|
||||
|
||||
;; either system-name or doom-system
|
||||
|
||||
(after! doom
|
||||
(if (eq 'linux (car doom-system))
|
||||
(if (eq 'wsl (cdr doom-system))
|
||||
(progn
|
||||
(setq org-directory "/mnt/c/Users/q669019/Bachelor/org/")
|
||||
(setq default-directory "/mnt/c/Users/q669019/Bachelor/")
|
||||
)
|
||||
(progn
|
||||
(setq org-directory "~/org/")
|
||||
(setq default-directory "~/org/")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; (if (eq 'linux (car doom-system))
|
||||
;; (if (eq 'wsl (cdr doom-system))
|
||||
;; (setq org-directory "/mnt/c/Users/q669019/Bachelor/org/")
|
||||
;; (setq org-directory "~/org/")))
|
||||
;;
|
||||
|
||||
;; (setq org-directory "~/org/")
|
||||
;;
|
||||
;; (setq default-directory "~/org/")
|
||||
|
||||
;; (setq default-directory "/mnt/c/Users/q669019/Bachelor/")
|
||||
|
||||
;; (setq org-directory "~/org/")
|
||||
;; (setq org-directory "/mnt/c/Users/q669019/Bachelor/org/")
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
@@ -129,7 +178,19 @@
|
||||
;; (after! lsp-mode
|
||||
;; (setq lsp-diagnostics-provider :flycheck))
|
||||
|
||||
(after! ispell
|
||||
(setq ispell-really-hunspell t
|
||||
ispell-program-name "hunspell"
|
||||
ispell-dictionary "en_US,de_DE")
|
||||
(ispell-set-spellchecker-params)
|
||||
(ispell-hunspell-add-multi-dic "en_US,de_DE"))
|
||||
|
||||
(use-package! flycheck)
|
||||
(use-package flycheck-languagetool
|
||||
:ensure t
|
||||
:hook (text-mode . flycheck-languagetool-setup)
|
||||
:init
|
||||
(setq flycheck-languagetool-server-jar "~/.languagetool-server.jar"))
|
||||
|
||||
(require 'ansi-color)
|
||||
(defun display-ansi-colors ()
|
||||
@@ -139,20 +200,12 @@
|
||||
(remove-hook 'org-mode-hook #'ws-butler-mode)
|
||||
(add-hook 'org-mode-hook (lambda () (ws-butler-mode -1)))
|
||||
|
||||
(use-package ox-typst
|
||||
:after org)
|
||||
(use-package! ox-typst
|
||||
:after ox)
|
||||
(require 'ox-typst)
|
||||
|
||||
|
||||
|
||||
;;(use-package! org-fragtog
|
||||
;; :after org
|
||||
;; :hook (org-mode . org-fragtog) ; this auto-enables it when you enter an org-buffer, remove if you do not want this
|
||||
;; :config
|
||||
;; ;; whatever you want
|
||||
;; )
|
||||
;; typst export:
|
||||
;; (use-package ox-typst
|
||||
;; :after org)
|
||||
;; (use-package! ox-typst
|
||||
;; :after ox)
|
||||
;; (require 'ox-typst)
|
||||
|
||||
(defun toggle-org-latex-preview-on-save ()
|
||||
(interactive)
|
||||
@@ -180,7 +233,6 @@
|
||||
(setq font-lock-maximum-decoration t))
|
||||
(add-hook 'org-mode-hook #'turn-on-font-lock)
|
||||
|
||||
|
||||
(menu-bar--display-line-numbers-mode-relative)
|
||||
|
||||
;; (setq org-preview-latex-default-process :imagemagick)
|
||||
@@ -221,7 +273,8 @@
|
||||
;; )
|
||||
;; )
|
||||
|
||||
|
||||
;; =============================
|
||||
;; TODO: Migrate this to snippet
|
||||
(defun org-insert-c-src()
|
||||
"Insert a C src block with a helper function to run it."
|
||||
(interactive)
|
||||
@@ -257,11 +310,70 @@
|
||||
|
||||
)
|
||||
)
|
||||
;; =============================
|
||||
|
||||
(use-package! org-roam-bibtex
|
||||
:after org-roam
|
||||
:config
|
||||
(require 'org-ref)) ; optional: if using Org-ref v2 or v3 citation links
|
||||
|
||||
(use-package! websocket
|
||||
:after org-roam)
|
||||
|
||||
(use-package! org-roam-ui
|
||||
:after org-roam ;; or :after org
|
||||
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
|
||||
;; a hookable mode anymore, you're advised to pick something yourself
|
||||
;; if you don't care about startup time, use
|
||||
;; :hook (after-init . org-roam-ui-mode)
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start t))
|
||||
|
||||
;; TODO: add if thingy like with org directory
|
||||
(use-package! citar
|
||||
:custom
|
||||
;;(org-cite-global-bibliography '("C:/Users/q669019/Bachelor/Bibliothek/Bibliothek.bib"))
|
||||
(org-cite-global-bibliography '("/mnt/c/Users/q669019/Bachelor/Literatur/Bibliothek/Bibliothek.bib"))
|
||||
;;(citar-bibliography '("C:/Users/q669019/Bachelor/Bibliothek/")))
|
||||
(citar-bibliography '("/mnt/c/Users/q669019/Bachelor/Literatur/Bibliothek/Bibliothek.bib")))
|
||||
|
||||
|
||||
|
||||
;; from https://pragmaticemacs.wordpress.com/2017/11/08/more-pdf-tools-tweaks/
|
||||
;; automatically annotate highlights
|
||||
(setq pdf-annot-activate-created-annotations t)
|
||||
;; more fine-grained zooming
|
||||
(setq pdf-view-resize-factor 1.1)
|
||||
;; keyboard shortcuts
|
||||
;;
|
||||
;;(define-key pdf-view-mode-map (kbd "h") 'pdf-annot-add-highlight-markup-annotation)
|
||||
;;;;(define-key pdf-view-mode-map (kbd "t") 'pdf-annot-add-text-annotation)
|
||||
;;;;(define-key pdf-view-mode-map (kbd "D") 'pdf-annot-delete)
|
||||
|
||||
;; (map! :map evil-normal-state-map "SPC i t" #'insert-current-date-time)
|
||||
(map! :after pdf-view
|
||||
:map pdf-view-mode-map
|
||||
:prefix "a"
|
||||
"h" #'pdf-annot-add-highlight-markup-annotation
|
||||
"t" #'pdf-annot-add-text-annotation
|
||||
"m" #'pdf-annot-add-markup-annotation
|
||||
"l" #'pdf-annot-list-annotations
|
||||
"D" #'pdf-annot-delete
|
||||
"a" #'pdf-annot-attachment-dired
|
||||
)
|
||||
;; (map! :map pdf-view-mode-map "a h" #'pdf-annot-add-highlight-markup-annotation)
|
||||
;; (map! :map pdf-view-mode-map "a t" #'pdf-annot-add-text-annotation)
|
||||
;; (map! :map pdf-view-mode-map "a D" #'pdf-annot-delete)
|
||||
;; (map! :map pdf-view-mode-map "a l" #'pdf-annot-list-annotations)
|
||||
;; (map! :map pdf-view-mode-map "a a" #'pdf-annot-attachment-dired)
|
||||
;; (map! :map pdf-view-mode-map "a m" #'pdf-annot-add-markup-annotation)
|
||||
|
||||
;; ====================
|
||||
;; insert date and time
|
||||
|
||||
;; maybe also snippet?
|
||||
(defvar current-date-time-format "%Y-%m-%dT%H:%M:%S"
|
||||
"Format of date to insert with `insert-current-date-time' func
|
||||
See help of `format-time-string' for possible replacements")
|
||||
@@ -289,6 +401,31 @@ Uses `current-date-time-format' for the formatting the date/time."
|
||||
;; (global-set-key "\C-c\C-t" 'insert-current-time)
|
||||
|
||||
(map! :map evil-normal-state-map "SPC i t" #'insert-current-date-time)
|
||||
|
||||
|
||||
;; ====================
|
||||
|
||||
;; =====================
|
||||
;; AI Stuff
|
||||
|
||||
(setq gptel-model 'gpt-5
|
||||
gptel-backend (gptel-make-gh-copilot "Copilot"
|
||||
))
|
||||
|
||||
|
||||
(defun my/gptel-url-retrieve(orig-fun url &rest args)
|
||||
"Advice to replace github.com with bmw.ghe.com in URLs for `gptel--url-retrieve`."
|
||||
(let ((modified-url (replace-regexp-in-string
|
||||
"[^\.]+\.com"
|
||||
"bmw\.ghe\.com"
|
||||
url)))
|
||||
(apply orig-fun modified-url args)))
|
||||
|
||||
;; Add the advice around gptel--url-retrieve
|
||||
(advice-add 'gptel--url-retrieve :around #'my/gptel-url-retrieve)
|
||||
;; (advice-add 'gptel-send :around #'my/gptel-url-retrieve)
|
||||
;; =====================
|
||||
|
||||
;; for image splash
|
||||
;; (setq fancy-splash-image (concat doom-private-dir "e.png"))
|
||||
|
||||
@@ -356,6 +493,111 @@ Uses `current-date-time-format' for the formatting the date/time."
|
||||
;; (cpp "https://github.com/tree-sitter/tree-sitter-cpp"))))
|
||||
|
||||
|
||||
(setq +latex-viewers '(pdf-tools))
|
||||
(setq lsp-tex-server 'texlab)
|
||||
;; (add-hook LaTeX-mode-hook #'xenops-mode)
|
||||
|
||||
|
||||
|
||||
(when (eq window-system 'w32)
|
||||
(setq tramp-use-ssh-controlmaster-options nil)
|
||||
(add-to-list 'tramp-connection-properties
|
||||
(list (regexp-quote "/ssh:")
|
||||
"login-args"
|
||||
'(("-tt") ("-l" "%u") ("-p" "%p") ("%c")
|
||||
("-e" "none") ("%h"))))
|
||||
)
|
||||
|
||||
|
||||
;;(load "./typing-speed.el")
|
||||
|
||||
|
||||
(after! tramp
|
||||
(setq tramp-default-method "ssh"
|
||||
tramp-use-ssh-controlmaster-options nil ; sometimes fixes Windows hangs
|
||||
tramp-verbose 6
|
||||
tramp-inline-compress-start-size 1000
|
||||
tramp-use-sh-file-name nil)) ; avoid weird /bin/sh resolution on Windows
|
||||
;; If your remote prompt is fancy, tighten prompt regexp:
|
||||
;;(setq tramp-shell-prompt-pattern "^[^#$%>\n]*[#$%>] *"))
|
||||
|
||||
|
||||
;; (let ((msys "C:/Users/q669019/Programs/msys2"))
|
||||
;; ;; Ensure MSYS2 userland tools (bash, ssh, etc.) are found
|
||||
;; (add-to-list 'exec-path (concat msys "/usr/bin"))
|
||||
;; (setenv "PATH" (concat msys "/usr/bin;" (getenv "PATH")))
|
||||
;; ;; Use bash, NOT ucrt64.exe
|
||||
;; (setq explicit-shell-file-name (concat msys "/usr/bin/bash.exe")
|
||||
;; shell-file-name explicit-shell-file-name)
|
||||
;; (setenv "SHELL" shell-file-name)
|
||||
;; ;; Make TRAMP use ssh (default, but force just in case)
|
||||
;; (setq tramp-default-method "ssh")
|
||||
;; ;; Hide flashing helper consoles
|
||||
;; (setq w32-start-process-show-window nil)
|
||||
;; )
|
||||
|
||||
(use-package! cypher-mode)
|
||||
(use-package! n4js)
|
||||
(setq n4js-cli-arguments '("-port" "7474"))
|
||||
(use-package! n4js)
|
||||
|
||||
(use-package ob-cypher
|
||||
:ensure t
|
||||
:config
|
||||
(add-to-list 'org-babel-load-languages '(cypher . t))
|
||||
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
|
||||
(add-to-list 'org-babel-tangle-lang-exts '("cypher" . "cypher")))
|
||||
|
||||
|
||||
|
||||
(defun org-insert-cypher-block()
|
||||
"Insert a cypher/ neo4j src block."
|
||||
(interactive)
|
||||
(progn
|
||||
(newline-and-indent)
|
||||
(insert "#+BEGIN_SRC cypher :port 7687 :file ./.png\n")
|
||||
(insert "#+END_SRC\n")
|
||||
(newline-and-indent)
|
||||
;;(insert "#+BEGIN_SRC sh :dir . :results output :exports both :var filename=(concat (org-get-heading t t t t) \".c\") output=(concat (org-get-heading t t t t) \".o\")\n# output=${filename%.*}.o\ngcc $filename -o $output\n./$output\n# ./$output <<EOF\n# input here\n# EOF\n#+END_SRC")
|
||||
;; (insert "#+END_SRC\n")
|
||||
;; (previous-line 3)
|
||||
(back-to-indentation)
|
||||
(search-backward ".png") ; point now at the '.' before png
|
||||
(evil-insert-state)
|
||||
)
|
||||
)
|
||||
|
||||
(with-eval-after-load 'ob-cypher
|
||||
(defvar ob-cypher-database "neo4j")
|
||||
|
||||
(advice-add
|
||||
'ob-cypher/query :around
|
||||
(lambda (_orig statement host port authstring)
|
||||
(let* ((statement (s-replace "\"" "\\\"" statement))
|
||||
(body (format
|
||||
"{\"statements\":[{\"statement\":\"%s\",\"resultDataContents\":[\"graph\",\"row\"]}]}"
|
||||
(s-join " " (s-lines statement))))
|
||||
(url (format "http://%s:%d/db/%s/tx/commit" host port ob-cypher-database))
|
||||
(tmp (org-babel-temp-file "cypher-curl-"))
|
||||
(auth-header (unless (string-empty-p authstring)
|
||||
(format "-H 'Authorization: Basic %s'" authstring)))
|
||||
(cmd (format
|
||||
"curl -s -H 'Accept: application/json; charset=UTF-8' -H 'Content-Type: application/json' %s -d@'%s' '%s'"
|
||||
(or auth-header "") tmp url)))
|
||||
(with-temp-file tmp (insert body))
|
||||
(shell-command-to-string cmd)))))
|
||||
|
||||
|
||||
|
||||
;; (use-package! company-org-block)
|
||||
(use-package company-org-block
|
||||
;; :ensure t
|
||||
;; :custom
|
||||
;; (company-org-block-edit-style 'auto) ;; 'auto, 'prompt, or 'inline
|
||||
:hook ((org-mode . (lambda ()
|
||||
(setq-local company-backends '(company-org-block))
|
||||
(company-mode +1)))))
|
||||
|
||||
;; for org blocks:
|
||||
(setq company-org-block-edit-style 'auto) ;; 'auto, 'prompt, or 'inline
|
||||
|
||||
@@ -422,27 +664,129 @@ Uses `current-date-time-format' for the formatting the date/time."
|
||||
|
||||
;; A starting point for a conservative, MISRA-friendly layout.
|
||||
;; CC Mode style approximating the example (Allman + 4 spaces + aligned args).
|
||||
(c-add-style
|
||||
"misra-allman"
|
||||
'("bsd"
|
||||
(c-basic-offset . 4)
|
||||
(indent-tabs-mode . nil)
|
||||
;; (c-add-style
|
||||
;; "misra-allman"
|
||||
;; '("bsd"
|
||||
;; (c-basic-offset . 4)
|
||||
;; (indent-tabs-mode . nil)
|
||||
;;
|
||||
;; ;; Make { for functions and control statements go on the next line when typing.
|
||||
;; ;; Note: this affects "on-the-fly" formatting; reindent won't move braces by itself.
|
||||
;; (c-hanging-braces-alist . ((defun-open before)
|
||||
;; (substatement-open before)))
|
||||
;;
|
||||
;; ;; Keep the brace itself not additionally indented relative to the if/for/while.
|
||||
;; ;; After-the-fact cleanup: turn "} else {" into "}\nelse\n{".
|
||||
;; (c-cleanup-list . (brace-else-brace)) ; key part for else placement
|
||||
;;
|
||||
;; (c-offsets-alist . ((statement-block-intro . +)
|
||||
;; (substatement-open . 0)
|
||||
;; (case-label . +)
|
||||
;; (statement-case-intro . +)
|
||||
;; (arglist-cont-nonempty . c-lineup-arglist)
|
||||
;; ;; Align wrapped function call/decl arguments under the first arg.
|
||||
;; (arglist-intro . +)
|
||||
;; (arglist-cont-nonempty . c-lineup-arglist)
|
||||
;; (arglist-close . 0)))))
|
||||
|
||||
;; Make { for functions and control statements go on the next line when typing.
|
||||
;; Note: this affects "on-the-fly" formatting; reindent won't move braces by itself.
|
||||
(c-hanging-braces-alist . ((defun-open before)
|
||||
(substatement-open before)))
|
||||
|
||||
;; Keep the brace itself not additionally indented relative to the if/for/while.
|
||||
;; After-the-fact cleanup: turn "} else {" into "}\nelse\n{".
|
||||
(c-cleanup-list . (brace-else-brace)) ; key part for else placement
|
||||
|
||||
(c-offsets-alist . ((statement-block-intro . +)
|
||||
(substatement-open . 0)
|
||||
(case-label . +)
|
||||
(statement-case-intro . +)
|
||||
(arglist-cont-nonempty . c-lineup-arglist)
|
||||
;; Align wrapped function call/decl arguments under the first arg.
|
||||
(arglist-intro . +)
|
||||
(arglist-cont-nonempty . c-lineup-arglist)
|
||||
(arglist-close . 0)))))
|
||||
|
||||
(with-eval-after-load 'ob-cypher
|
||||
;; Eigene Variante von org-babel-execute:cypher
|
||||
(defun my/org-babel-execute:cypher (body params)
|
||||
"Erweiterte Version von `org-babel-execute:cypher`.
|
||||
|
||||
Verhalten:
|
||||
- Mit :file und :result-type graph -> wie bisher: Graphviz/DOT.
|
||||
- Mit :file und :result-type json -> rohes JSON in Datei.
|
||||
(with-eval-after-load 'ob-cypher
|
||||
;; Erweiterte/ersetzte Variante von org-babel-execute:cypher
|
||||
(defun my/org-babel-execute:cypher (body params)
|
||||
Erweiterte Version von `org-babel-execute:cypher`.
|
||||
|
||||
Verhalten:
|
||||
- :result-type graph -> wie bisher: Graphviz/DOT, Datei wird von `dot` erzeugt.
|
||||
- :result-type json -> rohes JSON als String (Org schreibt es bei :file selber weg).
|
||||
- sonst (Standard) -> Tabelle per REST; mit :file als CSV-Text zurückgeben,
|
||||
den Org bei :results ... file in die Datei schreibt."
|
||||
(let* ((host (or (cdr (assoc :host params)) "127.0.0.1"))
|
||||
(port (or (cdr (assoc :port params)) 1337))
|
||||
(username (or (cdr (assoc :username params)) "neo4j"))
|
||||
(password (or (cdr (assoc :password params)) "neo4j"))
|
||||
(authstring (base64-encode-string (concat username ":" password)))
|
||||
(http-port (or (cdr (assoc :http-port params)) 7474))
|
||||
;; optionaler Header :result-type (eigene Erweiterung)
|
||||
(rt-raw (cdr (assoc :result-type params)))
|
||||
(result-type
|
||||
(cond
|
||||
((symbolp rt-raw) rt-raw)
|
||||
((stringp rt-raw) (intern (downcase rt-raw)))
|
||||
(t nil)))
|
||||
(file (cdr (assoc :file params)))
|
||||
(body (if (s-ends-with? ";" body) body (s-append ";" body))))
|
||||
(cond
|
||||
;; 1. Graphviz wie im Original (für Bilder/DOT-Ausgabe)
|
||||
((eq result-type 'graph)
|
||||
(unless file
|
||||
(user-error "Für :result-type graph musst du auch :file angeben"))
|
||||
;; erzeugt die Datei als Seiteneffekt, gibt nil zurück
|
||||
(ob-cypher/dot body host http-port file authstring))
|
||||
|
||||
;; 2. Rohes JSON (z.B. für Debug oder eigene Weiterverarbeitung)
|
||||
;; Bei :results ... file und :file <pfad> schreibt Org den String in die Datei.
|
||||
((eq result-type 'json)
|
||||
(ob-cypher/query body host http-port authstring))
|
||||
|
||||
;; 3. Standard: REST -> Tabelle; mit :file als CSV-Text
|
||||
(t
|
||||
(let ((tbl (ob-cypher/rest body host http-port authstring)))
|
||||
(if file
|
||||
(progn
|
||||
(require 'org-table)
|
||||
;; Wir liefern nur den CSV-String zurück.
|
||||
;; Org schreibt ihn bei :results ... file in `file`.
|
||||
(orgtbl-to-csv tbl nil))
|
||||
;; Kein :file -> Tabelle als normales Babel-Ergebnis
|
||||
tbl))))))
|
||||
|
||||
;; Originalfunktion vollständig übersteuern
|
||||
(advice-add 'org-babel-execute:cypher
|
||||
:override #'my/org-babel-execute:cypher))
|
||||
|
||||
(use-package org-mind-map
|
||||
:init
|
||||
(require 'ox-org)
|
||||
:ensure t
|
||||
;; Uncomment the below if 'ensure-system-packages` is installed
|
||||
;;:ensure-system-package (gvgen . graphviz)
|
||||
:config
|
||||
(setq org-mind-map-engine "dot") ; Default. Directed Graph
|
||||
;; (setq org-mind-map-engine "neato") ; Undirected Spring Graph
|
||||
;; (setq org-mind-map-engine "twopi") ; Radial Layout
|
||||
;; (setq org-mind-map-engine "fdp") ; Undirected Spring Force-Directed
|
||||
;; (setq org-mind-map-engine "sfdp") ; Multiscale version of fdp for the layout of large graphs
|
||||
;; (setq org-mind-map-engine "twopi") ; Radial layouts
|
||||
;; (setq org-mind-map-engine "circo") ; Circular Layout
|
||||
)
|
||||
(defalias 'first #'cl-first)
|
||||
|
||||
|
||||
|
||||
|
||||
(setq doom-snippets-dir (expand-file-name "doom-snippets/" doom-user-dir))
|
||||
(setq +snippets-dir (expand-file-name "private-snippets/" doom-user-dir))
|
||||
|
||||
|
||||
(use-package org-noter)
|
||||
|
||||
;; just like in pdf-view
|
||||
(map! :map evil-normal-state-map "SPC j m" #'jump-to-register)
|
||||
(map! :map evil-normal-state-map "SPC j M" #'point-to-register)
|
||||
|
||||
|
||||
;;(define-key map (kbd "'") 'pdf-view-jump-to-register)
|
||||
(map! :map pdf-view-mode-map "M" #'pdf-view-jump-to-register)
|
||||
|
||||
(map! :map evil-normal-state-map "SPC j n" #'evil-jump-forward)
|
||||
(map! :map evil-normal-state-map "SPC j N" #'evil-jump-backward)
|
||||
|
||||
Reference in New Issue
Block a user