P: Como evito que os org-mode
rostos dos links percam os ...
caracteres de exibição seletiva no final de um cabeçalho dobrado?
Este é um sinal visual que me deixa um pouco maluco. Quando, em org-mode
, um link é a última coisa em uma linha, a face do link passa para o ...
que indica que o cabeçalho está dobrado. Se houver, por exemplo, um espaço em branco após o link, não haverá sangramento.
A captura de tela que publiquei demonstra o problema. A linha três é a linha problemática sem caracteres entre o final do link e o final da linha, enquanto a linha quatro mostra um link, seguido por um espaço:
Primeiro de tudo, por que isso acontece? Segundo, e mais ao ponto, como faço para parar?
ATUALIZAÇÃO 1: De acordo com os comentários, postadas abaixo estão as capturas de tela do buffer com os cabeçalhos fechados e abertos. Abri o Emacs sem o arquivo init (ie emacs -Q
), require
d org-mode e abri este arquivo de exemplo. Então: não parece ser algo estranho na minha configuração.
Todos os cabeçalhos fechados:
Todos os cabeçalhos abertos:
O tema que eu estava usando acima é o inkpot, embora eu tenha o mesmo problema ao usar o tema solarizado e o tema padrão (como nas novas capturas de tela).
A versão do Emacs é 24.3.1. Eu obtenho os mesmos resultados ao usar a versão organizacional 7.9.3f (ou seja, aquela que acompanha a versão do Emacs), bem como a 8.3beta.
ATUALIZAÇÃO 2: veja um exemplo de trabalho mínimo em resposta a uma solicitação de comentário:
* here's a header with a [[~/somefile.txt][link at the end]]
- This one's a problem
- Interesting note:
+ put the cursor immediately *after* the *d* in "end" with the
header closed/folded
* the face no longer bleeds over into the dots
+ move the cursor anywhere else
* the face bleeds over into the dots again
* here's another [[~/someotherfile.txt][go at it]]
DEADLINE: <2014-10-26 Sun>
- This one's also a problem
* here's another header with a [[~/anotherfile.txt][link followed by a space]]
- No bleed-over onto the dots with this one
Respostas:
Isto parece um erro desencadeado por
org-mode
'sorg-activate-bracket-links
função.É assim que essa função se parece:
Ele procura por uma correspondência para um link entre colchetes (por exemplo
[[target][label]]
, esconde a[[target][
parte adicionandoip
às propriedades de texto, em seguida, linkifies olabel
adicionandovp
às propriedades de texto, e, finalmente, remove a fuga]]
através da adiçãoip
às propriedades de texto novamente.Tudo isso parece certo.
org-rear-nonsticky-at
deve cuidar do sangramento da propriedade.Esse comportamento é acionado por
(add-text-properties (match-end 3) (match-end 0) ip)
, que oculta o final]]
. Somente a'invisible 'org-link
propriedade aciona esse comportamento, as outras propriedades parecem inocentes.Você pode sobrescrever de
org-activate-bracket-links
forma queip
não seja mais definido ,'invisible
mas'display ""
que tenha o mesmo efeito:Claramente, este é um truque feio. Mas funciona para mim e pode funcionar para você. Eu ainda recomendo arquivar um relatório de bug.
fonte
[[~/somefile.txt][link label]]
comolink label
(onde itálico indica a face padrão do link), ele se tornalink label]]
(sem alterações na face). Vou registrar um relatório de bug.org-activate-bracket-links
é substituir'invisible non-nil
por'display ""
, portanto, ainda deve aplicar a face do link como antes. Ele certamente funciona para mim no Emacs 24,4, mas eu acho que a energia é mais bem gasto no relatório de erro, em vez de tentar fazer o meu trabalho corte ... :)