Posodobitve emacs, zsh, sway

pbp
Jurij Podgoršek 2024-05-16 13:05:05 +02:00
parent c9ca6f4262
commit df93991f8b
6 changed files with 154 additions and 93 deletions

View File

@ -43,12 +43,13 @@ output DP-5 pos 1601 0 scale 1
output DP-2 pos 1601 0 scale 1
# wayVNC izhod za pinenote
output HEADLESS-1 {
pos 1601 0 scale 2
mode 1404x1872
transform 90
}
# swaymsg create_output HEADLESS-1
#output HEADLESS-1 {
# pos 1601 0 scale 2
# mode 1404x1872
# transform 90
# scale_filter smart
#}
# swaymsg create_output HEADLESS-1 post 1601 0 scale 2 mode 1404x1872 transform 90 scale_filter smart
# wayvnc --output=HEADLESS-1 --max-fps=20 192.168.8.20 5900 &
# start a terminal
@ -281,7 +282,7 @@ hide_edge_borders smart
focus_follows_mouse yes
# Premik kurzorja v aktivno okno
mouse_warping container
#mouse_warping container
# KBD layouti
input "type:keyboard" {

View File

@ -81,16 +81,13 @@ S paketom ~general~ je definiranih več kategorij tipkovničnih bližnjic, ki so
V sledečim podpoglavjih so navedene kategorije posameznih bližnjic. Imajo dokaj samoopisna imena. Paket ~which key~ sproti izpisuje, kaj kateri gumb počne oz. kam nas pelje dalje.
#+begin_src emacs-lisp
(setq kategorije-bliznjic '())
(use-package general
:defer t
:config
(general-evil-setup)
(general-evil-setup t)
;; Leader key nastavitev (za prozenje ukazov)
(general-create-definer start/leader-keys
:states '(normal insert visual emacs)
:states '(normal insert visual emacs rcirc)
:keymaps 'override
:prefix "SPC"
:global-prefix "C-SPC")
@ -140,7 +137,6 @@ bližnjici (~[~ in ~]~ za prejšnji / naslednji buffer).
"b b" 'switch-to-buffer
"b p" 'previous-buffer
"b n" 'next-buffer
"b e" 'eval-buffer
"b s" (defun scratch-buffer () "Show scratch buffer" (interactive) (switch-to-buffer "*scratch*"))
"b d" 'kill-current-buffer
"b k" 'kill-buffer)
@ -149,15 +145,18 @@ bližnjici (~[~ in ~]~ za prejšnji / naslednji buffer).
** Evalviranje
Sledeči ukazi so za evalviranje ELISP kode
TODO napiši navodila
#+begin_src emacs-lisp
(start/leader-keys
:keymaps 'emacs-lisp-mode-map
;; EVAL ukazi
"e" '(:ignore t :wk "eval")
"e b" 'eval-buffer
"e e" 'eval-expression
"e r" 'eval-region)
"e r" 'eval-region
"b e" 'eval-buffer)
#+end_src
** Datoteke
@ -175,6 +174,7 @@ Bližnjice za delo z datotekami se začnejo s ~f~.
"f f" 'counsel-find-file
"f c" 'odpri-konfiguracijo :wk "odpri konfiguracijo (config.org)"
"f i" 'odpri-init :wk "odpri init.el"
"f r" 'recentf :wk "nedavno odprto"
"f z" 'odpri-zapiske
"f t" 'odpri-todo)
#+end_src
@ -260,65 +260,67 @@ Evil v ~treemacs~ drevesu datotečnega sistema.
#+end_src
* Emacs splošno
** Kolaborativno urejanje - CRDT
** Vertico dopolnjevanje
Paket za dopolnjevanje, nadomestek ~ivy~. Nudi nekoliko lepšo iskušnjo priporočil pri izvajanju emacs ukazov.
Paket ~crdt~ omogoča istočasno urejanje bufferjev, kar je superuporabno :)
Paziti pa moramo na verzije emacsa; zaznali smo težave pri mešanju emacs 30/29 s starejšimi (28, 27) - znaki se lahko med odjemalci pomešajo. Emacs 29 in 30 bi morala vredu sodelovati.
#+begin_src emacs-lisp
(use-package crdt
:defer t
:general
(start/leader-keys
"c" '(:ignore t :wk "crdt")
"c c" 'crdt-connect
"c u" 'crdt-list-users
"c s" 'crdt-share-buffer
"c b" 'crdt-list-buffers))
#+begin_src emacs-lisp
(use-package vertico
:config
(setq vertico-cycle t)
(setq vertico-resize nil)
(vertico-mode 1))
#+end_src
** Ivy dopolnjevanje/iskanje
~ivy~ je sistem za avtomatsko dopolnjevanje, uporaben preko celotnega emacsa.
Nudi tudi prijaznejši način menjave bufferja, kar nastavimo na ~SPC ,~ ter ~SPC b b~.
~savehist~ sortira priporočila glede na preteklo rabo.
#+begin_src emacs-lisp
(use-package ivy
:general
(start/leader-keys
"," 'ivy-switch-buffer
"b b" 'ivy-switch-buffer)
:config
(ivy-mode)
(use-package savehist
:init
(savehist-mode))
#+end_src
Nastavimo uporabo rekurzivnih minibufferjev za dopolnjevanje ter nastavimo še nekaj tipkovničnih bližnjic za malo lažje delo z ~ivy~.
~marginalia~ prikaze v minibufferju dopolni z uporabnimi informacijami, odvisno od konteksta.
#+begin_src emacs-lisp
(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))
(use-package marginalia
:config
(marginalia-mode 1))
#+end_src
~orderless~ poskrbi, da minibuffer dopolnjevanje deluje tudi kadar v kakšnem drugem vrstnem redu napišemo besede. Recimo: ~inst pac~ ponudi ~package-install~.
#+begin_src emacs-lisp
(use-package orderless
:config
(setq completion-styles '(orderless basic)))
#+end_src
~nerd-icons-completion~ nam dired in ostalo dopolnjevanje pojača z ikonami.
#+begin_src emacs-lisp
(use-package nerd-icons-completion
:init
(nerd-icons-completion-mode))
#+end_src
** Iskanje
~swiper~ je ivy-jev iskalnik po bufferjih, ki nudi lep vmesnik s predogledom rezultatov, nastavimo ga na ~C-S~.
#+begin_src emacs-lisp
(use-package swiper
:defer t
:config
(global-set-key "\C-s" 'swiper))
#+end_src
~counsel~ pa nudi kup zamenjav privzetih emacs ukazov/operacij za prijetnejša opravila. Nastavimo nekaj bližnjic za njih. Recimo ~M-x~ menjava ki kaže predoglede v minibuferju, ~SPC RET~ za shranjevanje in menjavo med zaznamki, ~SPC /~ za ripgrep rekurzivno iskanje po vsebini datotek (potrebuje nameščen ~ripgrep~!).
@TODO zamenjamo raje s ~consult~?
#+begin_src emacs-lisp
(use-package counsel
: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 "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
@ -357,6 +359,7 @@ Nastavimo uporabo rekurzivnih minibufferjev za dopolnjevanje ter nastavimo še n
(when glob (setq opts (concat "-g !" glob (and opts " ") opts))))))
(apply fn in dir opts args)))
#+end_src
** Pomoč / introspekcija
Paket ~helpful~ obarva strani za pomoč ter doda več kontekstualnih informacij in pa nekaj funkcij za lažje razumevanje kaj je kje, recimo ~helpful-at-point~, ~helpful-callable~, ~helpful-command~...
@ -369,17 +372,36 @@ Paket ~helpful~ obarva strani za pomoč ter doda več kontekstualnih informacij
#+begin_src emacs-lisp
(use-package which-key
:defer t
: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-delay 0.2)
(setq which-key-idle-secondary-delay 0.05)
(which-key-mode))
#+end_src
** Kolaborativno urejanje - CRDT
Paket ~crdt~ omogoča istočasno urejanje bufferjev, kar je superuporabno :)
Paziti pa moramo na verzije emacsa; zaznali smo težave pri mešanju emacs 30/29 s starejšimi (28, 27) - znaki se lahko med odjemalci pomešajo. Emacs 29 in 30 bi morala vredu sodelovati.
#+begin_src emacs-lisp
(use-package crdt
:defer t
:general
(start/leader-keys
"c" '(:ignore t :wk "crdt")
"c c" 'crdt-connect)
:general-config
(start/leader-keys
"c" '(:ignore t :wk "crdt")
"c u" 'crdt-list-users
"c s" 'crdt-share-buffer
"c b" 'crdt-list-buffers))
#+end_src
** Varnostne kopije
Privzeto emacs dodaja varnostne kopije fajlov v iste direktorije kot so originali, kar zna malo nasmetiti. Zato nastavimo direktorij, kam naj jih shranjuje ter nastavimo nekaj drugih priročnih stvari, naj kopira fajle namesto preimenovanja, brisanje starih (z nastavljenimi omejitvami ter verzioniranje varnostnih kopij.
@ -407,7 +429,6 @@ PDF dokumenti so včasih zelo veliki, raje jih odpirajmo s sistemskim preglejeva
#+begin_src emacs-lisp
(use-package openwith
:defer t
:config
(setq openwith-associations '(("\\.pdf\\'" "xdg-open" (file))))
(openwith-mode t))
@ -430,8 +451,11 @@ TODO dodaj več!
(start/leader-keys
"o" '(:ignore t :wk "orgmode")
"o c" 'org-capture
"o a" 'org-agenda
"o w" 'writeroom-mode
"o a" 'org-agenda)
:general-config
(start/leader-keys
:keymaps 'org-mode-map
"o i" 'org-toggle-inline-images
"o t" 'org-time-stamp)
#+end_src
@ -478,7 +502,7 @@ Delovanje tega paketa je odvisno od globalne namestitve javascript paketa z npm:
#+begin_src emacs-lisp
(use-package ob-mermaid
:defer t
:after org
:config
;; sudo npm install -g @mermaid-js/mermaid-cli
(setq ob-mermaid-cli-path "/usr/local/bin/mmdc")
@ -494,7 +518,7 @@ Stanja opravil. Stanja (v naslovih) menjamo s ~S-<levo>~ in ~S-<desno>~.
#+begin_src emacs-lisp
(setq org-todo-keywords
'((sequence "TODO" "V DELU" "TESTIRANJE" "DOKUMENTIRANJE" "KONČANO"))))
'((sequence "TODO" "NEXT" "V DELU" "TESTIRANJE" "DOKUMENTIRANJE" "DONE"))))
#+end_src
** Nemoteno pisanje
@ -504,6 +528,9 @@ Način ~writeroom-mode~ omogoča nemoteno pisanje; trenutni buffer raztegne čez
#+begin_src emacs-lisp
(use-package writeroom-mode
:defer t
:general
(start/leader-keys
"w w" 'writeroom-mode)
:config
:hook ((org-mode . (lambda () (display-line-numbers-mode -1)))))
#+end_src
@ -619,7 +646,6 @@ Modeline vrstica (v bufferjih spodaj) je iz doom emacsa.
#+begin_src emacs-lisp
(use-package doom-modeline
:defer t
:init (doom-modeline-mode 1))
#+end_src
@ -712,7 +738,6 @@ In pa nenazadnje, čeravno je ORGMODE superioren, naložimo še podporo za [[htt
(use-package markdown-mode :mode "\\.(md|markdown)\\'")
#+end_src
* Splošne emacs razširitve
* Delo s projekti
Knjižnica za projektne interakcije. Vsak projekt je svoja git zbirka. Lajša menjavo med projekti, iskanje datotek v posameznem projektu in tako dalje.
@ -721,20 +746,13 @@ Knjižnica za projektne interakcije. Vsak projekt je svoja git zbirka. Lajša me
(use-package projectile
#+end_src
~SPC p~ odpre preddefinirano drevo bližnjic za delo s ~projectile~.
#+begin_src emacs-lisp
:general
(start/leader-keys "p" 'projectile-command-map)
#+end_src
Vlopimo projectile način, prezrimo direktorij z javascript paketi in priklopimo na ~ivy~ mehanizem za avtomatsko dopolnjevanje.
Vlopimo projectile način, prezrimo direktorij z javascript paketi in priklopimo na ~ivy~ mehanizem za avtomatsko dopolnjevanje. ~SPC p~ odpre preddefinirano drevo bližnjic za delo s ~projectile~.
#+begin_src emacs-lisp
:config
(projectile-mode t)
(projectile-mode 1)
(start/leader-keys "p" 'projectile-command-map)
(setq projectile-globally-ignored-directories '("node_modules"))
(setq projectile-completion-system 'ivy)
#+end_src
Zaradi težav pri uporabi =projectile= preko SSH povezav spremenimo način indeksiranja datotečnega drevesa. Dodajanje večjega projekta zato traja nekoliko dlje
@ -887,7 +905,6 @@ S ~treesit-auto~ paketom se avtomatsko naredijo asociacije za treesit načine, v
#+begin_src emacs-lisp
(use-package treesit-auto
:defer t
:custom
(treesit-auto-install 'prompt)
:config
@ -927,26 +944,37 @@ Vsi LISPi, tudi vgrajeni emacs-lisp, so bolj berljivi z mavričnim obarvanjem ok
(use-package geiser-guile
:defer t
:general
:general-config
(start/leader-keys
:infix "s"
"" '(:ignore t :wk "geiser")
"b" 'geiser-eval-buffer
"e" 'geiser-eval-expression
"s" (defun geiser-start-and-eval-buffer ()
(interactive)
(geiser-guile)
(previous-buffer)
(geiser-eval-buffer))
"s" 'geiser-start-and-eval-buffer
"g" 'geiser
"c" 'geiser-connect
"k" 'geiser-exit-repl
"r" (defun geiser-restart ()
;(interactive)
(geiser-exit-repl)
(geiser-start-and-eval-buffer)))
:init (setq scheme-program-name "guile"))
:keymaps 'geiser-mode-map
"s" '(:ignore t :wk "geiser")
"s b" 'geiser-eval-buffer
"s e" 'geiser-eval-expression
"s s" (defun geiser-start-and-eval-buffer ()
(interactive)
(geiser-guile)
(previous-buffer)
(geiser-eval-buffer))
"s s" 'geiser-start-and-eval-buffer
"s g" 'geiser
"s c" 'geiser-connect
"s k" 'geiser-exit-repl
"s r" (defun geiser-restart ()
;(interactive)
(geiser-exit-repl)
(geiser-start-and-eval-buffer))
"e" '(:ignore t :wk "eval (geiser)")
"e b" 'geiser-eval-buffer
"e e" 'geiser-eval-expression
"e r" 'geiser-eval-region
"b e" 'geiser-eval-buffer)
:init
(setq scheme-program-name "guile")
(setq geiser-mode-auto-p nil))
(use-package arei
:ensure f
:disabled t)
#+end_src
Kdaj delam tudi z [[https://racket-lang.org/][racket]].
@ -969,7 +997,10 @@ Način za obarvanje html, twig in podobne kode (jinja?) se imenuje ~web-mode~.
Dodamo še pripadajoč paket za olepševanje kode (avtomatsko prilagoditev zamikov kode).
#+begin_src emacs-lisp
(use-package web-mode :mode "\\.(html|twig)\\'")
(use-package web-mode
:config (setq web-mode-markup-indent-offset 2)
:mode "\\.(html|twig)\\'")
(use-package web-beautify :after web-mode)
#+end_src
@ -1006,8 +1037,9 @@ Podpora za programiranje s PHP domačo spletno stranjo oz. hipertekstualnim pred
Bližnjica za cache rebuild na drupalu (dela tudi preko SSH!).
#+begin_src emacs-lisp
:general
:general-config
(start/leader-keys
:keymaps 'php-mode-map
"d d" (defun drupal-cache-rebuild ()
(interactive)
;(shell-command "drush cr")

View File

@ -115,6 +115,21 @@
;; 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.
'(package-selected-packages
'(2bit aggressive-indent all-the-icons arduino-mode benchmark-init
company counsel-projectile crdt dap-mode dashboard direnv
doom-modeline drupal-mode eat editorconfig elpher eros
evil-collection evil-org extempore-mode fluxus-mode flycheck
format-all geben geiser-guile general gruvbox-theme guix
helpful htmlize lsp-mode magit-todos marginalia
mu4e-dashboard mu4e-marker-icons mu4e-thread-folding
ob-mermaid openwith orderless org-bullets org-caldav pyvenv
quelpa-use-package racket-mode rainbow-delimiters restclient
rg rjsx-mode sclang-extensions sesman slime smartparens smex
subed svg-icon svg-lib tidal toml-mode treemacs-evil
treemacs-projectile treesit-auto undo-tree vertico vue-mode
web-beautify web-mode which-key writeroom-mode yaml-mode
zone-nyan))
'(package-vc-selected-packages
'((svg-icon :url "https://github.com/rougier/emacs-svg-icon"))))

View File

@ -1 +1 @@
("~/projekti/radiostudent-d8/" "~/projekti/jugofuturizem/" "~/sredstva/dotfiles/" "~/projekti/waveywind/" "~/projekti/emacs.si/" "~/projekti/kegel/" "~/projekti/mobilizon/" "~/projekti/hm/" "~/projekti/PIfcamp 2021/" "/sshx:jurijp@dev.radiostudent.si:/var/www/new.radiostudent.si/" "~/projekti/glasbeni-indeks/" "~/projekti/PIXELSYNTH/" "~/kompot/Kompot/" "~/projekti/radio-muse/" "~/projekti/radio-muse/web/themes/custom/indiere2/")
("~/projekti/jugofuturizem/" "~/projekti/coopcycle-app/" "~/projekti/coopcycle-web/" "~/sredstva/dotfiles/" "~/projekti/waveywind/" "~/.local/share/SuperCollider/downloaded-quarks/MathLib/" "~/.local/share/SuperCollider/downloaded-quarks/SLIPDecoder/")

View File

@ -37,7 +37,7 @@ export MOZ_ENABLE_WAYLAND=1
export QT_QPA_PLATFORMTHEME=gtk
export QT_FONT_DPI=95
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=lcd -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel $_JAVA_OPTIONS"
#export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=lcd -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel $_JAVA_OPTIONS"
export JAVA_FONTS="/usr/share/fonts/TTF"
#export QT_QPA_PLATFORM=wayland-egl
export QT_WAYLAND_FORCE_DPI=physical
@ -65,3 +65,4 @@ export PATH="$HOME/.config/guix/current/bin:$PATH"
#if [ "$(tty)" = "/dev/tty1" ]; then
# QT_QPA_PLATFORM=wayland-egl SDL_VIDEODRIVER=wayland exec sway
#fi
. "$HOME/.cargo/env"

14
.zshrc
View File

@ -66,7 +66,7 @@ alias ll='ls -l'
alias grep='grep --color=auto'
alias ls='ls --color -C'
alias vi='vim'
alias sudo='sudo env PATH=$PATH '
alias sudo='sudo '
alias ag="rg"
alias less="less -R"
@ -159,6 +159,18 @@ fi
alias termfix="TERM=rxvt-256color "
#export TERM=rxvt-256color
# Deli internet (iz wifi na eth)
alias share-internet="sudo iptables --table nat -A POSTROUTING --out-interface enp5s0 -j MASQUERADE && sudo iptables -A FORWARD --in-interface eth1 -j ACCEPT"
# Android studio in SDK
export ANDROID_HOME="$HOME/Android/Sdk"
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
#export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin/
export PATH=$PATH:$HOME/android-studio/bin
export PATH=$PATH:/opt/gradle-8.7/bin
# Cargo!
export PATH=$HOME/.cargo/bin:$PATH