;; Alamat host email (setq mail-host-address "mrfirmansyah.my.id") ;; Auto-save (setq backup-directory-alist `((".*" . ,temporary-file-directory)) auto-save-file-name-transforms `((".*" ,temporary-file-directory t))) ;; Mengikuti symlink tanpa prompt (setq vc-follow-symlinks t) ;; Mode minor global (global-visual-line-mode t) (setq electric-indent-mode nil) ;; Menampilkan buffer scratch kosong saat memulai (setq inhibit-startup-screen t initial-scratch-message nil) ;; Arsip-arsip paket dan prioritasnya (require 'package) (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") ("nongnu" . "https://elpa.nongnu.org/nongnu/") ("melpa-stable" . "http://stable.melpa.org/packages/") ("melpa" . "http://melpa.org/packages/")) package-archive-priorities '(("melpa-stable" . 20) ("gnu" . 10) ("melpa" . 0))) (package-initialize) ;; Spell-checker (setq ispell-program-name "hunspell" ispell-dictionary "id_ID") (add-to-list 'ispell-skip-region-alist '("^#+BEGIN_SRC" . "^#+END_SRC")) (add-hook 'text-mode-hook 'flyspell-mode 'prog-mode-hook 'flyspell-prog-mode) ;; Tema (load-theme 'modus-operandi :no-confirm) (tool-bar-mode -1) (setq-default cursor-type 'bar) ;; Org mode (global-set-key (kbd "C-c a") #'org-agenda) (global-set-key (kbd "C-c c") #'org-capture) (global-set-key (kbd "C-c l") #'org-store-link) (setq org-agenda-files '("/media/Data/Dokumen/Agenda/") org-capture-templates '(("c" "Catatan singkat" entry (file+datetree "Catatan/catatan_singkat.org") "* %?") ("t" "Tugas" entry (file+datetree "Agenda/tugas.org") "* TODO %?") ("p" "Proyek" entry (file "Agenda/proyek.org") "* %?")) org-agenda-custom-commands '(("i" "Ikhtisar hari ini" ((todo "DOING" ((org-agenda-overriding-header "Tugas sedang dikerjakan:"))) (todo "NEXT" ((org-agenda-overriding-header "Tugas selanjutnya:"))) (tags "CLOSED>=\"\"" ((org-agenda-overriding-header "Tugas selesai:"))) (agenda "" ((org-agenda-files '("Agenda/jadwal.org")) (org-agenda-overriding-header "Jadwal:") (org-agenda-prefix-format "%?-12t% s") (org-agenda-skip-function '(org-agenda-skip-entry-if 'deadline)) (org-agenda-span 1) (org-deadline-warning-days 0))))) ("d" "Deadline" ((agenda nil ((org-agenda-entry-types '(:deadline)) (org-agenda-format-date "") (org-deadline-warning-days 7) (org-agenda-skip-function '(org-agenda-skip-entry-if 'notregexp "\\* NEXT")) (org-agenda-overriding-header "Deadline:")))))) org-directory "/media/Data/Dokumen/" org-id-get-create t org-log-done 'time org-startup-with-inline-images t org-stuck-projects '("+PROJECT/-MAYBE-DONE" ("TODO" "NEXT" "DOING") nil "\\")) ;; Paket-paket (use-package company :config (global-company-mode t)) (use-package company-box :hook (company-mode . company-box-mode)) (use-package consult :bind (("C-c M-x" . consult-mode-command) ("C-c h" . consult-history) ("C-c k" . consult-kmacro) ("C-c m" . consult-man) ("C-c i" . consult-info) ([remap Info-search] . consult-info) ("C-x M-:" . consult-complex-command) ("C-x b" . consult-buffer) ("C-x 4 b" . consult-buffer-other-window) ("C-x 5 b" . consult-buffer-other-frame) ("C-x t b" . consult-buffer-other-tab) ("C-x r b" . consult-bookmark) ("C-x p b" . consult-project-buffer) ("M-#" . consult-register-load) ("M-'" . consult-register-store) ("C-M-#" . consult-register) ("M-y" . consult-yank-pop) ("M-g e" . consult-compile-error) ("M-g f" . consult-flymake) ("M-g g" . consult-goto-line) ("M-g M-g" . consult-goto-line) ("M-g o" . consult-outline) ("M-g m" . consult-mark) ("M-g k" . consult-global-mark) ("M-g i" . consult-imenu) ("M-g I" . consult-imenu-multi) ("M-s d" . consult-find) ("M-s c" . consult-locate) ("M-s g" . consult-grep) ("M-s G" . consult-git-grep) ("M-s r" . consult-ripgrep) ("M-s l" . consult-line) ("M-s L" . consult-line-multi) ("M-s k" . consult-keep-lines) ("M-s u" . consult-focus-lines) ("M-s e" . consult-isearch-history) :map isearch-mode-map ("M-e" . consult-isearch-history) ("M-s e" . consult-isearch-history) ("M-s l" . consult-line) ("M-s L" . consult-line-multi) :map minibuffer-local-map ("M-s" . consult-history) ("M-r" . consult-history)) :hook (completion-list-mode . consult-preview-at-point-mode) :init (setq register-preview-delay 0.5 register-preview-function #'consult-register-format) (advice-add #'register-preview :override #'consult-register-window) (setq xref-show-xrefs-function #'consult-xref xref-show-definitions-function #'consult-xref) :config (consult-customize consult-theme :preview-key '(:debounce 0.2 any) consult-ripgrep consult-git-grep consult-grep consult-bookmark consult-recent-file consult-xref consult--source-bookmark consult--source-file-register consult--source-recent-file consult--source-project-recent-file :preview-key '(:debounce 0.4 any)) (setq consult-narrow-key "<")) (use-package consult-projectile :bind ("C-c p" . consult-projectile)) (use-package dashboard :ensure t :config (dashboard-setup-startup-hook) (setq dashboard-banner-logo-title "" dashboard-center-content nil dashboard-footer-messages nil dashboard-items '((recents . 5) (bookmarks . 5) (projects . 5)) dashboard-startup-banner nil initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name)))) (use-package embark :init (setq prefix-help-command #'embark-prefix-help-command) :config (add-to-list 'display-buffer-alist '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*" nil (window-parameters (mode-line-format . none))))) (use-package embark-consult :hook (embark-collect-mode . consult-preview-at-point-mode)) (use-package marginalia :init (marginalia-mode)) (use-package modus-themes :init (require 'modus-themes) (customize-set-variable 'modus-themes-common-palette-overrides '((bg-hover bg-active) (bg-mode-line-active bg-inactive) (bg-mode-line-inactive bg-dim) (bg-region bg-completion) (border-mode-line-active unspecified) (border-mode-line-inactive unspecified)))) (use-package orderless :custom (completion-styles '(orderless basic)) (completion-category-defaults nil) (completion-category-overrides '((file (styles basic partial-completion))))) (use-package org-roam :custom (org-roam-directory "~/.emacs.d/org-roam/") (org-roam-capture-templates '(("c" "Catatan" plain "%?" :target (file+head "${slug}.org" "#+TITLE: ${title}") nil nil))) :bind (("C-c n f" . org-roam-node-find) ("C-c n i" . org-roam-node-insert) ("C-c n l" . org-roam-buffer-toggle)) :config (org-roam-db-autosync-mode)) (use-package org-roam-ui :config (setq org-roam-ui-sync-theme t org-roam-ui-follow t org-roam-ui-update-on-save t org-roam-ui-open-on-start t)) (use-package projectile :init (projectile-mode)) (use-package vertico :init (vertico-mode)) (use-package which-key :init (which-key-mode)) (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. '(package-selected-packages '(dashboard company-go company-web company-box company which-key magit consult-projectile projectile embark-consult embark marginalia orderless consult vertico modus-themes org-roam-ui org-roam magit-section emacsql-sqlite use-package))) (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. )