Como obtenho uma linha de modo mais sofisticada que usa cores sólidas e triângulos?

94

Ocasionalmente, as pessoas publicam capturas de tela com modelines com cores sólidas e triângulos: insira a descrição da imagem aqui

Como eu replico esse efeito?

Tikhon Jelvis
fonte
2
Na verdade, já fiz essa pergunta algumas vezes em outros sites, então pensei em fazê-la preventivamente aqui também :).
Tikhon Jelvis
11
Veja também whattheemacsd.com/appearance.el-01.html para obter dicas sobre como alterar o texto, não apenas a aparência, da linha de modo.
Mankoff

Respostas:

79

Isso pode ser alcançado com dois pacotes:

  1. linha de modo inteligente .
  2. powerline .

No geral, a linha de modo inteligente é mais poderosa que a powerline (perdoe o trocadilho), no sentido de oferecer mais recursos para controlar o comportamento da linha de modo e mais personalização na aparência. O Leia-me possui uma ótima lista de recursos , mas, em resumo, oferece controle de largura, substituição de cadeia no caminho do arquivo, ocultação de modos menores, entre outras coisas.

  • Se tudo o que você deseja é obter a captura de tela, o powerline é a melhor opção.
  • Se você deseja combinar um conjunto de outros recursos, experimente a linha de modo inteligente .

Como o powerline foi muito bem explicado em outra resposta, vou me concentrar em como você pode conseguir essa aparência com a linha de modo inteligente.

Primeira instalação

Você pode instalar a linha de modo inteligente a partir do Melpa, Melpa-Stable ou fazer o download manualmente. Supondo que você decida usar o gerenciador de pacotes, basta

M-x package-install RET smart-mode-line

Depois de ativá-lo M-x sml/setup, sua linha de modo deve ser semelhante a uma dessas duas.
Captura de tela do Dark Theme Captura de tela do Light Theme

Tema Powerline

A linha de modo inteligente possui vários temas integrados; o que obtém a aparência solicitada é fornecido separadamente no themes/ diretório Observe que esse tema ainda está na versão beta, portanto, personalizá-lo pode não funcionar perfeitamente ainda.

Instale o tema de Melpa

M-x package-install RET smart-mode-line-powerline-theme

Se você deseja instalá-lo manualmente, está aqui , mas também precisará instalar o powerline.

Finalmente, você pode ativar o tema com M-x sml/apply-theme RET powerline. E sua linha de modo deve ficar assim.
Captura de tela do tema Powerline
Como você pode ver, a ordem dos elementos não é a mesma, mas a aparência geral está lá.

Para usar esse tema sempre, adicione o seguinte ao seu arquivo init. Você também pode personalizar qualquer uma das variáveis ​​de configuração da linha de alta tensão, e elas devem ter o mesmo efeito aqui.

;; These two lines are just examples
(setq powerline-arrow-shape 'curve)
(setq powerline-default-separator-dir '(right . left))
;; These two lines you really need.
(setq sml/theme 'powerline)
(sml/setup)
Malabarba
fonte
11
Eu também estava escrevendo sobre a linha de modo inteligente, mas você certamente explicou melhor. Obrigado.
Boccaperta-IT
3
Você também pode elaborar sobre as características de expressões regulares, onde um caminho pode ser representado por um conjunto menor de caracteres ... :ED:em vez de ~/.emacs.d/e rich-minoritypara esconder os isqueiros modo menor.
Kaushal Modi
11
@kaushalmodi elaborou um pouco.
Malabarba 26/09
46

Isso pode ser alcançado com um pacote chamado "powerline". Existem várias variantes disponíveis, incluindo pelo menos uma que você pode instalar package.el.

Pessoalmente, eu uso este . Aqui está uma captura de tela do README do pacote:

Um exemplo de linha de força.

Você pode configurar a cor definindo a face da linha de modo:

(set-face-attribute 'mode-line nil
                    :foreground "Black"
                    :background "DarkOrange"
                    :box nil)

Você também pode configurar formas diferentes, em vez de apenas triângulos:

(setq powerline-arrow-shape 'curve)

Emacs powerline com curvas em vez de flechas.

Tikhon Jelvis
fonte
2
FWIW - Se você tem um problema em deixar as cores dos separadores totalmente parecidas com as que eu encontrei, encontrei este garfo de linha elétrica onde você pode, o (setq powerline-default-separator 'utf-8)que permite que você use qualquer uma das fontes corrigidas aqui .
waymondo
@thepalmcivet: bom saber, mas não sei o que você quer dizer com deixar as cores perfeitas. Você tem uma captura de tela do problema ou algo assim? Obrigado!
Tikhon Jelvis 28/09
2
Não há problema, aqui está o que eu recebo com (setq powerline-default-separator 'arrow). Estou instalando o Carbon Emacs com o Homebrew com a --srgbbandeira e (setq ns-use-srgb-colorspace t)no meu .emacs.d.
waymondo
Tikhon, essa é uma linha de modo adorável que você tem lá. Você poderia postar a seção completa de modo de linha de modo, que você capturou parcialmente? Obrigado :-)
Ivan Vučica
2
@ IvanVučica: Obrigado! Está no GitHub, em duas partes: um powerline.el modificado que contém várias formas para escolher ( curveé bom, mas eu uso diagonalagora) e meu próprio .emacs , que possui algumas configurações variadas que eu tenho em algum lugar. Se você é tão disposto, pode fazer sua própria cópia powerline.ele adicionar suas próprias formas separadoras através da arte ASCII para obter o efeito exato de que você precisa :).
Tikhon Jelvis
12

Como outras pessoas mencionaram, powerline é o pacote que formata a modelagem dessa maneira. Porém, a maioria dos temas do emacs não define cores para o powerline (o que não é ótimo). Um tema que faz é o colorido (e abrangente) tema moe . Ele ainda tem um modo que muda de cor à noite para ser mais fácil para os olhos. Se parece com isso:

tema moe no glorioso modo magenta, com a modelagem powerline

Minhas flechas na linha de força parecem estranhas porque estou usando uma versão sem patch da fonte Luxi Mono.

William Roe
fonte
1

Minhas flechas na linha de força parecem estranhas porque estou usando uma versão sem patch da fonte Luxi Mono.

William Roe , a julgar pela captura de tela, você está no macOS. Conforme declarado neste comentário , você precisará adicionar

(setq powerline-image-apple-rgb t)

para o seu arquivo init. Isso deve corrigir o problema de coloração com os separadores ("setas"). Trabalhou para mim pelo menos.


fonte