Làm thế nào để cuộn lên khi mở rộng một phần trong trạng thái magit?


8

Trong magit-statusbộ đệm, nhấn TABhiển thị hoặc ẩn một phần nhất định, rất tiện lợi khi xem nội dung không được sắp xếp và xem những gì có thể được dàn dựng.

Tuy nhiên, khi lập bảng trên một phần, bộ đệm sẽ bị hỏng, vì vậy phần tôi đang cố gắng mở rộng sẽ đi xuống dưới cùng của bộ đệm, do đó ẩn phần mở rộng của phần đó. Sau đó tôi phải quay vòng sử dụng recenter-top-bottomđể đưa phần đó trở lại đỉnh của bộ đệm.

Có cách nào để tự động đưa phần / mục lên trên cùng của bộ đệm khi mở rộng nó không?

Câu trả lời:


5

Nếu bạn đang sử dụng Emacs v24.3.x, hãy đặt anh ấy vào .emacs

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

Nếu bạn đang sử dụng Emacs v24.4.x, đây là những gì tôi đã đưa ra bằng cách sử dụng một lời khuyên - mặc dù tôi chắc chắn rằng nó không hoàn hảo:

(defun magit-toggle-scroll-to-top () (recenter-top-bottom 0))
(advice-add 'magit-toggle-section :after #'magit-toggle-scroll-to-top)

Khoảng advice-addtrống trong Emacs v24.3.1, đây là cơ sở tư vấn mới được giới thiệu trong Emacs v24.4
CodyChan

@CodyChan Đúng vậy: đối với các phiên bản cũ hơn, defadvicenên được sử dụng.
Sébastien Le Callonnec

Cảm ơn bạn. Giải pháp của bạn cho Emacs 24.4 hoạt động hoàn hảo với tôi. Tôi đã phát điên, nghĩ rằng bất kỳ gói nào tôi có đều mâu thuẫn với Magit.
zeroDivisible

4

Trên nextnhánh đã được hỗ trợ. (Không nên ngăn ai đưa ra câu trả lời khác ở đây, giải thích làm thế nào để có được hiệu ứng tương tự master).


Tôi đọc sai câu hỏi của bạn. Một tính năng tương tự tồn tại khi di chuyển giữa các phần, nhưng không có trong trường hợp bạn thực sự hỏi về. Nhưng bây giờ tôi cũng đã thực hiện điều đó cho các phần bật tắt, và vì vậy câu trả lời này là chính xác ngay bây giờ :-)
tarsius

Tuyệt vời, tôi sẽ cho nextchi nhánh một vòng quay.
Sébastien Le Callonnec

Không phải là mặc định có thể là chỉ thực hiện điều này cho hunks, thay thế magit-hunk-set-window-startvới magit-section-set-window-starttrong magit-section-movement-hookmagit-section-show-hooknếu bạn muốn hành vi này đối với tất cả các phần. Bây giờ tôi nghĩ rằng nó làm như vậy magit-section-show-hookcó thể sẽ dẫn đến vấn đề.
tarsius

Hóa ra điều này không dễ như tôi nghĩ và bây giờ tôi phải hoàn nguyên thay đổi này.
tarsius

0

Những hoạt động trên phiên bản mới nhất của magittừ Melpa (từ tổng thể chi nhánh) như thử nghiệm ngày hôm nay.

Khi ở trong cửa sổ Trạng thái Magit,

  • C-u j u- Chuyển đến phần u nstaged, mở rộng nó và đưa phần đó lên trên cùng của bộ đệm
  • C-u j s- Bước vào phần taged, mở rộng nó và mang lại đó vào đầu của bộ đệm

Hành động tương tự sẽ áp dụng cho các C-u j ..ràng buộc khác trong magit-section-jump-mapquá.

Từ magit.eltrong tổng thể chi nhánh :

(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'.")

Câu trả lời

Để trả lời ứng dụng cụ thể của bạn để xem xét các hunk trong phần chưa được phân loại, hãy thực hiện C-u j utrong bộ đệm Trạng thái Magit.

Áp dụng cho mã nhánh magit master; chưa thử chi nhánh tiếp theo.

Một quy trình làm việc ví dụ sử dụng các ràng buộc này

  1. M-x magit-status
  2. Giai đoạn các tập tin bạn muốn sử dụng s
  3. Mở rộng các tệp được phân đoạn hiển thị các khác biệt của hunk, đồng thời định vị đỉnh của phần được phân loại thành đỉnh của bộ đệm: C-u j s
  4. Cam kết c c, mở bộ đệm CAMIT trong một cửa sổ chia
  5. Viết nhật ký trong khi xem xét khác biệt dàn dựng trong cửa sổ khác. Nếu diff vượt quá chiều cao cửa sổ, tôi sử dụng 'cuộn các lệnh cửa sổ khác' .
  6. Kết thúc cam kết C-c C-c.

Mặc dù đây thực sự là những phím tắt hữu ích, nhưng đây không phải là chính xác những gì tôi đã theo đuổi: Tôi muốn tệp hiện tại hoặc hunk hoặc phần cuộn lên trên cùng khi tôi mở rộng nó để tôi có thể thấy hầu hết các khác biệt trong thay đổi hiện tại đó.
Sébastien Le Callonnec
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.