dotfiles/.emacs.d/init.el

832 lines
25 KiB
EmacsLisp
Raw Normal View History

;;;;;;;;;;;
;; DEBUG ;;
;;;;;;;;;;;
;; Debagiraj napake?
;(setq debug-on-error t)
;; Make startup faster by reducing the frequency of garbage
;; collection.
(setq gc-cons-threshold (* 50 1024 1024))
;; Prikaz statistik nalozenih paketov (prikazi z M-x use-package-report)
2023-02-16 19:09:11 +01:00
;(setq use-package-compute-statistics t)
;;;;;;;;;;;;
;; PAKETI ;;
;;;;;;;;;;;;
2023-02-16 19:09:11 +01:00
;; Loudamo melpa paketice (in pa ORG)
(require 'package)
(setq use-package-always-ensure t) ;; always ensures that a package is installed
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("elpa" . "https://elpa.gnu.org/packages/") t)
2023-02-16 19:09:11 +01:00
(package-initialize)
;;;;;;;;;;
;; EVIL ;;
;;;;;;;;;;
2023-02-16 19:09:11 +01:00
(use-package evil
:init (setq evil-want-integration t
evil-want-keybinding nil
;org-return-follows-link t
)
2023-02-16 19:09:11 +01:00
:config
;; Evil mode toggle <3
(evil-mode 1))
2023-02-16 19:09:11 +01:00
(use-package general
:after (evil evil-collection org projectile)
:config
(general-evil-setup)
(defun odpri-org-link ()
"Odpri link v ORG fajlu pod kurzorjem"
(interactive)
(if (org-in-regexp org-link-any-re nil t)
(org-open-at-point)
nil))
(general-evil-define-key
'normal
org-mode-map
"RET" 'odpri-org-link)
(general-create-definer start/leader-keys
:states '(normal insert visual emacs)
:keymaps 'override
:prefix "SPC" ;; set leader
:global-prefix "C-SPC") ;; access leader in insert mode
;; Osnovne bliznjice
(start/leader-keys
"[" 'previous-buffer
"]" 'next-buffer
"," 'ivy-switch-buffer
"RET" 'counsel-bookmark
"/" 'counsel-projectile-rg
"t" 'treemacs-add-and-display-current-project
"p" 'projectile-command-map
"g" 'magit-status)
2023-02-16 19:09:11 +01:00
;; WINDOW ukazi
(define-prefix-command 'evil-window-map)
(define-key evil-window-map "j" 'windmove-down)
(define-key evil-window-map "k" 'windmove-up)
(define-key evil-window-map "h" 'windmove-left)
(define-key evil-window-map "l" 'windmove-right)
(define-key evil-window-map "s" 'split-window-below)
(define-key evil-window-map "v" 'split-window-right)
(define-key evil-window-map "d" 'kill-buffer-and-window)
(start/leader-keys "w" 'evil-window-map)
2023-02-16 19:09:11 +01:00
;; BUFFER ukazi
(define-prefix-command 'evil-buffer-map)
(define-key evil-buffer-map "b" 'ivy-switch-buffer)
(define-key evil-buffer-map "p" 'previous-buffer)
(define-key evil-buffer-map "n" 'next-buffer)
(define-key evil-buffer-map "e" 'eval-buffer)
(defun switch-to-scratch () (interactive) (switch-to-buffer "*scratch*"))
(define-key evil-buffer-map "s" 'switch-to-scratch)
(define-key evil-buffer-map "h" 'dashboard-open)
2023-02-16 19:09:11 +01:00
(defun open-config () (interactive) (find-file-literally "~/.emacs.d/init.el"))
(define-key evil-buffer-map "c" 'open-config)
(define-key evil-buffer-map "d" 'kill-current-buffer)
(define-key evil-buffer-map "k" 'kill-buffer)
(start/leader-keys "b" 'evil-buffer-map)
2023-02-16 19:09:11 +01:00
;; EVAL ukazi
(define-prefix-command 'evil-eval-map)
2023-02-16 19:09:11 +01:00
(define-key evil-eval-map "b" 'eval-buffer)
(define-key evil-eval-map "e" 'eval-expression)
(define-key evil-eval-map "r" 'eval-region)
(start/leader-keys "e" 'evil-eval-map)
;; Geiser ukazi
(define-prefix-command 'evil-geiser-map)
(define-key evil-geiser-map "b" 'geiser-eval-buffer)
(define-key evil-geiser-map "e" 'geiser-eval-expression)
(defun geiser-start-and-eval-buffer ()
(interactive)
(geiser-guile)
(previous-buffer)
(geiser-eval-buffer))
(define-key evil-geiser-map "s" 'geiser-start-and-eval-buffer)
(define-key evil-geiser-map "g" 'geiser)
(define-key evil-geiser-map "c" 'geiser-connect)
(define-key evil-geiser-map "k" 'geiser-exit-repl)
(defun geiser-restart ()
;(interactive)
(geiser-exit-repl)
(geiser-start-and-eval-buffer))
(define-key evil-geiser-map "r" 'geiser-restart)
(start/leader-keys "s" 'evil-geiser-map)
2023-02-16 19:09:11 +01:00
;; FILE ukazi
(define-prefix-command 'evil-file-map)
(define-key evil-file-map "f" 'counsel-find-file)
(defun load-config () (interactive) (find-file "~/.emacs.d/init.el"))
(define-key evil-file-map "c" 'load-config)
(start/leader-keys "f" 'evil-file-map)
;; ORG ukazi
(define-prefix-command 'evil-org-map)
(define-key evil-org-map "c" 'org-capture)
(define-key evil-org-map "a" 'org-agenda)
(start/leader-keys "o" 'evil-org-map)
)
2023-02-16 19:09:11 +01:00
;; Dodatne evil bližnjice
(use-package evil-collection
:after evil
:config
(evil-collection-init))
;; Evil orgmode
(use-package evil-org
:hook (org-mode . (lambda ()
;; Odpri ORG linke kar s tipko enter
;(define-key org-mode-map (kbd "RET") 'odpri-org-link)
;(local-set-key (kbd "RET") 'odpri-org-link)
(evil-org-mode)))
2023-02-16 19:09:11 +01:00
:config
(require 'evil-org-agenda)
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(evil-org-agenda-set-keys))
(use-package treemacs-evil
:defer t
:after treemacs)
2023-02-16 19:09:11 +01:00
;;;;;;;;;
;; GUI ;;
;;;;;;;;;
;; Menu bar off
(menu-bar-mode -1)
(tool-bar-mode -1)
;; Brez ikon zgoraj
(setq ns-use-proxy-icon nil)
(setq frame-title-format nil)
2021-04-25 00:43:50 +02:00
; Skrij scrollbar
(scroll-bar-mode -1)
2023-02-16 19:09:11 +01:00
;; Razmiki med okni
2021-04-25 00:43:50 +02:00
(setq window-divider-default-bottom-width 3)
(window-divider-mode t)
2023-02-16 19:09:11 +01:00
;; No dialog box plx
(setq use-dialog-box nil)
;; Barvna tema
(use-package gruvbox-theme
:config
(load-theme 'gruvbox-dark-soft t)
(window-divider-mode 0))
2023-02-16 19:09:11 +01:00
;(load-theme 'hemisu-light t) ;; hemisu-theme paket
2022-02-02 17:31:25 +01:00
;(require 'doom-themes)
;(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
; doom-themes-enable-italic t) ; if nil, italics is universally disabled
;(load-theme 'doom-gruvbox t)
;(doom-themes-org-config)
2023-02-16 19:09:11 +01:00
;; Doom modeline - lepsi status bar spodaj
(use-package doom-modeline
:config
(doom-modeline-mode))
;; Lepse ikone!
(use-package nerd-icons)
;; !!! ;;
;; !!! Pognat je treba (1x) nerd-icons-install-fonts !!! ;;
;; !!! ;;
(use-package all-the-icons)
2023-02-16 19:09:11 +01:00
;; y/n namesto yes / no
(fset 'yes-or-no-p 'y-or-n-p)
;; Oooo gladko skrolanje! (Emacs 29+)
(pixel-scroll-precision-mode)
;; Nisem cist ziher kaj to dela
(setq scroll-conservatively 10)
(setq scroll-margin 8)
2023-02-16 19:09:11 +01:00
;;;;;;;;;;;
;; TEKST ;;
;;;;;;;;;;;
2021-04-25 00:43:50 +02:00
;; Sirina taba ter spejsi kot distancniki
(setq-default tab-width 2)
(setq-default indent-tabs-mode nil)
2023-02-16 19:09:11 +01:00
;; Turn on the weird indenting that Emacs does by default.
(electric-indent-mode 1)
;; Turns on automatic parens pairing
(electric-pair-mode 1)
2021-04-25 00:43:50 +02:00
;; Editorconfig formatiranje fajlov
2023-02-16 19:09:11 +01:00
(use-package editorconfig
:config
(editorconfig-mode 1))
2021-04-25 00:43:50 +02:00
;; Text wrap na sirino oken
(global-visual-line-mode)
;; Stevilke vrstic
(global-display-line-numbers-mode)
2023-02-16 19:09:11 +01:00
;; Lepse file drevo
(use-package treemacs
:defer t
:hook ((treemacs-mode . (lambda () ;; Brez stevilk vrstic v file drevesu!
(display-line-numbers-mode -1)))))
(use-package treemacs-projectile :after treemacs)
2021-04-25 00:43:50 +02:00
2023-02-16 19:09:11 +01:00
;; Uporabi drevesne razveljavitve, undo tree
(use-package undo-tree
:config
(global-undo-tree-mode)
(evil-set-undo-system 'undo-tree)
;; Drevo razveljavitev shrani v emacsov folder
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo"))))
2023-02-16 19:09:11 +01:00
;; Markdown podpora
(use-package markdown-mode :mode "\\.(md|markdown)\\'")
2023-02-16 19:09:11 +01:00
;;;;;;;;;;;;;;;;;;;
;; PROGRAMIRANJE ;;
;;;;;;;;;;;;;;;;;;;
;; Projektni mgmt
(use-package projectile
:after ivy
:config
(setq projectile-globally-ignored-directories '("node_modules"))
(setq projectile-completion-system 'ivy)
;; Popravek za projectile prek ssh!
;(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
;(setq-default projectile-indexing-method 'alien)
(setq projectile-indexing-method 'native)
(setq projectile-enable-caching t)
(projectile-mode t))
(use-package counsel-projectile :after projectile)
;; Zapiraj zaklepaje
(use-package smartparens
:defer t
:config
(smartparens-global-mode 1))
;; Pametni tabi
(use-package smart-tabs-mode
:disabled t
:after js2-mode
:config
;(smart-tabs-insinuate javascript scheme)
;; Pametni tabi za js2-mode
(smart-tabs-advice js2-indent-line js2-basic-offset))
2023-02-16 19:09:11 +01:00
;; Twig nacin (in drug web)
(use-package web-mode :mode "\\.(html|twig)\\'")
2023-02-16 19:09:11 +01:00
;; Lepšanje web kode
(use-package web-beautify :defer t :after web-mode)
2023-02-16 19:09:11 +01:00
;; Kompletiranje ukazov
(use-package company
:config
(setq lsp-completion-provider :capf)
(company-mode))
2022-06-16 16:26:11 +02:00
;; LSP potrebuje dependency iz npm: "sudo npm install -g vue-language-server
(use-package lsp-mode :after company)
2023-02-16 19:09:11 +01:00
;; Vuejs moud
2022-06-16 16:26:11 +02:00
(use-package vue-mode
2023-02-16 19:09:11 +01:00
:mode "\\.vue\\'"
:config (add-hook 'vue-mode-hook #'lsp))
;; Popravek za grdo ozadje
(add-hook 'mmm-mode-hook
(lambda ()
(set-face-background 'mmm-default-submode-face nil)))
2023-02-16 19:09:11 +01:00
;; PHP ko je treba
(use-package php-mode :mode "\\.(php|module)\\'")
2021-09-29 21:48:08 +02:00
;; Guile scheme
(use-package geiser)
2023-02-16 19:09:11 +01:00
(use-package geiser-guile
:after geiser
:init (setq scheme-program-name "guile"))
;; Racket podpora
(use-package racket-mode :mode "\\.rkt\\'")
2021-09-29 21:48:08 +02:00
;; Rainbowz
2023-02-16 19:09:11 +01:00
(use-package rainbow-delimiters
:hook ((prog-mode . rainbow-delimiters-mode)))
;; Config fajli
(use-package yaml-mode :mode "\\.yaml\\'")
(use-package toml-mode :mode "\\.toml\\'")
2023-02-16 19:09:11 +01:00
;; Extempore lajv kodiranje!
(use-package extempore-mode :mode "\\.xtm\\'")
2023-02-16 19:09:11 +01:00
;; Syntax checker
(use-package flycheck :defer t)
2023-02-16 19:09:11 +01:00
;; Vmesnik za GIT
(use-package magit :defer t)
2023-02-16 19:09:11 +01:00
;; Drupal pomocnik
(use-package drupal-mode :after php-mode)
2023-02-16 19:09:11 +01:00
;; Oblikovanje kode za razne jezike
(use-package format-all :defer t)
2023-02-16 19:09:11 +01:00
;; Tidal cycles live coding
(use-package tidal
:defer t
:init
;; Tidal cycles lokacija
(setq tidal-boot-script-path "~/.cabal/store/ghc-9.0.2/tidal-1.9.2-8e9cf9a217d87a6950880512f51893a6434970cd0690e831c563fc64ebd5de8f/share/BootTidal.hs"))
;; JS indentacije
(setq js2-strict-missing-semi-warning nil
js2-missing-semi-one-line-override nil
js2-basic-offset 2
js-indent-level 2
indent-tabs-mode nil
tab-width 2)
;; js2 za javascript
(use-package js2-mode
:mode "\\.js\\'"
:config
;(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
)
;; Še en mode za JS, bolj react
(use-package rjsx-mode :after js2-mode)
;; css indent
(setq css-indent-level 2)
(setq css-indent-offset 2)
;; Python indent
(setq python-indent-offset 2)
;; Arduino
(use-package arduino-mode :mode "\\.ino\\'")
;; Supercollider
(add-to-list 'load-path "/usr/share/emacs/site-lisp/SuperCollider/") ;; path will depend on your compilation settings
(use-package sclang
:ensure f
:defer t
:config
(global-set-key (kbd "S-RET") 'sclang-eval-region-or-line)
(global-set-key (kbd "C-.") 'sclang-server-free-all))
;; FLUXUS!
(use-package fluxus-mode :defer t)
;; Python virtualenv podpora
(use-package pyvenv
:config
(pyvenv-mode t)
;; Set correct Python interpreter
(setq pyvenv-post-activate-hooks
(list (lambda ()
(setq python-shell-interpreter (concat pyvenv-virtual-env "bin/python3")))))
(setq pyvenv-post-deactivate-hooks
(list (lambda ()
(setq python-shell-interpreter "python3")))))
;; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;; SARDINE MODE
;; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;; Customize the python-mode to run Sardine code using the terminal.
(setq
; python-shell-interpreter "fishery"
; python-shell-interpreter-args "")
python-shell-interpreter "python3"
python-shell-interpreter-args "")
(defun sardine/start-sardine ()
"Start a new interactive Sardine Session"
(interactive)
(run-python))
(defun sardine/eval-block ()
"Evaluate a sardine code block"
(interactive)
(mark-paragraph)
(if (and transient-mark-mode mark-active)
(python-shell-send-region (point) (mark))
(python-shell-send-region (point-at-bol) (point-at-eol)))
(forward-paragraph))
(defun sardine/stop-code ()
"Stop all the Sardine code currently running"
(interactive)
(python-shell-send-string "panic()"))
; Unmapping keys from the Python mode
;(add-hook 'python-mode-hook
; (lambda() (local-unset-key (kbd "C-c C-c"))))
;(add-hook 'python-mode-hook
; (lambda() (local-unset-key (kbd "C-c C-s"))))
; Remapping keys
(global-set-key (kbd "C-M-x") #'sardine/eval-block)
(global-set-key (kbd "C-M-.") #'sardine/stop-code)
2023-02-16 19:09:11 +01:00
;;;;;;;;;;;;;
;; ORGMODE ;;
;;;;;;;;;;;;;
2021-09-29 21:48:08 +02:00
;; Lepsi fonti
(setq org-src-fontify-natively t)
2021-04-25 00:43:50 +02:00
;; Stanja taskov
(setq org-todo-keywords
'((sequence "TODO" "V DELU" "TESTIRANJE" "DOKUMENTIRANJE" "KONČANO")))
2023-02-16 19:09:11 +01:00
;; Aktiviraj ob .org fajlih
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
;; CalDav v orgmode!
(use-package org-caldav
:defer t
:init
(setq org-caldav-url "https://goba.rhiz0.me/remote.php/dav/calendars/g1smo"
org-caldav-files '("~/org/todo.org")
org-icalendar-timezone "Europe/Ljubljana"
org-caldav-calendars '((:calendar-id "org"
;:files '("~/org/todo.org")
:inbox "~/org/koledarji/org-in.org")
(:calendar-id "personal"
:inbox "~/org/koledarji/osebno-in.org")
(:calendar-id "megla"
:inbox "~/org/koledarji/megla-in.org"))))
2023-02-16 19:09:11 +01:00
;; Nacin za pisanje brez distrakcij
(use-package writeroom-mode
:config
:hook ((org-mode . (lambda ()
(display-line-numbers-mode -1)))))
;; HTMLize za barvanje kode v org izvozu v HTML
(use-package htmlize :after org-mode :defer t)
2023-02-16 19:09:11 +01:00
;; Lokacije ORG agenda vnosov
(setq org-agenda-files (list "~/rs/org" "~/org"))
2023-02-16 19:09:11 +01:00
;; Zapiski
(setq org-default-notes-file "~/org/zapiski.org")
;; Zacnimo na ponedeljek, kot se spodobi
(setq calendar-week-start-day 1)
2021-04-25 00:43:50 +02:00
;; DOT diagrami
(org-babel-do-load-languages
'org-babel-load-languages
'((dot . t)))
;; enable ditaa (diagrami)
2021-04-25 00:43:50 +02:00
(org-babel-do-load-languages
'org-babel-load-languages
'((ditaa . t)))
2023-02-16 19:09:11 +01:00
;; Mermaid v orgmode (diagrami)
(use-package ob-mermaid
:defer t
:config
;; sudo npm install -g @mermaid-js/mermaid-cli
(setq ob-mermaid-cli-path "/usr/local/bin/mmdc")
(org-babel-do-load-languages
'org-babel-load-languages
'((mermaid . t)
(scheme . t))))
;;;;;;;;;;;;;
;; E-pošta ;;
;;;;;;;;;;;;;
(setq mu4e-get-mail-command "mbsync -a")
;; Ikonice
(use-package mu4e-marker-icons
:defer t
:config
(mu4e-marker-icons-mode 1))
;; Email paketi iz githuba
;(use-package quelpa-use-package)
(use-package mu4e-dashboard
:ensure f
:after mu4e
:vc "https://github.com/rougier/mu4e-dashboard")
;:quelpa (mu4e-dashboard
; :fetcher github
; :repo "rougier/mu4e-dashboard"))
;; @TODO konfiguracija!
;; - dashboard: https://github.com/rougier/mu4e-dashboard
;; - thread folding: https://github.com/rougier/mu4e-thread-folding
;; - svg tag mode: https://github.com/rougier/svg-tag-mode
;; - views: https://github.com/lordpretzel/mu4e-views
;;
;; Za zgled:
;; mu4e look & feel: https://www.reddit.com/r/emacs/comments/mzgsm0/mu4e_look_and_feel/
;; nano-mu4e: https://github.com/rougier/nano-emacs/blob/master/nano-mu4e.el
;; system crafters o emacs emailu: https://www.youtube.com/watch?v=yZRyEhi4y44&list=PLEoMzSkcN8oM-kA19xOQc8s0gr0PpFGJQ
;;;;;;;;;;;
;; Razno ;;
;;;;;;;;;;;
;; IVY autocomplete! <3
(use-package ivy
:config
(ivy-mode)
(setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t)
(local-set-key (kbd "C-j") 'ivy-next-line)
(local-set-key (kbd "C-k") 'ivy-prevous-line)
(local-set-key [remap scroll-up-command] 'ivy-scroll-up-command)
(local-set-key [remap scroll-down-command] 'ivy-scroll-down-command)
(global-set-key (kbd "C-c C-r") 'ivy-resume)
(global-set-key (kbd "<f6>") 'ivy-resume))
;; Vedno sledi symlinkom v git
(setq vc-follow-symlinks t)
2023-02-16 19:09:11 +01:00
;; Swiper search
(use-package swiper
:defer t
2023-02-16 19:09:11 +01:00
:config
(global-set-key "\C-s" 'swiper))
;; Izboljsani default ukazi bolj prijazni
(use-package counsel
:defer t
2023-02-16 19:09:11 +01:00
:config
(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> o") 'counsel-describe-symbol)
(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)
(define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history)
;; Ripgrep ignore
(defvar my-rg-excludes '("node_modules")
"List of directories to exclude from `counsel-rg' results.")
(define-advice counsel-rg
(:around (fn &optional in dir opts &rest args) my-glob)
"Exclude `my-rg-excludes' from `counsel-rg' results."
(let ((dir (or dir default-directory)))
(dolist (x my-rg-excludes)
(let ((glob (and (file-in-directory-p x dir)
(file-relative-name (expand-file-name "**" x) dir))))
(when glob (setq opts (concat "-g !" glob (and opts " ") opts))))))
(apply fn in dir opts args)))
;; Iskanje po fajlih (fulltext)
2023-02-16 19:09:11 +01:00
(use-package rg
:defer t
:config
(rg-enable-default-bindings))
2021-04-25 00:43:50 +02:00
;; Pomoc
(use-package helpful :defer t)
2023-02-16 19:09:11 +01:00
;; Prikazi nedavne ukaze pri vrhu v M-x
(use-package smex :defer t)
2023-02-16 19:09:11 +01:00
;; Pomoc za keybinde
(use-package which-key
:defer t
2023-02-16 19:09:11 +01:00
:config
;; Allow C-h to trigger which-key before it is done automatically
(setq which-key-show-early-on-C-h t)
;; make sure which-key doesn't show normally but refreshes quickly after it is
;; triggered.
(setq which-key-idle-delay 0.4)
(setq which-key-idle-secondary-delay 0.05)
(which-key-mode))
2021-04-25 00:43:50 +02:00
(use-package zone-nyan :defer t)
2021-04-25 00:43:50 +02:00
;; Prikazi startup time
(add-to-list 'after-init-hook
(lambda ()
(message (concat "emacs (" (number-to-string (emacs-pid)) ") started in " (emacs-init-time)))))
;; Backup fajli emacsa
(setq
backup-by-copying t ; don't clobber symlinks
backup-directory-alist
2022-06-16 16:26:11 +02:00
`(("." . ,(concat user-emacs-directory "backups")))
backup-directory-alist
`(("." . ,(concat user-emacs-directory "saves")))
2021-04-25 00:43:50 +02:00
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t) ; use versioned backups
2022-06-16 16:26:11 +02:00
;; Ne delaj lock fajlov (smetijo namrec)
(setq create-lockfiles nil)
2023-02-16 19:09:11 +01:00
;; File asociacije
(use-package openwith
:defer t
2023-02-16 19:09:11 +01:00
:config
(setq openwith-associations '(("\\.pdf\\'" "xdg-open" (file))))
(openwith-mode t))
;; Kolaborativno urejanje
(use-package crdt :defer t)
;; ELISP test
(defun odpri-dnevnik ()
(interactive)
(find-file (format-time-string "/tmp/%Y-%m-%d_dnevnik.org"))
(insert (concat "\n=====================\n"
(shell-command-to-string "date") "\n"
(format-time-string "%Y-%m-%d") "\n"
"ŠE VEČ TEKSTA!" "\n")))
(global-set-key (kbd "C-M-d") 'odpri-dnevnik)
;; GNU guix
(use-package guix)
;; Dashboard - homescreen
(use-package dashboard
;:after nerd-icons
:init
(dashboard-setup-startup-hook)
(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*")))
(setq dashboard-banner-logo-title "EMA☭S")
(setq dashboard-startup-banner 3)
(setq dashboard-center-content t)
(setq dashboard-items '((agenda . 5)
(recents . 5)))
;(setq dashboard-display-icons-p t) ;; display icons on both GUI and terminal
;(setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package
(setq dashboard-set-heading-icons t)
(setq dashboard-set-file-icons t)
(setq dashboard-set-navigator t)
(setq dashboard-set-init-info t))
;; Bolj fajni IELM REPL
(use-package ielm
:hook (ielm-mode-hook . (lambda ()
(eldoc-mode)
;(paredit-mode)
(defun g-ielm-init-history ()
(let ((path (expand-file-name "ielm/history" user-emacs-directory)))
(make-directory (file-name-directory path) t)
(setq-local comint-input-ring-file-name path))
(setq-local comint-input-ring-size 10000)
(setq-local comint-input-ignoredups t)
(comint-read-input-ring))
(g-ielm-init-history)
(defun g-ielm-write-history (&rest _args)
(with-file-modes #o600
(comint-write-input-ring)))
(advice-add 'ielm-send-input :after 'g-ielm-write-history)
(define-key inferior-emacs-lisp-mode-map (kbd "C-l")
'comint-clear-buffer)
(define-key inferior-emacs-lisp-mode-map (kbd "C-r")
'helm-comint-input-ring))))
;; Sinhronizacija podnapisov (uporablja mpv!)
(use-package subed
:defer t
:config
;; Remember cursor position between sessions
(add-hook 'subed-mode-hook 'save-place-local-mode)
;; Break lines automatically while typing
(add-hook 'subed-mode-hook 'turn-on-auto-fill)
;; Break lines at 40 characters
(add-hook 'subed-mode-hook (lambda () (setq-local fill-column 40)))
;; Some reasonable defaults
(add-hook 'subed-mode-hook 'subed-enable-pause-while-typing)
;; As the player moves, update the point to show the current subtitle
(add-hook 'subed-mode-hook 'subed-enable-sync-point-to-player)
;; As your point moves in Emacs, update the player to start at the current subtitle
(add-hook 'subed-mode-hook 'subed-enable-sync-player-to-point)
;; Replay subtitles as you adjust their start or stop time with M-[, M-], M-{, or M-}
(add-hook 'subed-mode-hook 'subed-enable-replay-adjusted-subtitle)
;; Loop over subtitles
(add-hook 'subed-mode-hook 'subed-enable-loop-over-current-subtitle)
;; Show characters per second
(add-hook 'subed-mode-hook 'subed-enable-show-cps))
2023-02-16 19:09:11 +01:00
;;;;;;;;;;;;
;; CUSTOM ;;
;;;;;;;;;;;;
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
'("db3e80842b48f9decb532a1d74e7575716821ee631f30267e4991f4ba2ddf56e"
"d14f3df28603e9517eb8fb7518b662d653b25b26e83bd8e129acea042b774298"
"7661b762556018a44a29477b84757994d8386d6edee909409fabe0631952dad9"
default))
2023-02-16 19:09:11 +01:00
'(iswitchb-mode t)
'(org-agenda-files
'("/home/g1smo/org/todo.org"
"/home/g1smo/rs/org/2021-05-25-spletna-stran.org"
"/home/g1smo/rs/org/2021-07-02-spletna.org"
"/home/g1smo/rs/org/README.org"
"/home/g1smo/rs/org/git-delavnica.org"
"/home/g1smo/rs/org/irs-plan-period.org"
"/home/g1smo/rs/org/irs-plan.org" "/home/g1smo/rs/org/irs.org"
"/home/g1smo/rs/org/irs_old.org" "/home/g1smo/rs/org/kaki.org"
"/home/g1smo/rs/org/prepoznava-komadov.org"))
2023-02-16 19:09:11 +01:00
'(package-selected-packages
'(quelpa-use-package 2bit counsel-projectile mu4e-dashboard
sclang-extensions mu4e-marker-icons mu4e
pyvenv chuck-mode subed elisp-refs autothemer
posframe avy dashboard sclang php-mode
zone-nyan org-evil guix ess 2048-game
toml-mode smartparens crdt.el openwith
evil-org-agenda company-org-block
org-block-capf writeroom-mode htmlize
company-lsp tidal org-caldav format-all
company-phpactor phpactor extempore-mode
ob-mermaid use-package lsp-mode drupal-mode
magit markdown-mode flycheck arduino-mode
rjsx-mode gdscript-mode rainbow-delimiters
paredit geiser-guile geiser web-beautify
vue-mode treemacs-evil treemacs-projectile
smart-tabs-mode smart-tabs js2-mode smex
clojure-mode helpful doom-themes counsel
swiper all-the-icons doom-modeline
evil-collection fennel-mode rg ivy company
projectile evil))
2023-02-16 19:09:11 +01:00
'(tool-bar-mode nil)
'(warning-minimum-level :error)
2023-02-16 19:09:11 +01:00
'(which-key-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:family "Iosevka SS01" :foundry "BE5N" :slant normal :weight semi-bold :height 120 :width normal))))
'(line-number ((t (:background "#32302f" :foreground "#7c6f64"))))
'(line-number-current-line ((t (:background "#32302f" :foreground "#fe8019")))))
;; Make gc pauses faster by decreasing the threshold.
(setq gc-cons-threshold (* 10 1000 1000))
;; Increase the amount of data which Emacs reads from the process
(setq read-process-output-max (* 1024 1024)) ;; 1mb
;; supercollider mode load
;(require 'sclang)