Use um tema de cores diferentes para buffers eww

7

Eu vi essa pergunta: como personalizar a cor de fundo de algumas páginas da web abertas com eww? mas isso não vai funcionar para mim. Estou tentando ler páginas da Wikipedia e, em muitos lugares, a Wikipedia usa imagens para renderizar fórmulas matemáticas. Quando estes têm um plano de fundo transparente, a aparência não é renderizada de forma aceitável (exemplo abaixo). Então, eu gostaria de ter um tema de fundo branco-ish para eww, mantendo todo o resto com um tema de fundo escuro.

insira a descrição da imagem aqui

wvxvw
fonte
11
Eu acho que esse é um bom motivo para adicionar mais rostos aeww-mode
ocodo

Respostas:

10

Atualizar:

load-theme-buffer-local.el( Repositório GitHub ) deve fazer o que tentei, mas fazê-lo da maneira certa .

Para usá-lo eww, instale-o e adicione

(add-hook 'eww-mode-hook
          (lambda () (load-theme-buffer-local 'tango (current-buffer))))

para o seu arquivo init.

PS: Eu não posso testar essa abordagem, então, deixe-me saber se isso funciona.

Resposta original (mantida apenas para o registro):

Você pode usar face-remap-add-relativepara definir faces no buffer atual.

Depois de um pouco de pesquisa, descobri esse truque. Extrai as configurações de face de um tema e as aplica no buffer atual.

(defun set-theme-faces-in-buffer (theme)
  "Use face remapping to set faces from a theme in the current
buffer. THEME should be a symbol."
  (dolist (setting (get theme 'theme-settings))
    (when (eq (car setting) 'theme-face)
      (let ((face (nth 1 setting))
            (spec (cadar (nth 3 setting))))
        (ignore-errors
          (apply #'face-remap-add-relative face spec))))))

Você pode combinar isso com um eww-mode-hookpara definir um tema diferente nos ewwbuffers.

(add-hook 'eww-mode-hook
          (lambda () (set-theme-faces-in-buffer 'tango)))

(Substitua tangopelo seu tema de luz favorito.)

Constantine
fonte
Isso meio que funciona para mim. Os planos de fundo desses png transparentes ainda mostram o plano de fundo do tema anterior. Parece que também precisaríamos desativar o tema anterior no buffer atual. Como eu posso fazer isso?
precisa
@kaushalmodi: Depois de mais algumas pesquisas load-theme-buffer-local.el, encontrei o que deveria ser muito melhor do que o meu hack. De uma chance! (I ligado a ele na resposta atualizada.)
Constantine
@Constantine: infelizmente, ele tem o mesmo problema com imagens transparentes
Joseph Garvin
1

Como alternativa, se você estiver familiarizado com a leitura da marcação LaTeX, talvez prefira configurar a wikipedia para não usar imagens para renderizar matemática. Isso requer que você crie uma conta na Wikipedia e vá para Preferências-> Aparência-> Matemática para selecionar uma opção. Eu recomendaria o "MathJax do lado do cliente", pois isso renderizará de maneira bonita em um navegador que entende javascript, mas mostrará apenas a fonte LaTeX em um navegador como ewwesse.

Por exemplo, sua página fica assim para mim: insira a descrição da imagem aqui

Talvez no futuro alguém possa adaptar o código preview-latexou org-preview-latex-fragmentpermitir a exibição da matemática formatada de ewwuma maneira que esteja ciente do esquema de cores. (Ou integre um intérprete javascript!)

descontinuada
fonte
O tipo de encadernação Emacs do Maxima faz isso (renderiza o LaTeX nas cores do tema atual). Talvez eu veja como isso faz para incorporar isso. Engraçado, na verdade, acabei fazendo as duas coisas (desativando a renderização do servidor na Wikipedia) e adicionando um gancho eww, mas vou aceitar a pergunta de Constantine porque é mais genérica. Obrigado mesmo assim!
Wvxvw