;;; -*- lexical-binding: t -*-
;; Naloži konfiguracije iz ORG datoteke
(org-babel-load-file "~/.emacs.d/config.org")

;;;;;;;;;;;
;; Razno ;;
;;;;;;;;;;;

;; Izboljsani default ukazi bolj prijazni

;; Iskanje po fajlih (fulltext)
;(use-package rg
;  :defer t
;  :config
; (rg-enable-default-bindings))

;; 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 :defer t)

;; Dashboard - homescreen
(use-package dashboard
  :general
  (start/leader-keys
    "b h" 'dashboard-open)
  ;: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
(defun g-ielm-init-history ()
  "Persistent ielm 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))
(defun g-ielm-write-history (&rest _args)
  (with-file-modes #o600
    (comint-write-input-ring)))
(use-package ielm
  :defer t
  :hook (ielm-mode-hook . (lambda ()
                            (eldoc-mode)
                            ;(paredit-mode)
                            (g-ielm-init-history)))
  :config
  (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))



;;;;;;;;;;;;
;; 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))
 '(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"))
 '(package-selected-packages
   '(scheme-mode direnv svg-lib slime org-pandoc-import mu4e org-mode
                 restclient php-ts-mode org-bullets magit-todos
                 treesit-auto eat zone-nyan yaml-mode writeroom-mode
                 which-key web-mode web-beautify vue-mode undo-tree
                 treemacs-projectile treemacs-evil toml-mode tidal
                 subed smex smartparens sclang-extensions rjsx-mode rg
                 rainbow-delimiters racket-mode quelpa-use-package
                 pyvenv org-caldav openwith ob-mermaid
                 mu4e-marker-icons mu4e-dashboard magit lsp-mode
                 htmlize helpful guix gruvbox-theme general
                 geiser-guile format-all flycheck fluxus-mode
                 extempore-mode evil-org evil-collection editorconfig
                 drupal-mode doom-modeline dashboard crdt
                 counsel-projectile company benchmark-init
                 arduino-mode all-the-icons 2bit))
 '(tool-bar-mode nil)
 '(warning-minimum-level :error)
 '(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"))))
 '(org-block ((t (:extend t :background "#3c3836"))))
 '(org-code ((t (:foreground "#dd6f48"))))
 '(org-document-title ((t (:inherit default :weight bold :family "Sans Serif" :height 2.0 :underline nil))))
 '(org-level-1 ((t (:inherit default :weight bold :family "Sans Serif" :height 1.75))))
 '(org-level-2 ((t (:inherit default :weight bold :family "Sans Serif" :height 1.45))))
 '(org-level-3 ((t (:inherit default :weight bold :family "Sans Serif" :height 1.25))))
 '(org-level-4 ((t (:inherit default :weight bold :family "Sans Serif" :height 1.1))))
 '(org-level-5 ((t (:extend nil :weight bold :family "Sans Serif"))))
 '(org-level-6 ((t (:inherit default :weight bold :foreground "#DCDCCC" :family "Sans Serif"))))
 '(org-level-7 ((t (:inherit default :weight bold :foreground "#DCDCCC" :family "Sans Serif"))))
 '(org-level-8 ((t (:inherit default :weight bold :foreground "#DCDCCC" :family "Sans Serif"))))
 '(org-verbatim ((t (:foreground "#fb4933"))))
 '(window-divider-first-pixel ((t (:foreground "#626262")))))


;; supercollider mode load
;(require 'sclang)
