Existe uma maneira de fazer as tags funcionarem bem com quebra de linha no modo org do emacs?

9

Se o buffer for muito estreito, se eu criar uma tag para um cabeçalho, a quantidade de espaço em branco antes da tag fará com que a tag passe o final da linha para uma nova linha (eu visual-line-modeativei). Isso dificulta a leitura e a leitura das manchetes e desperdiça imóveis na tela vertical.

Eu acho que idealmente a tag sempre seria exibida como alinhada à direita, independentemente do número real de espaços. Existe uma maneira de fazer isso? Caso contrário, existe alguma outra maneira de evitar o espaço desperdiçado?

avv
fonte
2
Que tal um alinhamento correto ?: (setq org-tags-column 0) Consulte a sequência de documentos da referida variável: M-x describe-variable RET org-tags-column RET- " A coluna na qual as tags devem ser recuadas em um título. Se esse número for positivo, ele especificará a coluna. Se for negativo, será significa que as tags devem estar alinhadas com a coluna. Por exemplo, -80 funciona bem em uma tela normal de 80 caracteres. Quando 0, coloque as tags diretamente após o texto do título, com apenas um espaço no meio. "
lawlist
Obrigado! Estou usando o (setq org-tags-column 0)que é melhor que nada, mas ainda assim gostaria de ter uma solução alinhada à direita. Acabei de sinalizar para os mods moverem isso, obrigado pela sugestão!

Respostas:

3

Eu estive trabalhando em alguns elisp para resolver um problema semelhante a este.

(defun nanny/org-realign-tag-column ()
  (interactive)
  (if (and (equal major-mode 'org-mode)
           (org-get-buffer-tags))
      ;; ignore `message' with flet so org-set-tags doesn't yell at us.
      (flet ((message (&rest args) 'ignore))
        (let ((col (- (- (window-width) 3)))
              (already-modified? (buffer-modified-p)))
          (setq org-tags-column col)
          (org-set-tags 4 t)
          ;; `org-set-tags' modifies the buffer, but I don't really care, so
          ;; mark the buffer as unmodified if it was unmodified previously.
          (if (not already-modified?)
              (set-buffer-modified-p nil))))))
(add-hook 'window-configuration-change-hook 'nanny/org-realign-tag-column)

Isso deve realinhar a coluna de tags para que ele sempre tenha o tamanho perfeito.

No momento, ele não funciona corretamente se a largura da janela dividida horizontalmente não for igual.

babá
fonte
Tentei isso e parece que esse código garante que as tags estejam sempre alinhadas com o lado direito da janela, mas não toque nas tags nas linhas quebradas. Assumindo que não perdi algo, isso realmente não responde à pergunta, já que é sobre isso que o OP estava perguntando.
Scott Weldon