experimental file that shows images in markdown
This commit is contained in:
parent
881fce5023
commit
a9f3d013a7
72
init.el
Normal file
72
init.el
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
; This file is GPL licensed, same as Emacs
|
||||||
|
|
||||||
|
|
||||||
|
; callback to rewrite image pat so emacs can show images inside blog post drafts.
|
||||||
|
(defun firehose/markdown-translate-image-path (path)
|
||||||
|
"Translate /media/... image links to ../media/... relative to buffer."
|
||||||
|
(message (concat "markdown translate image path called on " path))
|
||||||
|
|
||||||
|
(if (string-prefix-p "/images" path)
|
||||||
|
(concat "../../../static" path)))
|
||||||
|
|
||||||
|
|
||||||
|
; test
|
||||||
|
(message (firehose/markdown-translate-image-path "/images/bla"))
|
||||||
|
|
||||||
|
; monkey patch function to fix our filename
|
||||||
|
(defun markdown-display-inline-images ()
|
||||||
|
"Add inline image overlays to image links in the buffer.
|
||||||
|
This can be toggled with `markdown-toggle-inline-images'
|
||||||
|
or \\[markdown-toggle-inline-images]."
|
||||||
|
(interactive)
|
||||||
|
(message "monkeypatched function called")
|
||||||
|
(unless (display-images-p)
|
||||||
|
(error "Cannot show images"))
|
||||||
|
(save-excursion
|
||||||
|
(save-restriction
|
||||||
|
(widen)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (re-search-forward markdown-regex-link-inline nil t)
|
||||||
|
(let* ((start (match-beginning 0))
|
||||||
|
(imagep (match-beginning 1))
|
||||||
|
(end (match-end 0))
|
||||||
|
(file (funcall markdown-translate-filename-function (match-string-no-properties 6))))
|
||||||
|
(when (and imagep
|
||||||
|
(not (zerop (length file))))
|
||||||
|
(unless (file-exists-p file)
|
||||||
|
(let* ((download-file (funcall markdown-translate-filename-function file))
|
||||||
|
(valid-url (ignore-errors
|
||||||
|
(member (downcase (url-type (url-generic-parse-url download-file)))
|
||||||
|
markdown-remote-image-protocols))))
|
||||||
|
(if (and markdown-display-remote-images valid-url)
|
||||||
|
(setq file (markdown--get-remote-image download-file))
|
||||||
|
(when (not valid-url)
|
||||||
|
;; strip query parameter
|
||||||
|
(setq file (replace-regexp-in-string "?.+\\'" "" file))
|
||||||
|
(unless (file-exists-p file)
|
||||||
|
(setq file (url-unhex-string file)))))))
|
||||||
|
(when (file-exists-p file)
|
||||||
|
(let* ((abspath (if (file-name-absolute-p file)
|
||||||
|
file
|
||||||
|
(concat default-directory file)))
|
||||||
|
(image
|
||||||
|
(cond ((and markdown-max-image-size
|
||||||
|
(image-type-available-p 'imagemagick))
|
||||||
|
(create-image
|
||||||
|
abspath 'imagemagick nil
|
||||||
|
:max-width (car markdown-max-image-size)
|
||||||
|
:max-height (cdr markdown-max-image-size)))
|
||||||
|
(markdown-max-image-size
|
||||||
|
(create-image abspath nil nil
|
||||||
|
:max-width (car markdown-max-image-size)
|
||||||
|
:max-height (cdr markdown-max-image-size)))
|
||||||
|
(t (create-image abspath)))))
|
||||||
|
(when image
|
||||||
|
(let ((ov (make-overlay start end)))
|
||||||
|
(overlay-put ov 'display image)
|
||||||
|
(overlay-put ov 'face 'default)
|
||||||
|
(push ov markdown-inline-image-overlays)))))))))))
|
||||||
|
|
||||||
|
; register hook
|
||||||
|
(setq markdown-translate-filename-function
|
||||||
|
#'firehose/markdown-translate-image-path)
|
||||||
Loading…
x
Reference in New Issue
Block a user