diff --git a/init.el b/init.el index 33b7e21..050d3c1 100644 --- a/init.el +++ b/init.el @@ -53,17 +53,17 @@ ;; Frame settings. (use-package emacs :init - (setq initial-frame-alist '( + (setq default-frame-alist '( (fullscreen . maximized) - (font . "JetBrains Mono 22") - ;; (font . "Iosevka Fixed 24") + ;; (font . "JetBrains Mono 22") + (font . "Iosevka Fixed 24") (undecorated . t) (vertical-scroll-bars . nil) (inhibit-double-buffering . t) ;; (ns-transparent-titlebar . nil) (background-color . "#181818") ;;"black") )) - ) + ) ;; Basic settings. (use-package emacs @@ -73,6 +73,7 @@ (save-place-mode t) (savehist-mode t) (setq use-short-answers t + ;; set-mark-command-repeat-pop t ring-bell-function 'ignore scroll-conservatively 101 help-window-select t @@ -87,6 +88,7 @@ Man-sed-command "gsed") :config (setq-default truncate-lines nil + ;; display-line-numbers 'relative display-line-numbers-width 3 indent-tabs-mode nil tab-width 4 @@ -95,6 +97,7 @@ (xterm-mouse-mode t) (show-paren-mode t)) + ;; Mode line format. ----- (defun my-evil-mode-indicator () (interactive) @@ -110,7 +113,7 @@ (if (and (mode-line-window-selected-p) (bound-and-true-p evil-mode)) (my-evil-mode-indicator)) " ") - (:eval (unless (not vc-mode) (concat " | git:" (substring-no-properties vc-mode 5)))) + (:eval (unless (not vc-mode) (concat " | Git:" (substring-no-properties vc-mode 5)))) mode-line-format-right-align (:eval (concat " " (symbol-name major-mode))) " " mode-line-misc-info)) @@ -135,15 +138,14 @@ ;; Enable recursive minibuffers (setq enable-recursive-minibuffers t)) - (use-package modus-themes :ensure t :defer t :config (custom-set-faces - '(dired-header ((t (:foreground "#95a99f" :slant italic))))) + '(dired-header ((t (:foreground "#95a99f"))))) ;; :slant italic))))) (custom-set-faces - '(dired-directory ((t (:foreground "#96a6c8" :slant italic))))) + '(dired-directory ((t (:foreground "#96a6c8"))))) ;; :slant italic))))) (setq modus-themes-italic-constructs nil modus-themes-bold-constructs nil modus-themes-mixed-fonts nil @@ -184,7 +186,7 @@ (bg-line-number-active "#181818") (bg-line-number-inactive "#181818") ;; SRC-block - (bg-prose-block-delimiter bg-cyan-nuanced) + (bg-prose-block-delimiter bg-inactive) ;; Region bg and fg (bg-region bg-hover) ; try to replace `bg-ochre' with `bg-lavender', `bg-sage' (fg-region unspecified) @@ -192,6 +194,9 @@ (load-theme 'modus-vivendi t) ;; Denote package. ---- +(use-package denote-org + :ensure t) + (use-package denote :ensure t :init @@ -209,6 +214,25 @@ (define-key global-map (kbd "C-c n f") #'consult-denote-find) (define-key global-map (kbd "C-c n g") #'consult-denote-grep)) +;; Org-roam. ------ +;; (use-package org-roam +;; :ensure t +;; :custom +;; (org-roam-directory (file-truename "/Users/norets/Library/Mobile Documents/iCloud~com~logseq~logseq/Documents/Org-roam/pages")) +;; :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 n j" . org-roam-dailies-capture-today)) +;; :config +;; ;; If you're using a vertical completion framework, you might want a more informative completion interface +;; (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) +;; (org-roam-db-autosync-mode) +;; ;; If using org-roam-protocol +;; (require 'org-roam-protocol)) + (use-package vertico :ensure t :init @@ -422,8 +446,24 @@ (org-sturtup-indent t) (org-hide-emphasis-markers t)) +;; code blocks. ------ +(use-package org + :ensure nil + :config + (require 'org-tempo) + (setq org-confirm-babel-evaluate nil) + (setq org-src-window-setup 'current-window) + (setq org-support-shift-select t) + (setq org-edit-src-persistent-message nil) + (setq org-src-fontify-natively t) + (setq org-src-preserve-indentation t) + (setq org-src-tab-acts-natively t) + (setq org-hide-emphasis-markers nil) + (setq org-edit-src-content-indentation 0)) + + ;; (use-package mini-modeline -;; :ensure t +;; ;; :ensure t ;; ;; :quelpa (mini-modeline :repo "kiennq/emacs-mini-modeline" :fetcher github) ;; ;; :after smart-mode-line ;; :config @@ -455,19 +495,51 @@ (advice-add 'move-text-down :after 'indent-region-advice) -;;; Magig ------ +;;; Magit ------ (use-package magit :ensure t :defer 0 :init (setq magit-auto-revert-mode nil)) +;; Multiple-Cursors ------ +(use-package multiple-cursors + :ensure t + :init + :bind (("C-S-c C-S-c" . mc/edit-lines) + ("C->" . mc/mark-next-like-this) + ("C-<" . mc/mark-previous-like-this) + ("C-M-j" . mc/mark-all-dwim) + ("C-c C-<" . mc/mark-all-like-this) + )) + +;; TabBarMode ----- +(use-package tab-bar + :ensure nil + :init + (setq tab-bar-show 1) ;; hide bar if <= 1 tabs open + (setq tab-bar-close-button-show nil) ;; hide tab close / X button + (setq tab-bar-new-tab-choice "*scratch*");; buffer to show in new tabs + (setq tab-bar-tab-hints t) ;; show tab numbers + (setq tab-bar-format '(tab-bar-format-tabs tab-bar-separator)) + :config + (setq tab-bar-mode nil)) + +(global-set-key (kbd "s-[") 'tab-bar-switch-to-prev-tab) +(global-set-key (kbd "s-]") 'tab-bar-switch-to-next-tab) +(global-set-key (kbd "s-t") 'tab-bar-new-tab) +(global-set-key (kbd "s-w") 'tab-bar-close-tab) + +(setq tab-bar-select-tab-modifiers "super") + ;; Keybindings ------ (define-key (current-global-map) [remap dired] 'dired-jump) (define-key (current-global-map) [remap list-buffers] 'ibuffer) (define-key (current-global-map) [remap kill-buffer] 'kill-current-buffer) +(global-set-key (kbd "M-*") 'pop-tag-mark) ;; Not define by default. + (global-set-key (kbd "C-c d d") 'kill-whole-line) (global-set-key (kbd "C-c w s") 'visual-line-mode) @@ -536,7 +608,17 @@ (forward-char 1) (backward-word) (kill-word 1)) -(global-set-key (kbd "C-c w w") 'my/kill-whole-word) +(global-set-key (kbd "C-c d w") 'my/kill-whole-word) + +;; Copy whole word/line +(defun my/copy-whole-word () + (interactive) + (forward-char 1) + (backward-word) + (mark-word 1) + (kill-word 1) + (yank)) +(global-set-key (kbd "C-c w w") 'my/copy-whole-word) (defun my/copy-whole-line () (interactive) @@ -560,3 +642,39 @@ (move-beginning-of-line 1) (forward-char column))) (global-set-key (kbd "C-,") 'my/duplicate-line) + +;; Flash mode-line. ------ +(defun flash-mode-line () + (invert-face 'mode-line) + (run-with-timer 0.1 nil #'invert-face 'mode-line)) +(setq visible-bell nil + ring-bell-function 'flash-mode-line) + +;; Starttime ------ +(add-to-list 'after-init-hook + (lambda () + (message (concat "emacs (" (number-to-string (emacs-pid)) ") started in " (emacs-init-time))))) + +(defun push-mark-no-activate () + "Pushes `point' to `mark-ring' and does not activate the region + Equivalent to \\[set-mark-command] when \\[transient-mark-mode] is disabled" + (interactive) + (push-mark (point) t nil) + (message "Pushed mark to ring")) + +(global-set-key (kbd "C-`") 'push-mark-no-activate) + +(defun jump-to-mark () + "Jumps to the local mark, respecting the `mark-ring' order. + This is the same as using \\[set-mark-command] with the prefix argument." + (interactive) + (set-mark-command 1)) +(global-set-key (kbd "M-`") 'jump-to-mark) + +;; (defun exchange-point-and-mark-no-activate () +;; "Identical to \\[exchange-point-and-mark] but will not activate the region." +;; (interactive) +;; (exchange-point-and-mark) +;; (deactivate-mark nil)) +;; (define-key global-map [remap exchange-point-and-mark] 'exchange-point-and-mark-no-activate) +