Advertisement
froleyks

config.org

Dec 30th, 2020
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.01 KB | None | 0 0
  1. #+TITLE: doom
  2. * Personal Information
  3. ** Set full name
  4. #+begin_src elisp
  5. (setq user-full-name "Nils Froleyks")
  6. #+end_src
  7. ** Set email address
  8. #+begin_src elisp
  9. (setq user-mail-address "nfroleyks@gmail.com")
  10. #+end_src
  11. * Visual
  12. ** Font
  13. #+begin_src elisp
  14. (setq doom-font (font-spec :family "Source Code Pro" :size 18 :weight 'semi-light)
  15. ;; doom-variable-pitch-font (font-spec :family "sans" :size 20)
  16. )
  17. #+end_src
  18. ** line numbers
  19. #+begin_src elisp
  20. (setq display-line-numbers-type 'visual)
  21. (global-display-line-numbers-mode)
  22. #+end_src
  23. * Keybindings
  24. ** Delete last word
  25. #+begin_src elisp
  26. (map! :nivr "M-v" 'backward-kill-word)
  27. (map! :after ivy :map ivy-minibuffer-map "M-v" 'backward-kill-word)
  28. (map! :after evil-vars :map evil-ex-search-keymap "M-v" 'backward-kill-word)
  29. #+end_src
  30. ** global help
  31. #+begin_src elisp
  32. (map! [C-f1] 'helpful-key)
  33. #+end_src
  34. ** goto mark
  35. #+begin_src elisp
  36. (map! :n "j" 'evil-goto-mark)
  37. #+end_src
  38. ** window
  39. #+begin_src elisp
  40. (map! :after evil-commands :leader
  41. "wl" 'evil-window-up
  42. "wa" 'evil-window-down
  43. "wi" 'evil-window-left
  44. "we" 'evil-window-right
  45. )
  46. #+end_src
  47. ** gedankenstrich move up
  48. #+begin_src elisp
  49. (map! :after evil-commands :n "−" 'evil-previous-line-first-non-blank)
  50. #+end_src
  51. ** last macro
  52. #+begin_src elisp
  53. (map! :n "Q" (kbd"@@"))
  54. #+end_src
  55. ** undo
  56. #+begin_src elisp
  57. (map! :after evil-commands
  58. :n "U" 'evil-redo
  59. :nivr "C-n" 'undo-fu-only-undo
  60. )
  61. #+end_src
  62. ** open frame other buffer
  63. #+begin_src elisp
  64. (map! :leader "bo" 'display-buffer-other-frame)
  65. #+end_src
  66. ** line numbers visual
  67. #+begin_src elisp
  68. (map! :leader "tv" 'menu-bar--display-line-numbers-mode-visual)
  69. #+end_src
  70. ** surround
  71. #+begin_src elisp
  72. (map! :after evil-surround :mode evil-surround-mode
  73. :n "S" 'evil-surround-region
  74. :v "s" 'evil-surround-region
  75. :v "S" 'evil-Surround-region
  76. )
  77. #+end_src
  78. ** multiple cursor
  79. #+begin_src elisp
  80. (map! :nv "H" 'evil-mc-make-all-cursors)
  81. #+end_src
  82. * General
  83. ** Narrow to an indirect buffer
  84. #+begin_src elisp
  85. (after! evil-commands
  86. (map! :nv "h" 'evil-narrow-op)
  87. (evil-define-operator evil-narrow-op (beg end type)
  88. "Evil indirect *narrow* operator."
  89. (interactive "<R>")
  90. (deactivate-mark)
  91. (let ((buf (clone-indirect-buffer nil nil)))
  92. (with-current-buffer buf
  93. (narrow-to-region beg end))
  94. (switch-to-buffer buf))))
  95. #+end_src
  96. ** ivy
  97. #+begin_src elisp
  98. (use-package! ivy
  99. :bind (:map ivy-minibuffer-map
  100. ("C-e" . ivy-unmark)
  101. ("M-e" . ivy-mark)
  102. ("M-n" . ivy-absolute-path)
  103. ("M-r" . ivy-relative-path)
  104. ("(" . ivy-dispatching-call)
  105. )
  106. :custom
  107. (counsel-find-file-ignore-regexp nil) ;show all files
  108. :config
  109. (defun ivy-relative-path ()
  110. (interactive)
  111. (ivy-exit-with-action
  112. (lambda (path) (with-ivy-window (insert (file-relative-name path default-directory))))
  113. ))
  114. (defun ivy-absolute-path ()
  115. (interactive)
  116. (ivy-exit-with-action
  117. (lambda (path) (with-ivy-window (insert path)))
  118. ))
  119. )
  120. #+end_src
  121. ** backup
  122. #+begin_src elisp
  123. (map! :leader "gv" 'visit-backup)
  124. (add-hook 'after-save-hook 'backup-each-save)
  125. (use-package! backup-each-save
  126. :commands backup-each-save visit-backup
  127. :custom
  128. (backup-each-save-mirror-location "~/emacs/save")
  129. :config
  130. (defun visit-backup ()
  131. (interactive)
  132. (counsel-find-file (concat "~/emacs/save" default-directory))
  133. )
  134. )
  135. #+end_src
  136. ** jump history
  137. #+begin_src elisp
  138. (use-package! better-jumper
  139. :defer t
  140. :config
  141. (defun my-jump-advice (oldfun &rest args)
  142. (let ((old-pos (point)))
  143. (apply oldfun args)
  144. (when (> (abs (- (line-number-at-pos old-pos)
  145. (line-number-at-pos (point)))) 5)
  146. (save-excursion
  147. (goto-char old-pos)
  148. (evil-set-jump)))))
  149.  
  150. (advice-add 'evil-next-line :around #'my-jump-advice)
  151. (advice-add 'evil-previous-line :around #'my-jump-advice)
  152. )
  153. #+end_src
  154. ** evil mark
  155. *** default markers
  156. #+begin_src elisp
  157. (after! evil-commands
  158. (setq alist (default-value 'evil-markers-alist))
  159.  
  160. (evil-add-to-alist 'alist ?C '("/home/froleyks/.config/doom/config.org" . 116))
  161.  
  162. (setq-default evil-markers-alist alist)
  163. )
  164. #+end_src
  165. *** disable visit again question and bugfix
  166. #+begin_src elisp
  167. (evil-define-command evil-goto-mark (char &optional noerror)
  168. "Go to the marker specified by CHAR."
  169. :keep-visual t
  170. :repeat nil
  171. :type exclusive
  172. (interactive (list (read-char)))
  173. (let ((marker (evil-get-marker char)))
  174. (cond
  175. ((markerp marker)
  176. (switch-to-buffer (marker-buffer marker))
  177. (goto-char (marker-position marker)))
  178. ((numberp marker)
  179. (goto-char marker))
  180. ((consp marker)
  181. (when (or (and (find-buffer-visiting (car marker))
  182. (switch-to-buffer (find-buffer-visiting (car marker)) )
  183. )
  184. (and ;; (y-or-n-p (format "Visit file %s again? "
  185. ;; (car marker)))
  186. (find-file (car marker))))
  187. (goto-char (cdr marker))))
  188. ((not noerror)
  189. (user-error "Marker `%c' is not set%s" char
  190. (if (evil-global-marker-p char) ""
  191. " in this buffer"))))))
  192. #+end_src
  193. ** avy keys
  194. #+begin_src elisp
  195. (after! avy
  196. (setq avy-keys '(?n ?e ?r ?a ?t ?i ?d ?u ?s ?o))
  197. (setq avy-dispatch-alist '(
  198. (?x . avy-action-kill-move)
  199. (?X . avy-action-kill-stay)
  200. (?p . avy-action-teleport)
  201. (?m . avy-action-mark)
  202. (?c . avy-action-copy)
  203. (?y . avy-action-yank)
  204. (?Y . avy-action-yank-line)
  205. (?w . avy-action-ispell)
  206. (?z . avy-action-zap-to-char)
  207. ))
  208. )
  209. #+end_src
  210. ** linenumbers everywhere
  211. #+begin_src elisp
  212. ;; (add-hook 'dired-mode-hook
  213. ;; 'doom/toggle-line-numbers)
  214. #+end_src
  215. * Utility
  216. ** hippie expand
  217. #+begin_src elisp
  218. (map! :nivr "C-e" 'hippie-expand)
  219. #+end_src
  220. ** rotate text
  221. #+begin_src elisp
  222. (map! :n
  223. "ö" 'froleyks-search-rotate-backward
  224. "ä" 'froleyks-search-rotate
  225. )
  226. (use-package! rotate-text
  227. :defer t
  228. :commands (froleyks-search-rotate froleyks-search-rotate-backward)
  229. :init
  230. :config
  231. (defun froleyks-search-rotate()
  232. (interactive)
  233. (search-forward-regexp "\\(\\+\\|-\\)?[0-9]+\\(\\.[0-9]+\\)?\\|true\\|false\\|first\\|second\\|yes\\|no\\|nil\\|t" nil t)
  234. (call-interactively 'rotate-text)
  235. (evil-backward-WORD-begin)
  236. )
  237.  
  238. (defun froleyks-search-rotate-backward()
  239. (interactive)
  240. (search-forward-regexp "\\(\\+\\|-\\)?[0-9]+\\(\\.[0-9]+\\)?\\|true\\|false\\|first\\|second\\|yes\\|no\\|nil\\|t" nil t)
  241. (call-interactively 'rotate-text-backward)
  242. (evil-backward-WORD-begin)
  243. )
  244.  
  245. ;; override function to keep width
  246. (defun rotate-text-increment-number (original arg &optional minimum)
  247. (let ((l (length original)))
  248. (format (concat "%0" (number-to-string l) "d" )(max (+ (string-to-number original) arg)
  249. (or minimum most-negative-fixnum)))))
  250.  
  251. (setq rotate-text-words (append rotate-text-words '(
  252. ("True" "False")
  253. ("nil" "t")
  254. ("true" "false")
  255. ("first" "second")
  256. ("yes" "no")
  257. ))))
  258. #+end_src
  259. ** temp files
  260. #+begin_src elisp
  261. (after! counsel
  262. (map! :leader "d" 'open-temp-file)
  263. (defun open-temp-file()
  264. (interactive)
  265. (counsel-find-file "~/temp/temp.")
  266. ))
  267. #+end_src
  268. ** escape saves and exits
  269. #+begin_src elisp
  270. (defadvice! save-on-escape (&rest _)
  271. :before #'evil-force-normal-state
  272. (when (or
  273. (buffer-narrowed-p)
  274. (buffer-file-name)
  275. (string-match-p (regexp-quote "Org Src") (buffer-name))
  276. )
  277. (save-buffer))
  278. (when (buffer-narrowed-p)
  279. (kill-current-buffer))
  280. )
  281. #+end_src
  282. ** evil snipe
  283. #+begin_src elisp
  284. (use-package! evil-snipe
  285. :defer t
  286. :init
  287. (setq evil-snipe-override-evil-repeat-keys nil)
  288. :custom
  289. (evil-snipe-scope 'buffer)
  290. :config
  291. (evil-snipe-mode -1)
  292. (map!
  293. :nv "," 'evil-snipe-repeat
  294. :nv "–" 'evil-snipe-repeat-reverse
  295. :nv "l" 'evil-snipe-s
  296. :nv "L" 'evil-snipe-S
  297. (:map evil-snipe-parent-transient-map
  298. "," 'evil-snipe-repeat
  299. "–" 'evil-snipe-repeat-reverse
  300. )))
  301. #+end_src
  302. ** create body
  303. #+begin_src elisp
  304. (map! "M-o" 'create-body)
  305. (defun create-body()
  306. (interactive)
  307. (end-of-line)
  308. (backward-char)
  309. (newline-and-indent)
  310. (evil-open-above 1)
  311. )
  312. #+end_src
  313. ** Line manipulation
  314. #+begin_src elisp
  315. (map! :leader
  316. "L" '(:ignore t :which-key "Line manipulation")
  317. (:prefix "L"
  318. "e" 'flush-empty-lines
  319. "f" 'flush-lines
  320. "k" 'keep-lines
  321. "d" 'remove-dubplicate-lines
  322. "u" 'unique-lines
  323. ))
  324. (use-package! replace
  325. :commands (flush-empty-lines remove-dubplicate-lines unique-lines)
  326. :config
  327. (defun unique-lines ()
  328. (interactive)
  329. (evil-ex "%sort u")
  330. )
  331. (defun flush-empty-lines ()
  332. "removes empty lines from files"
  333. (interactive)
  334. (flush-lines "^$")
  335. )
  336. (defun remove-dubplicate-lines ()
  337. "removes duplicate lines form file"
  338. (interactive)
  339. (replace-regexp "\\([^\n]+\n\\)\\1+" "\\1")
  340. ))
  341. #+end_src
  342. ** pastebin
  343. #+begin_src elisp
  344. (map! :leader
  345. "BB" 'pastebin-new
  346. "BR" 'pastebin-raw
  347. "BL" 'pastebin-list-buffer-refresh
  348. )
  349.  
  350. (use-package! neopastebin
  351. :defer t
  352. :commands
  353. pastebin-new
  354. pastebin-raw
  355. pastebin-list-buffer-refresh
  356. :config
  357. (pastebin-create-login :dev-key "b05fe24db6a4bca168b463b3fa777bfa"
  358. :username "froleyks"
  359. :password "shinigami"
  360. )
  361. (defun pastebin-raw ()
  362. (interactive)
  363. (call-interactively 'pastebin-new)
  364. )
  365. )
  366. #+END_SRC
  367. #+end_src
  368. ** open nautilus
  369. #+begin_src elisp
  370. (map! :leader "fd" 'open-explorer)
  371. (defun open-explorer ()
  372. (interactive)
  373. (call "nautilus .&"))
  374. #+end_src
  375. ** Search Engine
  376. #+begin_src elisp
  377. (map! :leader
  378. "sg" 'engine/search-google
  379. "sG" 'engine/search-scholar
  380. "sc" 'engine/search-cpp
  381. "se" 'engine/search-linguee
  382. "sh" 'engine/search-github
  383. "sE" 'engine/search-deepl
  384. )
  385.  
  386. (use-package! engine-mode
  387. :defer t
  388. :commands (engine/search-google
  389. engine/search-scholar
  390. engine/search-cpp
  391. engine/search-linguee
  392. engine/search-deepl
  393. engine/search-github
  394. )
  395. :config
  396. (defengine google
  397. "https://www.google.com/search?q=%s")
  398. (defengine scholar
  399. "https://scholar.google.de/scholar?hl=de&q=%s&btnG=&lr=")
  400. (defengine cpp
  401. "https://en.cppreference.com/mwiki/index.php?title=Special%%3ASearch&search=%s")
  402. (defengine linguee
  403. "http://www.linguee.de/deutsch-englisch/search?source=auto&query=%s")
  404. (defengine deepl
  405. "https://www.deepl.com/en/translator#de/en/%s")
  406. (defengine github
  407. "https://github.com/search?q=%s&type=code")
  408. )
  409. #+end_src
  410. ** spelling
  411. #+begin_src elisp
  412. (map! :map flyspell-mode-map
  413. :nvir "M-n" 'flyspell-auto-correct-previous-word
  414. :nvir "M-C-n" 'flyspell-correct-previous
  415. :leader "tS" 'vale-now
  416. :leader "tc" 'langtool-check
  417. :leader "tC" 'langtool-correct-buffer
  418. :leader "oP" 'academic-phrases
  419. )
  420.  
  421. (use-package! ispell :defer t :config
  422. (setenv "LANG" "en_US")
  423. (setq ispell-program-name "hunspell")
  424. (setq ispell-dictionary "de_DE,en_US")
  425. (add-to-list 'ispell-dictionary-alist '("de_DE,en_US"))
  426. (ispell-set-spellchecker-params)
  427. (ispell-hunspell-add-multi-dic "de_DE,en_US")
  428. (setq ispell-personal-dictionary "~/emacs/dictionary")
  429. (unless (file-exists-p ispell-personal-dictionary)
  430. (write-region "" nil ispell-personal-dictionary nil 0))
  431. )
  432.  
  433. (use-package! langtool
  434. :defer t
  435. :commands (langtool-check
  436. langtool-check-done
  437. langtool-show-message-at-point
  438. langtool-correct-buffer)
  439. :delight
  440. :custom
  441. (langtool-default-language "en")
  442. )
  443.  
  444. (use-package! academic-phrases
  445. :commands academic-phrases academic-phrases-by-section)
  446.  
  447. (use-package! flycheck-vale
  448. :commands vale-now
  449. :after flycheck
  450. :hook (flycheck-mode . flycheck-vale-setup)
  451. :config
  452. (flycheck-add-next-checker 'proselint 'vale t)
  453. (flycheck-add-mode 'vale 'latex-mode)
  454. (flycheck-add-mode 'vale 'org-mode)
  455. (defun vale-now()
  456. (interactive)
  457. (flycheck-vale-toggle-enabled)
  458. (flycheck-buffer)
  459. )
  460. )
  461. #+end_src
  462. * Mode
  463. ** Org
  464. *** keybindgs
  465. #+begin_src elisp
  466. (map! :leader
  467. "oo" 'org-agenda-list
  468. "on" 'org-brain-capture
  469. "ot" 'org-todo-list)
  470. (map! :after org-agenda
  471. :map org-agenda-keymap
  472. "ö" 'org-agenda-earlier
  473. "ä" 'org-agenda-later
  474. )
  475. (use-package! org
  476. :commands org-brain-capture
  477. :config
  478. (add-to-list 'org-capture-templates
  479. '("b" "brain" entry (file "~/org/brain.org")
  480. "* %?%i\n %U %a"))
  481. (defun org-brain-capture ()
  482. (interactive)
  483. (org-capture nil "b")
  484. (evil-insert 1)
  485. ))
  486. #+end_src
  487. *** Visual
  488. #+begin_src elisp
  489. (use-package! org
  490. :defer t
  491. :custom
  492. (org-startup-folded t)
  493. (org-ellipsis " ▾")
  494. ;; (org-superstar-headline-bullets-list '("◉" "○" "●" "○" "●" "○" "●"))
  495. ;; (org-superstar-item-bullet-alist
  496. ;; '((?+ . ?+)
  497. ;; (?* . ?⏭)
  498. ;; (?- . ?•)))
  499. )
  500. #+end_src
  501. *** Export
  502. **** keybindings
  503. #+begin_src elisp
  504. (map! :map org-mode-map
  505. :leader "e" 'org-ctrl-c-ctrl-c
  506. :leader "E" 'org-latex-export-to-pdf
  507. )
  508. #+end_src
  509. **** settings
  510. #+begin_src elisp
  511. (use-package! ox
  512. :defer t
  513. :custom
  514. (org-export-in-background t)
  515. (org-export-time-stamp-file t)
  516. (org-export-show-temporary-export-buffer t)
  517. (org-export-with-priority nil)
  518. (org-export-headline-levels 3)
  519. (org-export-with-author nil)
  520. (org-export-with-title nil)
  521. (org-export-with-todo-keywords nil)
  522. (org-export-with-creator nil)
  523. (org-export-creator-string "Formal Models and Verification - JKU")
  524. (org-export-with-date t)
  525. (org-export-dispatch-use-expert-ui nil)
  526. (org-export-with-timestamps t)
  527. (org-export-preserve-breaks nil)
  528. (org-export-with-broken-links 'mark)
  529. (org-export-with-tasks nil)
  530. (org-export-with-section-numbers t)
  531. (org-export-with-email t)
  532. ;; (org-export-with-archived-trees )
  533. (org-export-with-smart-quotes t)
  534. (org-export-with-special-strings t)
  535. (org-export-with-properties t)
  536. (org-export-with-toc nil)
  537. ;; (org-export-before-parsing-hook )
  538. (org-export-with-tags t)
  539. (org-export-with-latex t)
  540. (org-export-use-babel t)
  541. (org-export-with-tables t)
  542. (org-export-with-clocks t)
  543. (org-export-date-timestamp-format "%Y-%m-%d %A %H:%M")
  544. (org-export-with-planning nil)
  545. (org-export-async-debug t)
  546. (org-export-with-fixed-width t)
  547. (org-export-with-entities t)
  548. (org-export-with-emphasize t)
  549. (org-export-with-sub-superscripts t)
  550. (org-export-with-statistics-cookies nil)
  551. (org-export-allow-bind-keywords t)
  552. :config
  553. (setq org-tag-alist '(
  554. ("noexport" . ?n)
  555. ("ignore" . ?i)
  556. ))
  557.  
  558. (setq org-export-snippet-translation-alist '(
  559. ("l" . "latex")
  560. ))
  561. )
  562. (use-package! ox-extra
  563. :after ox
  564. :config
  565. (ox-extras-activate '(latex-header-blocks ignore-headlines))
  566. )
  567. #+end_src
  568. **** functions
  569. #+begin_src elisp
  570. (use-package! ox
  571. :defer t
  572. :commands
  573. key
  574. link
  575. head
  576. from
  577. :config
  578.  
  579. (defun key (keyword &optional delimiter)
  580. (unless delimiter (setq delimiter " "))
  581. (mapconcat 'car (org-element-map
  582. (org-element-parse-buffer)
  583. '(keyword)
  584. (lambda (x) (if (string= (upcase keyword) (org-element-property :key x))
  585. (list (org-element-property :value x)) )
  586. )
  587. ) delimiter))
  588.  
  589. (defun link (linkString)
  590. (save-excursion
  591. (search-backward (concat "[" linkString "]]"))
  592. (search-backward "[")
  593. (search-forward ":")
  594. (let ((begin (point)))
  595. (search-forward "]")
  596. (forward-char -1)
  597. (buffer-substring-no-properties begin (point))
  598. )))
  599.  
  600. (defun head () (save-excursion
  601. (search-backward-regexp "^\\* ")
  602. (evil-forward-word-begin)
  603. (buffer-substring-no-properties (point) (point-at-eol))
  604. ))
  605.  
  606. (defun from (table key)
  607. (mapconcat (lambda (x) (if (string= (pop x) key) (mapconcat 'identity x " | ") "")) table ""))
  608.  
  609. )
  610. #+end_src
  611. **** special functions
  612. #+begin_src elisp
  613. (use-package! ox
  614. :defer t
  615. :commands
  616. graph
  617. :config
  618. (defun graph ()
  619. (save-excursion
  620. (search-backward "*")
  621. (evil-forward-word-begin)
  622. (setq drawGraphName (buffer-substring-no-properties (point) (point-at-eol)))
  623. (evil-next-line-first-non-blank)
  624. ;; (if (string= (thing-at-point 'line t) "#+begin_src txt :exports none\n")
  625. (evil-next-line-first-non-blank)
  626. ;; (spacemacs/insert-line-above-no-indent 1)
  627. ;; (evil-previous-line-first-non-blank)
  628. ;; (insert "#+begin_src txt :exports none")
  629. ;; (evil-next-line-first-non-blank)
  630. ;; )
  631. (let ((begin (point)))
  632. (search-forward "(graph)")
  633. (evil-previous-line-first-non-blank)
  634. ;; (if (string= (thing-at-point 'line t) "#+end_src\n")
  635. (previous-line)
  636. ;; (spacemacs/insert-line-below-no-indent 1)
  637. ;; (evil-next-line-first-non-blank)
  638. ;; (insert "#+end_src")
  639. ;; (evil-previous-line-first-non-blank)
  640. ;; )
  641. (setq drawGraph (buffer-substring-no-properties begin (point-at-eol)))
  642. )
  643. (concat drawGraph (concat "\nname: " (replace-regexp-in-string " " "_" (replace-regexp-in-string " *:.*" "" drawGraphName))))
  644. )
  645. )
  646. )
  647. #+end_src
  648. **** markup =_/
  649. #+begin_src elisp
  650. (use-package! ox
  651. :defer t
  652. :custom
  653. (org-latex-text-markup-alist '(
  654. (bold . "\\textbf{%s}")
  655. (code . protectedtexttt)
  656. (italic . "\\emph{%s}")
  657. (strike-through . "\\sout{%s}")
  658. (underline . "\\uline{%s}")
  659. (verbatim . "\\textsc{%s}")
  660. ))
  661. )
  662. #+end_src
  663. **** only and visible enviroment for beamer
  664. #+begin_src elisp
  665. (use-package! ox-beamer
  666. :defer t
  667. :config
  668. (add-to-list 'org-beamer-environments-extra
  669. '("onlyenv" "O" "\\begin{onlyenv}%a" "\\end{onlyenv}"))
  670. (add-to-list 'org-beamer-environments-extra
  671. '("visibleenv" "V" "\\begin{visibleenv}%a" "\\end{visibleenv}"))
  672. (add-to-list 'org-beamer-environments-extra
  673. '("overlayarea" "S" "\\begin{overlayarea}%a" "\\end{overlayarea}"))
  674. )
  675. #+end_src
  676. **** babel
  677. #+begin_src elisp
  678. (use-package! ox
  679. :defer t
  680. :commands evalBlock pick-date
  681. :custom
  682. (org-confirm-babel-evaluate nil)
  683. (org-babel-default-header-args '(
  684. (:eval . "never-export")
  685. (:noweb . "yes")
  686. (:session . "none")
  687. (:results . "replace")
  688. (:exports . "code")
  689. (:cache . "no")
  690. (:hlines . "no")
  691. (:tangle . "no")
  692. ))
  693. :config
  694. (add-hook 'org-export-before-processing-hook #'org-babel-tangle)
  695. (org-babel-do-load-languages
  696. 'org-babel-load-languages
  697. '(
  698. (emacs-lisp . t)
  699. (latex . t)
  700. (shell . t)
  701. (python . t)
  702. (dot . t)
  703. ))
  704.  
  705. (defun evalBlock (name)
  706. (save-excursion
  707. (org-babel-goto-named-src-block name)
  708. (org-babel-execute-src-block)))
  709.  
  710. (defun pick-date ()
  711. (org-format-time-string "%Y-%m-%d %A"
  712. (org-read-date nil t)
  713. ))
  714. )
  715. #+end_src
  716. **** export to multiple pdfs
  717. #+begin_src elisp
  718. (use-package! ox
  719. :commands org-export-headlines-to-pdf
  720. :config
  721. (defun org-export-headlines-to-pdf ()
  722. "Export all subtrees that are *not* tagged with :noexport: to
  723. separate files.
  724.  
  725. Subtrees that do not have the :EXPORT_FILE_NAME: property set
  726. are exported to a filename derived from the headline text."
  727. (interactive)
  728. (save-buffer)
  729. (let (
  730. (modifiedp (buffer-modified-p))
  731. ;; (pdfs "pdfs")
  732. (pdfs "")
  733. )
  734. (unless (or (string= pdfs "") (file-exists-p pdfs))
  735. (make-directory pdfs))
  736. (save-excursion
  737. (goto-char (point-min))
  738. (goto-char (re-search-forward "^*"))
  739. (set-mark (line-beginning-position))
  740. (goto-char (point-max))
  741. (org-map-entries
  742. (lambda ()
  743. (let ((export-file (org-entry-get (point) "EXPORT_FILE_NAME")))
  744. (unless export-file
  745. (org-set-property
  746. "EXPORT_FILE_NAME"
  747. (concat pdfs (if (string= pdfs "") "" "/") (replace-regexp-in-string "," ""
  748. (replace-regexp-in-string " " "_" (nth 4 (org-heading-components)))))
  749. ))
  750. (deactivate-mark)
  751. (org-latex-export-to-pdf nil t)
  752. (unless export-file (org-delete-property "EXPORT_FILE_NAME"))
  753. (set-buffer-modified-p modifiedp)))
  754. "-noexport" 'region-start-level))
  755. (shell-command (concat "find " pdfs " -type f -name \"*.tex\" -delete"))
  756. )))
  757. #+end_src
  758. **** align tables after executing code blocs
  759. #+begin_src elisp
  760. (defadvice! format-table-execute (&rest _)
  761. :after #'org-babel-execute-buffer
  762. (org-table-map-tables 'org-table-align)
  763. )
  764. #+end_src
  765. **** edit ipe
  766. #+begin_src elisp
  767. (map! :leader :map org-mode-map "oi" 'editIpe)
  768. (use-package! ox
  769. :defer t
  770. :commands editIpe
  771. :config
  772. (defun editIpe()
  773. (interactive)
  774. (save-excursion
  775. (forward-char 1)
  776. (search-backward "[")
  777. (search-forward ":")
  778. (shell-command (concat "ipe " (let ((a (point)))
  779. (search-forward "]")
  780. (backward-char 1)
  781. (buffer-substring-no-properties a (point))
  782. ))))))
  783. #+end_src
  784. **** goto block
  785. #+begin_src elisp
  786. (map! :map org-mode-map :n "gb" 'gotoBlock)
  787. (use-package! org
  788. :defer t
  789. :commands gotoBlock
  790. :config
  791. (defun gotoBlock ()
  792. (interactive)
  793. (evil-first-non-blank)
  794. (evil-forward-WORD-begin)
  795. (when (string= "" (thing-at-point 'word t)))
  796. (search-forward (concat "#+name: "(thing-at-point 'word t)) )
  797. ))
  798. #+end_src
  799. **** library of babel
  800. #+begin_src elisp
  801. (use-package! ox
  802. :defer t
  803. :config
  804. (org-babel-lob-ingest "~/emacs/babel.org")
  805. )
  806. #+end_src
  807. **** view pdf
  808. #+begin_src elisp
  809. (use-package org-pdftools
  810. :hook (org-mode . org-pdftools-setup-link))
  811. (use-package! ox
  812. :defer t
  813. :config
  814. (map! :mode org-mode :leader "ov" 'org-pdf-view)
  815. (defun org-pdf-view ()
  816. (interactive)
  817. (let ((pdf (replace-regexp-in-string ".org" ".pdf" (buffer-file-name)) ))
  818. (find-file pdf)
  819. ))
  820. )
  821. #+end_src
  822. **** tags export bold
  823. #+begin_src elisp
  824. (use-package ox-latex
  825. :defer t
  826. :config
  827. (defun org-latex-format-headline-default-function
  828. (todo _todo-type priority text tags _info)
  829. "Default format function for a headline.
  830. See `org-latex-format-headline-function' for details."
  831. (concat
  832. (and todo (format "{\\bfseries\\sffamily %s} " todo))
  833. (and priority (format "\\framebox{\\#%c} " priority))
  834. text
  835. (and tags
  836. (format "\\hfill{}\\textbf{%s}"
  837. (mapconcat #'org-latex--protect-text tags ":")))))
  838. )
  839. #+end_src
  840. ** dired
  841. *** keybindings
  842. #+begin_src elisp
  843. (map! :after dired
  844. :map dired-mode-map
  845. :n "s" 'dired-mark
  846. :n "m" 'evil-set-marker
  847. :n "j" 'evil-goto-mark
  848. :n "q" 'evil-record-macro
  849. )
  850. #+end_src
  851. ** elisp
  852. *** asynce shell
  853. #+begin_src elisp
  854. (defun call (cmd)
  855. (call-process-shell-command cmd nil 0)
  856. )
  857. #+end_src
  858. *** command by key
  859. #+begin_src elisp
  860. (map! :leader "hK" 'insertCommandByKey)
  861. (use-package! help :commands insertCommandByKey
  862. :config
  863. (defun insertCommandByKey ()
  864. (interactive)
  865. (insert (replace-regexp-in-string ".*runs the command " ""
  866. (call-interactively 'describe-key-briefly)))))
  867. #+end_src
  868. *** macro to lisp
  869. #+begin_src elisp
  870. (map! :leader "im" 'macroToLisp)
  871. (use-package! kmacro :commands macroToLisp
  872. :config
  873. (defun macroToLisp()
  874. (interactive)
  875. (name-last-kbd-macro (intern "tolisp"))
  876. (evil-open-below 1)
  877. (insert (concat "(execute-kbd-macro "
  878. (with-temp-buffer
  879. (insert-kbd-macro (intern-soft "tolisp"))
  880. (goto-char (point-min))
  881. (search-forward "[")
  882. (let ((a (- (point) 1)))
  883. (search-forward "]")
  884. (buffer-substring-no-properties a (point))
  885. )
  886. )")" ))
  887. (evil-normal-state)
  888. (evil-first-non-blank)
  889. ) )
  890. #+end_src
  891. *** run on buffer copy
  892. #+begin_src elisp
  893. (use-package! kmacro :commands runOnBuffer
  894. :config
  895. (defun runOnBuffer (macro &optional try)
  896. "Edits string and returns it"
  897. (clipboard-kill-ring-save (point-min) (point))
  898. (let ((this-buffer (buffer-name))
  899. (buffy "*edit-string*"))
  900. (save-excursion
  901. (switch-to-buffer buffy)
  902. (set-buffer buffy)
  903. (erase-buffer)
  904. (yank)
  905. (funcall macro)
  906. ;; (setq new-value (buffer-substring-no-properties (point-min) (point-max)))
  907. (setq new-value (thing-at-point 'line t))
  908. (unless try
  909. (kill-buffer buffy)
  910. (switch-to-buffer this-buffer)
  911. )
  912. new-value))))
  913. #+end_src
  914. *** eval and replace
  915. #+begin_src elisp
  916. (map! :leader "iR" 'eval-and-replace)
  917. (use-package! elisp-mode
  918. :commands eval-and-replace
  919. :config
  920. (defun eval-and-replace ()
  921. (interactive)
  922. (search-forward ")")
  923. (let ((value (eval (preceding-sexp))))
  924. (kill-sexp -1)
  925. (if (stringp value)
  926. (insert (substring (format "%S" value) 1 -1 ))
  927. (insert (format "%S" value))
  928. )
  929. )))
  930. #+end_src
  931.  
  932. #+RESULTS:
  933. : t
  934.  
  935. ** eshell
  936. *** commands
  937. #+begin_src elisp
  938. (use-package! eshell
  939. :defer t
  940. :config
  941. (defalias 'ff 'find-file)
  942.  
  943. (defun eshell/ll ()
  944. (find-file ".")
  945. )
  946.  
  947. (defun sq (a &optional b)
  948. (if b
  949. (number-sequence a
  950. (- b 1))
  951. (number-sequence 0
  952. (- a 1))))
  953.  
  954. (defun eshell/take (&rest args)
  955. (let ((dir (pop args)))
  956. (mkdir dir)
  957. (cd dir)))
  958.  
  959. (defun eshell/extract (&rest args)
  960. (eshell-command (concat "zsh -i -c \"extract "
  961. (car args)
  962. "\" > #<*extract*>")))
  963.  
  964. (defun eshell/lsp (&rest args)
  965. (mkdir "build" t)
  966. (cd "build")
  967. (eshell-command "cmake ..")
  968. (eshell-command "cmake -H. -BDebug -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..")
  969. ;; (eshell-command "make")
  970. (cd "..")
  971. (eshell-command "ln -s build/Debug/compile_commands.json .")
  972. )
  973.  
  974. (defun eshell/lspmake (&rest args)
  975. (eshell-command "bear -- make")
  976. )
  977.  
  978. (defun eshell/list (&rest args)
  979. (eshell-command-result (concat
  980. "find " (pop args) " -name " (pop args) " -exec readlink -f {} \\; | sort"
  981. )))
  982.  
  983. (defun eshell/c (&rest args)
  984. (eshell-command (concat
  985. "tar cfJ "
  986. (replace-regexp-in-string (regexp-quote "/") "" (car args) nil 'literal)
  987. ".tar.xz "
  988. (car args)
  989. )))
  990.  
  991. (defun eshell/uc (&rest args)
  992. (eshell-command (concat
  993. "tar xf "
  994. (car args)
  995. )))
  996.  
  997. (defun eshell/lspwd (&rest args)
  998. (eshell-command-result "ls -d $PWD/*"))
  999.  
  1000. (defun eshell/take (&rest args)
  1001. (let ((dir (pop args)))
  1002. (mkdir dir)
  1003. (cd dir)))
  1004. )
  1005. #+end_src
  1006. *** aliases
  1007. #+begin_src elisp
  1008. (after! eshell (set-eshell-alias!
  1009. "get" "sudo pacman -S $*"
  1010. ))
  1011. #+end_src
  1012. *** keybindings
  1013. #+begin_src elisp
  1014. (map! :after eshell :mode eshell-mode
  1015. :n "<return>" 'eshell-send-input
  1016. :n "<tab>" 'eshell-previous-fix
  1017. :n "<insert>" 'eshell-next-fix
  1018. :leader "ae" '+eshell/frame
  1019. )
  1020. (use-package! eshell
  1021. :commands
  1022. eshell-previous-fix
  1023. eshell-next-fix
  1024. :config
  1025. (defun eshell-previous-fix()
  1026. (interactive)
  1027. (evil-append 1)
  1028. (insert " ")
  1029. (evil-normal-state)
  1030. (call-interactively 'eshell-previous-input)
  1031. )
  1032. (defun eshell-next-fix ()
  1033. (interactive)
  1034. (evil-append 1)
  1035. (insert " ")
  1036. (evil-normal-state)
  1037. (call-interactively 'eshell-next-input)
  1038. ))
  1039. #+end_src
  1040.  
  1041. *** setting
  1042. #+begin_src elisp
  1043. (use-package! eshell
  1044. :custom
  1045. (+eshell-config-dir "~/emacs/eshell/")
  1046. :config
  1047. (defadvice! synchronisly-write-history (&rest _)
  1048. :after #'eshell-send-input
  1049. (eshell-write-history)
  1050. )
  1051. )
  1052. #+end_src
  1053. *** vterm
  1054. #+begin_src elisp
  1055. (use-package! vterm
  1056. :commands vterm/frame
  1057. :config
  1058. (defun vterm/frame ()
  1059. (interactive)
  1060. (vterm)
  1061. (delete-other-windows)))
  1062. #+end_src
  1063. ** latex
  1064. *** keybindings
  1065. #+begin_src elisp
  1066. (map! :after latex :map evil-tex-mode-map
  1067. :n "m" 'evil-set-marker
  1068. )
  1069. #+end_src
  1070. ** speed type
  1071. #+begin_src elisp
  1072. (map! :leader "os" 'speed-type-text
  1073. "oS" 'speed-type--replay
  1074. )
  1075. (use-package! speed-type
  1076. :commands speed-type-text)
  1077. #+end_src
  1078. * temp
  1079.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement