Hintergrund
Eww verwendet wie viele andere Pakete die display
Eigenschaft text, um Bilder anzuzeigen. Aus diesem Grund hat das Umschalten der Texteigenschaft invisible
nicht geholfen. Sie machen den Text selbst unsichtbar, aber die display
Eigenschaft wird weiterhin angezeigt.
Tatsächlich ist dies so verbreitet, dass der folgende Code auf jedem Puffer funktionieren sollte, der Bilder anzeigt (nicht nur eww).
Lösung
Die einfachste Lösung besteht darin, die display
Eigenschaft einfach aus dem gesamten Puffer zu entfernen . Aber das ist eine irreversible Aktion. Sie könnten Bilder nicht wieder einschalten, ohne die Seite zu aktualisieren.
Die robustere Lösung, die im Folgenden vorgestellt wird, entfernt display
Eigenschaften im Puffer und sichert das Image gleichzeitig in einer anderen (unbrauchbaren) Eigenschaft. Bei erneutem Aufruf verschiebt der Befehl die gesicherten Bilder zurück in die display
Eigenschaft.
(defvar-local endless/display-images t)
(defun endless/toggle-image-display ()
"Toggle images display on current buffer."
(interactive)
(setq endless/display-images
(null endless/display-images))
(endless/backup-display-property endless/display-images))
Dies ist der Typ, der überall die Sicherung und Wiederherstellung vornimmt. Texteigenschaftscode ist nicht besonders einfach zu lesen, aber ich denke, diese Funktion ist kurz genug, um selbsterklärend zu sein.
(defun endless/backup-display-property (invert &optional object)
"Move the 'display property at POS to 'display-backup.
Only applies if display property is an image.
If INVERT is non-nil, move from 'display-backup to 'display
instead.
Optional OBJECT specifies the string or buffer. Nil means current
buffer."
(let* ((inhibit-read-only t)
(from (if invert 'display-backup 'display))
(to (if invert 'display 'display-backup))
(pos (point-min))
left prop)
(while (and pos (/= pos (point-max)))
(if (get-text-property pos from object)
(setq left pos)
(setq left (next-single-property-change pos from object)))
(if (or (null left) (= left (point-max)))
(setq pos nil)
(setq prop (get-text-property left from object))
(setq pos (or (next-single-property-change left from object)
(point-max)))
(when (eq (car prop) 'image)
(add-text-properties left pos (list from nil to prop) object))))))
Bitte lassen Sie mich wissen, ob es funktioniert! Ich habe es nur auf sehr einfachen Webseiten getestet.