blob: 09022b15c3168a07a11d991b888813120094dac9 (
plain) (
tree)
|
|
#+STARTUP: overview
#+PROPERTY: header-args :comments yes :results silent
* Main Org config
I do not want visual line mode in org mode.
#+begin_src emacs-lisp
(add-hook 'org-mode-hook 'visual-line-mode)
#+end_src
Nor do I want flycheck-mode on.
#+begin_src emacs-lisp
;; turn off flycheck-mode
(add-hook 'org-mode-hook (lambda () flycheck-mode -1))
#+end_src
** Keybindings
Let's set some basic keybindings.
#+begin_src emacs-lisp
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)
(global-set-key "\C-cc" 'org-capture)
#+end_src
Some agenda configuration.
** Basic agenda config
#+begin_src emacs-lisp
(setq org-clock-persist 'history)
(org-clock-persistence-insinuate)
(setq org-sort-agenda-notime-is-late nil)
(setq org-agenda-span 'day)
(setq org-directory "~/org")
(setq org-agenda-files (quote ("~/org/home.org"
"~/org/projects.org"
"~/org/work.org"
"~/org/notes.org"
"~/org/habits.org"
"~/org/calendar/cal.org"
"~/org/calendar/home-cal.org"
"~/org/calendar/work-cal.org")))
(setq org-default-notes-file (concat org-directory "/notes.org"))
(setq org-agenda-window-setup 'current-window)
(setq org-agenda-start-with-log-mode t)
(setq org-M-RET-may-split-line '(default . nil))
(setq org-enforce-todo-dependencies t)
(setq org-log-done 'time)
(setq org-log-done-with-time 'note)
(setq diary-file "~/org/diary")
(setq org-agenda-include-diary t)
(setq org-agenda-diary-file "~/org/calendar/cal.org")
(setq org-agenda-show-future-repeats t)
(setq org-agenda-skip-deadline-if-done t)
(setq org-agenda-skip-scheduled-if-done t)
(setq org-reverse-note-order t)
(setq org-habit-graph-column 45)
(setq org-sort-agenda-notime-is-late nil)
(setq org-columns-default-format "%50ITEM(Task) %10CLOCKSUM %25TIMESTAMP_IA")
(setq org-archive-location "~/org/archive.org::* From %s")
(setq org-refile-targets (quote ((nil :maxlevel . 9)
(org-agenda-files :maxlevel . 9))))
#+end_src
As good a place to split it as any.
This now is all about the agenda dispatcher - a critical piece of my configuraton and workflow.
** Agenda Dispatcher
This took me a good couple of days to finesse and when I understood the syntax for tag searches that alowed me to much more productive. I started to set up the system to work the way I wanted it to.
One key element of my agenda workflow is for scheduled tasks to appear in the agenda grid, not in the blocks below.
#+begin_src emacs-lisp
(setq org-agenda-custom-commands
'(("w" . "Work")
("wt" "Agenda + Work TODO"
(
(agenda "")
(tags-todo "+@work-TODO=\"WAITING\"-SCHEDULED>=\"<today>\""
((org-agenda-overriding-header "Work TODO UNSCHEDULED")))
(tags-todo "+@work+TODO=\"WAITING\""
((org-agenda-overriding-header "Work WAITING")))
))
("wn" "Agenda + Work NEXT"
(
(agenda)
(tags-todo "+@work+TODO=\"NEXT\"-SCHEDULED>=\"<today>\""
((org-agenda-overriding-header "Work NEXT UNSCHEDULED")))
(tags-todo "+@work+TODO=\"WAITING\""
((org-agenda-overriding-header "Work WAITING")))
))
("wp" "Work Project NEXT"
(
(agenda)
(tags-todo "+@work+TODO=\"NEXT\"+CATEGORY=\"Project\""
((org-agenda-overriding-header "Work Project NEXT actions")))
))
("h" . "Home")
("hh" "Agenda + Home TODO"
(
(agenda "")
(tags-todo "@home-SCHEDULED>=\"<today>\"-TODO=\"WAITING\"-TODO=\"DOING\""
((org-agenda-overriding-header "Home TODO UNSCHEDULED")
(org-agenda-sorting-strategy '(deadline-down scheduled-down priority-down))))
(tags-todo "+@home+TODO=\"WAITING\""
((org-agenda-overriding-header "Home WAITING")))
(tags-todo "+@home+TODO=\"DOING\"" ((org-agenda-overriding-header "Home in progress")))
))
("hn" "Agenda + Home NEXT"
(
(agenda "")
(tags-todo "+@home+TODO=\"NEXT\"-SCHEDULED>=\"<today>\""
((org-agenda-overriding-header "Home NEXT UNSCHEDULED")
(org-agenda-sorting-strategy '(deadline-down scheduled-down priority-down))))
(tags-todo "+@home+TODO=\"DOING\""
((org-agenda-overriding-header "Home in progress")))
))
("n" "Agenda + All NEXT"
(
(agenda "")
(todo "NEXT")))
("t" "Agenda + All TODO"
(
(agenda "")
(alltodo "")))
("W" "Agenda + All WAITING"
(
(agenda "")
(todo "WAITING")))
("i" tags "idea")
))
#+end_src
** Capture templates
These have evoloved a bit over the years.
#+begin_src emacs-lisp
(define-key global-map "\C-cc" 'org-capture)
(setq org-capture-templates
(quote (("h" "Home Tasks & Notes")
("ht" "Home TODO" entry (file+headline "~/org/home.org" "Single Actions")
"** TODO %?\nEntered on %U\n"
:prepend t)
("hn" "Home NEXT" entry (file+headline "~/org/home.org" "Single Actions")
"** NEXT %?\nEntered on %U\n"
:prepend t)
("hN" "Home Note" entry (file+headline "~/org/home.org" "Notes")
"** %?\nEntered on %U\n")
("hj" "Journal" entry (file+datetree "~/org/journal.org")
"* %?\nEntered on %U\n")
("hi" "Home Idea" entry (file+headline "~/org/notes.org" "Notes")
"** %? :idea:\nEntered on %U\n")
("w" "Work Tasks & Notes")
("wt" "Work TODO" entry (file+headline "~/org/work.org" "Single Actions")
"** TODO %?\nEntered on %U\n"
:prepend t)
("wn" "Work NEXT" entry (file+headline "~/org/work.org" "Single Actions")
"** NEXT %?\nEntered on %U\n"
:prepend t)
("wN" "Note" entry (file+headline "~/org/work.org" "Notes")
"* %?\nEntered on %U\n")
("wc" "Note from Clipboard" entry (file+headline "~/org/work.org" "Notes")
"* %?\n\t\n%c")
("wr" "Note from Region" entry (file+headline "~/org/work.org" "Notes")
"* %?\n\t\n%i")
("wj" "Journal" entry (file+olp+datetree "~/org/work.org" "Journal")
"** %?\nEntered on %U\n")
("wd" "Retrospective Single Action" entry (file+headline "~/org/work.org" "Single Actions")
"* DONE %?\nCLOSED: %U")
("e" "Emacs Tip")
("et" "Emacs Tip" entry (file+headline "~/org/emacs-tips.org" "Emacs Tips")
"* %?\n\t%a")
("er" "Emacs Tip from Region" entry (file+headline "~/org/emacs-tips.org" "Emacs Tips")
"* %?\n\t%i")
)))
#+end_src
** Handling TODO items
#+begin_src emacs-lisp
;; Put state transition logs into a drawer called LOGBOOK
(setq org-log-into-drawer t)
(setq org-todo-keywords
(quote ((sequence "TODO(t)" "NEXT(n)" "DOING" "|" "DONE(d!)")
(sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)")
)))
(setq org-todo-keyword-faces
(quote (("TODO" :foreground "red" :weight bold)
("NEXT" :foreground "cyan" :weight bold)
("DOING" :foreground "orchid" :weight bold)
("DONE" :foreground "forest green" :weight bold)
("WAITING" :foreground "orange" :weight bold)
("HOLD" :foreground "magenta" :weight bold)
("CANCELLED" :foreground "forest green" :weight bold))))
;; tag stuff automatically dependent on a change of state
(setq org-todo-state-tags-triggers
(quote (("CANCELLED" ("CANCELLED" . t))
("WAITING" ("WAITING" . t))
("HOLD" ("WAITING") ("HOLD" . t))
(done ("WAITING") ("HOLD"))
("TODO" ("WAITING") ("CANCELLED") ("HOLD"))
("NEXT" ("WAITING") ("CANCELLED") ("HOLD"))
("DONE" ("WAITING") ("CANCELLED") ("HOLD")))))
(setq org-priority-faces
'((?A . (:foreground "#CC0000" :background "#FFE3E3"))
(?B . (:foreground "#64992C" :background "#EBF4DD"))
(?C . (:foreground "#64992C" :background "#FFFFFF"))))
(setq org-ellipsis "...")
#+END_SRC
* Stuff that didn't get into that block for some reason
#+BEGIN_SRC emacs-lisp
(setq org-tag-alist '(
;; Depth
("@immersive" . ?i) ;; "Deep"
("@process" . ?p) ;; "Shallow"
("@offdesk" . ?o) ;; "Away from desk"
;; Type
("brainstorm" . ?b)
("idea" . ?d)
;; Context
("@work" . ?w)
("@home" . ?h)
("@errand" . ?e)
("@emacs" . ?E)
;; Time
("15min" . ?<)
("30min" . ?=)
("1h" . ?>)
;; Energy
("Challenge" . ?1)
("Average" . ?2)
("Easy" . ?3)
;; Misc
("Maybe" . ?m)
))
(setq org-use-speed-commands t
org-speed-commands-user
'(("N" org-narrow-to-subtree)
("$" org-archive-subtree)
("A" org-archive-subtree)
("W" widen)
("d" org-down-element)
("k" org-cut-subtree)
("m" org-mark-subtree)
("s" org-sort)
;; ("x" smex-major-mode-commands)
("X" org-todo-done)
("R" org-done-and-archive)
("y" org-todo-yesterday)))
;; org agenda should be full screen
(defun open-agenda ()
"Open the org-agenda."
(interactive)
(let ((agenda "*Org Agenda*"))
(if (equal (get-buffer agenda) nil)
(org-agenda-list)
(unless (equal (buffer-name (current-buffer)) agenda)
(switch-to-buffer agenda))
(org-agenda-redo t)
(beginning-of-buffer))))
(bind-key "<f5>" 'open-agenda)
#+END_SRC
* Rest of config
#+BEGIN_SRC emacs-lisp
;;; Code:
(setq inhibit-startup-message 1)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(set-fringe-mode 10)
;; Put backups in /tmp where they belong
(setq backup-directory-alist
`((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
`((".*" ,temporary-file-directory t)))
;; recursively copy by default
(setq dired-recursive-copies 'always)
;; y or n instead of yes or no
(fset 'yes-or-no-p 'y-or-n-p)
;; auto revert files
(global-auto-revert-mode t)
;; Display the current time
(display-time-mode t)
(setq visible-bell t)
(set-face-attribute 'default nil :font "Jetbrains Mono" :height 140)
;;(set-face-attribute 'default nil :font "UbuntuMono Nerd Font Mono" :height 160)
(load-theme 'tango-dark)
;;(load-theme 'gruvbox-dark-hard t)
;; calendar proper Monday start
(setq calendar-week-start-day 1)
(setq calendar-date-style (quote european))
(use-package dired
:ensure nil
:bind
(("C-x C-j" . dired-jump)
("C-x j" . dired-jump-other-window))
:custom
;; Always delete and copy recursively
(dired-recursive-deletes 'always)
(dired-recursive-copies 'always)
;; Auto refresh Dired, but be quiet about it
(global-auto-revert-non-file-buffers t)
(auto-revert-verbose nil)
;; Quickly copy/move file in Dired
(dired-dwim-target t)
;; Move files to trash when deleting
(delete-by-moving-to-trash t)
:config
;; Reuse same dired buffer, to prevent numerous buffers while navigating in dired
(put 'dired-find-alternate-file 'disabled nil)
:hook
(dired-mode . (lambda ()
(local-set-key (kbd "<mouse-2>") #'dired-find-alternate-file)
(local-set-key (kbd "RET") #'dired-find-alternate-file)
(local-set-key (kbd "^")
(lambda () (interactive) (find-alternate-file ".."))))))
;; dired config
;; human readable
(setq-default dired-listing-switches "-alh")
;; auto package update
(use-package auto-package-update
:if (not (daemonp))
:custom
(auto-package-update-interval 7) ;; in days
(auto-package-update-prompt-before-update t)
(auto-package-update-delete-old-versions t)
(auto-package-update-hide-results t)
:config
(auto-package-update-maybe))
;; remove certain minor modes from the mode line
(use-package diminish)
;; some core bindings
;; Use iBuffer instead of Buffer List
;;(global-set-key (kbd "C-x C-b") #'ibuffer)
;; Truncate lines
(global-set-key (kbd "C-x C-l") #'toggle-truncate-lines)
;; Adjust font size like web browsers
(global-set-key (kbd "C-+") #'text-scale-increase)
(global-set-key (kbd "C--") #'text-scale-decrease)
;; Move up/down paragraph
(global-set-key (kbd "M-n") #'forward-paragraph)
(global-set-key (kbd "M-p") #'backward-paragraph)
;; kill other buffers
(defun kill-other-buffers ()
"Kill all other buffers."
(interactive)
(mapc 'kill-buffer (delq (current-buffer) (buffer-list))))
;; Windmove - use Shift and arrow keys to move in windows
(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))
;; Winner mode - undo and redo changes in window config
;; with C-c left and C-c right
(use-package winner
:ensure nil
:custom
(winner-boring-buffers
'("*Completions*"
"*Compile-Log*"
"*inferior-lisp*"
"*Fuzzy Completions*"
"*Apropos*"
"*Help*"
"*cvs*"
"*Buffer List*"
"*Ibuffer*"
"*esh command on file*"))
:config
(winner-mode 1))
;; Handling tabs (for programming)
(setq-default tab-width 2)
(setq-default tab-width 2 indent-tabs-mode nil)
(setq-default indent-tabs-mode nil)
(setq js-indent-level 2)
(setq coffee-tab-width 2)
(setq python-indent 2)
(setq css-indent-offset 2)
(add-hook 'sh-mode-hook
(lambda ()
(setq sh-basic-offset 2
sh-indentation 2)))
(setq web-mode-markup-indent-offset 2)
;; flycheck syntax highlighting
(use-package flycheck
:ensure t
:init (global-flycheck-mode))
;; turn off flycheck-mode for org
(setq flycheck-global-modes '(not org-mode))
;; Highlight matching parens
(show-paren-mode t)
;; Stop C-z suspending emacs
(global-set-key (kbd "C-z") 'nil)
(use-package ivy
:diminish
:init
(use-package amx :defer t)
(use-package counsel :diminish :config (counsel-mode 1))
(use-package swiper :defer t)
(ivy-mode 1)
:bind
(("C-s" . swiper-isearch)
("C-x C-f" . counsel-find-file)
("C-x C-m" . counsel-M-x)
("C-h f" . counsel-describe-function)
("C-h v" . counsel-describe-variable)
("C-z s" . counsel-rg)
("C-x C-r" . counsel-recentf)
("C-z b" . counsel-buffer-or-recentf)
("C-z C-b" . counsel-ibuffer)
(:map ivy-minibuffer-map
("C-r" . ivy-previous-line-or-history)
("M-RET" . ivy-immediate-done))
(:map counsel-find-file-map
("C-~" . counsel-goto-local-home)))
:custom
(ivy-use-virtual-buffers t)
(ivy-height 10)
(ivy-on-del-error-function nil)
(ivy-magic-slash-non-match-action 'ivy-magic-slash-non-match-create)
(ivy-count-format "【%d/%d】")
(ivy-wrap t)
:config
(setq projectile-completion-system 'ivy)
(defun counsel-goto-local-home ()
"Go to the $HOME of the local machine."
(interactive)
(ivy--cd "~/")))
;; Ace Window
(use-package ace-window
:bind (("C-x o" . ace-window)
("M-2" . ace-window))
:init
(setq aw-background t
aw-keys '(?a ?o ?e ?u ?i ?d ?h ?t ?n ?s)))
;; expand-region
(use-package expand-region
:bind (("C-@" . er/expand-region)
("C-=" . er/expand-region)
("M-3" . er/expand-region)))
;; browse-kill-ring
(use-package browse-kill-ring
:bind ("C-x C-y" . browse-kill-ring)
:config
(setq browse-kill-ring-quit-action 'kill-and-delete-window))
(setq save-interprogram-paste-before-kill t)
;; recentf
(use-package recentf
:hook (after-init . recentf-mode)
:custom
(recentf-auto-cleanup "05:00am")
(recentf-exclude '((expand-file-name package-user-dir)
".cache"
".cask"
".elfeed"
"bookmarks"
"cache"
"ido.*"
"persp-confs"
"recentf"
"undo-tree-hist"
"url"
"COMMIT_EDITMSG\\'"))
(setq recentf-auto-cleanup 'never
recentf-max-saved-items 50
recentf-save-file (concat user-emacs-directory ".recentf"))
(setq recentf-max-menu-items 25)
(setq recentf-max-saved-items 25)
(recentf-mode t))
;; encoding
(prefer-coding-system 'utf-8)
(setq coding-system-for-read 'utf-8)
(setq coding-system-for-write 'utf-8)
;; beacon mode
(use-package beacon
:config
(setq beacon-color "OrangeRed")
(beacon-mode 1))
;; (use-package ivy
;; :bind (("C-s" . swiper)
;; :map ivy-minibuffer-map
;; ("TAB" . ivy-alt-done)
;; ("C-l" . ivy-alt-done)
;; ("C-j" . ivy-next-line)
;; ("C-k" . ivy-previous-line)
;; :map ivy-switch-buffer-map
;; ("C-k" . ivy-previous-line)
;; ("C-l" . ivy-done)
;; ("C-d" . ivy-switch-buffer-kill)
;; :map ivy-reverse-i-search-map
;; ("C-k" . ivy-previous-line)
;; ("C-d" . ivy-reverse-i-search-kill))
;; :config
;; (ivy-mode 1))
;; Yasnippet
(use-package yasnippet
:diminish yas-minor-mode
:hook ((prog-mode LaTeX-mode org-mode) . yas-minor-mode)
:bind
(:map yas-minor-mode-map ("C-c C-n" . yas-expand-from-trigger-key))
(:map yas-keymap
(("TAB" . smarter-yas-expand-next-field)
([(tab)] . smarter-yas-expand-next-field)))
:config
(use-package yasnippet-snippets)
(yas-reload-all)
(defun smarter-yas-expand-next-field ()
"Try to `yas-expand' then `yas-next-field' at current cursor position."
(interactive)
(let ((old-point (point))
(old-tick (buffer-chars-modified-tick)))
(yas-expand)
(when (and (eq old-point (point))
(eq old-tick (buffer-chars-modified-tick)))
(ignore-errors (yas-next-field))))))
;; this config works better with yasnippet
(use-package company
:diminish company-mode
:hook ((prog-mode LaTeX-mode latex-mode ess-r-mode ledger-mode) . company-mode)
:bind
(:map company-active-map
([tab] . smarter-yas-expand-next-field-complete)
("TAB" . smarter-yas-expand-next-field-complete))
:custom
(company-tooltip-align-annotations t)
(company-begin-commands '(self-insert-command))
(company-require-match 'never)
;; Don't use company in the following modes
(company-global-modes '(not shell-mode eaf-mode))
;; Trigger completion immediately.
(company-idle-delay 0.1)
;; Number the candidates (use M-1, M-2 etc to select completions).
(company-show-numbers t)
:config
;; clangd variable not present which was a problem
;; (unless *clangd* (delete 'company-clang company-backends))
;; (global-company-mode 1)
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 3)
(defun smarter-yas-expand-next-field-complete ()
"Try to `yas-expand' and `yas-next-field' at current cursor position.
If failed try to complete the common part with `company-complete-common'"
(interactive)
(if yas-minor-mode
(let ((old-point (point))
(old-tick (buffer-chars-modified-tick)))
(yas-expand)
(when (and (eq old-point (point))
(eq old-tick (buffer-chars-modified-tick)))
(ignore-errors (yas-next-field))
(when (and (eq old-point (point))
(eq old-tick (buffer-chars-modified-tick)))
(company-complete-common))))
(company-complete-common))))
;; Ace Jump
(use-package ace-jump-mode
:bind ("C-M-SPC" . ace-jump-mode))
;; Lisp programming
(use-package paredit
:init
(add-hook 'clojure-mode-hook #'enable-paredit-mode)
(add-hook 'cider-repl-mode-hook #'enable-paredit-mode)
(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
(add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode)
(add-hook 'ielm-mode-hook #'enable-paredit-mode)
(add-hook 'lisp-mode-hook #'enable-paredit-mode)
(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode)
(add-hook 'scheme-mode-hook #'enable-paredit-mode)
:config
(show-paren-mode t)
:bind (("M-[" . paredit-wrap-square)
("M-{" . paredit-wrap-curly))
:diminish nil)
(use-package rainbow-delimiters
:config
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode))
;; EVIL
;; (use-package evil
;; :init
;; :config
;; (setq evil-respect-visual-line-mode t)
;; (evil-mode 1))
;; ;; which-key - for nice menu
;; (use-package which-key
;; :config
;; (which-key-mode)
;; )
;; which-key
(use-package which-key
:config
(which-key-mode))
;; elfeed
(use-package elfeed
:config
(setq elfeed-feeds
'(("http://feeds.bbci.co.uk/news/rss.xml?edition=uk" news)
("http://feeds.bbci.co.uk/news/technology/rss.xml" tech news)
("https://planet.emacslife.com/atom.xml" emacs)
("https://irreal.org/blog/?feed=rss2" emacs)
("https://karl-voit.at/feeds/lazyblorg-all.atom_1.0.links-only.xml" emacs)
("https://dominiccummings.com/rss.xml" blog tech)
("https://usesthis.com/feed.atom" tech blog)
("https://plaintextproject.online/feed.xml" plaintext productivity)
("https://feeds.feedburner.com/StudyHacks" productivity)
("http://newsrss.bbc.co.uk/rss/sportonline_uk_edition/rugby_union/rss.xml" rugby)
("http://feeds.bbci.co.uk/news/video_and_audio/politics/rss.xml" news)
("https://feeds.feedburner.com/arstechnica/open-source" opensource)
("https://www.computerweekly.com/rss/IT-security.xml" cyber)
("http://tonsky.me/blog/atom.xml" blog)
("https://akkshaya.blog/feed" blob)
("https://miguelmota.com/index.xml" blog)
("https://www.computerweekly.com/rss/IT-security.xml" security)
("https://www.fsf.org/static/fsforg/rss/news.xml" opensource)
("https://www.reddit.com/r/emacs.rss" emacs)
("https://www.reddit.com/r/rugbyunion/.rss" rugby)
("http://pragmaticemacs.com/feed/" emacs)
("https://200ok.ch/atom.xml" emacs)
("http://www.linuxinsider.com/perl/syndication/rssfull.pl" linux)
("http://planet.debian.org/rss20.xml" debian linux)
("http://feeds2.feedburner.com/Command-line-fu" linux)
("https://opensource.org/news.xml" opensource)
("https://www.wired.com/feed/rss" news tech)
("https://sivers.org/en.atom" blog))))
;; get scoring in elfeed
(use-package elfeed-score
:ensure t
:config
(progn
(elfeed-score-enable)
(define-key elfeed-search-mode-map "=" elfeed-score-map)))
;; Basic magit
(use-package magit
:bind ("C-x g" . magit-status))
;; ido
(ido-mode 1)
;; Interactively Do Things (ido)
(use-package ido
:config
(ido-mode t)
(ido-everywhere t)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(setq ido-file-extensions-order '(".org" ".txt" ".py" ".emacs" ".md" ".xml" ".el" ".ini"))
(setq ido-enable-flex-matching t))
;; ;; helm
;; (require 'helm-config)
;; (global-set-key (kbd "M-x") #'helm-M-x)
;; (global-set-key (kbd "C-x r b") #'helm-filtered-bookmarks)
;; (global-set-key (kbd "C-x C-f") #'helm-find-files)
;; ;; The default "C-x c" is quite close to "C-x C-c", which quits Emacs.
;; ;; Changed to "C-c h". Note: We must set "C-c h" globally, because we
;; ;; cannot change `helm-command-prefix-key' once `helm-config' is loaded.
;; (global-set-key (kbd "C-c h") 'helm-command-prefix)
;; (global-unset-key (kbd "C-x c"))
;; (helm-mode 1)
;; ledger mode
(use-package ledger-mode
:mode ("\\.ledger\\'")
:config
;; (setq ledger-default-date-format "%d/%m/%Y")
(setq ledger-reports
'(("hsbc_current_account" "ledger [[ledger-mode-flags]] --date-format \"%d/%m/%Y\" -f /home/lemon/Documents/Budget/ledger/2021/budget2021.ledger reg Assets\\:HSBC\\:Current")
("bal" "%(binary) -f %(ledger-file) bal")
("reg" "%(binary) -f %(ledger-file) reg")
("payee" "%(binary) -f %(ledger-file) reg @%(payee)")
("account" "%(binary) -f %(ledger-file) reg %(account)")))
(add-hook 'ledger-mode-hook
(lambda ()
(setq-local tab-always-indent 'complete)
(setq-local completion-cycle-threshold t)
(setq-local ledger-complete-in-steps t)))
:custom (ledger-clear-whole-transactions t))
(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.
'(company-show-quick-access t nil nil "Customized with use-package company")
'(custom-safe-themes
'("6b5c518d1c250a8ce17463b7e435e9e20faa84f3f7defba8b579d4f5925f60c1" default))
'(package-selected-packages
'(elfeed-score yasnippet-snippets yasnippet browse-kill-ring expand-region ace-window amx flycheck ace-jump-mode gruvbox-theme company helm auto-package-update ledger-mode magit elfeed-org which-key use-package rainbow-delimiters paredit evil counsel)))
(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.
)
#+END_SRC
|