Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * Start
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (require 'helm)
- #+END_SRC
- * Bugfixes
- ** disable which-key slow due to lsp
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (spacemacs/toggle-which-key-off)
- #+END_SRC
- ** Allways open new window/frame/why...
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- ;; (setq pop-up-frames t)
- #+END_SRC
- ** helm doesn't find new files
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (advice-add
- 'spacemacs/helm-find-files ; function to be advised
- :before ; advice runs first
- (lambda (&rest r) (helm-ff-refresh-cache)) ; advising function, this must have the same argument list as the main function, in this case all absorbed into a list "r"
- )
- #+END_SRC
- ** zero always is a numeric prefix
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'operator "0" 'digit-argument)
- #+END_SRC
- * General
- ** Keybindings
- *** help
- normal insert visual motion emacs operator outer-text-objects inner-text-objects replace
- (spacemacs/set-leader-keys "key" 'command)
- (spacemacs/set-leader-keys-for-major-mode 'foo-mode "key" 'command)
- (general-def 'normal "key" 'command)
- *** WASD
- **** Windows
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key
- "wl" 'evil-window-up
- "wa" 'evil-window-down
- "wi" 'evil-window-left
- "we" 'evil-window-right
- )
- #+END_SRC
- *** jump to register with j
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'motion "j" 'evil-goto-mark)
- #+END_SRC
- *** jump to same indent
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun jump-to-same-indent-down (direction)
- (interactive "P")
- (let ((start-indent (current-indentation)))
- (while
- (and (not (bobp))
- (zerop (forward-line (or direction 1)))
- (or (= (current-indentation) 0)
- (> (current-indentation) start-indent)))))
- (back-to-indentation)
- )
- (defun jump-to-same-indent-up ()
- (interactive)
- (jump-to-same-indent-down -1)
- )
- (general-def 'motion "M-}" 'jump-to-same-indent-down)
- (general-def 'motion "M-{" 'jump-to-same-indent-up)
- #+END_SRC
- **** J and K jump between whitespaces
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun next-whitespace()
- (interactive)
- (forward-char)
- (setq found (search-forward " \n" nil t nil))
- (when found (backward-char))
- )
- (defun previous-whitespace()
- (interactive)
- (setq found (search-backward " \n" nil t nil))
- )
- (general-define-key
- :states 'normal
- :keymaps'override
- "M-k" 'previous-whitespace
- "M-j" 'next-whitespace)
- #+END_SRC
- *** gedankenstrich move up
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal "−" 'evil-previous-line-first-non-blank)
- #+END_SRC
- *** delete last word
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def "M-v" 'clean-aindent--bsunindent)
- (use-package helm
- :defer t
- :init
- :general (:keymaps 'helm-map "M-v" 'clean-aindent--bsunindent))
- #+END_SRC
- *** insert lines
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal "C-a" 'spacemacs/insert-line-above-no-indent)
- (general-def 'normal "C-j" 'spacemacs/insert-line-below-no-indent)
- #+END_SRC
- *** jump forward
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal "C-s" 'evil-jump-orward)
- #+END_SRC
- *** last macro
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal "Q" (kbd"@@"))
- #+END_SRC
- *** undo
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def '(normal insert) "C-n" 'undo-tree-undo)
- #+END_SRC
- *** Redo
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal "U" 'undo-tree-redo)
- #+END_SRC
- *** helm completion
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def "C-<SPC>" 'helm-company)
- #+END_SRC
- *** smart parents dont escape
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq-default sp-escape-quotes-after-insert nil)
- #+END_SRC
- *** open frame other buffer
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key "bo" 'display-buffer-other-frame)
- #+END_SRC
- *** save with escape
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun froleyks-save-if-bufferfilename (&rest args)
- (when (buffer-file-name)
- (save-buffer))
- (when (string-match-p (regexp-quote "Org Src") (buffer-name) )
- (save-buffer))
- )
- (defadvice evil-force-normal-state
- (after evil-force-normal-state-after activate)
- (froleyks-save-if-bufferfilename))
- #+END_SRC
- *** global help
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (global-set-key [C-f1] 'help-command)
- #+END_SRC
- *** Scrolling
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'motion "C-M-u" 'scroll-up-line)
- (general-def 'motion "C-M-d" 'scroll-down-line)
- #+END_SRC
- ** open with
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (require 'openwith)
- (openwith-mode t)
- (setq openwith-associations '(
- ("\\.mp3\\'" "xmms" (file))
- ("\\.\\(?:mpe?g\\|avi\\|wmv\\)\\'" "mplayer" ("-idx" file))
- ;; ("\\.\\(?:jp?g\\|png\\)\\'" "display" (file))
- ("\\.pdf\\'" "evince" (file))
- ("\\.doc\\'" "libreoffice" (file))
- ("\\.docx\\'" "libreoffice" (file))
- ("\\.mp4\\'" "vlc" (file))
- ("\\.mkv\\'" "vlc" (file))
- ))
- #+END_SRC
- ** popup windows
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq popwin:special-display-config '(
- ("*compilation*" :dedicated nil :position bottom :stick nil :noselect t :height 0.1)
- ("*lsp-help*" :dedicated nil :position bottom :stick t :noselect t :height 0.4)
- ("^\\*Flycheck.+\\*$" :regexp t :dedicated nil :position bottom :stick t :noselect t)
- ("*Google Translate*" :dedicated nil :position bottom :stick t :noselect t :height 0.4)
- ("^*WoMan.+*$" :regexp t :position bottom)
- ("*nosetests*" :dedicated nil :position bottom :stick t :noselect nil)
- ("*grep*" :dedicated nil :position bottom :stick t :noselect nil)
- ("*ert*" :dedicated nil :position bottom :stick t :noselect nil)
- ("*undo-tree Diff*" :dedicated nil :position bottom :stick t :noselect nil :height 0.3)
- ("*undo-tree*" :dedicated nil :position right :stick t :noselect nil :width 60)
- ("*Async Shell Command*" :dedicated nil :position bottom :stick t :noselect nil)
- ("*Shell Command Output*" :dedicated nil :position bottom :stick t :noselect nil)
- (dap-server-log-mode :dedicated nil :position bottom :stick t :noselect t :height 0.4)
- (compilation-mode :dedicated nil :position bottom :stick t :noselect t :height 0.4)
- ("*Process List*" :dedicated nil :position bottom :stick t :noselect nil :height 0.4)
- ("*Help*" :dedicated nil :position bottom :stick t :noselect t :height 0.4)
- ))
- #+END_SRC
- * Utility
- ** temp files
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun my-temp-file()
- (interactive)
- (helm-find-files-1 "~/temp/temp")
- )
- (evil-leader/set-key "D" 'my-temp-file)
- #+END_SRC
- ** Snippets
- *** hippie expand
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun froleyks-expand-lines ()
- (interactive)
- (let ((hippie-expand-try-functions-list '(try-expand-line)))
- (call-interactively 'hippie-expand)))
- (general-def '(normal insert)
- "C-e" 'hippie-expand
- "C-S-e" 'froleyks-expand-lines
- )
- #+END_SRC
- *** Save them under VC
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package yasnippet
- :defer t
- :init
- (setq yas-snippet-dirs '("/home/froleyks/.config/spacemacs/snippets"))
- )
- #+END_SRC
- *** create snippet quickly
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package yasnippet
- :defer t
- :config
- (evil-leader/set-key
- "Sr" 'helm-yas-create-snippet-on-region
- "Se" 'helm-yas-visit-snippet-file
- )
- )
- #+END_SRC
- ** evil narrow
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-define-operator evil-narrow-op (beg end type)
- "Evil indirect *narrow* operator."
- (interactive "<R>")
- (deactivate-mark)
- (let ((buf (clone-indirect-buffer nil nil)))
- (with-current-buffer buf
- (narrow-to-region beg end))
- (switch-to-buffer buf)))
- (general-def '(normal visual) "h" 'evil-narrow-op)
- #+END_SRC
- ** Search Engine
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (spacemacs/set-leader-keys
- "af" 'engine/search-google
- "al" 'engine/search-scholar
- "ax" 'engine/search-arxiv
- "aq" 'engine/search-cpp
- "ae" 'engine/search-linguee
- "aE" 'engine/search-deepl
- "ag" 'engine/search-github
- "aC" 'engine/search-corpus
- )
- (use-package engine-mode
- :defer t
- :commands (engine/search-google
- engine/search-scholar
- engine/search-arxiv
- engine/search-cpp
- engine/search-linguee
- engine/search-github
- engine/search-deepl
- )
- ;; engines
- :config
- (defengine google
- "https://www.google.com/search?q=%s")
- (defengine scholar
- "https://scholar.google.de/scholar?hl=de&q=%s&btnG=&lr=")
- (defengine arxiv
- "https://arxiv.org/search/?query=%s&searchtype=all&source=header")
- (defengine cpp
- "https://en.cppreference.com/mwiki/index.php?title=Special%%3ASearch&search=%s")
- (defengine linguee
- "http://www.linguee.de/deutsch-englisch/search?source=auto&query=%s")
- (defengine github
- "https://github.com/search?utf8=✓&q=%s&ref=simplesearch")
- (defengine deepl
- "https://www.deepl.com/en/translator#de/en/%s")
- (defengine corpus
- "https://books.google.com/ngrams/graph?content=%s&year_start=1970&year_end=2018&corpus=17&smoothing=3")
- )
- #+END_SRC
- ** cycle text
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-def 'normal
- "ö" 'froleyks-search-rotate-backward
- "ä" 'froleyks-search-rotate
- )
- (use-package rotate-text
- :defer t
- :commands (froleyks-search-rotate froleyks-search-rotate-backward)
- :init
- (add-to-list 'load-path "~/.config/spacemacs/local/rotate-text")
- :config
- (defun froleyks-search-rotate()
- (interactive)
- ;; ( search-backward-regexp "\s")
- ;; (evil-forward-char)
- (search-forward-regexp "\\(\\+\\|-\\)?[0-9]+\\(\\.[0-9]+\\)?\\|true\\|false\\|first\\|second\\|scheduled\\|deadline\\|yes\\|no" nil t)
- (call-interactively 'rotate-text)
- (evil-backward-WORD-begin)
- )
- (defun froleyks-search-rotate-backward()
- (interactive)
- ;; ( search-backward-regexp "\s")
- ;; (evil-forward-char)
- (search-forward-regexp "\\(\\+\\|-\\)?[0-9]+\\(\\.[0-9]+\\)?\\|true\\|false\\|first\\|second\\|scheduled\\|deadline\\|yes\\|no" nil t)
- (call-interactively 'rotate-text-backward)
- (evil-backward-WORD-begin)
- )
- (setq rotate-text-words (append rotate-text-words '(
- ("True" "False")
- ("nil" "t")
- ("true" "false")
- ("first" "second")
- ("scheduled" "deadline")
- ("deadline" "scheduled")
- ("yes" "no")
- ))))
- #+END_SRC
- ** pastebin
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key
- "BB" 'pastebin-new
- "BL" 'pastebin-list-buffer-refresh
- )
- (use-package neopastebin
- :defer t
- :commands
- pastebin-new
- pastebin-list-buffer-refresh
- :init
- :config
- (pastebin-create-login :dev-key "b05fe24db6a4bca168b463b3fa777bfa"
- :username "froleyks"
- :password "shinigami"
- ))
- #+END_SRC
- ** spell checking
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq-default ispell-dictionary "english")
- (defun my-lang-german()
- (interactive)
- (ispell-change-dictionary "de_DE"))
- (defun my-lang-english()
- (interactive)
- (ispell-change-dictionary "en_US"))
- (evil-leader/set-key
- "SD" 'my-lang-german
- "SS" 'my-lang-english
- )
- #+END_SRC
- ** open emacs
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq froleyks-resume-buffer "*spacemacs*")
- (add-hook 'switch-buffer-functions
- (lambda (prev curr)
- (setq froleyks-resume-buffer curr)
- ))
- (add-hook 'find-file-hook
- (lambda ()
- (setq froleyks-resume-buffer (current-buffer))))
- (defun froleyks-create-frame-resume ()
- (interactive)
- (select-frame (make-frame '((window-system . x))))
- (switch-to-buffer froleyks-resume-buffer))
- (defun froleyks-term ()
- (interactive)
- (select-frame (make-frame '((window-system . x))))
- (setq current-prefix-arg '(4)) ; C-u
- (ansi-term "/bin/zsh"))
- (defun froleyks-find-file (file)
- (interactive)
- (select-frame (make-frame '((window-system . x))))
- (find-file file))
- ;; (defun froleyks-term ()
- ;; (interactive)
- ;; (setq current-dir default-directory)
- ;; (select-frame (make-frame '((window-system . x))))
- ;; (setq current-prefix-arg '(4)) ; C-u
- ;; (let ((default-directory current-dir))
- ;; (set-buffer (call-interactively '(ansi-term "/bin/zsh")))))
- ;; ;; (set-buffer (call-interactively 'spacemacs/shell-pop-ansi-term))))
- #+END_SRC
- ** multiple cursors
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package evil-mc
- :defer t
- :general (
- :states '(normal visual)
- :keymaps 'evil-mc-key-map
- "C-n" 'undo
- "C-p" 'evil-paste-pop
- "C-S-p" 'evil-paste-pop-next
- ))
- #+END_SRC
- ** insert relative path helm
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package helm
- :defer t
- :init
- (defun froleyks-insert-relative-path-helm ()
- (interactive)
- (setq current-prefix-arg '(16)) ; C-u
- (call-interactively 'helm-ff-run-complete-fn-at-point))
- :bind (:map helm-map
- ("C-e" . froleyks-insert-relative-path-helm)))
- #+END_SRC
- ** open explorer
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun open-explorer ()
- (interactive)
- (save-window-excursion (shell-command "nautilus .&")))
- (evil-leader/set-key (kbd "fd") 'open-explorer)
- #+END_SRC
- ** jumping sets history
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun my-jump-advice (oldfun &rest args)
- (let ((old-pos (point)))
- (apply oldfun args)
- (when (> (abs (- (line-number-at-pos old-pos)
- (line-number-at-pos (point)))) 5)
- (save-excursion
- (goto-char old-pos)
- (evil-set-jump)))))
- (advice-add 'evil-next-line :around #'my-jump-advice)
- (advice-add 'evil-previous-line :around #'my-jump-advice)
- #+END_SRC
- ** backup
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- ;; Backups
- (setq make-backup-files t)
- (setq version-control t ;; Use version numbers for backups.
- kept-new-versions 500 ;; Number of newest versions to keep.
- kept-old-versions 0 ;; Number of oldest versions to keep.
- delete-old-versions t ;; Don't ask to delete excess backup versions.
- backup-by-copying t) ;; Copy all files, don't rename them.
- (setq vc-make-backup-files t)
- ;; Default and per-save backups go here:
- (setq backup-directory-alist '(("" . "~/emacs/backup/per-save")))
- (defun force-backup-of-buffer ()
- ;; Make a special "per session" backup at the first save of each
- ;; emacs session.
- (when (not buffer-backed-up)
- ;; Override the default parameters for per-session backups.
- (let ((backup-directory-alist '(("" . "~/Emacs/backup/per-session")))
- (kept-new-versions 500))
- (backup-buffer)))
- ;; Make a "per save" backup on each save. The first save results in
- ;; both a per-session and a per-save backup, to keep the numbering
- ;; of per-save backups consistent.
- (let ((buffer-backed-up nil))
- (backup-buffer)))
- (add-hook 'before-save-hook 'force-backup-of-buffer)
- (evil-leader/set-key "go" 'backup-walker-start)
- (use-package backup-walker
- :defer t
- :commands backup-walker-start
- :general (
- :states 'normal
- :keymaps 'backup-walker-mode-map
- "b" 'backup-walker-blame
- "a" 'backup-walker-previous
- "e" 'backup-walker-next
- "q" 'backup-walker-quit
- "<RET>" 'backup-walker-show-file-in-other-window
- )
- )
- #+END_SRC
- ** evil snipe
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package evil-snipe
- :defer t
- :bind (
- :map evil-motion-state-map
- ("f" . evil-snipe-f)
- ("F" . evil-snipe-F)
- ("t" . evil-snipe-t)
- ("T" . evil-snipe-T)
- ("l" . evil-snipe-s)
- ("L" . evil-snipe-S)
- :map evil-snipe-mode-map ("," . nil) ("n" . evil-snipe-repeat) ("N" . evil-snipe-repeat-reverse)
- :map evil-snipe-local-mode-map ("," . nil) ("n" . evil-snipe-repeat) ("N" . evil-snipe-repeat-reverse)
- :map evil-snipe-override-mode-map ("," . nil) ("n" . evil-snipe-repeat) ("N" . evil-snipe-repeat-reverse)
- :map evil-snipe-override-local-mode-map ("," . nil) ("n" . evil-snipe-repeat) ("N" . evil-snipe-repeat-reverse)
- :map evil-snipe-parent-transient-map ("," . nil) ("n" . evil-snipe-repeat) ("N" . evil-snipe-repeat-reverse)
- )
- :config
- (setq evil-snipe-scope 'buffer)
- (setq evil-snipe-enable-highlight nil)
- (setq evil-snipe-enable-incremental-highlight nil)
- (define-key evil-normal-state-map (kbd "s") 'evil-substitute)
- (evil-define-key* '(motion normal) evil-snipe-local-mode-map
- "s" nil
- "S" nil)
- )
- #+END_SRC
- ** create body
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun my-create-body()
- (interactive)
- (end-of-line)
- (backward-char)
- (newline-and-indent)
- (evil-open-above 1)
- )
- (evil-define-key '(normal visual insert) 'global (kbd "M-o") 'my-create-body)
- #+END_SRC
- ** Line manipulation
- *** flush empty lines
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun flush-empty-lines ()
- "removes empty lines from files"
- (interactive)
- (flush-lines "^$")
- )
- #+END_SRC
- *** remove duplicate lines
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun remove-dubplicate-lines ()
- "removes duplicate lines form file"
- (interactive)
- (replace-regexp "\\([^\n]+\n\\)\\1+" "\\1")
- )
- #+END_SRC
- *** keybindings
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key
- "Le" 'flush-empty-lines
- "Lf" 'flush-lines
- "Lk" 'keep-lines
- "Ld" 'remove-dubplicate-lines
- )
- #+END_SRC
- * Modes
- ** Org
- *** visual
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :hook (org-mode . org-indent-mode)
- :custom
- (org-pretty-entities t)
- (org-ellipsis " ▾")
- (org-hide-leading-stars t)
- (org-superstar-headline-bullets-list '("◉" "○" "●" "○" "●" "○" "●"))
- (org-superstar-item-bullet-alist
- '((?+ . ?➤)
- (?* . ?⏭)
- (?- . ?•)))
- )
- #+END_SRC
- *** Export
- **** make = export textsc
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq org-latex-text-markup-alist
- '((bold . "\\textbf{%s}")
- (code . protectedtexttt)
- (italic . "\\emph{%s}")
- (strike-through . "\\sout{%s}")
- (underline . "\\uline{%s}")
- (verbatim . "\\textsc{%s}")) )
- #+END_SRC
- **** compile org-beamer
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package ox-beamer
- :defer t
- :config
- (add-to-list 'org-beamer-environments-extra
- '("onlyenv" "O" "\\begin{onlyenv}%a" "\\end{onlyenv}"))
- (add-to-list 'org-beamer-environments-extra
- '("visibleenv" "V" "\\begin{visibleenv}%a" "\\end{visibleenv}"))
- (add-to-list 'org-beamer-environments-extra
- '("overlayarea" "S" "\\begin{overlayarea}%a" "\\end{overlayarea}"))
- )
- #+END_SRC
- **** babel lang
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package ob-eval
- :defer t
- :custom
- (org-babel-default-header-args '(
- (:eval . "never-export")
- (:noweb . "yes")
- (:session . "none")
- (:results . "replace")
- (:exports . "code")
- (:cache . "no")
- (:hlines . "no")
- (:tangle . "no")
- ))
- :config
- (setq org-confirm-babel-evaluate nil)
- (add-hook 'org-export-before-processing-hook #'org-babel-tangle)
- (org-babel-do-load-languages
- 'org-babel-load-languages
- '(
- (emacs-lisp . t)
- (latex . t)
- (shell . t)
- (python . t)
- (dot . t)
- ))
- ;; (setq org-babel-default-header-args
- ;; (cons '(:noweb . "yes")
- ;; (assq-delete-all :noweb org-babel-default-header-args)
- ;; )
- ;; )
- ;; (setq org-babel-default-header-args
- ;; (cons '(:eval . "never-export")
- ;; (assq-delete-all :eval org-babel-default-header-args)
- ;; )
- ;; )
- )
- #+END_SRC
- #+RESULTS:
- : t
- **** find last org property "key"
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun key (keyString)
- (save-excursion
- (search-backward (concat "#+" keyString ":"))
- (evil-forward-WORD-begin)
- (buffer-substring-no-properties (point) (point-at-eol))
- )
- )
- #+END_SRC
- **** find last org link
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun link (linkString)
- (save-excursion
- (search-backward (concat "[" linkString "]]"))
- (search-backward "[")
- (search-forward ":")
- (let ((begin (point)))
- (search-forward "]")
- (forward-char -1)
- (buffer-substring-no-properties begin (point))
- )))
- #+END_SRC
- **** find last heading
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun head () (save-excursion
- (search-backward-regexp "^\\* ")
- (evil-forward-word-begin)
- (buffer-substring-no-properties (point) (point-at-eol))
- ))
- #+END_SRC
- **** get from table
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun from (table key)
- (mapconcat (lambda (x) (if (string= (pop x) key) (mapconcat 'identity x " | ") "")) table ""))
- #+END_SRC
- **** export to multiple pdfs
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun org-export-headlines-to-pdf ()
- "Export all subtrees that are *not* tagged with :noexport: to
- separate files.
- Subtrees that do not have the :EXPORT_FILE_NAME: property set
- are exported to a filename derived from the headline text."
- (interactive)
- (save-buffer)
- (let (
- (modifiedp (buffer-modified-p))
- ;; (pdfs "pdfs")
- (pdfs "")
- )
- (unless (or (string= pdfs "") (file-exists-p pdfs))
- (make-directory pdfs))
- (save-excursion
- (goto-char (point-min))
- (goto-char (re-search-forward "^*"))
- (set-mark (line-beginning-position))
- (goto-char (point-max))
- (org-map-entries
- (lambda ()
- (let ((export-file (org-entry-get (point) "EXPORT_FILE_NAME")))
- (unless export-file
- (org-set-property
- "EXPORT_FILE_NAME"
- (concat pdfs (if (string= pdfs "") "" "/") (replace-regexp-in-string "," ""
- (replace-regexp-in-string " " "_" (nth 4 (org-heading-components)))))
- ))
- (deactivate-mark)
- (org-latex-export-to-pdf nil t)
- (unless export-file (org-delete-property "EXPORT_FILE_NAME"))
- (set-buffer-modified-p modifiedp)))
- "-noexport" 'region-start-level))
- (shell-command (concat "find " pdfs " -type f -name \"*.tex\" -delete"))
- ))
- (evil-leader/set-key-for-mode 'org-mode
- "ep" 'org-export-headlines-to-pdf)
- #+END_SRC
- **** align tables after executing code blocs
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (advice-add
- 'org-babel-execute-buffer ; function to be advised
- :after
- (lambda (&rest r) (org-table-map-tables 'org-table-align)) ; advising function, this must have the same argument list as the main function, in this case all absorbed into a list "r"
- )
- #+END_SRC
- **** pick due date
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun pick-due-date ()
- (setq system-time-locale "C")
- (org-format-time-string "%Y-%m-%d %A"
- (org-read-date nil t)
- ))
- #+END_SRC
- **** view org pdf
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun org-pdf-view ()
- (interactive)
- (let ((pdf (replace-regexp-in-string ".org" ".pdf" (buffer-file-name)) ))
- (find-file pdf)
- ))
- (evil-leader/set-key-for-mode 'org-mode "v" 'org-pdf-view)
- #+END_SRC
- **** evalBlock
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun evalBlock (name) (save-excursion (org-babel-goto-named-src-block name) (org-babel-execute-src-block)))
- #+END_SRC
- *** open links in new frame
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- ;; '(org-link-frame-setup
- ;; '(
- ;; (file . (lambda (file)
- ;; (select-frame (make-frame '((window-system . x))))
- ;; (find-file file)
- ;; ))
- ;; ))
- (use-package ol
- :defer t
- :config
- (setq org-link-frame-setup
- '((vm . vm-visit-folder-other-frame)
- (vm-imap . vm-visit-imap-folder-other-frame)
- (gnus . org-gnus-no-new-news)
- (file . (lambda (file)
- (select-frame (make-frame '((window-system . x))))
- (find-file file)
- ))
- (wl . wl-other-frame)))
- )
- #+END_SRC
- *** agenda
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :general (
- :keymaps 'org-agenda-keymap
- "ö" 'org-agenda-earlier
- "ä" 'org-agenda-later
- )
- :custom
- (org-agenda-window-setup 'switch-to-buffer-other-frame)
- (org-agenda-files
- '(
- "~/org/brain.org"
- "~/org/daily.org"
- "~/org/einkauf.org"
- "~/org/jku.org"
- "~/org/todo.org"
- "~/org/rare/schulden.org"
- "~/org/rare/feiertage.org"
- "~/JKU/MC/mcex/ws20/grading/project2/project2.org"
- ))
- (org-agenda-todo-ignore-scheduled t)
- )
- (spacemacs/set-leader-keys "aa" 'org-agenda-list)
- (spacemacs/set-leader-keys "at" 'org-todo-list)
- #+END_SRC
- *** brain capture
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :custom
- (org-capture-templates
- '(("b" "brain" entry (file "~/org/brain.org")
- "* %?%i\n %U %a")
- ))
- )
- (defun brainCapture ()
- (interactive)
- (org-capture nil "b")
- (evil-insert 1)
- )
- (spacemacs/set-leader-keys "ab" 'brainCapture)
- #+END_SRC
- *** Movement
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :general (
- :states 'normal
- :keymaps 'org-mode-map
- "M-k" 'org-previous-visible-heading
- "S-C-k" 'org-backward-heading-same-level
- "M-j" 'org-next-visible-heading
- "S-C-j" 'org-forward-heading-same-level
- ))
- #+END_SRC
- *** open scrc block in other window
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq-default org-src-window-setup 'other-frame)
- (advice-add
- 'org-edit-special
- :before ; advice runs first
- (lambda (&rest r) (make-frame '((window-system . x)))) ; advising function, this must have the same argument list as the main function, in this case all absorbed into a list "r"
- )
- #+END_SRC
- *** archive
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :config
- (setq org-archive-location "~/org/rare/archive.org::datetree/* Finished Tasks")
- (evil-leader/set-key-for-mode 'org-mode "m" 'org-archive-subtree)
- )
- #+END_SRC
- *** notifications
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (require 'appt)
- (appt-activate t)
- (setq appt-message-warning-time 5) ; Show notification 5 minutes before event
- (setq appt-display-interval appt-message-warning-time) ; Disable multiple reminders
- (setq appt-display-mode-line nil)
- ; Use appointment data from org-mode
- (defun my-org-agenda-to-appt ()
- (interactive)
- (setq appt-time-msg-list nil)
- (org-agenda-to-appt))
- ; Update alarms when...
- ; (1) ... Starting Emacs
- (my-org-agenda-to-appt)
- ; (2) ... Everyday at 12:05am (useful in case you keep Emacs always on)
- ;; (run-at-time "12:05am" (* 24 3600) 'my-org-agenda-to-appt)
- ; (3) ... When TODO.txt is saved
- (add-hook 'after-save-hook
- '(lambda ()
- (if (or
- (string= (buffer-file-name) (concat (getenv "HOME") "/org/brain.org"))
- (string= (buffer-file-name) (concat (getenv "HOME") "/org/daily.org"))
- (string= (buffer-file-name) (concat (getenv "HOME") "/org/einkauf.org"))
- (string= (buffer-file-name) (concat (getenv "HOME") "/org/jku.org"))
- (string= (buffer-file-name) (concat (getenv "HOME") "/org/todo.org"))
- )
- (my-org-agenda-to-appt))))
- ; Display appointments as a window manager notification
- (setq appt-disp-window-function 'my-appt-display)
- (setq appt-delete-window-function (lambda () t))
- (setq my-appt-notification-app (concat (getenv "HOME") "/bin/appt-notification"))
- (defun my-appt-display (min-to-app new-time msg)
- (if (atom min-to-app)
- (start-process "my-appt-notification-app" nil my-appt-notification-app min-to-app msg)
- (dolist (i (number-sequence 0 (1- (length min-to-app))))
- (start-process "my-appt-notification-app" nil my-appt-notification-app (nth i min-to-app) (nth i msg)))))
- #+END_SRC
- *** refile
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :custom
- (org-refile-targets
- '((nil :maxlevel . 1)
- (org-agenda-files :maxlevel . 1)))
- (org-refile-use-outline-path 'file)
- )
- #+END_SRC
- *** edit ipe
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :config
- (defun editIpe()
- (interactive)
- (save-excursion
- (forward-char 1)
- (search-backward "[")
- (search-forward ":")
- (shell-command (concat "ipe " (let ((a (point)))
- (search-forward "]")
- (backward-char 1)
- (buffer-substring-no-properties a (point))
- ) ) )
- )))
- (spacemacs/set-leader-keys-for-major-mode 'org-mode "xe" 'editIpe)
- #+END_SRC
- *** open file: pdfs
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package org
- :defer t
- :config
- (push '("\\.pdf\\'" . "evince %s") org-file-apps))
- #+END_SRC
- *** goto definition
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun gotoBlock ()
- (interactive)
- (search-forward (concat "#+name: "(thing-at-point 'word t)) )
- ;; (evil-scroll-line-to-top (line-number-at-pos))
- )
- (spacemacs/set-leader-keys-for-major-mode 'org-mode "g" 'gotoBlock)
- #+END_SRC
- ** Prog
- *** insert semicolon
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package prog-mode
- :defer t
- :config
- (defun electric-semicolon ()
- (interactive)
- (save-excursion
- (evil-normal-state)
- (end-of-line)
- (when (looking-back " ")
- (delete-backward-char 1))
- (when (not (looking-back ";"))
- (insert ";")))
- (when (buffer-file-name)
- (save-buffer))
- )
- (defun compilation-window ()
- (interactive)
- (let ((current (buffer-name)))
- (display-buffer-other-frame "*compilation*")
- (switch-to-buffer current)
- ))
- (spacemacs/set-leader-keys-for-major-mode 'prog-mode "w" 'compilation-window)
- :general
- (:keymaps 'prog-mode-map
- "M-i" 'electric-semicolon
- )
- )
- #+END_SRC
- ** eshell
- *** config
- **** alias file
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package eshell
- :defer t
- :config
- (setq-default eshell-aliases-file "/home/froleyks/emacs/aliases")
- )
- #+END_SRC
- **** enter in normal mode
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package eshell
- :defer t
- :config
- (evil-define-minor-mode-key 'normal
- 'eshell-mode
- (kbd "RET")
- 'eshell-send-input)
- )
- #+END_SRC
- *** old
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package helm
- :defer t
- :config
- (define-key helm-map (kbd "M-t") 'froleyks-helm-ff-new-eshell-here)
- )
- (evil-leader/set-key "'" 'froleyks-open-eshell-new-frame-here)
- (use-package esh-autosuggest
- :hook (eshell-mode . esh-autosuggest-mode):ensure
- t)
- (setq tramp-default-method "ssh")
- (setq eshell-banner-message "")
- ;; helm history in same frame
- (setq helm-show-completion-display-function
- #'helm-show-completion-default-display-function)
- (when (and (executable-find "fish")
- (require 'fish-completion nil t))
- (global-fish-completion-mode))
- ;; shared history
- (setq eshell-history-file-name "~/emacs/historyMain")
- ;; completion after sudo
- (defun pcomplete/sudo ()
- (let ((prec (pcomplete-arg 'last -2)))
- (cond
- ((string= "sudo" prec)
- (while (pcomplete-here* (funcall pcomplete-command-completion-function)
- (pcomplete-arg 'last)
- t))))))
- (defadvice eshell-send-input
- (after eshell-send-input-after activate)
- (eshell-write-history))
- (defun froleyks-eshell-clear-line ()
- (interactive)
- (evil-delete-line (point-at-bol)
- (point-at-eol)))
- (add-hook 'eshell-mode-hook
- (lambda ()
- (company-mode -1)
- (spacemacs/toggle-smartparens-on)
- (eshell-cmpl-initialize)
- (define-key eshell-mode-map [remap eshell-pcomplete] 'completion-at-point)
- (evil-define-minor-mode-key 'normal
- 'eshell-mode
- (kbd "RET")
- 'eshell-send-input)
- (evil-define-minor-mode-key 'normal
- 'eshell-mode
- (kbd "h")
- 'spacemacs/helm-eshell-history)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "M-h")
- 'spacemacs/helm-eshell-history)
- (evil-define-minor-mode-key 'normal
- 'eshell-mode
- (kbd "l")
- 'eshell-previous-matching-input-from-input)
- (evil-define-minor-mode-key 'normal
- 'eshell-mode
- (kbd "C-k")
- 'froleyks-eshell-clear-line)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "C-d")
- 'froleyks-eshell-clear-line)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "<up>")
- 'previous-line)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "<down>")
- 'next-line)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "C-j")
- 'spacemacs/insert-line-below-no-indent)
- (evil-define-minor-mode-key 'insert
- 'eshell-mode
- (kbd "C-a")
- 'spacemacs/insert-line-above-no-indent)))
- (global-set-key (kbd "M-!") 'eshell-command)
- ;;alias
- (setq eshell-aliases-file "/home/froleyks/emacs/aliasesMain")
- (defun froleyks-open-eshell-new-frame ()
- (interactive)
- (select-frame (make-frame '((window-system . x))))
- (setq current-prefix-arg '(4)) ; C-u
- (let ((default-directory "~/"))
- (set-buffer (call-interactively 'eshell)))
- )
- (defun froleyks-helm-ff-new-eshell-here ()
- (interactive)
- (setq current-prefix-arg '(1)) ; C-u
- (set-buffer (call-interactively 'helm-ff-run-switch-to-eshell))
- )
- (defun froleyks-open-eshell-new-frame-here ()
- (interactive)
- (setq current-dir default-directory)
- (select-frame (make-frame '((window-system . x))))
- (setq current-prefix-arg '(4)) ; C-u
- (let ((default-directory current-dir))
- (set-buffer (call-interactively 'eshell))))
- #+END_SRC
- *** functions
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package eshell
- :defer t
- :config
- (defalias 'ff 'find-file)
- (defun eshell/ll ()
- (find-file ".")
- )
- (defun sq (a &optional b)
- (if b
- (number-sequence a
- (- b 1))
- (number-sequence 0
- (- a 1))))
- (defun eshell/take (&rest args)
- (let ((dir (pop args)))
- (mkdir dir)
- (cd dir)))
- (defun eshell/extract (&rest args)
- (eshell-command (concat "zsh -i -c \"extract "
- (car args)
- "\" > #<*extract*>")))
- (defun eshell/lsp (&rest args)
- (mkdir "build" t)
- (cd "build")
- (eshell-command "cmake ..")
- (eshell-command "cmake -H. -BDebug -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=YES ..")
- ;; (eshell-command "make")
- (cd "..")
- (eshell-command "ln -s build/Debug/compile_commands.json .")
- )
- (defun eshell/lspmake (&rest args)
- (eshell-command "bear -- make")
- )
- (defun eshell/list (&rest args)
- (eshell-command-result (concat
- "find " (pop args) " -name " (pop args) " -exec readlink -f {} \\; | sort"
- )))
- (defun eshell/c (&rest args)
- (eshell-command (concat
- "tar cfJ "
- (replace-regexp-in-string (regexp-quote "/") "" (car args) nil 'literal)
- ".tar.xz "
- (car args)
- )))
- (defun eshell/uc (&rest args)
- (eshell-command (concat
- "tar xf "
- (car args)
- )))
- (defun eshell/lspwd (&rest args)
- (eshell-command-result "ls -d $PWD/*"))
- )
- #+END_SRC
- *** export tags bf
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package ox-latex
- :defer t
- :config
- (defun org-latex-format-headline-default-function
- (todo _todo-type priority text tags _info)
- "Default format function for a headline.
- See `org-latex-format-headline-function' for details."
- (concat
- (and todo (format "{\\bfseries\\sffamily %s} " todo))
- (and priority (format "\\framebox{\\#%c} " priority))
- text
- (and tags
- (format "\\hfill{}\\textbf{%s}"
- (mapconcat #'org-latex--protect-text tags ":")))))
- )
- #+END_SRC
- ** C
- *** lsp
- **** watch all files in directory
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq-default lsp-file-watch-threshold nil)
- #+END_SRC
- **** doc mode
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package lsp-ui-mode
- :defer t
- :init
- (setq lsp-ui-doc-enable nil)
- (evil-leader/set-key-for-mode 'c-mode "hg" 'lsp-ui-doc-glance)
- (evil-leader/set-key-for-mode 'c++-mode "hg" 'lsp-ui-doc-glance)
- )
- #+END_SRC
- *** function text objects
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-define-text-object rsb/textobj-inner-c-defun (count &optional beg end type)
- (save-excursion
- (mark-defun)
- (re-search-forward "{")
- (exchange-point-and-mark)
- (re-search-backward "}")
- (evil-range (region-beginning) (region-end) type :expanded t)))
- (evil-define-text-object rsb/textobj-outer-c-defun
- (count &optional beg end type)
- :type line
- (save-excursion
- (mark-defun)
- (if (looking-at "[:space:]*$")
- (forward-line))
- (exchange-point-and-mark)
- (unless (save-excursion
- (forward-line)
- (looking-at "[:space:]*$"))
- (forward-line))
- (evil-range (region-beginning)
- (region-end)
- type
- :expanded t)))
- (define-key evil-inner-text-objects-map "f"
- 'rsb/textobj-inner-c-defun)
- (define-key evil-outer-text-objects-map "f"
- 'rsb/textobj-outer-c-defun)
- #+END_SRC
- *** bindings format compile
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key-for-mode 'c-mode "." 'lsp-format-buffer)
- (evil-leader/set-key-for-mode 'c++-mode "." 'lsp-format-buffer)
- (evil-leader/set-key-for-mode 'c-mode "," 'recompile)
- (evil-leader/set-key-for-mode 'c++-mode "," 'recompile)
- #+END_SRC
- *** disable auto indent
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- ;; I want to disable pasting with formatting on C/C++ buffers
- (add-to-list 'spacemacs-indent-sensitive-modes 'c-mode)
- (add-to-list 'spacemacs-indent-sensitive-modes 'c++-mode)
- #+END_SRC
- *** dap
- **** floaty window
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package c++-mode
- :defer t
- :hook (c++-mode . spacemacs/toggle-dap-ui-controls-off)
- :config
- (evil-leader/set-key-for-mode 'c++-mode "dt" 'spacemacs/toggle-dap-ui-controls)
- )
- #+END_SRC
- **** switch stack frame
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key-for-mode 'c-mode "df" 'dap-switch-stack-frame)
- (evil-leader/set-key-for-mode 'c++-mode "df" 'dap-switch-stack-frame)
- (evil-leader/set-key "df" 'dap-switch-stack-frame)
- #+END_SRC
- *** supress saving promt whent compiling
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq compilation-ask-about-save nil)
- #+END_SRC
- *** bindings in compilation window
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (general-define-key
- :keymaps 'compilation-mode-map
- (kbd "?") 'evil-ex-search-backward
- (kbd "m") 'evil-set-marker
- (kbd "j") 'evil-goto-mark
- (kbd "C-o") 'evil-jump-backward
- (kbd "C-s") 'evil-jump-forward
- )
- #+END_SRC
- *** replace int with size t
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun froleyks-int-to-size_t ()
- (interactive)
- (save-excursion
- (beginning-of-line)
- (search-forward "int"
- (point-at-eol))
- (evil-delete-backward-word)
- (insert "size_t")))
- (evil-leader/set-key-for-mode 'c++-mode "z"
- 'froleyks-int-to-size_t)
- #+END_SRC
- *** select build dir
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun select-build-dir ()
- (interactive)
- (add-dir-local-variable 'c++-mode 'projectile-project-root (read-file-name "build dir: "))
- (save-buffer)
- (kill-buffer)
- (hack-local-variables)
- )
- (spacemacs/set-leader-keys-for-major-mode 'c++-mode (kbd "s") 'select-build-dir)
- #+END_SRC
- *** modern c++
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package flycheck
- :defer t
- :custom
- (flycheck-gcc-language-standard "c++17")
- (flycheck-clang-language-standard "c++17")
- )
- #+END_SRC
- ** dired
- *** human -h
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (setq dired-listing-switches "-halt --group-directories-first")
- #+END_SRC
- *** details
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (add-hook 'dired-mode-hook
- (lambda ()
- (dired-hide-details-mode)))
- (evil-define-key 'normal dired-mode-map (kbd "s") 'dired-hide-details-mode)
- #+END_SRC
- *** keybindings
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-define-key 'normal dired-mode-map "%" 'dired-mark-files-regexp)
- (evil-define-key 'normal dired-mode-map "M" 'dired-mark-files-regexp)
- (evil-define-key 'normal dired-mode-map "R" 'revert-buffer)
- (evil-define-key 'normal dired-mode-map "U" 'dired-unmark-all-marks)
- (evil-define-key 'normal dired-mode-map "c" 'dired-do-copy)
- (evil-define-key 'normal dired-mode-map "d" 'dired-do-delete)
- (evil-define-key 'normal dired-mode-map "e" 'dired-toggle-read-only)
- (evil-define-key 'normal dired-mode-map "s" 'dired-mark)
- (evil-define-key 'normal dired-mode-map "m" 'evil-set-marker)
- (evil-define-key 'normal dired-mode-map "j" 'evil-goto-mark)
- (evil-define-key 'normal dired-mode-map "r" 'dired-do-rename)
- (evil-define-key 'normal dired-mode-map "t" 'dired-toggle-marks)
- (evil-define-key 'normal dired-mode-map "u" 'dired-unmark)
- (evil-define-key 'normal dired-mode-map "x" 'dired-do-chmod)
- (evil-define-key 'normal dired-mode-map "y" 'dired-copy-filename-as-kill)
- (evil-define-key 'normal dired-mode-map "q" 'evil-record-macro)
- (evil-define-key 'normal dired-mode-map "Q" (kbd"@@"))
- (evil-define-key 'normal dired-mode-map (kbd "<RET>") 'dired-find-file)
- (evil-define-key 'normal dired-mode-map (kbd "l") 'dired-hide-details-mode)
- ;; (evil-define-key 'normal dired-mode-map [mouse-2] 'dired-mouse-find-file-other-window)
- ;; (evil-define-key 'normal dired-mode-map [follow-link] 'mouse-face)
- ;; ;; Commands to mark or flag certain categories of files
- ;; (evil-define-key 'normal dired-mode-map "#" 'dired-flag-auto-save-files)
- ;; (evil-define-key 'normal dired-mode-map "." 'dired-clean-directory)
- ;; (evil-define-key 'normal dired-mode-map "~" 'dired-flag-backup-files)
- ;; ;; Upper case keys (except !) for operating on the marked files
- ;; (evil-define-key 'normal dired-mode-map "A" 'dired-do-find-regexp)
- ;; (evil-define-key 'normal dired-mode-map "C" 'dired-do-copy)
- ;; (evil-define-key 'normal dired-mode-map "B" 'dired-do-byte-compile)
- ;; (evil-define-key 'normal dired-mode-map "D" 'dired-do-delete)
- ;; (evil-define-key 'normal dired-mode-map "G" 'dired-do-chgrp)
- ;; (evil-define-key 'normal dired-mode-map "H" 'dired-do-hardlink)
- ;; (evil-define-key 'normal dired-mode-map "L" 'dired-do-load)
- ;; (evil-define-key 'normal dired-mode-map "M" 'dired-do-chmod)
- ;; (evil-define-key 'normal dired-mode-map "O" 'dired-do-chown)
- ;; (evil-define-key 'normal dired-mode-map "P" 'dired-do-print)
- ;; (evil-define-key 'normal dired-mode-map "Q" 'dired-do-find-regexp-and-replace)
- ;; (evil-define-key 'normal dired-mode-map "R" 'dired-do-rename)
- ;; (evil-define-key 'normal dired-mode-map "S" 'dired-do-symlink)
- ;; (evil-define-key 'normal dired-mode-map "T" 'dired-do-touch)
- ;; (evil-define-key 'normal dired-mode-map "X" 'dired-do-shell-command)
- ;; (evil-define-key 'normal dired-mode-map "Z" 'dired-do-compress)
- ;; (evil-define-key 'normal dired-mode-map "c" 'dired-do-compress-to)
- ;; (evil-define-key 'normal dired-mode-map "!" 'dired-do-shell-command)
- ;; (evil-define-key 'normal dired-mode-map "&" 'dired-do-async-shell-command)
- ;; ;; Comparison commands
- ;; (evil-define-key 'normal dired-mode-map "=" 'dired-diff)
- ;; ;; Tree Dired commands
- ;; (evil-define-key 'normal dired-mode-map "\M-\C-?" 'dired-unmark-all-files)
- ;; (evil-define-key 'normal dired-mode-map "\M-\C-d" 'dired-tree-down)
- ;; (evil-define-key 'normal dired-mode-map "\M-\C-u" 'dired-tree-up)
- ;; (evil-define-key 'normal dired-mode-map "\M-\C-n" 'dired-next-subdir)
- ;; (evil-define-key 'normal dired-mode-map "\M-\C-p" 'dired-prev-subdir)
- ;; ;; move to marked files
- ;; (evil-define-key 'normal dired-mode-map "\M-{" 'dired-prev-marked-file)
- ;; (evil-define-key 'normal dired-mode-map "\M-}" 'dired-next-marked-file)
- ;; ;; Make all regexp commands share a `%' prefix:
- ;; ;; We used to get to the submap via a symbol dired-regexp-prefix,
- ;; ;; but that seems to serve little purpose, and copy-keymap
- ;; ;; does a better job without it.
- ;; (evil-define-key 'normal dired-mode-map "%" nil)
- ;; (evil-define-key 'normal dired-mode-map "%u" 'dired-upcase)
- ;; (evil-define-key 'normal dired-mode-map "%l" 'dired-downcase)
- ;; (evil-define-key 'normal dired-mode-map "%d" 'dired-flag-files-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%g" 'dired-mark-files-containing-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%m" 'dired-mark-files-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%r" 'dired-do-rename-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%C" 'dired-do-copy-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%H" 'dired-do-hardlink-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%R" 'dired-do-rename-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%S" 'dired-do-symlink-regexp)
- ;; (evil-define-key 'normal dired-mode-map "%&" 'dired-flag-garbage-files)
- ;; ;; Commands for marking and unmarking.
- ;; (evil-define-key 'normal dired-mode-map "*" nil)
- ;; (evil-define-key 'normal dired-mode-map "**" 'dired-mark-executables)
- ;; (evil-define-key 'normal dired-mode-map "*/" 'dired-mark-directories)
- ;; (evil-define-key 'normal dired-mode-map "*@" 'dired-mark-symlinks)
- ;; (evil-define-key 'normal dired-mode-map "*%" 'dired-mark-files-regexp)
- ;; (evil-define-key 'normal dired-mode-map "*c" 'dired-change-marks)
- ;; (evil-define-key 'normal dired-mode-map "*s" 'dired-mark-subdir-files)
- ;; (evil-define-key 'normal dired-mode-map "*m" 'dired-mark)
- ;; (evil-define-key 'normal dired-mode-map "*u" 'dired-unmark)
- ;; (evil-define-key 'normal dired-mode-map "*?" 'dired-unmark-all-files)
- ;; (evil-define-key 'normal dired-mode-map "*!" 'dired-unmark-all-marks)
- ;; (evil-define-key 'normal dired-mode-map "U" 'dired-unmark-all-marks)
- ;; (evil-define-key 'normal dired-mode-map "*\177" 'dired-unmark-backward)
- ;; (evil-define-key 'normal dired-mode-map "*\C-n" 'dired-next-marked-file)
- ;; (evil-define-key 'normal dired-mode-map "*\C-p" 'dired-prev-marked-file)
- ;; (evil-define-key 'normal dired-mode-map "*t" 'dired-toggle-marks)
- ;; ;; Lower keys for commands not operating on all the marked files
- ;; (evil-define-key 'normal dired-mode-map "a" 'dired-find-alternate-file)
- ;; (evil-define-key 'normal dired-mode-map "d" 'dired-flag-file-deletion)
- ;; (evil-define-key 'normal dired-mode-map "e" 'dired-find-file)
- ;; (evil-define-key 'normal dired-mode-map "f" 'dired-find-file)
- ;; (evil-define-key 'normal dired-mode-map "\C-m" 'dired-find-file)
- ;; (put 'dired-find-file :advertised-binding "\C-m")
- ;; (evil-define-key 'normal dired-mode-map "g" 'revert-buffer)
- ;; (evil-define-key 'normal dired-mode-map "i" 'dired-maybe-insert-subdir)
- ;; (evil-define-key 'normal dired-mode-map "j" 'dired-goto-file)
- ;; (evil-define-key 'normal dired-mode-map "k" 'dired-do-kill-lines)
- ;; (evil-define-key 'normal dired-mode-map "l" 'dired-do-redisplay)
- ;; (evil-define-key 'normal dired-mode-map "m" 'dired-mark)
- ;; (evil-define-key 'normal dired-mode-map "n" 'dired-next-line)
- ;; (evil-define-key 'normal dired-mode-map "o" 'dired-find-file-other-window)
- ;; (evil-define-key 'normal dired-mode-map "\C-o" 'dired-display-file)
- ;; (evil-define-key 'normal dired-mode-map "p" 'dired-previous-line)
- ;; (evil-define-key 'normal dired-mode-map "s" 'dired-sort-toggle-or-edit)
- ;; (evil-define-key 'normal dired-mode-map "t" 'dired-toggle-marks)
- ;; (evil-define-key 'normal dired-mode-map "u" 'dired-unmark)
- ;; (evil-define-key 'normal dired-mode-map "v" 'dired-view-file)
- ;; (evil-define-key 'normal dired-mode-map "w" 'dired-copy-filename-as-kill)
- ;; (evil-define-key 'normal dired-mode-map "W" 'browse-url-of-dired-file)
- ;; (evil-define-key 'normal dired-mode-map "x" 'dired-do-flagged-delete)
- ;; (evil-define-key 'normal dired-mode-map "y" 'dired-show-file-type)
- ;; (evil-define-key 'normal dired-mode-map "+" 'dired-create-directory)
- ;; ;; moving
- ;; (evil-define-key 'normal dired-mode-map "<" 'dired-prev-dirline)
- ;; (evil-define-key 'normal dired-mode-map ">" 'dired-next-dirline)
- ;; (evil-define-key 'normal dired-mode-map "^" 'dired-up-directory)
- ;; (evil-define-key 'normal dired-mode-map " " 'dired-next-line)
- ;; (evil-define-key 'normal dired-mode-map [?\S-\ ] 'dired-previous-line)
- ;; (evil-define-key 'normal dired-mode-map [remap next-line] 'dired-next-line)
- ;; (evil-define-key 'normal dired-mode-map [remap previous-line] 'dired-previous-line)
- ;; ;; hiding
- ;; (evil-define-key 'normal dired-mode-map "$" 'dired-hide-subdir)
- ;; (evil-define-key 'normal dired-mode-map "\M-$" 'dired-hide-all)
- ;; (evil-define-key 'normal dired-mode-map "(" 'dired-hide-details-mode)
- ;; ;; isearch
- ;; (evil-define-key 'normal dired-mode-map (kbd "M-s a C-s") 'dired-do-isearch)
- ;; (evil-define-key 'normal dired-mode-map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp)
- ;; (evil-define-key 'normal dired-mode-map (kbd "M-s f C-s") 'dired-isearch-filenames)
- ;; (evil-define-key 'normal dired-mode-map (kbd "M-s f M-C-s") 'dired-isearch-filenames-regexp)
- ;; ;; misc
- ;; (evil-define-key 'normal dired-mode-map [remap read-only-mode] 'dired-toggle-read-only)
- ;; ;; `toggle-read-only' is an obsolete alias for `read-only-mode'
- ;; (evil-define-key 'normal dired-mode-map [remap toggle-read-only] 'dired-toggle-read-only)
- ;; (evil-define-key 'normal dired-mode-map "?" 'dired-summary)
- ;; (evil-define-key 'normal dired-mode-map "\177" 'dired-unmark-backward)
- ;; (evil-define-key 'normal dired-mode-map [remap undo] 'dired-undo)
- ;; (evil-define-key 'normal dired-mode-map [remap advertised-undo] 'dired-undo)
- ;; ;; thumbnail manipulation (image-dired)
- ;; (evil-define-key 'normal dired-mode-map "\C-td" 'image-dired-display-thumbs)
- ;; (evil-define-key 'normal dired-mode-map "\C-tt" 'image-dired-tag-files)
- ;; (evil-define-key 'normal dired-mode-map "\C-tr" 'image-dired-delete-tag)
- ;; (evil-define-key 'normal dired-mode-map "\C-tj" 'image-dired-jump-thumbnail-buffer)
- ;; (evil-define-key 'normal dired-mode-map "\C-ti" 'image-dired-dired-display-image)
- ;; (evil-define-key 'normal dired-mode-map "\C-tx" 'image-dired-dired-display-external)
- ;; (evil-define-key 'normal dired-mode-map "\C-ta" 'image-dired-display-thumbs-append)
- ;; (evil-define-key 'normal dired-mode-map "\C-t." 'image-dired-display-thumb)
- ;; (evil-define-key 'normal dired-mode-map "\C-tc" 'image-dired-dired-comment-files)
- ;; (evil-define-key 'normal dired-mode-map "\C-tf" 'image-dired-mark-tagged-files)
- ;; (evil-define-key 'normal dired-mode-map "\C-t\C-t" 'image-dired-dired-toggle-marked-thumbs)
- ;; (evil-define-key 'normal dired-mode-map "\C-te" 'image-dired-dired-edit-comment-and-tags)
- ;; ;; encryption and decryption (epa-dired)
- ;; (evil-define-key 'normal dired-mode-map ":d" 'epa-dired-do-decrypt)
- ;; (evil-define-key 'normal dired-mode-map ":v" 'epa-dired-do-verify)
- ;; (evil-define-key 'normal dired-mode-map ":s" 'epa-dired-do-sign)
- ;; (evil-define-key 'normal dired-mode-map ":e" 'epa-dired-do-encrypt)
- #+END_SRC
- *** create parentdir on copy
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (require 'dired-aux)
- (defalias 'dired-do-create-files 'lawlist-dired-do-create-files)
- (defun lawlist-dired-do-create-files (op-symbol file-creator operation arg
- &optional marker-char op1 how-to)
- "(1) If the path entered by the user in the mini-buffer ends in a trailing
- forward slash /, then the code assumes the path is a directory -- to be
- created if it does not already exist.; (2) if the trailing forward slash
- is omitted, the code prompts the user to specify whether that path is a
- directory."
- (or op1 (setq op1 operation))
- (let* (
- skip-overwrite-confirmation
- (fn-list (dired-get-marked-files nil arg))
- (rfn-list (mapcar (function dired-make-relative) fn-list))
- (dired-one-file ; fluid variable inside dired-create-files
- (and (consp fn-list) (null (cdr fn-list)) (car fn-list)))
- (target-dir
- (if dired-one-file
- (dired-get-file-for-visit) ;; filename if one file
- (dired-dwim-target-directory))) ;; directory of multiple files
- (default (and dired-one-file
- (expand-file-name (file-name-nondirectory (car fn-list))
- target-dir)) )
- (defaults (dired-dwim-target-defaults fn-list target-dir))
- (target (expand-file-name ; fluid variable inside dired-create-files
- (minibuffer-with-setup-hook (lambda ()
- (set (make-local-variable 'minibuffer-default-add-function) nil)
- (setq minibuffer-default defaults))
- (dired-mark-read-file-name
- (concat (if dired-one-file op1 operation) " %s to: ")
- target-dir op-symbol arg rfn-list default))))
- (unmodified-initial-target target)
- (into-dir (cond ((null how-to)
- (if (and (memq system-type '(ms-dos windows-nt cygwin))
- (eq op-symbol 'move)
- dired-one-file
- (string= (downcase
- (expand-file-name (car fn-list)))
- (downcase
- (expand-file-name target)))
- (not (string=
- (file-name-nondirectory (car fn-list))
- (file-name-nondirectory target))))
- nil
- (file-directory-p target)))
- ((eq how-to t) nil)
- (t (funcall how-to target)))))
- (if (and (consp into-dir) (functionp (car into-dir)))
- (apply (car into-dir) operation rfn-list fn-list target (cdr into-dir))
- (or into-dir (setq target (directory-file-name target)))
- ;; create new directories if they do not exist.
- (when
- (and
- (not (file-directory-p (file-name-directory target)))
- (file-exists-p (directory-file-name (file-name-directory target))))
- (let ((debug-on-quit nil))
- (signal 'quit `(
- "A file with the same name as the proposed directory already exists."))))
- (when
- (and
- (not (file-exists-p (directory-file-name (expand-file-name target))))
- (or
- (and
- (null dired-one-file)
- (not (string-match "\\(.*\\)\\(/$\\)" unmodified-initial-target)))
- (not (file-directory-p (file-name-directory target)))
- (string-match "\\(.*\\)\\(/$\\)" unmodified-initial-target)) )
- (let* (
- new
- list-of-directories
- list-of-shortened-directories
- string-of-directories-a
- string-of-directories-b
- (max-mini-window-height 3)
- (expanded (directory-file-name (expand-file-name target)))
- (try expanded) )
- ;; Find the topmost nonexistent parent dir (variable `new')
- (while (and try (not (file-exists-p try)) (not (equal new try)))
- (push try list-of-directories)
- (setq new try
- try (directory-file-name (file-name-directory try))))
- (setq list-of-shortened-directories
- (mapcar
- (lambda (x) (concat "..." (car (cdr (split-string x try)))))
- list-of-directories))
- (setq string-of-directories-a
- (combine-and-quote-strings list-of-shortened-directories))
- (setq string-of-directories-b (combine-and-quote-strings
- (delete (car (last list-of-shortened-directories))
- list-of-shortened-directories)))
- (if
- (and
- (not (string-match "\\(.*\\)\\(/$\\)" unmodified-initial-target))
- ;; (cdr list-of-directories)
- dired-one-file
- (file-exists-p dired-one-file)
- (not (file-directory-p dired-one-file)))
- (if (y-or-n-p
- (format "Is `%s` a directory?" (car (last list-of-directories))))
- (progn
- (or (y-or-n-p (format "@ `%s`, create: %s" try string-of-directories-a))
- (let ((debug-on-quit nil))
- (signal 'quit `("You have exited the function."))))
- (make-directory expanded t)
- (setq into-dir t))
- (if (equal (file-name-directory target) (file-name-directory dired-one-file))
- (setq new nil)
- (or (y-or-n-p
- (format "@ `%s`, create: %s" try string-of-directories-b))
- (let ((debug-on-quit nil))
- (signal 'quit `("You have exited the function."))))
- (make-directory (car (split-string
- (car (last list-of-directories))
- (concat "/" (file-name-nondirectory target)))) t)
- (setq target (file-name-directory target))
- (setq into-dir t) ))
- (or (y-or-n-p (format "@ `%s`, create: %s" try string-of-directories-a))
- (let ((debug-on-quit nil))
- (signal 'quit `("You have exited the function."))))
- (make-directory expanded t)
- (setq into-dir t) )
- (when new
- (dired-add-file new)
- (dired-move-to-filename))
- (setq skip-overwrite-confirmation t) ))
- (lawlist-dired-create-files file-creator operation fn-list
- (if into-dir ; target is a directory
- (function (lambda (from)
- (expand-file-name (file-name-nondirectory from) target)))
- (function (lambda (_from) target)))
- marker-char skip-overwrite-confirmation ))))
- (defun lawlist-dired-create-files (file-creator operation fn-list name-constructor
- &optional marker-char skip-overwrite-confirmation)
- (let (dired-create-files-failures failures
- skipped (success-count 0) (total (length fn-list)))
- (let (to overwrite-query overwrite-backup-query)
- (dolist (from fn-list)
- (setq to (funcall name-constructor from))
- (if (equal to from)
- (progn
- (setq to nil)
- (dired-log "Cannot %s to same file: %s\n"
- (downcase operation) from)))
- (if (not to)
- (setq skipped (cons (dired-make-relative from) skipped))
- (let* ((overwrite (file-exists-p to))
- (dired-overwrite-confirmed ; for dired-handle-overwrite
- (and overwrite (not skip-overwrite-confirmation)
- (let ((help-form '(format "\
- Type SPC or `y' to overwrite file `%s',
- DEL or `n' to skip to next,
- ESC or `q' to not overwrite any of the remaining files,
- `!' to overwrite all remaining files with no more questions." to)))
- (dired-query 'overwrite-query
- "Overwrite `%s'?" to))))
- ;; must determine if FROM is marked before file-creator
- ;; gets a chance to delete it (in case of a move).
- (actual-marker-char
- (cond ((integerp marker-char) marker-char)
- (marker-char (dired-file-marker from)) ; slow
- (t nil))))
- (let ((destname (file-name-directory to)))
- (when (and (file-directory-p from)
- (file-directory-p to)
- (eq file-creator 'dired-copy-file))
- (setq to destname))
- ;; If DESTNAME is a subdirectory of FROM, not a symlink,
- ;; and the method in use is copying, signal an error.
- (and (eq t (car (file-attributes destname)))
- (eq file-creator 'dired-copy-file)
- (file-in-directory-p destname from)
- (error "Cannot copy `%s' into its subdirectory `%s'"
- from to)))
- (condition-case err
- (progn
- (funcall file-creator from to dired-overwrite-confirmed)
- (if overwrite
- ;; If we get here, file-creator hasn't been aborted
- ;; and the old entry (if any) has to be deleted
- ;; before adding the new entry.
- (dired-remove-file to))
- (setq success-count (1+ success-count))
- (message "%s: %d of %d" operation success-count total)
- (dired-add-file to actual-marker-char))
- (file-error ; FILE-CREATOR aborted
- (progn
- (push (dired-make-relative from)
- failures)
- (dired-log "%s `%s' to `%s' failed:\n%s\n"
- operation from to err))))))))
- (cond
- (dired-create-files-failures
- (setq failures (nconc failures dired-create-files-failures))
- (dired-log-summary
- (format "%s failed for %d file%s in %d requests"
- operation (length failures)
- (dired-plural-s (length failures))
- total)
- failures))
- (failures
- (dired-log-summary
- (format "%s failed for %d of %d file%s"
- operation (length failures)
- total (dired-plural-s total))
- failures))
- (skipped
- (dired-log-summary
- (format "%s: %d of %d file%s skipped"
- operation (length skipped) total
- (dired-plural-s total))
- skipped))
- (t
- (message "%s: %s file%s"
- operation success-count (dired-plural-s success-count)))))
- (dired-move-to-filename))
- #+END_SRC
- ** python
- *** compile format bindings
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (evil-leader/set-key-for-mode 'python-mode "," 'spacemacs/python-execute-file)
- (evil-leader/set-key-for-mode 'python-mode "." 'spacemacs/python-format-buffer)
- #+END_SRC
- ** Git
- *** unbind numbers
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package magit
- :defer t
- :config
- (define-key magit-status-mode-map (kbd "0") 'nil)
- (define-key magit-status-mode-map (kbd "1") 'nil)
- (define-key magit-status-mode-map (kbd "2") 'nil)
- (define-key magit-status-mode-map (kbd "3") 'nil)
- (define-key magit-status-mode-map (kbd "4") 'nil)
- )
- #+END_SRC
- ** Latex
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package latex
- :defer t
- :config
- (evil-leader/set-key-for-mode 'latex-mode
- "fb" 'LaTeX-fill-buffer)
- (evil-leader/set-key-for-mode 'latex-mode
- "," 'latex/build)
- (evil-leader/set-key-for-mode 'latex-mode
- "." 'LaTeX-fill-paragraph)
- (evil-leader/set-key-for-mode 'latex-mode
- "o" 'TeX-error-overview)
- )
- (add-hook 'LaTeX-mode-hook #'evil-tex-mode)
- #+END_SRC
- ** elisp
- *** eval and replace
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun eval-and-replace ()
- (interactive)
- (search-forward ")")
- (let ((value (eval (preceding-sexp))))
- (kill-sexp -1)
- (if (stringp value)
- (insert (substring (format "%S" value) 1 -1 ))
- (insert (format "%S" value))
- )
- ))
- (evil-leader/set-key
- "er" 'eval-and-replace
- )
- #+END_SRC
- *** macro to lisp
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun macroToLisp()
- (interactive)
- (name-last-kbd-macro (intern "tolisp"))
- (evil-open-below 1)
- (insert (concat "(execute-kbd-macro "
- (with-temp-buffer
- ;; (switch-to-buffer "try")
- (insert-kbd-macro (intern-soft "tolisp"))
- (goto-char (point-min))
- (search-forward "[")
- (let ((a (- (point) 1)))
- (search-forward "]")
- (buffer-substring-no-properties a (point))
- )
- )")" ))
- (evil-normal-state)
- (evil-first-non-blank)
- )
- (evil-leader/set-key
- "em" 'macroToLisp
- )
- #+END_SRC
- *** run on buffer copy
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun run (macro &optional try)
- "Edits string and returns it"
- (clipboard-kill-ring-save (point-min) (point))
- (let ((this-buffer (buffer-name))
- (buffy "*edit-string*"))
- (save-excursion
- (switch-to-buffer buffy)
- (set-buffer buffy)
- (erase-buffer)
- (yank)
- (funcall macro)
- ;; (setq new-value (buffer-substring-no-properties (point-min) (point-max)))
- (setq new-value (thing-at-point 'line t))
- (unless try
- (kill-buffer buffy)
- (switch-to-buffer this-buffer)
- )
- new-value)))
- #+END_SRC
- *** insert command from keybinding
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (defun insertCommandByKey ()
- (interactive)
- (insert (replace-regexp-in-string ".*runs the command " ""
- (call-interactively 'describe-key-briefly))
- ))
- (evil-leader/set-key
- "hc" 'insertCommandByKey
- )
- #+END_SRC
- ** typit
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (spacemacs/set-leader-keys "a1" 'typit-basic-test)
- #+END_SRC
- * temp
- ** exwm
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package exwm
- :config
- (general-def "s-l" 'evil-window-up)
- (general-def "s-a" 'evil-window-down)
- (general-def "s-i" 'evil-window-left)
- (general-def "s-e" 'evil-window-right)
- (general-def "s-ö" 'spacemacs/kill-this-buffer)
- (general-def "s-m" '(lambda nil (interactive) (exwm-workspace-switch 0)))
- (general-def "s-," '(lambda nil (interactive) (exwm-workspace-switch 1)))
- (general-def "s-." '(lambda nil (interactive) (exwm-workspace-switch 2)))
- (general-def "s-n" '(lambda nil (interactive) (exwm-workspace-switch 3)))
- (general-def "s-r" '(lambda nil (interactive) (exwm-workspace-switch 4)))
- (general-def "s-t" '(lambda nil (interactive) (exwm-workspace-switch 5)))
- (general-def "s-h" '(lambda nil (interactive) (exwm-workspace-switch 6)))
- (general-def "s-g" '(lambda nil (interactive) (exwm-workspace-switch 7)))
- (general-def "s-f" '(lambda nil (interactive) (exwm-workspace-switch 8)))
- (general-def "s-q" '(lambda nil (interactive) (exwm-workspace-switch 9)))
- )
- #+END_SRC
- #+BEGIN_SRC emacs-lisp
- (use-package exwm
- :init
- (setq mouse-autoselect-window nil
- focus-follows-mouse t
- exwm-workspace-warp-cursor t
- exwm-workspace-number 5)
- ;exwm-workspace-display-echo-area-timeout 5
- ;exwm-workspace-minibuffer-position 'bottom) ;; Annoying focus issues
- :config
- ;; Make class name the buffer name
- (add-hook 'exwm-update-class-hook
- (lambda ()
- (exwm-workspace-rename-buffer exwm-class-name)))
- (add-hook 'exwm-update-title-hook
- (lambda ()
- (pcase exwm-class-name
- ("Vimb" (exwm-workspace-rename-buffer (format "vimb: %s" exwm-title)))
- ("qutebrowser" (exwm-workspace-rename-buffer (format "Qutebrowser: %s" exwm-title))))))
- (exwm-enable))
- ;; Enable exwm-randr before exwm-init gets called
- (use-package exwm-randr
- :if dw/exwm-enabled
- :after (exwm)
- :config
- (exwm-randr-enable)
- (setq exwm-randr-workspace-monitor-plist '(4 "eDP-1")))
- (defun exwm/run-in-background (command)
- (let ((command-parts (split-string command "[ ]+")))
- (apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts)))))
- (defun exwm/bind-function (key invocation &rest bindings)
- "Bind KEYs to FUNCTIONs globally"
- (while key
- (exwm-input-set-key (kbd key)
- `(lambda ()
- (interactive)
- (funcall ',invocation)))
- (setq key (pop bindings)
- invocation (pop bindings))))
- (defun exwm/bind-command (key command &rest bindings)
- "Bind KEYs to COMMANDs globally"
- (while key
- (exwm-input-set-key (kbd key)
- `(lambda ()
- (interactive)
- (exwm/run-in-background ,command)))
- (setq key (pop bindings)
- command (pop bindings))))
- (defun dw/exwm-init-hook ()
- ;; Launch Telega in workspace 0 if we've logged in before
- (when (file-exists-p "~/.telega/db.sqlite")
- (telega nil))
- ;; Make workspace 1 be the one where we land at startup
- (exwm-workspace-switch-create 1)
- ;; Open eshell by default
- (eshell)
- ;; Launch apps that will run in the background
- (exwm/run-in-background "dunst")
- (exwm/run-in-background "nm-applet")
- (exwm/run-in-background "syncthing-gtk --minimized")
- (exwm/run-in-background "redshift -l 47.675510:-122.203362 -t 6500:3500"))
- (use-package exwm
- :if dw/exwm-enabled
- :config
- ;(display-time-mode 1) ;; Not needed for now since we have a panel
- (add-hook 'exwm-mode-hook
- (lambda ()
- (evil-local-set-key 'motion (kbd "C-u") nil)))
- (require 'dw-exwm)
- (defun dw/setup-window-by-class ()
- (interactive)
- (pcase exwm-class-name
- ("Pidgin" (exwm-workspace-move-window 0))
- ("Pidgin<2>" (exwm-workspace-move-window 0))
- ("teams-for-linux" (exwm-workspace-move-window 3))
- ("Microsoft Teams - Preview" (exwm-workspace-move-window 3))
- ("Spotify" (exwm-workspace-move-window 4))
- ("Vimb" (exwm-workspace-move-window 2))
- ("qutebrowser" (exwm-workspace-move-window 2))
- ("qjackctl" (exwm-floating-toggle-floating))
- ("mpv" (exwm-floating-toggle-floating)
- (dw/exwm-floating-toggle-pinned))))
- ;; Do some post-init setup
- (add-hook 'exwm-init-hook #'dw/exwm-init-hook)
- ;; Manipulate windows as they're created
- (add-hook 'exwm-manage-finish-hook
- (lambda ()
- ;; Send the window where it belongs
- (dw/setup-window-by-class)))
- ;; Hide the modeline on all X windows
- ;(exwm-layout-hide-mode-line)))
- ;; Hide the modeline on all X windows
- (add-hook 'exwm-floating-setup-hook
- (lambda ()
- (exwm-layout-hide-mode-line))))
- (use-package exwm-systemtray
- :disabled
- :if dw/exwm-enabled
- :after (exwm)
- :config
- (exwm-systemtray-enable)
- (setq exwm-systemtray-height 35))
- (defun dw/run-xmodmap ()
- (interactive)
- (start-process-shell-command "xmodmap" nil "xmodmap ~/.dotfiles/.config/i3/Xmodmap"))
- (defun dw/update-wallpapers ()
- (interactive)
- (start-process-shell-command
- "feh" nil
- (format "feh --bg-scale ~/.dotfiles/backgrounds/%s" (alist-get 'desktop/background dw/system-settings))))
- (setq dw/panel-process nil)
- (defun dw/kill-panel ()
- (interactive)
- (when dw/panel-process
- (ignore-errors
- (kill-process dw/panel-process)))
- (setq dw/panel-process nil))
- (defun dw/start-panel ()
- (interactive)
- (dw/kill-panel)
- (setq dw/panel-process (start-process-shell-command "polybar" nil "polybar panel")))
- (defun dw/update-screen-layout ()
- (interactive)
- (let ((layout-script "~/.bin/update-screens"))
- (message "Running screen layout script: %s" layout-script)
- (start-process-shell-command "xrandr" nil layout-script)))
- (defun dw/configure-desktop ()
- (interactive)
- (dw/run-xmodmap)
- (dw/update-screen-layout)
- (run-at-time "2 sec" nil (lambda () (dw/update-wallpapers))))
- (defun dw/on-exwm-init ()
- (dw/configure-desktop)
- (dw/start-panel))
- (when dw/exwm-enabled
- ;; Configure the desktop for first load
- (add-hook 'exwm-init-hook #'dw/on-exwm-init))
- (defalias 'switch-to-buffer-original 'exwm-workspace-switch-to-buffer)
- ;; (defalias 'switch-to-buffer 'exwm-workspace-switch-to-buffer)
- ;; (defun dw/counsel-switch-buffer ()
- ;; "Switch to another buffer.
- ;; Display a preview of the selected ivy completion candidate buffer
- ;; in the current window."
- ;; (interactive)
- ;; (ivy-read "Switch to buffer: " 'internal-complete-buffer
- ;; :preselect (buffer-name (other-buffer (current-buffer)))
- ;; :keymap ivy-switch-buffer-map
- ;; :action #'ivy--switch-buffer-action
- ;; :matcher #'ivy--switch-buffer-matcher
- ;; :caller 'counsel-switch-buffer
- ;; :unwind #'counsel--switch-buffer-unwind
- ;; :update-fn 'counsel--switch-buffer-update-fn)
- ;; )
- (defun dw/send-polybar-hook (name number)
- (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" name number)))
- (defun dw/update-polybar-exwm (&optional path)
- (dw/send-polybar-hook "exwm" 1)
- (dw/send-polybar-hook "exwm-path" 1))
- (defun dw/update-polybar-telegram ()
- (dw/send-polybar-hook "telegram" 1))
- (defun dw/polybar-exwm-workspace ()
- (pcase exwm-workspace-current-index
- (0 "")
- (1 "")
- (2 "")
- (3 "")
- (4 "")))
- (defun dw/polybar-exwm-workspace-path ()
- (let ((workspace-path (frame-parameter nil 'bufler-workspace-path-formatted)))
- (if workspace-path
- (substring-no-properties workspace-path)
- "")))
- (defun dw/polybar-mail-count (max-count)
- (if dw/mail-enabled
- (let* ((mail-count (shell-command-to-string
- (format "mu find --nocolor -n %s \"%s\" | wc -l" max-count dw/mu4e-inbox-query))))
- (format " %s" (string-trim mail-count)))
- ""))
- (defun dw/telega-normalize-name (chat-name)
- (let* ((trimmed-name (string-trim-left (string-trim-right chat-name "}") "◀{"))
- (first-name (nth 0 (split-string trimmed-name " "))))
- first-name))
- (defun dw/propertized-to-polybar (buffer-name)
- (if-let* ((text (substring-no-properties buffer-name))
- (fg-face (get-text-property 0 'face buffer-name))
- (fg-color (face-attribute fg-face :foreground)))
- (format "%%{F%s}%s%%{F-}" fg-color (dw/telega-normalize-name text))
- text))
- (defun dw/polybar-telegram-chats ()
- (if (> (length tracking-buffers) 0)
- (format " %s" (string-join (mapcar 'dw/propertized-to-polybar tracking-buffers) ", "))
- ""))
- (add-hook 'exwm-workspace-switch-hook #'dw/update-polybar-exwm)
- (add-hook 'bufler-workspace-set-hook #'dw/update-polybar-exwm)
- (when dw/exwm-enabled
- ;; These keys should always pass through to Emacs
- (setq exwm-input-prefix-keys
- '(?\C-x
- ?\C-h
- ?\M-x
- ?\M-`
- ?\M-&
- ?\M-:
- ?\C-\M-j ;; Buffer list
- ?\C-\M-k ;; Browser list
- ?\C-\ ;; Ctrl+Space
- ?\C-\;))
- ;; Ctrl+Q will enable the next key to be sent directly
- (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
- (defun exwm/run-vimb ()
- (exwm/run-in-background "vimb")
- (exwm-workspace-switch-create 2))
- (defun exwm/run-qute ()
- (exwm/run-in-background "qutebrowser")
- (exwm-workspace-switch-create 2))
- (exwm/bind-function
- "s-o" 'exwm/run-qute)
- (exwm/bind-command
- "s-p" "playerctl play-pause"
- "s-[" "playerctl previous"
- "s-]" "playerctl next")
- (use-package desktop-environment
- :after exwm
- :config (desktop-environment-mode)
- :custom
- (desktop-environment-brightness-small-increment "2%+")
- (desktop-environment-brightness-small-decrement "2%-")
- (desktop-environment-brightness-normal-increment "5%+")
- (desktop-environment-brightness-normal-decrement "5%-"))
- ;; This needs a more elegant ASCII banner
- (defhydra hydra-exwm-move-resize (:timeout 4)
- "Move/Resize Window (Shift is bigger steps, Ctrl moves window)"
- ("j" (lambda () (interactive) (exwm-layout-enlarge-window 10)) "V 10")
- ("J" (lambda () (interactive) (exwm-layout-enlarge-window 30)) "V 30")
- ("k" (lambda () (interactive) (exwm-layout-shrink-window 10)) "^ 10")
- ("K" (lambda () (interactive) (exwm-layout-shrink-window 30)) "^ 30")
- ("h" (lambda () (interactive) (exwm-layout-shrink-window-horizontally 10)) "< 10")
- ("H" (lambda () (interactive) (exwm-layout-shrink-window-horizontally 30)) "< 30")
- ("l" (lambda () (interactive) (exwm-layout-enlarge-window-horizontally 10)) "> 10")
- ("L" (lambda () (interactive) (exwm-layout-enlarge-window-horizontally 30)) "> 30")
- ("C-j" (lambda () (interactive) (exwm-floating-move 0 10)) "V 10")
- ("C-S-j" (lambda () (interactive) (exwm-floating-move 0 30)) "V 30")
- ("C-k" (lambda () (interactive) (exwm-floating-move 0 -10)) "^ 10")
- ("C-S-k" (lambda () (interactive) (exwm-floating-move 0 -30)) "^ 30")
- ("C-h" (lambda () (interactive) (exwm-floating-move -10 0)) "< 10")
- ("C-S-h" (lambda () (interactive) (exwm-floating-move -30 0)) "< 30")
- ("C-l" (lambda () (interactive) (exwm-floating-move 10 0)) "> 10")
- ("C-S-l" (lambda () (interactive) (exwm-floating-move 30 0)) "> 30")
- ("f" nil "finished" :exit t))
- ;; Workspace switching
- (setq exwm-input-global-keys
- `(([?\s-\C-r] . exwm-reset)
- ([?\s-w] . exwm-workspace-switch)
- ([?\s-r] . hydra-exwm-move-resize/body)
- ([?\s-e] . dired-jump)
- ([?\s-E] . (lambda () (interactive) (dired "~")))
- ([?\s-Q] . (lambda () (interactive) (kill-buffer)))
- ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0)))
- ,@(mapcar (lambda (i)
- `(,(kbd (format "s-%d" i)) .
- (lambda ()
- (interactive)
- (exwm-workspace-switch-create ,i))))
- (number-sequence 0 9))))
- (exwm-input-set-key (kbd "<s-return>") 'vterm)
- (exwm-input-set-key (kbd "s-SPC") 'counsel-linux-app)
- (exwm-input-set-key (kbd "s-f") 'exwm-layout-toggle-fullscreen))
- #+END_SRC
- ** abc debugging
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package dap-mode
- :defer t
- :config
- (dap-register-debug-template
- "abc::Run"
- (list :type "gdb"
- :request "launch"
- :name "abc::Run"
- :target "./abc"
- :arguments "-F script"
- :cwd "/home/froleyks/JKU/abc")))
- #+END_SRC
- ** mobical debugging
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package dap-mode
- :defer t
- :config
- (defun get-red ()
- (with-temp-buffer
- (insert-file-contents "/home/froleyks/JKU/cadical/makefile")
- (search-forward-regexp "./build/mobical -l .*build/" nil t)
- (concat " -l " (buffer-substring (point) (point-at-eol)))
- ))
- (dap-register-debug-template
- "abc::mobical"
- (list :type "gdb"
- :request "launch"
- :name "abc::mobical"
- :target "./mobical"
- :arguments (get-red)
- :cwd "/home/froleyks/JKU/cadical/build"))
- (general-def 'motion "ß" (lambda ()
- (interactive)
- (save-some-buffers 'no-confirm)
- (async-shell-command "cd /home/froleyks/JKU/cadical && make run")
- ))
- (defun latest-bug (path)
- "Get latest file (including directory) in PATH."
- ;; (car (seq-filter (directory-files path 'full nil #'file-newer-than-file-p))))
- (car (seq-filter (lambda (x) (string-match-p (regexp-quote "red-") x)) (directory-files path 'full nil #'file-newer-than-file-p))))
- (defun debug-latest ()
- (interactive)
- (find-file "/home/froleyks/JKU/abc/src/sat/cadical/makefile")
- (beginning-of-buffer)
- (search-forward "run:")
- (evil-open-below 1)
- (insert (concat " ./build/mobical -l " (latest-bug "/home/froleyks/JKU/abc/src/sat/cadical/build")))
- (normal-mode)
- (evil-next-line-first-non-blank)
- (evilnc-comment-operator (point) (point-max))
- (evil-previous-line-first-non-blank)
- )
- (spacemacs/set-leader-keys (kbd "dl") 'debug-latest)
- )
- #+END_SRC
- #+STARTUP: fold
- ** por debugging
- #+BEGIN_SRC emacs-lisp :tangle user-config.el
- (use-package dap-mode
- :defer t
- :config
- (dap-register-debug-template
- "abc::por"
- (list :type "gdb"
- :request "launch"
- :target "./build/bin/por"
- :arguments "examples/A.txt examples/B.txt examples/C.txt"
- :cwd "/home/froleyks/JKU/MC/mcex/ws20/projects/project3/por/."))
- )
- #+END_SRC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement