Bagaimana cara menggulir ke atas saat membuka bagian dalam status magit?

8

Dalam magit-statusbuffer, menekan TABmenunjukkan atau menyembunyikan bagian tertentu, yang berguna ketika melihat konten yang tidak dipentaskan dan melihat apa yang bisa dipentaskan.

Namun, ketika menabrak bagian, buffer turun, jadi bagian yang saya coba untuk ekspansi pergi ke bagian bawah buffer, sehingga menyembunyikan bagian yang diperluas dari bagian tersebut. Saya kemudian harus menggunakan siklus recenter-top-bottomuntuk membawa bagian kembali ke atas buffer.

Apakah ada cara untuk secara otomatis membawa bagian / entri ke bagian atas buffer ketika memperluasnya?

Sébastien Le Callonnec
sumber

Jawaban:

5

Jika Anda menggunakan Emacs v24.3.x, masukkan di .emacs

(defadvice magit-toggle-section (after magit-section-hidden activate)
  (recenter-top-bottom 0))

Jika Anda menggunakan Emacs v24.4.x, berikut adalah saran saya - meskipun saya yakin itu tidak sempurna:

(defun magit-toggle-scroll-to-top () (recenter-top-bottom 0))
(advice-add 'magit-toggle-section :after #'magit-toggle-scroll-to-top)
Sébastien Le Callonnec
sumber
Tidak advice-addberlaku di Emacs v24.3.1, itu adalah fasilitas saran baru yang diperkenalkan di Emacs v24.4
CodyChan
@CodyChan Itu benar: untuk versi yang lebih lama, defadviceharus digunakan.
Sébastien Le Callonnec
Terima kasih. Solusi Anda untuk Emacs 24.4 bekerja dengan sempurna untuk saya. Saya sudah gila, berpikir bahwa salah satu paket yang saya miliki bertentangan dengan Magit.
zeroDivisible
4

Di nextcabang yang sudah didukung. (Yang seharusnya tidak membuat siapa pun memberikan jawaban lain di sini, menjelaskan cara mendapatkan efek yang sama dengan master).

tarsius
sumber
Saya salah membaca pertanyaan Anda. Fitur serupa ada ketika berpindah antar bagian, tetapi tidak jika Anda benar-benar bertanya. Tapi sekarang saya telah menerapkannya untuk beralih bagian juga, dan jadi jawaban ini benar sekarang :-)
tarsius
Luar biasa, saya akan memberikan nextcabang berputar.
Sébastien Le Callonnec
Bukan berarti tidak diubah hanya melakukan ini untuk bakhil, ganti magit-hunk-set-window-startdengan magit-section-set-window-startdi magit-section-movement-hookdan magit-section-show-hookjika Anda ingin perilaku ini untuk semua bagian. Sekarang saya berpikir untuk melakukannya magit-section-show-hookmungkin akan menimbulkan masalah.
tarsius
Ternyata ini tidak semudah yang saya pikirkan dan saya harus mengembalikan perubahan ini untuk saat ini.
tarsius
0

Ini bekerja pada versi terbaru magitdari Melpa (dari cabang utama ) seperti yang diuji hari ini.

Saat berada di jendela Status Magit,

  • C-u j u- Langsung ke u bagian nstaged, memperluas dan membawa yang ke puncak buffer
  • C-u j s- Langsung ke bagian yang ditandai, perluas dan bawa ke bagian atas buffer

Tindakan serupa akan berlaku untuk C-u j ..binding lainnya di magit-section-jump-mapjuga.

Dari magit.eldi cabang utama :

(defvar magit-section-jump-map
  (let ((map (make-sparse-keymap)))
    (define-key map (kbd "z") 'magit-jump-to-stashes)
    (define-key map (kbd "n") 'magit-jump-to-untracked)
    (define-key map (kbd "u") 'magit-jump-to-unstaged)
    (define-key map (kbd "s") 'magit-jump-to-staged)
    (define-key map (kbd "f") 'magit-jump-to-unpulled)
    (define-key map (kbd "p") 'magit-jump-to-unpushed)
    (define-key map (kbd "r") 'magit-jump-to-pending)
    map)
  "Submap for jumping to sections in `magit-status-mode'.")

Menjawab

Untuk menjawab aplikasi spesifik Anda untuk meninjau bakhil di bagian unstaged, lakukan C-u j udi buffer Status Magit.

Berlaku untuk kode cabang master magit; belum mencoba cabang berikutnya.

Contoh alur kerja menggunakan binding ini

  1. M-x magit-status
  2. Tahap file yang ingin Anda gunakan s
  3. Luaskan file yang dipentaskan yang memperlihatkan diff hunk, sambil juga memposisikan bagian atas stage yang dipentaskan ke atas buffer: C-u j s
  4. Komit c c, buka buffer COMMIT di jendela terpisah
  5. Tulis log sambil meninjau perbedaan stage di jendela lain. Jika beda melebihi tinggi jendela, saya menggunakan 'scroll other window commands' .
  6. Selesai komit C-c C-c.
Kaushal Modi
sumber
Walaupun ini memang jalan pintas yang berguna, ini bukan apa yang saya cari: Saya ingin file saat ini, atau bingkah, atau bagian untuk menggulir ke atas ketika saya memperluasnya sehingga saya dapat melihat sebagian besar perbedaan dalam perubahan saat ini.
Sébastien Le Callonnec