Link: Emacs
Text search and completion
Full text search for both English and Chinese
helm-org-rifle to search text with preview pane
Use M-x counsel-ripgrep
or M-x consult-org-roam-search
to search full text in orgmode/orgroam directory
Note that the search is conflicted with ivy
Auto completion
Use ivy package to enhance autocompletion (conflit with ripgrep)
File explorer function when find files
Use counsel pacakge to counsel-find-files
, after finding a file, press M-o
to show more options such as open in other window, delete, etc
Backlink
Backlink display
Preview through backlinks
Use consult-org-roam with M-x consult-org-roam-backlinks
to scan through each backlinks
Add all backlinks as block in current file
Use org-roam-backlink-collections with M-x org-roam-backlink-collections-add-all
to add all backlinks (read only) in current note.
Alternatively, use ~mode to preview without actual adding it.
Package management
Refresh package source
If it shows “xx package not found” for a package available on MELPA, use M-x package-refresh-contents
to refresh
Theme
Auto switch light/dark mode
Source: https://yannesposito.com/posts/0014-change-emacs-theme-automatically/index.html Did some minor changes since the original code is in doom emacs.
(defun y/auto-update-theme ()
"depending on time use different theme"
;; morning to afternoon: nord-light
;; night: monokai-machine
(let* ((hour (nth 2 (decode-time (current-time))))
(theme (cond ((<= 6 hour 18) 'doom-nord-light)
(t 'doom-monokai-machine))))
(when (not (equal custom-enabled-themes theme))
(load-theme theme t))
;; run that function again next hour
(run-at-time (format "%02d:%02d" (+ hour 1) 0) nil 'y/auto-update-theme)))
(y/auto-update-theme)
Clock table
Use :tstart ”<-30d>” :tend “<now>” to indicate date range, e.g.
#+BEGIN: clocktable :maxlevel 9 :scope agenda :tstart ”<-30d>” :tend “<now>” :step semimonth :hidefiles t :emphasize t :compact t :properties (“Effort”)
Custom key binding
To customize key bindings for exising commands, define it directly with “SPC” won’t work. Instead, check out which keymap it belongs to. E.g. kill-this-buffer
is part of doom-leader-map
, and then define it by map!
.
;; Bind SPC b k to 'kill-this-buffer'
(map! :map doom-leader-map
"b k" #'kill-this-buffer)
Turn off evil mode in selected buffer mode
(evil-set-initial-state 'dired-mode 'emacs)