tło
Eww, podobnie jak wiele innych pakietów, używa display
właściwości text do wyświetlania obrazów. Dlatego przełączanie invisible
właściwości text nie pomogło. Sprawiasz, że sam tekst jest niewidoczny, ale display
właściwość wciąż jest wyświetlana.
W rzeczywistości jest to coś tak powszechnego, że poniższy kod powinien działać na każdym buforze wyświetlającym obrazy (nie tylko eww).
Rozwiązanie
Najłatwiejszym rozwiązaniem jest usunięcie display
właściwości z całego bufora. Ale to nieodwracalne działanie, nie można ponownie włączyć obrazów bez odświeżania strony.
Bardziej niezawodne rozwiązanie, przedstawione poniżej, usuwa display
właściwości z bufora i jednocześnie tworzy kopię zapasową obrazu z inną (bezużyteczną) właściwością. Po ponownym wywołaniu polecenie przenosi kopie zapasowe obrazów z powrotem do display
właściwości.
(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))
To facet, który wykonuje kopie zapasowe i przywraca je wszędzie. Kod właściwości tekstu nie jest strasznie łatwy do odczytania, ale myślę, że ta funkcja jest wystarczająco krótka, aby można było ją wyjaśnić.
(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))))))
Daj mi znać, jeśli to działa! Testowałem to tylko na bardzo prostych stronach internetowych.