magit-statusでセクションを展開するときに上にスクロールする方法は?


8

ではmagit-status、バッファ、押すTAB表示または非表示にunstagedコンテンツを見たときに便利です与えられたセクションを、そして兄貴が上演することができます参照してください。

ただし、セクションをタブで移動すると、バッファーが下がるため、拡張しようとしているセクションがバッファーの下部に移動し、セクションの拡張された部分が非表示になります。次にrecenter-top-bottom、セクションをバッファの上部に戻すために、を使用して循環する必要があります。

セクション/エントリを展開するときに自動的にバッファの最上部に移動する方法はありますか?

回答:


5

Emacs v24.3.xを使用している場合は、Emacs v24.3.xを .emacs

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

Emacs v24.4.xを使用している場合、アドバイスを使用して私が思いついたのは次のとおりです。ただし、完璧ではないと確信しています。

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

これadvice-addはEmacs v24.3.1では無効です。これは、Emacs v24.4で導入された新しいアドバイス機能です
CodyChan

@CodyChanそうdefadviceです。古いバージョンでは、使用する必要があります。
セバスチャンルカロンネック2014年

ありがとうございました。Emacs 24.4のソリューションは私にとって完璧に機能しました。私が持っているパッケージのいずれかがMagitと競合していると思って、私は怒っています。
zeroDivisible

4

nextすでにサポートされているブランチ。(ここで他の答えを出さないようにすべきではありませんmaster。同じ効果をで得る方法を説明しています)。


私はあなたの質問を読み間違えました。セクション間を移動するときにも同様の機能が存在しますが、実際に質問した場合にはありませんでした。しかし、今私はセクションを切り替えるためにもそれを実装しているので、この答えは今正解です:-)
tarsius 14

すごい、私はnextブランチにスピンを与えます。
セバスチャンルカロンネック2014

ではないこと、それはデフォルトだけ兄貴のためにこれを実行していること、置き換えるmagit-hunk-set-window-startmagit-section-set-window-startmagit-section-movement-hookmagit-section-show-hookあなたはすべてのセクションのために、この動作をしたいと思います。今はそうすることを考えているので、magit-section-show-hookおそらく問題を引き起こすでしょう。
tarsius 2014

これは私ほど簡単ではないことがわかりました。今のところ、この変更を元に戻す必要がありました。
tarsius 2014年

0

これらは、今日テストされたmagitMelpa(masterブランチから)の最新バージョンで動作します。

Magitステータスウィンドウで、

  • C-u j u-u nstagedセクションにジャンプして展開し、それをバッファーの上部に移動します
  • C-u j s- タグ付いたセクションにジャンプして展開し、それをバッファーの上部に移動します

同様のアクションが他のC-u j ..バインディングにmagit-section-jump-mapも適用されます。

からmagit.elマスターブランチ

(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 j uて、ステージされていないセクションのハンクを確認するには、Magitステータスバッファーで行います。

magitマスターブランチコードに適用されます。次のブランチを試していません。

これらのバインディングを使用したワークフローの例

  1. M-x magit-status
  2. 使用するファイルをステージングする s
  3. ハンク差分を示すステージングファイルを展開し、ステージングセクションの上部をバッファの上部に配置します。 C-u j s
  4. Commit c c、COMMITバッファを分割ウィンドウで開きます
  5. 別のウィンドウで段階的な差分を確認しながらログを書き込みます。diffがウィンドウの高さを超える場合、「他のウィンドウのスクロールコマンド」を使用します
  6. コミットを終了しC-c C-cます。

これらは確かに便利なショートカットですが、これは私が求めていたものとは異なります。現在のファイル、ハンク、またはセクションを展開すると、一番上までスクロールして、現在の変更のほとんどの差分を確認できます。
セバスチャンルカロンネック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.