(tool-bar-mode -1)
+;; Configure printing using CUPS network printer
+(setq lpr-switches
+ (append '("-o raw"
+ "-o media=A4")
+ lpr-switches))
+
;; Enable the melpa archive for packages
(use-package package
:config
(setq inferior-julia-program-name "/usr/bin/julia")
;; enable autocomplete
-(use-package company
+(use-package corfu
:ensure t
- :bind(:map company-active-map
- ("<return>" . nil)
- ("RET" . nil)
- ("C-<return>" . company-complete-selection)
- ([tab] . company-complete-common)
- ("TAB" . company-complete-common))
- :config
- (global-company-mode 1))
+ ;; Optional customizations
+ :custom
+ (corfu-cycle t) ;; Enable cycling for `corfu-next/previous'
+ (corfu-auto t) ;; Enable auto completion
+ ;; (corfu-separator ?\s) ;; Orderless field separator
+ ;; (corfu-quit-at-boundary nil) ;; Never quit at completion boundary
+ ;; (corfu-quit-no-match nil) ;; Never quit, even if there is no match
+ ;; (corfu-preview-current nil) ;; Disable current candidate preview
+ ;; (corfu-preselect 'prompt) ;; Preselect the prompt
+ ;; (corfu-on-exact-match nil) ;; Configure handling of exact matches
+ ;; (corfu-scroll-margin 5) ;; Use scroll margin
+
+ ;; Enable Corfu only for certain modes. See also `global-corfu-modes'.
+ ;; :hook ((prog-mode . corfu-mode)
+ ;; (shell-mode . corfu-mode)
+ ;; (eshell-mode . corfu-mode))
+
+ ;; Recommended: Enable Corfu globally. This is recommended since Dabbrev can
+ ;; be used globally (M-/). See also the customization variable
+ ;; `global-corfu-modes' to exclude certain modes.
+ :init
+ (global-corfu-mode)
+ (corfu-history-mode))
+
+(use-package cape
+ :ensure t
+ ;; Bind prefix keymap providing all Cape commands under a mnemonic key.
+ ;; Press C-c p ? to for help.
+ :bind ("C-c p" . cape-prefix-map) ;; Alternative keys: M-p, M-+, ...
+ ;; Alternatively bind Cape commands individually.
+ ;; :bind (("C-c p d" . cape-dabbrev)
+ ;; ("C-c p h" . cape-history)
+ ;; ("C-c p f" . cape-file)
+ ;; ...)
+ :init
+ ;; Add to the global default value of `completion-at-point-functions' which is
+ ;; used by `completion-at-point'. The order of the functions matters, the
+ ;; first function returning a result wins. Note that the list of buffer-local
+ ;; completion functions takes precedence over the global list.
+ (add-hook 'completion-at-point-functions #'cape-dict) ;; requires words package to be installed on Arch to provide /usr/share/dict/words
+ (add-hook 'completion-at-point-functions #'cape-dabbrev)
+ (add-hook 'completion-at-point-functions #'cape-file)
+ (add-hook 'completion-at-point-functions #'cape-elisp-block)
+ ;; (add-hook 'completion-at-point-functions #'cape-history)
+ ;; ...
+ )
(use-package org
:ensure t
+ :bind
+ (("C-c c" . org-capture)
+ ("C-c l" . org-store-link)
+ ("C-c a" . org-agenda))
+ :custom
+ (org-default-notes-file "~/Nextcloud/notes/inbox.org")
+ (org-agenda-files `(,org-default-notes-file "~/Nextcloud/notes/calendar.org"))
+ (org-capture-bookmark nil)
+ ;; Capture templates
+ (org-capture-templates
+ '(("f" "Fleeting note" entry
+ (file+headline org-default-notes-file "Notes")
+ "* %?\nEntered on %U\n %i\n %a")
+ ("b" "Tax receipt" item
+ (file "~/Documents/belastingen/FY24-25.org")
+ "* %t %a\n")
+ ("a" "Appointment" entry
+ (file+olp+datetree "~/Nextcloud/notes/calendar.org")
+ "* %?\n :PROPERTIES:\n :location: %^{Location}\n :END:\n%^T--%^T\n\n"
+ :jump-to-captured t
+ :tree-type month
+ :time-prompt t)
+ ("p" "Permanent note" plain
+ (file denote-last-path)
+ #'denote-org-capture
+ :no-save t
+ :immediate-finish nil
+ :kill-buffer t
+ :jump-to-captured t)
+ ("t" "New task" entry
+ (file+headline org-default-notes-file "Tasks")
+ "* TODO %i%?")
+ ("e" "Email follow-up" entry (file+headline org-default-notes-file "Tasks")
+ "* TODO %:fromname: %a %?\nDEADLINE: %(org-insert-time-stamp (org-read-date nil t \"+2d\"))")))
+ ;; Agenda views
+ (org-agenda-custom-commands
+ '(("P" "Expired calendar events" ((tags "TIMESTAMP<=\"<now>\"")))
+ ("n" "Agenda and all TODOs" ((agenda "") (alltodo "")))))
:config
+ ;; Configure refile
+ (defun my/opened-buffer-files ()
+ "Return the list of org files currently opened in emacs"
+ (delq nil
+ (mapcar (lambda (x)
+ (if (and (buffer-file-name x)
+ (string-match "\\.org$"
+ (buffer-file-name x)))
+ (buffer-file-name x)))
+ (buffer-list))))
+ (setq org-refile-targets `((my/opened-buffer-files :maxlevel . 9)
+ (,(file-expand-wildcards "~/Nextcloud/notes/*.org") :maxlevel . 1)))
+ (setq org-agenda-skip-scheduled-if-done t)
+ (setq org-agenda-skip-deadline-if-done t)
+ (setq org-agenda-start-on-weekday nil)
+ (setq org-log-done 'time)
;; Automatically flow lines based on window width and use
;; variable width fonts in org-mode.
(add-hook 'org-mode-hook 'visual-line-mode)
(org-babel-do-load-languages
'org-babel-load-languages
'((R . t)
- (latex . t)))
- ;; Security risk - This is somewhat ill-advised it appears
- (setq org-confirm-babel-evaluate nil))
-
+ (latex . t))))
+
+(use-package org-caldav
+ :ensure t
+ :config
+ (setq org-caldav-url "https://owncloud.vanrenterghem.biz/remote.php/dav/calendars/frederik")
+ (setq org-caldav-calendar-id "orgmode")
+ ;; Org filename where new entries from calendar stored
+ (setq org-caldav-inbox "~/Nextcloud/notes/calendar.org")
+ ;; Additional Org files to check for calendar events
+ (setq org-caldav-files nil)
+ ;; Usually a good idea to set the timezone manually
+ (setq org-icalendar-timezone "Australia/Perth"))
+
(use-package tex
:ensure auctex
:config
'(("\\.mdwn\\'" . markdown-mode)
("\\.md\\'" . markdown-mode)
("\\.yarn\\'" . markdown-mode)
+ ("\\.cpp\\'" . c++-mode)
("\\.js\\'" . js-mode)
("\\.json\\'" . js-mode)
("Makefile" . makefile-mode)
'("8d146df8bd640320d5ca94d2913392bc6f763d5bc2bb47bed8e14975017eea91" "9a977ddae55e0e91c09952e96d614ae0be69727ea78ca145beea1aae01ac78d2" "0cf95236abcf59e05b1ea69b4edd53d293a5baec4fe4c3484543fee99bfd2204" "80b00f3bf7cdbdca6c80aadfbbb03145f3d0aacf6bf2a559301e61109954e30a" default))
'(org-export-backends '(ascii html icalendar latex md odt))
'(package-selected-packages
- '(eat ellama emms mpdel-embark libmpdel pass password-store fontaine osm embark-consult embark consult jinx dired-preview ftable flx nerd-icons-dired nerd-icons all-the-icons-dired ox-rss org-ql org-contrib mustache org-static-blog haskell-mode julia-mode elfeed-protocol ack auctex lsp-mode elpy ## org htmlize leuven-theme lua-mode ess-smart-underscore ess-R-data-view ess)))
+ '(devdocs straight calfw calfw-org engrave-faces org-caldav nov eat mu4e ellama emms mpdel-embark libmpdel pass password-store fontaine osm orderless embark-consult embark consult jinx dired-preview ftable flx nerd-icons-dired nerd-icons all-the-icons-dired marginalia vertico denote ox-rss org-ql org-contrib mustache org-static-blog haskell-mode julia-mode elfeed-protocol ack company magit auctex lsp-mode elpy ## org htmlize leuven-theme lua-mode ess-smart-underscore ess-R-data-view ess))
+ '(use-package-compute-statistics t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
mu4e-sent-folder "/Sent"
mu4e-drafts-folder "/Drafts"
mu4e-trash-folder "/Trash"
- message-kill-buffer-on-exit t)
+ message-kill-buffer-on-exit t
+ ;;Fixing duplicate UID errors when using mbsync and mu4e
+ mu4e-change-filenames-when-moving t)
;; attach files to mu4e messages by marking the file(s) in dired and pressing C-c RET C-a
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
;; Define all bookmarks starting with favourite query used in mailcount modeline
;; Denote config
(use-package denote
:ensure t
+ :hook (dired-mode . denote-dired-mode)
+ :bind
+ (("C-c n n" . denote)
+ ("C-c n r" . denote-rename-file)
+ ("C-c n l" . denote-link)
+ ("C-c n b" . denote-backlinks))
:config
- (setq denote-directory "/home/frederik/Nextcloud/notes/"))
+ (setq denote-directory "/home/frederik/Nextcloud/notes/")
+ (denote-rename-buffer-mode 1))
(use-package nerd-icons
;; :custom
(setq vertico-resize nil)
(vertico-mode 1))
+;; Persist history over Emacs restarts. Vertico sorts by history position.
+(use-package savehist
+ :init
+ (savehist-mode))
+
;; Use `marginalia' package. This will display useful
;; annotations next to entries in the minibuffer. For example, when
;; using M-x it will show a brief description of the command as well
;; Other custom bindings
("M-y" . consult-yank-pop))) ;; orig. yank-pop
+(use-package consult-mu
+ :ensure nil ;; cloned in
+ :load-path "~/.emacs.d/lisp/consult-mu"
+ :after (consult mu4e)
+ :custom
+ ;;maximum number of results shown in minibuffer
+ (consult-mu-maxnum 200)
+ ;;show preview when pressing any keys
+ (consult-mu-preview-key 'any)
+ ;;do not mark email as read when previewed
+ (consult-mu-mark-previewed-as-read nil)
+ ;;do not amrk email as read when selected. This is a good starting point to ensure you would not miss important emails marked as read by mistake especially when trying this package out. Later you can change this to t.
+ (consult-mu-mark-viewed-as-read nil)
+ ;; open the message in mu4e-view-buffer when selected.
+ (consult-mu-action #'consult-mu--view-action)
+ )
+
;; Configure `world-clock'
(use-package time
:ensure nil
;; View PDFs in Emacs
(pdf-loader-install) ; On demand loading, leads to faster startup time
-
+(setq pdf-misc-print-programm "/usr/bin/lpr")
+
(use-package magit
:ensure t)
(add-hook 'eshell-load-hook #'eat-eshell-mode)
(setq eshell-visual-commands '()))
+;; Read ePub files
+(use-package nov
+ :ensure t
+ :init
+ (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
+ :config
+ (add-hook 'nov-mode-hook #'variable-pitch-mode))
+
+;; Set some preset fonts
+(use-package fontaine
+ :ensure t
+ :config
+ (setq fontaine-presets
+ '((regular-1
+ :default-family "Iosevka Nerd Font"
+ :default-height 120
+ :variable-pitch-family "Linux Biolinum O"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.1
+ :italic-family "Iosevka Etoile"
+ :line-spacing 1)
+ (large-1
+ :default-family "Iosevka Nerd Font"
+ :default-height 150
+ :variable-pitch-family "Linux Biolinum O"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.1
+ :italic-family "Iosevka Etoile"
+ :line-spacing 1)
+ (regular-2
+ :default-family "Fira Mono Nerd Font"
+ :default-height 140
+ :variable-pitch-family "Fira Sans Book"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.0
+ :line-spacing 1)
+ (large-2
+ :default-family "Fira Mono Nerd Font"
+ :default-height 140
+ :variable-pitch-family "Fira Sans Book"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.0
+ :line-spacing 1)
+ (ereader-Baskerville
+ :variable-pitch-family "Libre Baskerville"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.0
+ :line-spacing 1)
+ (ereader-Noto-Serif
+ :variable-pitch-family "Noto Serif"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.0
+ :line-spacing 1)
+ (ereader-Bembo-Tufte
+ :variable-pitch-family "ETBembo"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.1
+ :line-spacing 1)
+ (ereader-Literata
+ :variable-pitch-family "Literata"
+ :variable-pitch-weight normal
+ :variable-pitch-height 1.0
+ :line-spacing 1))))
+
+(use-package devdocs
+ :ensure t
+ :bind
+ ("C-h D" . devdocs-lookup))
+
;; Custom functions
;; Might want to run this automatically