Emacs config apdejt! <3

t460s-fhd
Jurij Podgoršek 2023-02-16 19:09:11 +01:00
parent fbb5b56b5f
commit b19f730b6f
1 changed files with 429 additions and 292 deletions

View File

@ -2,122 +2,54 @@
;; PAKETI ;; ;; PAKETI ;;
;;;;;;;;;;;; ;;;;;;;;;;;;
;; Set up package.el to work with MELPA ;(setq use-package-compute-statistics t)
(require 'package)
;; Sekvence n'shiat (setq debug-on-error t)
(require 'seq)
;; Loudamo melpa paketice ;; Loudamo melpa paketice
(add-to-list 'package-archives (add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/")) '("melpa" . "https://melpa.org/packages/"))
;; Kaj vse naj bo namesceno? ;; Set up package.el to work with MELPA
(setq paketi '(;; Use package - konfiguracijski macro (require 'package)
use-package
;; Lazji keybindi
general
;; Evil mode
evil
evil-collection
evil-org
;; Global undo tree
undo-tree
;; Gruvbox tema
gruvbox-theme
;; Hemisu tema
hemisu-theme
;; Doom themes
doom-themes
;; Oblikovanje teksta
editorconfig
;; Projekti
projectile
;; Completion
company
;; Completion2
ivy
;; Iskanje
swiper
;; Izboljsani default ukazi bolj prijazni
counsel
;; Iskanje po fajlih
rg
;; Modeline - status bar spodaj (+ ikonice)
doom-modeline
;; Lepe ikone :)
all-the-icons
;; Pomoch
helpful
;; Prikazi nedavne ukaze visje
smex
;; Programiranje javascripta
js2-mode
rjsx-mode
;; Vue
vue-mode
vue-html-mode
;; Vue / js
lsp-mode
;; Clojure language support
clojure-mode
;; Guile language support
geiser
geiser-guile
paredit
rainbow-delimiters
gdscript-mode
php-mode
fennel-mode
arduino-mode
markdown-mode
yaml-mode
extempore-mode
;; Checker za syntax?
flycheck
;; Lepšanje fajlov na webu
web-beautify
;; Tab alignment
smart-tabs-mode
;; Dreva fajlov
treemacs
treemacs-projectile
treemacs-evil
;; Pomoc za keybinde
which-key
;; Git paket
magit
;; dr00pal moud
drupal-mode
;; Mermaid v orgmode
ob-mermaid
))
(setq nema (seq-filter (lambda (p) (not (package-installed-p p))) paketi))
(when nema
(package-initialize) (package-initialize)
(package-refresh-contents)
(dolist (p nema) ;; Stare funkcije za namescanje paketov. Od use-package z :ensure naprej vec ne
(package-install p))) ;; Sekvence n'shiat
;(require 'seq)
;; Kaj vse naj bo namesceno?
;(setq paketi '())
;(setq nema (seq-filter (lambda (p) (not (package-installed-p p))) paketi))
;(when nema
; (package-initialize)
; (package-refresh-contents)
; (dolist (p nema)
; (package-install p)))
;(use-package benchmark-init
; :ensure t
; :config
; :disabled t
; (benchmark-init/activate)
; (add-hook 'after-init-hook 'benchmark-init/deactivate))
;;;;;;;;;; ;;;;;;;;;;
;; EVIL ;; ;; EVIL ;;
;;;;;;;;;; ;;;;;;;;;;
(setq evil-want-integration t) ;; This is optional since it's already set to t by default. (use-package evil
(setq evil-want-keybinding nil) :ensure t
(require 'evil) :init (setq evil-want-integration t
;; Dodatni keybindi (dired, drugje) evil-want-keybinding nil)
(evil-collection-init) :config
(defvar my-leader-map (make-sparse-keymap) (evil-mode 1)
(defvar my-header-map (make-sparse-keymap)
"Mapiranje za evil bliznjice (leader trigger)") "Mapiranje za evil bliznjice (leader trigger)")
;; Dodatki za orgmode / agenda podporo ;; Keybindings!
(require 'evil-org) (defvar my-leader-map (make-sparse-keymap)
(add-hook 'org-mode-hook 'evil-org-mode) "Mapiranje za evil bliznjice (leader trigger)")
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(require 'evil-org-agenda)
(evil-org-agenda-set-keys)
(setq org-agenda-files (list "~/rs/org"
"~/Dokumenti"))
;; WINDOW ukazi ;; WINDOW ukazi
(define-prefix-command 'evil-window-map) (define-prefix-command 'evil-window-map)
@ -163,10 +95,16 @@
(define-key my-leader-map "f" 'evil-file-map) (define-key my-leader-map "f" 'evil-file-map)
(define-key my-leader-map "e" 'evil-eval-map) (define-key my-leader-map "e" 'evil-eval-map)
;; Projectile map! ;; Odpri bookmarke
(define-key my-leader-map "p" 'projectile-command-map) (define-key evil-normal-state-map (kbd "RET") 'org-open-at-point)
(require 'general) ;; Projectile map!
(define-key my-leader-map "p" 'projectile-command-map))
(use-package general
:ensure t
:after evil
:config
(general-evil-setup) (general-evil-setup)
(general-nmap (general-nmap
:prefix "SPC" :prefix "SPC"
@ -189,122 +127,254 @@
"," 'ivy-switch-buffer "," 'ivy-switch-buffer
"RET" 'counsel-bookmark "RET" 'counsel-bookmark
"/" 'counsel-rg "/" 'counsel-rg
"t" 'treemacs-add-and-display-current-project) "t" 'treemacs-add-and-display-current-project))
;; y/n namesto yes / no ;; Dodatne evil bližnjice
(fset 'yes-or-no-p 'y-or-n-p) (use-package evil-collection
:ensure t
:after evil
:config
(evil-collection-init))
;;;;;;;;;;;;;;;;;;; ;; Evil orgmode
;; Custom (tema) ;; (use-package evil-org
;;;;;;;;;;;;;;;;;;; :ensure t
(custom-set-variables :after (evil org)
;; custom-set-variables was added by Custom. :hook ((org-mode . (lambda () evil-org-mode)))
;; If you edit it by hand, you could mess it up, so be careful. :init
;; Your init file should contain only one such instance. (setq org-src-fontify-natively t)
;; If there is more than one, they won't work right. :config
'(custom-safe-themes (require 'evil-org-agenda)
'("db3e80842b48f9decb532a1d74e7575716821ee631f30267e4991f4ba2ddf56e" "d14f3df28603e9517eb8fb7518b662d653b25b26e83bd8e129acea042b774298" "7661b762556018a44a29477b84757994d8386d6edee909409fabe0631952dad9" default)) (evil-org-set-key-theme '(navigation insert textobjects additional calendar))
'(iswitchb-mode t) (evil-org-agenda-set-keys))
'(package-selected-packages
'(extempore-mode ob-mermaid use-package lsp-mode yaml-mode drupal-mode magit markdown-mode flycheck arduino-mode rjsx-mode gdscript-mode rainbow-delimiters which-key paredit geiser-guile geiser web-beautify vue-mode treemacs-evil treemacs-projectile treemacs 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))
'(tool-bar-mode nil)
'(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 SS05" :foundry "BE5N" :slant normal :weight semi-bold :height 120 :width normal)))))
;;;;;;;;;;;;;;;; (use-package treemacs-evil :ensure t :after treemacs)
;; UI cleanup ;;
;;;;;;;;;;;;;;;;
;;;;;;;;;
;; GUI ;;
;;;;;;;;;
;; Menu bar off ;; Menu bar off
(menu-bar-mode -1) (menu-bar-mode -1)
(tool-bar-mode -1) (tool-bar-mode -1)
;; No dialog box plx
(setq use-dialog-box nil)
;; Brez ikon zgoraj ;; Brez ikon zgoraj
(setq ns-use-proxy-icon nil) (setq ns-use-proxy-icon nil)
(setq frame-title-format nil) (setq frame-title-format nil)
;; Undo tree
(global-undo-tree-mode)
(evil-set-undo-system 'undo-tree)
(setq undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo")))
;; Theme
; Skrij scrollbar ; Skrij scrollbar
(scroll-bar-mode -1) (scroll-bar-mode -1)
;; Razmiki med okni
(setq window-divider-default-bottom-width 3) (setq window-divider-default-bottom-width 3)
(window-divider-mode t) (window-divider-mode t)
(load-theme 'gruvbox-dark-medium t) ;; No dialog box plx
;(load-theme 'hemisu-light t) (setq use-dialog-box nil)
;; Barvna tema
(use-package gruvbox-theme
:ensure t
:config
(load-theme 'gruvbox-dark-medium t))
;(load-theme 'hemisu-light t) ;; hemisu-theme paket
;(require 'doom-themes) ;(require 'doom-themes)
;(setq doom-themes-enable-bold t ; if nil, bold is universally disabled ;(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
; doom-themes-enable-italic t) ; if nil, italics is universally disabled ; doom-themes-enable-italic t) ; if nil, italics is universally disabled
;(load-theme 'doom-gruvbox t) ;(load-theme 'doom-gruvbox t)
;(doom-themes-org-config) ;(doom-themes-org-config)
;;;;;;;;;; ;; Doom modeline - lepsi status bar spodaj
;; Text ;; (use-package doom-modeline
;;;;;;;;;; :ensure t
; :disabled t
:config
(doom-modeline-mode))
;; Lepse ikone!
(use-package all-the-icons :ensure t)
;; !!! ;;
;; !!! Pognat je treba (1x) all-the-icons-install-fonts !!! ;;
;; !!! ;;
;; y/n namesto yes / no
(fset 'yes-or-no-p 'y-or-n-p)
;; Oooo gladko skrolanje! (Emacs 29+)
(pixel-scroll-precision-mode)
;;;;;;;;;;;
;; TEKST ;;
;;;;;;;;;;;
;; Sirina taba ter spejsi kot distancniki ;; Sirina taba ter spejsi kot distancniki
(setq-default tab-width 2) (setq-default tab-width 2)
(setq-default indent-tabs-mode nil) (setq-default indent-tabs-mode nil)
;; Editorconfig formatiranje fajlov ;; Editorconfig formatiranje fajlov
(editorconfig-mode 1) (use-package editorconfig
:ensure t
:config
(editorconfig-mode 1))
;; Text wrap na sirino oken ;; Text wrap na sirino oken
(global-visual-line-mode) (global-visual-line-mode)
;; Stevilke vrstic ;; Stevilke vrstic
(global-display-line-numbers-mode) (global-display-line-numbers-mode)
;; Brez stevilk vrstic v file drevesu!
(add-hook 'treemacs-mode-hook (lambda () (display-line-numbers-mode -1)))
;; Lepse file drevo
(use-package treemacs
:ensure t
:defer t
:hook ((treemacs-mode . (lambda () ;; Brez stevilk vrstic v file drevesu!
(display-line-numbers-mode -1)))))
(use-package treemacs-projectile :ensure t :after treemacs)
;; Evil mode toggle <3 ;; Evil mode toggle <3
(evil-mode) (evil-mode)
;; PhP ko je treba ;; Uporabi drevesne razveljavitve, undo tree
(add-to-list 'auto-mode-alist '("\\.php$" . php-mode)) (use-package undo-tree
:ensure t
: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"))))
;; Org tudi kdaj ;; Markdown podpora
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (use-package markdown-mode :ensure t)
;;;;;;;;;;;;;;;;;;;
;; PROGRAMIRANJE ;;
;;;;;;;;;;;;;;;;;;;
;; Twig nacin (in drug web)
(use-package web-mode :ensure t)
;; Lepšanje web kode
(use-package web-beautify :ensure t)
;; Kompletiranje ukazov
(use-package company
:ensure t
:defer t
:config
(setq lsp-completion-provider :capf)
(company-mode))
;; Vue nacin ;; Vue nacin
;; LSP potrebuje dependency iz npm: "sudo npm install -g vue-language-server ;; LSP potrebuje dependency iz npm: "sudo npm install -g vue-language-server
(use-package lsp-mode) (use-package lsp-mode
;; autocomplete :ensure t
; (use-package company-lsp :after company)
; :after lsp-mode
; :config (push 'company-lsp company-backends)) ;; Vuejs moud
(use-package vue-mode (use-package vue-mode
:ensure t
:mode "\\.vue\\'" :mode "\\.vue\\'"
:config (add-hook 'vue-mode-hook #'lsp)) :config (add-hook 'vue-mode-hook #'lsp))
;; PHP ko je treba
(use-package php-mode
:ensure t
:mode "\\.(php|module)\\'")
;; Guile scheme ;; Guile scheme
(setq scheme-program-name "guile") (use-package geiser
:ensure t
:mode "\\.scm\\'")
(use-package geiser-guile
:ensure t
:after geiser
:init (setq scheme-program-name "guile"))
;; Racket podpora
(use-package racket-mode
:ensure t
:mode "\\.rkt\\'")
;; Rainbowz ;; Rainbowz
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode) (use-package rainbow-delimiters
:ensure t
:hook ((prog-mode . rainbow-delimiters-mode)))
;; Boljse urejanje lispy jezikov ;; YAML konfiguracije
(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) (use-package yaml-mode
(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) :ensure t
(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) :mode "\\.yaml\\'")
(add-hook 'ielm-mode-hook #'enable-paredit-mode)
(add-hook 'lisp-mode-hook #'enable-paredit-mode) ;; Extempore lajv kodiranje!
(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) (use-package extempore-mode
(add-hook 'scheme-mode-hook #'enable-paredit-mode) :ensure t
:mode "\\.xtm\\'")
;; Syntax checker
(use-package flycheck
:ensure t
:defer t)
;; Vmesnik za GIT
(use-package magit
:ensure t
:defer t)
;; Drupal pomocnik
(use-package drupal-mode
:ensure t
:after php-mode)
;; Oblikovanje kode za razne jezike
(use-package format-all :ensure t)
;; Tidal cycles live coding
(use-package tidal
:ensure t
: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"))
;;;;;;;;;;;;;
;; ORGMODE ;;
;;;;;;;;;;;;;
;; Stanja taskov ;; Stanja taskov
(setq org-todo-keywords (setq org-todo-keywords
'((sequence "TODO" "V DELU" "TESTIRANJE" "DOKUMENTIRANJE" "KONČANO"))) '((sequence "TODO" "V DELU" "TESTIRANJE" "DOKUMENTIRANJE" "KONČANO")))
;; Aktiviraj ob .org fajlih
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
;; CalDav v orgmode!
(use-package org-caldav
:ensure t
:after org-mode
:config
(setq org-caldav-calendars
'((:calendar-id "riz0m"
:files ("~/org/koledar.org")
:inbox "~/org/koledar-in.org"))))
;; Nacin za pisanje brez distrakcij
(use-package writeroom-mode
:ensure t
: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
:ensure t)
;; Lokacije ORG agenda vnosov
(setq org-agenda-files (list "~/rs/org" "~/Dokumenti"))
;; DOT diagrami ;; DOT diagrami
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
@ -315,42 +385,70 @@
'org-babel-load-languages 'org-babel-load-languages
'((ditaa . t))) '((ditaa . t)))
;; Mermaid v orgmode ;; Mermaid v orgmode (diagrami)
(use-package ob-mermaid
:ensure t
:defer t
:config
;; sudo npm install -g @mermaid-js/mermaid-cli ;; sudo npm install -g @mermaid-js/mermaid-cli
(setq ob-mermaid-cli-path "/usr/local/bin/mmdc") (setq ob-mermaid-cli-path "/usr/local/bin/mmdc")
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
'((mermaid . t) '((mermaid . t)
(scheme . t))) (scheme . t))))
;; Pametni tabi
(use-package smart-tabs-mode
:ensure t
:disabled t
:config
;(smart-tabs-insinuate javascript scheme)
;; Pametni tabi za js2-mode
(smart-tabs-advice js2-indent-line js2-basic-offset))
;; js2 za javascript ;; js2 za javascript
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) (use-package js2-mode
:ensure t
:mode "\\.js\\'"
:disabled t
:config
;(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
(setq js2-strict-missing-semi-warning nil) (setq js2-strict-missing-semi-warning nil)
(setq js2-missing-semi-one-line-override nil) (setq js2-missing-semi-one-line-override nil)
(setq js2-basic-offset 2) (setq js2-basic-offset 2)
(setq js-indent-level 2) (setq js-indent-level 2))
;; Pametni tabi za js2-mode
(smart-tabs-advice js2-indent-line js2-basic-offset) ;; Še en mode za JS, bolj react
(use-package rjsx-mode
:ensure t
:after js2-mode)
;; css indent ;; css indent
(setq css-indent-level 2) (setq css-indent-level 2)
(setq css-indent-offset 2) (setq css-indent-offset 2)
;; Kompletiranje ukazov
(company-mode)
;; IVY ;; IVY
(use-package ivy
:ensure t
:config
(ivy-mode) (ivy-mode)
(setq ivy-use-virtual-buffers t) (setq ivy-use-virtual-buffers t)
(setq enable-recursive-minibuffers t) (setq enable-recursive-minibuffers t)
(local-set-key (kbd "C-j") 'ivy-next-line) (local-set-key (kbd "C-j") 'ivy-next-line)
(local-set-key (kbd "C-k") 'ivy-prevous-line) (local-set-key (kbd "C-k") 'ivy-prevous-line)
;; Swiper search, counsel bliznjice
(global-set-key "\C-s" 'swiper)
(define-key evil-normal-state-map (kbd "RET") 'org-open-at-point)
(global-set-key (kbd "C-c C-r") 'ivy-resume) (global-set-key (kbd "C-c C-r") 'ivy-resume)
(global-set-key (kbd "<f6>") 'ivy-resume) (global-set-key (kbd "<f6>") 'ivy-resume))
;; Swiper search
(use-package swiper
:ensure t
:config
(global-set-key "\C-s" 'swiper))
;; Izboljsani default ukazi bolj prijazni
(use-package counsel
:ensure t
:config
(global-set-key (kbd "M-x") 'counsel-M-x) (global-set-key (kbd "M-x") 'counsel-M-x)
(global-set-key (kbd "C-x C-f") 'counsel-find-file) (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> f") 'counsel-describe-function)
@ -364,16 +462,14 @@
(global-set-key (kbd "C-c k") 'counsel-ag) (global-set-key (kbd "C-c k") 'counsel-ag)
(global-set-key (kbd "C-x l") 'counsel-locate) (global-set-key (kbd "C-x l") 'counsel-locate)
(global-set-key (kbd "C-S-o") 'counsel-rhythmbox) (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
(define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history) (define-key minibuffer-local-map (kbd "C-r") 'counsel-minibuffer-history))
;; Iskanje po fajlih (fulltext) ;; Iskanje po fajlih (fulltext)
(rg-enable-default-bindings) (use-package rg
:ensure t
;; Modeline / statusbar :defer t
(require 'all-the-icons) :config
;; Pognat je treba (1x) all-the-icons-install-fonts (rg-enable-default-bindings))
;(require 'doom-modeline)
(doom-modeline-init)
;;;;;;;;;;; ;;;;;;;;;;;
@ -384,17 +480,27 @@
(setq vc-follow-symlinks t) (setq vc-follow-symlinks t)
;; Projektni mgmt ;; Projektni mgmt
(projectile-mode t) (use-package projectile
:ensure t
:config (projectile-mode t))
;; Pomoc ;; Pomoc
;(require 'helpful) ;(use-package 'helpful :ensure t)
;; Prikazi nedavne ukaze prej v M-x
(use-package smex :ensure t)
;; Pomoc za keybinde
(use-package which-key
:ensure t
:config
;; Allow C-h to trigger which-key before it is done automatically ;; Allow C-h to trigger which-key before it is done automatically
(setq which-key-show-early-on-C-h t) (setq which-key-show-early-on-C-h t)
;; make sure which-key doesn't show normally but refreshes quickly after it is ;; make sure which-key doesn't show normally but refreshes quickly after it is
;; triggered. ;; triggered.
(setq which-key-idle-delay 0.4) (setq which-key-idle-delay 0.4)
(setq which-key-idle-secondary-delay 0.05) (setq which-key-idle-secondary-delay 0.05)
(which-key-mode) (which-key-mode))
;; Prikazi startup time ;; Prikazi startup time
(add-to-list 'after-init-hook (add-to-list 'after-init-hook
@ -415,3 +521,34 @@
;; Ne delaj lock fajlov (smetijo namrec) ;; Ne delaj lock fajlov (smetijo namrec)
(setq create-lockfiles nil) (setq create-lockfiles nil)
;; File asociacije
(use-package openwith
:ensure t
:config
(setq openwith-associations '(("\\.pdf\\'" "xdg-open" (file))))
(openwith-mode t))
;;;;;;;;;;;;
;; 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)
'(package-selected-packages
'(openwith evil-org-agenda company-org-block org-block-capf writeroom-mode racket-mode htmlize company-lsp web-mode tidal org-caldav format-all company-phpactor phpactor extempore-mode ob-mermaid use-package lsp-mode yaml-mode drupal-mode magit markdown-mode flycheck arduino-mode rjsx-mode gdscript-mode rainbow-delimiters which-key paredit geiser-guile geiser web-beautify vue-mode treemacs-evil treemacs-projectile treemacs 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))
'(tool-bar-mode nil)
'(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 SS05" :foundry "BE5N" :slant normal :weight semi-bold :height 120 :width normal)))))