about summary refs log tree commit diff stats
path: root/lisp/+org-attach.el
blob: 5e7cc7f396e320408b2f1170d2abb9069a2b11ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;;; +org-attach.el --- Fixes for org-attach -*- lexical-binding: t; -*-

;;; Commentary:

;; `org-attach-attach' doesn't fix the path name.  Before I submit a bug, I'm
;; just fixing it by advising `org-attach-attach'.

;;; Code:

(defun +org-attach-attach-fix-args (args)
  "ADVICE for `org-attach-attach' to normalize FILE first.
VISIT-DIR and METHOD are passed through unchanged.

This should be applied as `:filter-args' advice."
  (cons (expand-file-name (car args)) (cdr args)))

(define-minor-mode +org-attach-fix-args-mode
  "Fix the arguments passed to `org-attach-attach'.
This mode normalizes the filename passed to `org-attach-attach'
so that links can be properly made."
  :lighter ""
  :keymap nil
  :global t                             ; I figure, what does this hurt?
  (if +org-attach-fix-args-mode
      (advice-add 'org-attach-attach :filter-args #'+org-attach-attach-fix-args)
    (advice-remove 'org-attach-attach #'+org-attach-attach-fix-args)))

(provide '+org-attach)
;;; +org-attach.el ends here