Skip to content

Latest commit

 

History

History
1184 lines (1072 loc) · 38.3 KB

fucku.org

File metadata and controls

1184 lines (1072 loc) · 38.3 KB

Base

Interface

(if (string= system-type "windows-nt")
    (setq
     dj/dropbox "C:/Users/dick jones/Dropbox/"
     dj/nextcloud "C:/Users/dick jones/spambiNC/"
     dj/mpv "mpv.exe"
     browse-url-browser-function 'browse-url-generic
     browse-url-generic-program "C:/Users/dick jones/AppData/Local/Chromium/Application/chrome.exe")
  (if (string= system-type "gnu/linux")
      (setq
       dj/dropbox "~/Dropbox/"
       dj/nextcloud "~/doc/nc/"
       dj/mpv "mpv")))


(setq evil-want-integration t)
(scroll-bar-mode 0)
(show-paren-mode t)
(blink-cursor-mode 0)
(tool-bar-mode -1)
(menu-bar-mode 0)
(setq visible-bell 1)
(electric-pair-mode 1)
(global-visual-line-mode 1)
(global-linum-mode 1)
(global-hl-line-mode 0)
(set-frame-font "hack 11" nil t)

Yasnippet

(use-package yasnippet
  :ensure t
  :config
  (add-hook 'org-mode-hook '(lambda () (set (make-local-variable 'yas-indent-line) 'fixed))))
 (use-package yasnippet-snippets
 :ensure t)
 (yas-global-mode 1)

Flycheck

    (use-package flycheck
      :ensure t
      :config
      (setq flycheck-idle-change-delay 4
	flycheck-check-syntax-automatically '(save mode-enable)))

    (global-flycheck-mode)

    (setq flycheck-python-flake8-executable "C:/Program Files (x86)/Python38-32/Scripts/flake8.exe")

    (setq flycheck-c/c++-clang-executable "c:/Program Files/LLVM/bin/clang.exe")
  

Company

Auto complete framework

(use-package company
  :ensure t
  :hook (after-init . global-company-mode)
  :custom
  (company-tooltip-limit 10)
  (company-idle-delay 0.15)
  (company-minimum-prefix-length 2)
  (company-require-match 'never)
  :config
  (add-to-list 'company-backends 'company-elisp)
  (add-to-list 'company-backends 'company-yasnippet)
  (add-to-list 'company-backends 'company-capf))

(add-hook 'after-init-hook 'global-company-mode)
(global-company-mode t)

(use-package company-irony
  :ensure t)

(use-package company-irony-c-headers
  :ensure t)

Backends

(use-package company-emoji
  :ensure t)
(use-package company-auctex
  :ensure t)
(use-package company-bibtex
  :ensure t)
(use-package company-c-headers
  :ensure t)
(use-package company-ledger
  :ensure t)

Adding Backends

      

I Edit

(use-package iedit
  :ensure t
  :bind ("C-:" . iedit-mode))

Find File Path

   (defun xah-copy-file-path (&optional @dir-path-only-p)
     "Copy the current buffer's file path or dired path to `kill-ring'.
   Result is full path.
   If `universal-argument' is called first, copy only the dir path.

   If in dired, copy the file/dir cursor is on, or marked files.

   If a buffer is not file and not dired, copy value of `default-directory' (which is usually the “current” dir when that buffer was created)

   URL `http://ergoemacs.org/emacs/emacs_copy_file_path.html'
   Version 2017-09-01"

     (interactive "P")
     (let (($fpath
	      (if (string-equal major-mode 'dired-mode)
		  (progn
		    (let (($result (mapconcat 'identity (dired-get-marked-files) "\n")))
		      (if (equal (length $result) 0)
			  (progn default-directory )
			(progn $result))))
		(if (buffer-file-name)
		    (buffer-file-name)
		  (expand-file-name default-directory)))))
	 (kill-new
	  (if @dir-path-only-p
	      (progn
		(message "Directory path copied: 「%s" (file-name-directory $fpath))
		(file-name-directory $fpath))
	    (progn
	      (message "File path copied: 「%s" $fpath)
	      $fpath )))))

   (global-set-key (kbd "C-c C-p") 'xah-copy-file-path)

Flyspell

(dolist (hook '(org-mode-hook))
  (add-hook hook (lambda () (flyspell-mode))))

(setq ispell-program-name "hunspell")
(setq ispell-dictionary "en_US")

(use-package flyspell-correct
  :ensure t
  :after flyspell
  :bind* (:map flyspell-mode-map ("C-'" . flyspell-correct-wrapper)))

(use-package flyspell-correct-ivy
  :ensure t
  :after flyspell-correct)

Japanese

(use-package ddskk
  :ensure t
  :bind (("C-x C-j" . skk-mode))
  :config
  (setq skk-large-jiyso "/usr/share/skk/SKK-JISYO.L"))

Ledger

  (use-package ledger-mode
	  :ensure t
	  :init
	  (setq ledger-clear-whole-transactions 1)

	  :mode "\\.dat\\'")

Anki

Anki Connect

(use-package anki-connect
  :ensure t)

Anki Mode

(use-package anki-mode
  :ensure t
  :bind ("C-c r" . anki-mode-cloze-region))

Theme

(use-package gruvbox-theme
  :ensure t)
(use-package badwolf-theme
  :ensure t)
;(load-theme 'gruvbox t)
(load-theme 'badwolf t)

Revert Buffer

(global-set-key (kbd "<f5>") 'revert-buffer)
(defalias 'yes-or-no-p 'y-or-n-p)

Saves

(setq backup-directory-alist `(("." . "~/.config/saves")))

Dashboard

    (use-package dashboard
      :ensure t
      :init
      (page-break-lines-mode)
      :config
      (dashboard-setup-startup-hook)
      ;(turn-on-page-break-lines-mode t)
      (setq
	dashboard-banner-logo-title "ただいま おにいちゃん!"
	dashboard-center-content t
	dashboard-set-navigator t
	global-page-break-lines-mode t))

Swiper

(use-package swiper
  :ensure t)

(use-package counsel
  :ensure t)

(ivy-mode 1)
(ivy-rich-mode 1)
(setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t)
;; enable this if you want `swiper' to use it
(setq search-default-mode #'char-fold-to-regexp)

(global-set-key "\C-s" 'swiper)
;(global-set-key (kbd "C-c C-r") 'ivy-resume)
;(global-set-key (kbd "<f6>") 'ivy-resume)
(global-set-key (kbd "M-x") 'counsel-M-x)
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
(global-set-key (kbd "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
(global-set-key (kbd "<f1> l") 'counsel-find-library)
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
;(global-set-key (kbd "C-c g") 'counsel-git)
;(global-set-key (kbd "C-c j") 'counsel-git-grep)
;(global-set-key (kbd "C-c k") 'counsel-ag)
;(global-set-key (kbd "C-x l") 'counsel-locate)
;(global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
;(global-set-key (kbd "C-x d") 'counsel-dired)
(global-set-key (kbd "M-s") 'avy-goto-char)

(global-set-key (kbd "C-x b") 'counsel-switch-buffer)
(define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history)

(use-package ivy-yasnippet
  :ensure t
  :bind (("C-c y" . ivy-yasnippet)))

workgroups2

;; unset M- digit keys
(dotimes (n 10)
  (global-unset-key (kbd (format "M-%d" n))))


(use-package workgroups2
  :ensure t
  ;; :bind (:map workgroups-mode-map
  ;;         (("M-1" . wg-switch-to-workgroup-at-index-0))
  ;;         (("M-2" . wg-switch-to-workgroup-at-index-1))
  ;;         (("M-3" . wg-switch-to-workgroup-at-index-2))
  ;;         (("M-4" . wg-switch-to-workgroup-at-index-3)))
  :config 
  (setq wg-workgroups-mode-exit-save-behavior 'save)
  (setq wg-emacs-exit-save-behavior 'save)
  (setq wg-mode-line-display-on t)
  (setq wg-session-file "~/.emacs.d/.emacs_workgroups"))

(workgroups-mode t)

Evil

(use-package evil
	    :ensure t
	    :init
	    (setq evil-want-integration t)
	    (setq evil-want-keybinding nil)
	    :config
	    (evil-mode 1))

(use-package evil-org
  :ensure t)

Evil Org

(use-package evil-org
  :ensure t
  :config
  (add-hook 'org-mode-hook 'evil-org-mode)
  (add-hook 'evil-org-mode-hook
            (lambda ()
              (evil-org-set-key-theme)))
  (require 'evil-org-agenda)
  (evil-org-agenda-set-keys))

Evil Collection

   (use-package evil-collection
     :after evil dired-subtree elfeed
     :ensure t
     :config
     (evil-collection-init)
     (evil-collection-define-key 'normal 'elfeed-search-mode-map
	 "gw" 'dj/ElfeedWatch
	 "ga" 'dj/ElfeedListen
	 "gb" 'dj/ElfeedBrowse
	 "gu" 'elfeed-update
	 "gd" 'dj/ElfeedDownload)
     (evil-collection-define-key 'normal 'elfeed-show-mode-map
	 "gw" 'dj/ElfeedWatch
	 "ga" 'dj/ElfeedListen
	 "gb" 'dj/ElfeedBrowse
	 "gd" 'dj/ElfeedDownload))

   (use-package evil-collection
     :after evil
     :ensure t
     :config
     (evil-collection-init))

Editing

Programming

Python

     (use-package elpy
	:ensure t
	:config
	(elpy-enable))
     (setq elpy-rpc-python-command "python")

Magit

(use-package magit
  :ensure t)

Eshell

    (defun cls ()
	 "Clear the eshell buffer.  Changed to cls for win10."
	 (let ((inhibit-read-only t))
	   (erase-buffer)
	   (eshell-send-input)))

     (defun eshell-handle-ansi-color ()
	 (ansi-color-apply-on-region eshell-last-output-start
				     eshell-last-output-end))

     (defun custom-eshell ()
	 "Highlight eshell pwd and prompt separately."
	 (mapconcat
	  (lambda (list)
	    (propertize (car list)
			'read-only      t
			'font-lock-face (cdr list)
			'front-sticky   '(font-lock-face read-only)
			'rear-nonsticky '(font-lock-face read-only)))
	  `((,(abbreviate-file-name (eshell/pwd)) :foreground "#339CDB")
	    (,(if (zerop (user-uid)) " # " " $ ") :foreground "#C678DD"))
	  ""))

     (setq eshell-highlight-prompt nil
	     eshell-prompt-function  #'custom-eshell)

    (add-hook 'comint-mode-hook
		(defun rm-comint-postoutput-scroll-to-bottom ()
		  (remove-hook 'comint-output-filter-functions
			       'comint-postoutput-scroll-to-bottom)))

Org

Org Base

    (use-package org
      :ensure t
      :pin org
      :config
      (org-babel-do-load-languages
	'org-babel-load-languages '((python . t))))
    (setq
     org-directory (concat dj/dropbox "/org/")
     org-archive-location (concat org-directory "archive.org::"))
    
    ;; org ricing
    (setq org-startup-indented t
	   org-bullets-bullet-list '(" ") ;; no bullets, needs org-bullets package
	   ;org-ellipsis "" ;; folding symbol
	   org-pretty-entities t
	   org-hide-emphasis-markers t
	   ;; show actually italicized text instead of /italicized text/
	   org-agenda-block-separator ""
	   org-fontify-whole-heading-line t
	   org-fontify-done-headline t
	   org-fontify-quote-and-verse-blocks t)
    
    (setq org-startup-with-inline-images t)

Org Roam

Main

(use-package org-roam
  :ensure t
  :custom
  ;;C:\Users\dick jones\Dropbox\org\roamv2
  (org-roam-directory (file-truename (concat dj/dropbox "org/roamv2")))
  (org-roam-dailies-directory (concat dj/dropbox "org/roamv2/dailies"))
  (org-roam-dailies-capture-templates
        '(("d" "default" entry "* %<%I:%M> %?"
           :if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n#+date: %U\n#+STARTUP: inlineimages\nTime-stamp: <>"))
          ))
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n i" . org-roam-node-insert)
         :map org-mode-map
         ("C-M-i" . completion-at-point))
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n g" . org-roam-graph)
         ("C-c n i" . org-roam-node-insert)
         ("C-c n c" . org-roam-capture)
         ;; Dailies
         ("C-c d j" . org-roam-dailies-capture-today)
         ("C-c d s" . org-roam-dailies-goto-yesterday)
         ("C-c d d" . org-roam-dailies-goto-today)
         ("C-c d f" . org-roam-dailies-goto-tommorow)))
  (setq org-roam-v2-ack t)
  ;; dailies capture template

  (org-roam-db-autosync-mode)
  (require 'time-stamp)
  (add-hook 'write-file-functions 'time-stamp)

(add-hook 'org-mode-hook '(lambda ()
                            (set (make-local-variable 'company-backends)
                                 '((company-dabbrev-code company-capf)))))




  ;; Show Directories Nodes are in
  (cl-defmethod org-roam-node-directories ((node org-roam-node))
    (if-let ((dirs (file-name-directory (file-relative-name (org-roam-node-file node) org-roam-directory))))
        (format "(%s)" (string-join (f-split dirs) "/"))
      ""))

  (setq org-roam-node-display-template "${directories:10} ${title:*} ${tags:10}")

  ;; Show number of backlinks a Node has
  (cl-defmethod org-roam-node-directories ((node org-roam-node))
    (if-let ((dirs (file-name-directory (file-relative-name (org-roam-node-file node) org-roam-directory))))
        (format "(%s)" (car (f-split dirs)))
      ""))

  (cl-defmethod org-roam-node-backlinkscount ((node org-roam-node))
    (let* ((count (caar (org-roam-db-query
                         [:select (funcall count source)
                                  :from links
                                  :where (= dest $s1)
                                  :and (= type "id")]
                         (org-roam-node-id node)))))
      (format "[%d]" count)))

  (setq org-roam-node-display-template "${directories:10} ${tags:10} ${title:100} ${backlinkscount:6}")


  ;; If using org-roam-protocol
  (require 'org-roam-protocol)
  (setq org-roam-db-node-include-function
        (defun rasen/org-roam-include ()
          ;; exclude org-fc headlines from org-roam
          (not (member "fc" (org-get-tags)))))

(defun org-hide-properties ()
  "Hide all org-mode headline property drawers in buffer. Could be slow if it has a lot of overlays."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward
            "^ *:properties:\n\\( *:.+?:.*\n\\)+ *:end:\n" nil t)
      (let ((ov_this (make-overlay (match-beginning 0) (match-end 0))))
        (overlay-put ov_this 'display "")
        (overlay-put ov_this 'hidden-prop-drawer t))))
  (put 'org-toggle-properties-hide-state 'state 'hidden))

(defun org-show-properties ()
  "Show all org-mode property drawers hidden by org-hide-properties."
  (interactive)
  (remove-overlays (point-min) (point-max) 'hidden-prop-drawer t)
  (put 'org-toggle-properties-hide-state 'state 'shown))

(defun org-toggle-properties ()
  "Toggle visibility of property drawers."
  (interactive)
  (if (eq (get 'org-toggle-properties-hide-state 'state) 'hidden)
      (org-show-properties)
    (org-hide-properties)))
(setq org-roam-v2-ack t)



(setq org-roam-capture-templates '(("d" "default" plain "%?"
                                    :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+date: %U\n#+STARTUP: inlineimages\nTime-stamp: <>")
                                    :unnarrowed t)))

Vulpea

(use-package vulpea
  :ensure t)

(defun vulpea-migrate-buffer ()
  "Migrate current buffer note to `org-roam' v2."
  ;; Create file level ID if it doesn't exist yet
  (org-with-point-at 1
    (org-id-get-create))

  ;; update title (just to make sure it's lowercase)
  (vulpea-buffer-title-set (vulpea-buffer-prop-get "title"))

  ;; move roam_key into properties drawer roam_ref
  (when-let* ((ref (vulpea-buffer-prop-get "roam_key")))
    (org-set-property "ROAM_REFS" ref)
    (let ((case-fold-search t))
      (org-with-point-at 1
        (while (re-search-forward "^#\\+roam_key:" (point-max) t)
          (beginning-of-line)
          (kill-line 1)))))

  ;; move roam_alias into properties drawer roam_aliases
  (when-let* ((aliases (vulpea-buffer-prop-get-list "roam_alias")))
    (org-set-property "ROAM_ALIASES"
                      (combine-and-quote-strings aliases))
    (let ((case-fold-search t))
      (org-with-point-at 1
        (while (re-search-forward "^#\\+roam_alias:" (point-max) t)
          (beginning-of-line)
          (kill-line 1)))))

  ;; move roam_tags into filetags
  (let* ((roam-tags (vulpea-buffer-prop-get-list "roam_tags"))
         (file-tags (vulpea-buffer-prop-get-list "filetags"))
         (path-tags (seq-filter
                     (lambda (x) (not (string-empty-p x)))
                     (split-string
                      (string-remove-prefix
                       org-roam-directory
                       (file-name-directory (buffer-file-name)))
                      "/")))
         (tags (seq-map
                (lambda (tag)
                  (setq tag (replace-regexp-in-string
                             ;; see `org-tag-re'
                             "[^[:alnum:]_@#%]"
                             "_"        ; use any valid char - _@#%
                             tag))
                  (if (or
                       (string-prefix-p "status" tag 'ignore-case)
                       (string-prefix-p "content" tag 'ignore-case)
                       (string-equal "Project" tag))
                      (setq tag (downcase tag)))
                  tag)
                (seq-uniq (append roam-tags file-tags path-tags)))))
    (when tags
      (apply #'vulpea-buffer-tags-set tags)
      (let ((case-fold-search t))
        (org-with-point-at 1
          (while (re-search-forward "^#\\+roam_tags:" (point-max) t)
            (beginning-of-line)
            (kill-line 1))))))

  (save-buffer))

(defun vulpea-migrate-db ()
  "Migrate all notes."
  (interactive)
  (dolist (f (org-roam--list-all-files))
    (with-current-buffer (find-file f)
      (message "migrating %s" f)
      (vulpea-migrate-buffer)))

  ;; Step 2: Build cache
  (org-roam-db-sync 'force))

Deft

(use-package deft
  :ensure t
  :after org
  :bind
  ("C-c n d" . deft)
  :config
  (setq deft-directory concat dj/dropbox "/org/roam/"))

Org Roam Ui

(use-package websocket
  :ensure t)
(use-package simple-httpd
  :ensure t)
(add-to-list 'load-path "~/.emacs.d/site-lisp/org-roam-ui")
(load-library "org-roam-ui")

Org Superstar

(use-package org-superstar
  :ensure t
  :config
  (setq org-hide-emphasis-markers t))
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1)))

Org Agenda

  (setq org-todo-keywords
	    '((sequence "TODO(t)" "DOING(@d)" "|" "DONE(D)")
	      (sequence "PLANNING(p)" "|" "ABANDONED(a)")))
  (setq org-todo-keyword-faces
		  '(
		    ("DOING" . (:foreground "#D19A66" :weight bold))
		    ("DONE" . (:foreground "#98C379" :weight bold))
		    ("PLANNING" . (:foreground "#ffff00" :weight bold))
		    ("ABANDONED" . (:foreground "#BE5046" :weight bold))
		    ))

  (use-package org-super-agenda
	   :ensure t
	   :config
	   (org-super-agenda-mode t))

Org Reveal

     (use-package ox-reveal
	:ensure ox-reveal)
     (use-package htmlize
	:ensure t)

     (setq org-reveal-root "file:///d:/Tools/reveal.js")

Org Capture

 (setq org-capture-templates
	    '(("x" "Misc." entry (file+headline (concat dj/dropbox "/org/capture.org") "Misc.")
	       "* %? %i %^G\n  %i\n  %a")
	      ("m" "Mathematics" entry (file+headline (concat dj/dropbox "/org/capture.org") "Maths")
	       "*  %?\nEntered on %U\n  %i\n  %a\n Chapter: ")
	      ("n" "News" entry (file+headline (concat dj/dropbox "/org/capture.org") "News")
	       "*  %?\nEntered on %U\n  %i\n %a\n")
	       ("t" "TODO" entry (file+headline "c:/Users/dick jones/Dropbox/org/shared/TODO.org" "MISC")
	       "* TODO  %?\nEntered on %U\n ")
	       ("C" "Calendar Entry" entry (file+headline (concat dj/dropbox "/org/TODO.org") "General")
	       "* TODO  %?\nEntered on %U\n ")
	      ("c" "Code Snippets" entry (file+headline (concat dj/dropbox "/org/capture.org") "Code Snippets")
	       "*  %?\nEntered on %U\n  %i\n  %a")))
 (setq org-export-html-style-include-default nil)

Org Cliplink

(use-package org-cliplink
  :ensure t
  :bind (:map org-mode-map
              ("C-c m" . org-cliplink)))

Org Download

(use-package org-download
  :ensure t
  :defer t
  :init
  ;; Add handlers for drag-and-drop when Org is loaded.
  (with-eval-after-load 'org
    (org-download-enable))
  :bind ("M-9" . org-download-yank)
  :config
  (setq-default org-download-method 'directory
                org-download-heading-lvl nil
                org-download-image-dir (concat dj/dropbox "images/orgImages")
                org-image-actual-width 300))

Org Noter

(use-package org-noter
  :ensure t
  :bind (:map nov-mode-map
              (("I" . org-noter-insert-note)))
  :config
  (setq org-noter-notes-window-location 'other-frame
        org-noter-always-create-frame nil
        org-noter-hide-other nil))

;(use-package org-pdftools
;  :ensure t
;  (org-pdftools-setup-link))

(use-package org-noter-pdftools
  :after org-noter
  :config
  (with-eval-after-load 'pdf-annot
    (add-hook 'pdf-annot-activate-handler-functions #'org-noter-pdftools-jump-to-note)))

Org Yt

(use-package org-yt
  :load-path "site-lisp/org-yt.+end_src")

Media

Elfeed

Base

     (use-package elfeed
		   :ensure t)
     (use-package elfeed-org
	:ensure t)

     (setq rmh-elfeed-org-files (list "~/.emacs.d/elfeedURLS.org")
	    rmh-elfeed-org-tree-id "elfeed")
     (use-package elfeed-goodies
	:ensure t
     :config (elfeed-goodies/setup))
     (elfeed-org)

Keybinds

(define-key elfeed-search-mode-map (kbd "w") #'dj/ElfeedWatch)
    

Custom Funcs

     (defun dj/ElfeedWatch ()
	"Copy the selected feed items to clipboard and kill-ring."
	(interactive)
	(let* ((entries (elfeed-search-selected))
	(links (mapcar #'elfeed-entry-link entries))
	(links-str (mapconcat #'identity links " ")))
	  (when entries
     (elfeed-untag entries 'unread)
     (kill-new links-str)
	    ; (if (fboundp 'gui-set-selection)
	    ;     (gui-set-selection elfeed-search-clipboard-type links-str)
	    ;   (with-no-warnings
	    ;     (x-set-selection elfeed-search-clipboard-type links-str)))
     (let* ((video links-str))
	(start-process "dj/mpv" nil
		       "dj/mpv"
		       video)
	"--ytdl-format=bestaudio/best")
	(message "Starting stream...")
	   (mapc #'elfeed-search-update-entry entries)
     (unless (or elfeed-search-remain-on-entry (use-region-p))
	(forward-line)))))

     (defun dj/ElfeedListen ()
	"Copy the selected feed items to clipboard and kill-ring."
	(interactive)
	(let* ((entries (elfeed-search-selected))
	(links (mapcar #'elfeed-entry-link entries))
	(links-str (mapconcat #'identity links " ")))
	  (when entries
     (elfeed-untag entries 'unread)
     (kill-new links-str)
     (let* ((video links-str))
	(start-process "dj/mpv" nil
		       "dj/mpv"
		       video
		       "--no-video"))
	(message "Starting stream...")
	   (mapc #'elfeed-search-update-entry entries)
     (unless (or elfeed-search-remain-on-entry (use-region-p))
	(forward-line)))))

      (defun dj/ElfeedBrowse ()
	 "Copy the selected feed items to clipboard and kill-ring."
	 (interactive)
	 (let* ((entries (elfeed-search-selected))
	 (links (mapcar #'elfeed-entry-link entries))
	 (links-str (mapconcat #'identity links " ")))
	   (when entries
     (elfeed-untag entries 'unread)
     (kill-new links-str)
     (let* ((video links-str))
	(browse-url video)
	(message "Browsing Url...")
	   (mapc #'elfeed-search-update-entry entries)
     (unless (or elfeed-search-remain-on-entry (use-region-p))
	(forward-line))))))

YTEL

(use-package ytel
       :ensure t
       :config
       (setq ytel-invidious-api-url "https://invidious.snopyta.org"))


(defvar invidious-instances-url
      "https://api.invidious.io/instances.json?pretty=1&sort_by=health")

(defun ytel-instances-fetch-json ()
  "Fetch list of invidious instances as json, sorted by health."
  (let
      ((url-request-method "GET")
       (url-request-extra-headers
        '(("Accept" . "application/json"))))
    (with-current-buffer
        (url-retrieve-synchronously invidious-instances-url)
      (goto-char (point-min))
      (re-search-forward "^$")
      (let* ((json-object-type 'alist)
             (json-array-type 'list)
             (json-key-type 'string))
        (json-read)))))

(defun ytel-instances-alist-from-json ()
  "Make the json of invidious instances into an alist."
  (let ((jsonlist (ytel-instances-fetch-json))
        (inst ()))
    (while jsonlist
      (push (concat "https://" (caar jsonlist)) inst)
      (setq jsonlist (cdr jsonlist)))
    (nreverse inst)))

(defun ytel-choose-instance ()
  "Prompt user to choose an invidious instance to use."
  (interactive)
  (setq ytel-invidious-api-url
        (or (condition-case nil
                (completing-read "Using instance: "
                                 (subseq (ytel-instances-alist-from-json) 0 11) nil "confirm" "https://") ; "healthiest" 12 instances; no require match
              (error nil))
            "https://invidious.synopyta.org"))) ; fallback

Custom

   (defun ytel-watch ()
     "Stream video at point in dj/mpv."
	    (interactive)
	    (let* ((video (ytel-get-current-video))
	    (id    (ytel-video-id video)))
	      (start-process "ytel dj/mpv" nil
		      "dj/mpv"
		      (concat "https://www.youtube.com/watch?v=" id))
		      "--ytdl-format=bestaudio/best")
	      (message "Starting streaming..."))

   (defun ytel-watch-replace ()
	    "Stream video at point in dj/mpv."
	    (interactive)
	    (let* ((video (ytel-get-current-video))
	    (id    (ytel-video-id video)))
	      (start-process "ytel dj/mpv" nil
		      "dj/mpv"
		      (concat "https://www.youtube.com/watch?v=" id))
		      "--ytdl-format=bestaudio/best")
	      (message "Starting streaming...")
	    (ytel-remove-current-video))
     
   (defun dj/ytwatch ()
	    "Stream video at point in dj/mpv."
	    (require 'ytel)
	    (interactive)
	    (let* ((video (read-string "Enter Video URL: ")))
	      (start-process "youtube-watch" nil
		      "dj/mpv"
		      video)
		      "--ytdl-format=bestaudio/best")
	      (message "Starting stream..."))


   (defun dj/twitchWatch ()
	    "Stream video at point in dj/mpv."
	    (require 'ytel)
	    (interactive)
	    (let* ((user (read-string "Enter Twitch Usernam: ")))
	      (start-process "dj/twitchWatch" nil
		      "dj/mpv"
		      user)
		      "--ytdl-format=bestaudio/best")
	      (message "Starting stream..."))

   (defun dj/ytelYank ()
     "Will yank from current position in ytel."
     (interactive)
     (let ((fuck (ytel-get-current-video)))
	 (kill-new (concat "https://invidio.us/watch?v="(ytel-video-id fuck)))
	 (message (concat "Yanked: " (concat "https://invidio.us/watch?v="(ytel-video-id fuck))))))

	   (define-key ytel-mode-map (kbd "w") 'ytel-watch)
	   (define-key ytel-mode-map (kbd "W") 'ytel-watch-replace)
	   (define-key ytel-mode-map (kbd "j") 'next-line)
	   (define-key ytel-mode-map (kbd "k") 'previous-line)
	   (define-key ytel-mode-map (kbd "G") 'end-of-buffer)
	   (define-key ytel-mode-map (kbd "g") 'beginning-of-buffer)
	   (define-key ytel-mode-map (kbd "y") 'dj/ytelYank)

Keybinds

(define-key ytel-mode-map (kbd "w") 'ytel-watch)
(define-key ytel-mode-map (kbd "W") 'ytel-watch-replace)
(define-key ytel-mode-map (kbd "j") 'next-line)
(define-key ytel-mode-map (kbd "k") 'previous-line)
(define-key ytel-mode-map (kbd "G") 'end-of-buffer)
(define-key ytel-mode-map (kbd "g") 'beginning-of-buffer)
(define-key ytel-mode-map (kbd "y") 'dj/ytelYank)

Nov

(use-package nov
  :after org-noter
  :ensure t
  :config
  (evil-collection-define-key 'normal 'nov-mode-map
    "i" 'org-noter-insert-note
    "o" 'nov-browse-url))

(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))

(defun my-nov-font-setup ()
  "ahahaha lol."
  (face-remap-add-relative 'variable-pitch :family "ETBembo RomanLF"
                           :height 1.0))

(add-hook 'nov-mode-hook 'my-nov-font-setup)

Twitch

Dump of irc and twitch shit

    (defun start-twitch-irc ()
      "Connects to Twitch."
      (interactive)
      (erc-tls :server "irc.chat.twitch.tv"
		:port 6697
		:nick "spamb1"
		:password "oauth:fxwsl28pwgpxs8orpq1kwfixahm7ij")
      )
    (setq erc-kill-buffer-on-part t)
    (setq erc-kill-server-buffer-on-quit t)
    (use-package alert
      :ensure t
      :config
      (require 'alert)
      (setq alert-default-style 'libnotify)
      (setq alert-fade-time 4))

    ;;; sauron
    (use-package sauron
      :ensure t
      :config
      (require 'sauron-org) 
      (setq sauron-modules '(sauron-erc
			      sauron-dbus
			      sauron-org
			      sauron-notifications
			      sauron-jabber
			      sauron-identica))
      (setq sauron-dbus-cookie t)
      (setq sauron-debug t)
      (setq
	sauron-max-line-length 144
	sauron-watch-patterns
	'("@")
	sauron-watch-nicks
	'("onurcyukruk"))

      (add-hook 'sauron-event-added-functions #'sauron-alert-el-adapter)
      (global-set-key (kbd "\C-c1") 'sauron-start))

    (setq sauron-separate-frame nil) 


    (alert-add-rule  :mode     'erc-mode
		      :predicate
		      #'(lambda (info)
			  (string-match (concat "\\`[^&].*onurcyukruk\\'")
					(erc-format-target-and/or-network)))
		      :style 'libnotify
		      :continue t)

Books

pdf-tools

  (use-package pdf-tools
	:ensure t)
;       (pdf-loader-org-pdftools
;	:ensure t)

Misc

Memes

Nyan

(use-package nyan-mode
  :ensure t
  :config
  (nyan-mode 1)
  (nyan-start-animation)
  (nyan-toggle-wavy-trail))
   

meme el

(add-to-list 'load-path "~/.emacs.d/site-lisp/imgur.el")
(add-to-list 'load-path "~/.emacs.d/site-lisp/meme/")
(require 'imgur)
(require 'meme)
(autoload 'meme "meme.el" "Create a meme from a collection" t)
(autoload 'meme-file "meme.el" "Create a meme from a file" t)

Literate Calc Mode

;(use-package literate-calc-mode
; :hook (org-mode . literate-calc-minor-mode))

Dired

   

Dired Rainbow

 
   (use-package dired-rainbow
     :ensure t
     :config
     (progn
	 (dired-rainbow-define-chmod directory "#6cb2eb" "d.*")
	 (dired-rainbow-define html "#eb5286" ("css" "less" "sass" "scss" "htm" "html" "jhtm" "mht" "eml" "mustache" "xhtml"))
	 (dired-rainbow-define xml "#f2d024" ("xml" "xsd" "xsl" "xslt" "wsdl" "bib" "json" "msg" "pgn" "rss" "yaml" "yml" "rdata"))
	 (dired-rainbow-define document "#9561e2" ("docm" "doc" "docx" "odb" "odt" "pdb" "pdf" "ps" "rtf" "djvu" "epub" "odp" "ppt" "pptx"))
	 (dired-rainbow-define markdown "#ffed4a" ("org" "etx" "info" "markdown" "md" "mkd" "nfo" "pod" "rst" "tex" "textfile" "txt"))
	 (dired-rainbow-define database "#6574cd" ("xlsx" "xls" "csv" "accdb" "db" "mdb" "sqlite" "nc"))
	 (dired-rainbow-define media "#de751f" ("mp3" "mp4" "MP3" "MP4" "avi" "mpeg" "mpg" "flv" "ogg" "mov" "mid" "midi" "wav" "aiff" "flac" "mkv" "webm"))
	 (dired-rainbow-define image "#f66d9b" ("tiff" "tif" "cdr" "gif" "ico" "jpeg" "jpg" "png" "psd" "eps" "svg"))
	 (dired-rainbow-define log "#c17d11" ("log"))
	 (dired-rainbow-define shell "#f6993f" ("awk" "bash" "bat" "sed" "sh" "zsh" "vim" "fish"))
	 (dired-rainbow-define interpreted "#38c172" ("py" "ipynb" "rb" "pl" "t" "msql" "mysql" "pgsql" "sql" "r" "clj" "cljs" "scala" "js"))
	 (dired-rainbow-define compiled "#4dc0b5" ("asm" "cl" "lisp" "el" "c" "h" "c++" "h++" "hpp" "hxx" "m" "cc" "cs" "cp" "cpp" "go" "f" "for" "ftn" "f90" "f95" "f03" "f08" "s" "rs" "hi" "hs" "pyc" ".java"))
	 (dired-rainbow-define executable "#8cc4ff" ("exe" "msi"))
	 (dired-rainbow-define compressed "#51d88a" ("7z" "zip" "bz2" "tgz" "txz" "gz" "xz" "z" "Z" "jar" "war" "ear" "rar" "sar" "xpi" "apk" "xz" "tar"))
	 (dired-rainbow-define packaged "#faad63" ("deb" "rpm" "apk" "jad" "jar" "cab" "pak" "pk3" "vdf" "vpk" "bsp"))
	 (dired-rainbow-define encrypted "#ffed4a" ("gpg" "pgp" "asc" "bfe" "enc" "signature" "sig" "p12" "pem"))
	 (dired-rainbow-define fonts "#6cb2eb" ("afm" "fon" "fnt" "pfb" "pfm" "ttf" "otf"))
	 (dired-rainbow-define partition "#e3342f" ("dmg" "iso" "bin" "nrg" "qcow" "toast" "vcd" "vmdk" "bak"))
	 (dired-rainbow-define vc "#0074d9" ("git" "gitignore" "gitattributes" "gitmodules"))
	 (dired-rainbow-define-chmod executable-unix "#38c172" "-.*x.*")
	 ))

Dired Subtree

   (use-package dired-subtree
     :ensure t
     :config
     (define-key dired-mode-map "n" 'dired-subtree-insert)
     (define-key dired-mode-map "N" 'dired-subtree-remove))

   (with-eval-after-load 'dired-subtree
     (evil-collection-define-key 'normal 'dired-mode-map
	 (kbd "TAB") 'dired-subtree-toggle
	 (kbd "M-j") 'dired-subtree-next-sibling
	 (kbd "M-k") 'dired-subtree-previous-sibling
	 "n" 'dired-subtree-insert
	 "N" 'dired-subtree-remove))

   (define-key dired-mode-map "n" 'dired-subtree-insert)
   (define-key dired-mode-map "N" 'dired-subtree-remove)

Dired Open

     (use-package dired-open
	:ensure t
	:init (require 'dired-open))
   

Doom Modeline

(use-package doom-modeline
 :ensure t
 :init (doom-modeline-mode 1))

Which Key

(use-package which-key
  :ensure t)
(which-key-mode)

Ace Window

   (use-package ace-window
     :ensure t
     :init
     (progn
	 (global-set-key [remap other-window] 'ace-window)
	 (custom-set-faces
	  '(aw-leading-char-face
	    ((t (:inherit ace-jump-face-foreground :height 2.5)))))
	 ))
 

Emojify

(use-package emojify
  :ensure t
  :config
  (global-emojify-mode t))

helm-bibtex

;; (use-package helm-bibtex
;;   :ensure t
;;   :config
;;   (setq bibtex-completion-bibliography
;;         '((concat dj/dropbox "/bib/ref.bib"))
;;         bibtex-completion-library-path
;;         '((concat dj/nextcloud "/Resources/"))
;;         bibtex-completion-pdf-field "File"))

(use-package helm-bibtex
  :ensure t
  :bind ("<f6>" . helm-bibtex)
  :config
  (setq bibtex-completion-bibliography
        '("C:Users/dick jones/Dropbox/bib/ref.bib"))
  (setq bibtex-completion-library-path
        '("C:Users/dick jones/spambiNC/Resources")))

org-ref

(use-package org-ref
  :ensure t
  :bind* (:map org-mode-map
              ("C-c ]" . org-ref-ivy-insert-cite-link))
  :config
  (setq reftex-default-bibliography '("C:Users/dick jones/Dropbox/bib/ref.bib"))
  (setq bibtex-completion-pdf-open-function
        (lambda (fpath)
          (start-process "open" "*open*" "open" fpath)))
  (setq org-ref-default-bibliography '("C:Users/dick jones/Dropbox/bib/ref.bib"))
  (setq org-ref-pdf-directory '("C:Users/dick jones/Dropbox/bib/ref.bib")))

org-roam-bibtex

(use-package org-roam-bibtex
 :after org-roam
 :hook (org-roam-mode . org-roam-bibtex-mode)
 :bind (:map org-mode-map
             (("C-c n a" . orb-note-actions))))

Default Browser

(setq browse-url-browser-function 'browse-url-chromium) 

Keybinds

Custom

Misc. Keybinds

(global-set-key (kbd "C-c s") 'eshell)
(global-set-key (kbd "C-c l") org-stored-links)
(global-set-key (kbd "C-c a") (lambda () (interactive) (org-agenda nil "a")))
(global-set-key (kbd "C-c c") 'org-capture)
(global-set-key (kbd "C-c p") 'counsel-bookmark)
(global-set-key (kbd "C-c C-p") 'xah-copy-file-path)
(global-set-key (kbd "C-c C-'") 'dj/ytwatch)
(global-set-key (kbd "C-c w") 'elfeed)
(global-set-key (kbd "<f10>") 'org-todo-list)