Merge pull request #362 from sabof/overlay-numbers

* use overlays for url numbers
This commit is contained in:
Dirk-Jan C. Binnema
2014-02-08 10:47:40 -08:00

View File

@ -266,6 +266,7 @@ marking if it still had that."
(when (or embedded (not (mu4e~view-mark-as-read msg))) (when (or embedded (not (mu4e~view-mark-as-read msg)))
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
(erase-buffer) (erase-buffer)
(delete-all-overlays)
(insert (mu4e-view-message-text msg)) (insert (mu4e-view-message-text msg))
(goto-char (point-min)) (goto-char (point-min))
(mu4e~fontify-cited) (mu4e~fontify-cited)
@ -336,12 +337,12 @@ add text-properties to VAL."
(buffer-string)) (buffer-string))
""))) "")))
(defun mu4e~view-toggle-contact (&optional point) (defun* mu4e~view-toggle-contact (&optional point)
"Toggle between the long and short versions of long/short string "Toggle between the long and short versions of long/short string
at POINT, or if nil, at (point)." at POINT, or if nil, at (point)."
(interactive) (interactive)
(unless (get-text-property (or point (point)) 'long) (unless (get-text-property (or point (point)) 'long)
(error "point is not toggleable")) (return-from mu4e~view-toggle-contact))
(let* ((point (or point (point))) (let* ((point (or point (point)))
;; find the first pos part of the button ;; find the first pos part of the button
(start (previous-property-change point)) (start (previous-property-change point))
@ -442,14 +443,16 @@ at POINT, or if nil, at (point)."
(interactive) (interactive)
(let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg)) (let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg))
( attnum (mu4e~view-get-property-from-event 'mu4e-attnum))) ( attnum (mu4e~view-get-property-from-event 'mu4e-attnum)))
(mu4e-view-open-attachment msg attnum))) (when (and msg attnum)
(mu4e-view-open-attachment msg attnum))))
(defun mu4e~view-save-attach-from-binding () (defun mu4e~view-save-attach-from-binding ()
"Save the attachement at point, or click location." "Save the attachement at point, or click location."
(interactive) (interactive)
(let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg)) (let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg))
( attnum (mu4e~view-get-property-from-event 'mu4e-attnum))) ( attnum (mu4e~view-get-property-from-event 'mu4e-attnum)))
(mu4e-view-save-attachment-single msg attnum))) (when (and msg attnum)
(mu4e-view-save-attachment-single msg attnum))))
(defun mu4e~view-construct-attachments-header (msg) (defun mu4e~view-construct-attachments-header (msg)
"Display attachment information; the field looks like something like: "Display attachment information; the field looks like something like:
@ -768,9 +771,10 @@ If the optional argument URL is provided, browse that instead.
If the url is mailto link, start writing an email to that address." If the url is mailto link, start writing an email to that address."
(interactive) (interactive)
(let* (( url (or url (mu4e~view-get-property-from-event 'mu4e-url)))) (let* (( url (or url (mu4e~view-get-property-from-event 'mu4e-url))))
(if (string-match-p "^mailto:" url) (when url
(mu4e~compose-browse-url-mail url) (if (string-match-p "^mailto:" url)
(browse-url url)))) (mu4e~compose-browse-url-mail url)
(browse-url url)))))
(defun mu4e~view-show-images-maybe (msg) (defun mu4e~view-show-images-maybe (msg)
"Show attached images, if `mu4e-show-images' is non-nil." "Show attached images, if `mu4e-show-images' is non-nil."
@ -798,19 +802,22 @@ Also number them so they can be opened using `mu4e-view-go-to-url'."
(make-hash-table :size 32 :weakness nil)) (make-hash-table :size 32 :weakness nil))
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward mu4e~view-url-regexp nil t) (while (re-search-forward mu4e~view-url-regexp nil t)
(let ((url (match-string 0))) (let* ((url (match-string 0))
(ov (make-overlay (match-beginning 0) (match-end 0))))
(puthash (incf num) url mu4e~view-link-map) (puthash (incf num) url mu4e~view-link-map)
(add-text-properties 0 (length url) (add-text-properties
(match-beginning 0)
(match-end 0)
`(face mu4e-link-face `(face mu4e-link-face
mouse-face highlight mouse-face highlight
mu4e-url ,url mu4e-url ,url
keymap ,mu4e-view-clickable-urls-keymap keymap ,mu4e-view-clickable-urls-keymap
help-echo help-echo
"[mouse-1] or [M-RET] to open the link") url) "[mouse-1] or [M-RET] to open the link"))
(replace-match (overlay-put ov 'after-string
(concat url (propertize (format "[%d]" num)
(propertize (format "[%d]" num) 'face 'mu4e-url-number-face))
'face 'mu4e-url-number-face)))))))) )))))
(defun mu4e~view-hide-cited () (defun mu4e~view-hide-cited ()