Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Use overlays for url numbers #362

merged 2 commits into from Feb 8, 2014
Jump to file or symbol
Failed to load files and symbols.
+21 −14
@@ -266,6 +266,7 @@ marking if it still had that."
(when (or embedded (not (mu4e~view-mark-as-read msg)))
(let ((inhibit-read-only t))
+ (delete-all-overlays)
(insert (mu4e-view-message-text msg))
(goto-char (point-min))
@@ -336,12 +337,12 @@ add text-properties to VAL."
-(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
at POINT, or if nil, at (point)."
(unless (get-text-property (or point (point)) 'long)
- (error "point is not toggleable"))
+ (return-from mu4e~view-toggle-contact))
(let* ((point (or point (point)))
;; find the first pos part of the button
(start (previous-property-change point))
@@ -442,14 +443,16 @@ at POINT, or if nil, at (point)."
(let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg))
( 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 ()
"Save the attachement at point, or click location."
(let* (( msg (mu4e~view-get-property-from-event 'mu4e-msg))
( 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)
"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."
(let* (( url (or url (mu4e~view-get-property-from-event 'mu4e-url))))
- (if (string-match-p "^mailto:" url)
- (mu4e~compose-browse-url-mail url)
- (browse-url url))))
+ (when url
+ (if (string-match-p "^mailto:" url)
+ (mu4e~compose-browse-url-mail url)
+ (browse-url url)))))
(defun mu4e~view-show-images-maybe (msg)
"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))
(goto-char (point-min))
(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)
- (add-text-properties 0 (length url)
+ (add-text-properties
+ (match-beginning 0)
+ (match-end 0)
`(face mu4e-link-face
mouse-face highlight
mu4e-url ,url
keymap ,mu4e-view-clickable-urls-keymap
- "[mouse-1] or [M-RET] to open the link") url)
- (replace-match
- (concat url
- (propertize (format "[%d]" num)
- 'face 'mu4e-url-number-face))))))))
+ "[mouse-1] or [M-RET] to open the link"))
+ (overlay-put ov 'after-string
+ (propertize (format "[%d]" num)
+ 'face 'mu4e-url-number-face))
+ )))))
(defun mu4e~view-hide-cited ()