(load "/usr/share/emacs/site-lisp/ess/lisp/ess-site")
(setq inferior-julia-program-name "/usr/bin/julia")
+(use-package ess-view-data
+ :ensure t)
+
;; enable autocomplete
(use-package corfu
:ensure t
("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-agenda-files `(,org-default-notes-file "~/Nextcloud/notes/calendar-nextcloud.org"))
(org-capture-bookmark nil)
;; Capture templates
(org-capture-templates
"* %?\nEntered on %U\n %i\n %a")
("b" "Tax receipt" item
(file "~/Documents/belastingen/FY24-25.org")
- "* %t %a\n")
+ "* %t %a\n")
+ ("a" "Appointment" entry
+ (file+olp+datetree "~/Nextcloud/notes/calendar-nextcloud.org")
+ "* %?\n :PROPERTIES:\n :location: %^{Location}\n :END:\n%(fv/org-capture-appointment-timestamp)\n\n"
+ :jump-to-captured t
+ :empty-lines 1
+ :tree-type month
+ :time-prompt t)
("p" "Permanent note" plain
(file denote-last-path)
#'denote-org-capture
(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\"))")))
+ "* TODO %:fromname: %a %?\nDEADLINE: %(org-insert-time-stamp (org-read-date nil t \"+2d\") t)")))
;; 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)
'((R . t)
(latex . t))))
+(defun fv/org-capture-appointment-timestamp (&optional duration)
+ "Get an Org timestamp for an appointment.
+Prompt for a start time, calculate the end time by adding DURATION (default 30
+minutes), and return a formatted Org timestamp with start and end times."
+ (let* ((duration (or duration 30))
+ (start-time (org-read-date t t nil "From:"))
+ (end-time (time-add start-time (seconds-to-time (* duration 60)))))
+ (concat (format-time-string (org-time-stamp-format t) start-time)
+ "--"
+ (format-time-string (org-time-stamp-format t) end-time))))
+
(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")
+ (setq org-caldav-calendar-id "default%20calendar")
;; Org filename where new entries from calendar stored
- (setq org-caldav-inbox "~/Nextcloud/notes/calendar.org")
+ (setq org-caldav-inbox '(file+olp+datetree "~/Nextcloud/notes/calendar-nextcloud.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"))
+ (setq org-icalendar-timezone "Australia/Perth")
+ (setq org-caldav-delete-calendar-entries 'ask))
+
+(use-package org-protocol)
(use-package tex
:ensure auctex
;; If there is more than one, they won't work right.
'(browse-url-browser-function 'browse-url-firefox)
'(custom-safe-themes
- '("8d146df8bd640320d5ca94d2913392bc6f763d5bc2bb47bed8e14975017eea91" "9a977ddae55e0e91c09952e96d614ae0be69727ea78ca145beea1aae01ac78d2" "0cf95236abcf59e05b1ea69b4edd53d293a5baec4fe4c3484543fee99bfd2204" "80b00f3bf7cdbdca6c80aadfbbb03145f3d0aacf6bf2a559301e61109954e30a" default))
+ '("8d146df8bd640320d5ca94d2913392bc6f763d5bc2bb47bed8e14975017eea91"
+ "9a977ddae55e0e91c09952e96d614ae0be69727ea78ca145beea1aae01ac78d2"
+ "0cf95236abcf59e05b1ea69b4edd53d293a5baec4fe4c3484543fee99bfd2204"
+ "80b00f3bf7cdbdca6c80aadfbbb03145f3d0aacf6bf2a559301e61109954e30a"
+ default))
'(org-export-backends '(ascii html icalendar latex md odt))
'(package-selected-packages
- '(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))
+ '(## ack all-the-icons-dired auctex calfw calfw-org company consult
+ consult-denote denote devdocs dired-preview
+ dired-quick-sort eat elfeed-protocol ellama elpy embark
+ embark-consult emms engrave-faces ess ess-R-data-view
+ ess-smart-underscore ess-view-data flx fontaine ftable
+ haskell-mode htmlize jinx julia-mode leuven-theme libmpdel
+ lsp-mode lua-mode magit marginalia mpdel-embark mu4e
+ mustache nerd-icons nerd-icons-dired nov orderless org
+ org-caldav org-contrib org-ql org-static-blog osm ox-rss
+ pass password-store powerthesaurus request straight
+ vertico))
'(use-package-compute-statistics t))
(custom-set-faces
;; custom-set-faces was added by Custom.
(replace-match outfile t t nil 2)))
(mapcar #'shell-command cmds)))))
(add-hook 'message-send-hook 'mu4e-resize-image-attachments)
+ (add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) ;; Attach files to messages using dired C-c RET C-a
(defun mu4e-inhibit-resize()
(interactive)
(set (make-local-variable 'mu4e-inhibit-resize) t)))
(keymap-global-set "M-$" #'jinx-correct)
:hook (emacs-startup . global-jinx-mode))
+(use-package powerthesaurus
+ :ensure t
+ :init
+ (require 'transient)
+ (transient-define-prefix my/transient-spelling ()
+ "Spelling commands"
+ ["Spelling"
+ ["Lookups"
+ ("y" "Synonyms" powerthesaurus-lookup-synonyms-dwim)
+ ("a" "Antonyms" powerthesaurus-lookup-antonyms-dwim)]
+ ["Spelling Tools"
+ ("x" "Jinx" jinx-mode)
+ ("c" "Jinx correct" jinx-correct)]
+ ["Dictionary"
+ ("d" "Lookup" dictionary-lookup-definition)]
+ ["Miscellaneous"
+ ("q" "Quit" transient-quit-one)]])
+ :bind
+ ("C-c s" . my/transient-spelling))
;; Bind embark
(use-package embark
(consult-mu-action #'consult-mu--view-action)
)
+(use-package consult-denote
+ :ensure t)
+
;; Configure `world-clock'
(use-package time
:ensure nil
(large-1
:default-family "Iosevka Nerd Font"
:default-height 150
- :variable-pitch-family "Linux Biolinum O"
+ :variable-pitch-family "Literata"
:variable-pitch-weight normal
- :variable-pitch-height 1.1
- :italic-family "Iosevka Etoile"
+ :variable-pitch-height 1.0
:line-spacing 1)
(regular-2
:default-family "Fira Mono Nerd Font"
:variable-pitch-height 1.0
:line-spacing 1))))
+(use-package devdocs
+ :ensure t
+ :bind
+ ("C-h D" . devdocs-lookup))
+
+(use-package emms
+ :ensure t
+ :config
+ (require 'emms-setup)
+ (require 'emms-player-mpd)
+ (emms-all) ; don't change this to values you see on stackoverflow questions if you expect emms to work
+ (setq emms-player-list '(emms-player-mpd))
+ (add-to-list 'emms-info-functions 'emms-info-mpd)
+ (add-to-list 'emms-player-list 'emms-player-mpd)
+
+ ;; Socket is not supported
+ (setq emms-player-mpd-server-name "mea-hookani-pila")
+ (setq emms-player-mpd-server-port "6600")
+ (emms-player-mpd-connect))
+
;; Custom functions
;; Might want to run this automatically