Magit: copia texto da seção Stage sem o caractere "+"

7

Windows 10, Emacs 25.1, Magit

Seleciono algum texto (Shift + Seta para baixo) na seção Alterações sem etapas . Aqui está uma captura de tela:

Selecionar texto

Depois colo em outro buffer ( *scratch*).

Este é o resultado:

Pasta de resultados

É possível retirar os +s principais ao matar linhas de pedaços diferentes?

Alex
fonte

Respostas:

8

O Magit não suporta isso atualmente, mas deve ser factível. Provavelmente farei isso em breve. Às vezes eu também poderia usar esse recurso.

Enquanto isso usar uma macro para substituir os +s depois de arrancar: <f3> C-d C-n <f4>....

tarso
fonte
11
Após puxar, faça o seguinte: 1) Coloque o cursor sobre o primeiro "+", 2) Comando Iniciar <C-return>( cua-set-rectangle-mark), 3) Selecione apenas "+" (uma coluna) e pressione Del para excluir todos os símbolos "+"
Alex
@ Alex Você não pode usar cua-rectangle-mark-modede dentro do buffer magit?
0x5453 11/11
Eu uso cua-rectangle-mark-modeem outro buffer (não magit) após puxar o texto.
Alex
Sem CUA, após puxão: C-a C-f C-x C-x C-x r d.
Alan Terceiro
4

Até que o Magit suporte algo assim, é fácil obter um comportamento personalizado com um comando. Eu tenho algo semelhante ao seguinte comando na minha configuração. Se você chamá-lo com um argumento de prefixo, ele removerá os principais marcadores diff.

(defun km/magit-copy-region-hunk (&optional no-column)
  (interactive "P")
  (when (magit-section-internal-region-p)
    (magit-section-when hunk
      (deactivate-mark)
      (let ((text (buffer-substring-no-properties
                   (region-beginning) (region-end))))
        (kill-new (if no-column
                      (replace-regexp-in-string "^[ \\+\\-]" "" text)
                    text))))))

Edit : Com a versão de desenvolvimento do Magit (que será a v2.91.0), você pode remover os marcadores diff, marcando uma região de um pedaço e chamando magit-copy-section-valuecom um argumento de prefixo.

Kyle Meyer
fonte
Não há documentos na sua configuração ?! Por vergonha. :) Funciona bem embora +1.
Basil
1

Seguindo a resposta de Kyle Meyer, se você deseja copiar o diff sem precisar pressionar a tecla de prefixo, pode usar o seguinte:

(defun copy-diff-region ()
  "Copy diff region without + or - markers."
  (interactive)
  (deactivate-mark)
  (let ((text (buffer-substring-no-properties
               (region-beginning) (region-end))))
    (kill-new (replace-regexp-in-string "^[\\+\\-]" "" text))))
nandkeypull
fonte