Kuruluş Modunda Varsayılan Satır İçi Görüntü Arka Planı


9

Bir görüntünün şeffaf bir arka planı olduğunda, Emacs elbette buna saygı duyar.

Ne yazık ki, bu görüntüleme ile ilgili sorunlara yol açabilir:

koyu arka plan üzerinde siyah metin

Görüntünün arkasında belirli bir renk (örn. Beyaz) göstermenin bir yolu var mı? ImageMagick resimlerinde bazı destekler var gibi görünüyor .

Şu anda birlikte çalıştığım belirli şeyler arka plan rengine sahip olabilir, ancak bunu yapmak için her bir şekle fazladan birkaç satır eklemeliyim ki bu ideal değil. Org modunda görüntülenen satır içi görüntülerin varsayılan olarak arka plan renginin ayarlandığı yere ulaşmak istiyorum.

(Not: bu kuruluş-babel'e özgü değil, şu anda bu görüntüleri nasıl elde ettiğim gibi)

Yanıtlar:


9

Çok fazla kazmadan sonra, bunu Org veya genel olarak ayarlamak için yerleşik bir seçenek yok gibi görünüyor. Görüntü sisteminin varsayılan arka planı özelleştirmenin bir yolu yoktur ve kuruluşun :backgroundözelliği ayarlamak için bir yolu yoktur . Ancak, çoğu resim :backgrounddisplay özelliğini destekliyor gibi görünüyor .

Bu işlevi değiştirerek Org'a ekledim (okuma: kopyalama ve .emacs.d1 satırlık bir değişiklikle yapıştırma ) org-display-inline-images.

İşlevi burada çoğaltmayacağım, çünkü oldukça uzun. İşlevin 51. satırı şöyledir:

(setq img (save-match-data (create-image file type nil :width width)))

Ben (şeffaf arka plan) veya bir renk org-inline-image-backgroundtutabilir yeni bir özelleştirilebilir değişken tanımladı nil:

(defcustom org-inline-image-background nil
  "The color used as the default background for inline images.
  When nil, use the default face background."
  :group 'org
  :type '(choice color (const nil)))

Sonra, 51. satıra ekledim:

(setq img (save-match-data (create-image file type nil :width width 
                                                       :background org-inline-image-background)))

Bu güzel çalışıyor ve renk seçiciyi kullanarak özelleştirilebilir, bu nedenle tüm gereksinimlerimi karşılar.

siyah metin açık renkli


1
Görünüşe göre bu şeyi anlamak için çok çalışıyorsunuz. Bunun için bir yama göndermek veya emacs-orgmode@gnu.org adresine e-posta göndererek bunun kuruluş moduna eklenmesini ister misiniz?
Kaushal Modi

Bir kez onun adımlarına koydum (hiçbir şeyi kırmadığından emin olun) Ben de umuyorum.
J David Smith

Yeni Org modu sürüm 8.0, satır içi görüntüleri görüntülemek için yer paylaşımını kullanmaya başlar, Kaplama varsayılan arka plan rengini değiştirmenin bir yolu var mı?
stardiviner

@stardiviner bu tam olarak ne yapıyor
J David Smith

Org sürümümü kontrol ettim, öyle 8.3.4. org-display-inline-imagesKaynak kodunu kontrol ettim, kod tanımınızı bulamadım. Kaynak kod: gist.github.com/649a7b36031d6adb4a96
stardiviner

4

Tavsiyeyle daha iyi bir çözüm buldum.

(defun create-image-with-background-color (args)
  "Specify background color of Org-mode inline image through modify `ARGS'."
  (let* ((file (car args))
         (type (cadr args))
         (data-p (caddr args))
         (props (cdddr args)))
    ;; get this return result style from `create-image'
    (append (list file type data-p)
            (list :background (face-background 'default))
            props)))

(advice-add 'create-image :filter-args
            #'create-image-with-background-color)

Güzel çözüm. org-Çözüm çok daha geniş bir şekilde uygulandığından öneki kaldırmak için tavsiye işlevini yeniden adlandırmanızı önerebilir miyim ? Varsayılan olmayan temalarda, hedef muhtemelen beyaz bir arka plantır (genellikle varsayılan yüz arka planı değildir), bu nedenle (list :background "white")yararlı bir örnek olabilir.
ebpa

1
Bu kullanıcının seçeneği, düşünceleriniz doğru. Bence yorumunuz bu kodu bulan kullanıcı için yeterli. :)
stardiviner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.