Ubah tabsize di git-gui

15

Saya bertanya-tanya apakah mungkin untuk mengubah tabsize di git-gui dari 8 karakter menjadi 4. Satu-satunya hal yang saya temukan adalah core.whitespace = tabsize=4tetapi itu hanya mempengaruhi diff.

Alasan mengapa saya bertanya adalah karena saya secara bertahap menghapus penggunaan tab dan sebagai gantinya menggunakan lekukan 4-ruang. Namun ini dapat memberikan hasil yang membingungkan ketika menonton diff di git-gui, karena ukurannya sekitar 8 karakter.

Saya tahu sederhana :retabdi Vim memecahkan masalah saya, tetapi cukup sering saya harus bekerja pada file besar dengan sejarah jangka panjang yang mungkin memiliki modifikasi di cabang yang terpisah. Jadi saya tidak bisa selalu mengonversi semua tab dengan mudah.

Htbaa
sumber

Jawaban:

5

Pada git-gui-0.20 dan git 2.4.0 ( komit ) ada parameter konfigurasi yang telah ditambahkan untuk mengkonfigurasi tabsize yang ditampilkan di git gui.

Tambahkan ini ke ~ / .gitconfig Anda

[gui]
    tabsize = 4

atau ubah melalui menu konfigurasi git-gui (Edit -> Options ...)

Patrick B.
sumber
Terima kasih. Saya memperbarui Git saya (berada di 1,8: -O) dan saya melihat opsi ini. Saya masih harus berurusan dengan campuran tab dan spasi setiap sekarang dan kemudian jadi ini bagus.
Htbaa
10

Saya melakukan riset.

Konfigurasi core.whitespacetidak ada hubungannya dengan bagaimana tab ditampilkan. Ini hanya digunakan untuk git untuk mengenali kesalahan spasi spasi terkait tab. Sebagai contoh: ketika indent-with-non-tabdiaktifkan, dan core.whitespacediatur ke tabwidth=4, dan sebuah baris diindentasikan menggunakan 4 spasi atau lebih, maka git akan melaporkan kesalahan.

Untuk git, terlepas dari fitur pendeteksian kesalahan spasi terkait tab, karakter tab adalah karakter seperti karakter lainnya. Itu akan dibandingkan dan akan dibuang ke alat apa pun yang digunakan untuk menampilkan karakter. Itu berarti, untuk mengkonfigurasi lebar tab yang ditampilkan, Anda harus mengkonfigurasi "ujung depan" dari git. Dalam hal git diffitu akan menjadi "kurang" (alat unix "kurang"). Dalam hal git guiitu adalah git-gui itu sendiri.

Mengkonfigurasi lebih sedikit itu mudah. Anda dapat mengatur konfigurasi git core.pageruntuk mengatur kurang untuk menampilkan tab menggunakan 4 spasi (kurang memiliki parameter -xnuntuk mengatur bandwidth ke n).

Mengkonfigurasi git-gui ternyata jauh lebih sulit. Git-gui ditulis dalam Tcl / Tk. Saya menemukan opsi Tcl / Tk untuk mengkonfigurasi lebar tab di widget teks. Saya juga menemukan baris di git-gui.shmana sepertinya widget teks sedang diinisialisasi.

Ini adalah baris 3346 file git-gui.shdi git versi 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

Saya mengubahnya, menurut manual Tcl / Tk, untuk:

catch {$ui_diff configure -tabs "[expr {4 * [font measure $font 0]}]" -tabstyle wordprocessor}

Itu tampaknya tidak berpengaruh. Saya mencoba nilai yang berbeda untuk -tabsdan mereka memang memiliki beberapa efek pada lebar tab yang ditampilkan, sehingga tampaknya menjadi garis yang benar untuk dimodifikasi.

Sayangnya, Tcl / Tk tampaknya tidak memiliki gagasan tentang lebar tab dalam hal karakter, sebaliknya, lebar tab harus diatur dalam piksel atau sentimeter.

Perhatikan bahwa saya tidak memiliki pengalaman dalam Tcl / TK sama sekali, jadi mungkin saya hanya melihat sesuatu yang sederhana di sini.

Bagaimanapun, sekarang Anda tahu di mana harus mulai menggali. Ingatlah untuk melaporkan kembali ke sini jika Anda memiliki solusi yang berfungsi. Semoga berhasil.

lesmana
sumber
Terima kasih atas penelitiannya. Saya harus menyediakan waktu untuk mencobanya. Karunia itu adalah milik Anda sebagaimana layaknya. Kapan dan jika saya mencari cara untuk melakukannya saya pasti akan melaporkan kembali ke sini.
Htbaa
@ Htbaa: Saya pikir Anda harus mengklik tombol "hadiah karunia" untuk memberi hadiah. Menerima jawaban tidak memberi hadiah.
lesmana
Terima kasih. Selesai! Saya cukup yakin bahwa hadiah itu diberikan.
Htbaa
5

Saya menguraikan penelitian yang dibuat oleh lesmana .

Garis

catch {$ui_diff configure -tabstyle wordprocessor}`

disebutkan oleh lesmana harus diganti dengan yang berikut:

catch {$ui_diff configure -tabs "[expr {[get_config gui.tabsize] * [font measure font_diff 0]}] left" -tabstyle wordprocessor}

Setelah melakukan ini, seseorang dapat mengatur ukuran tab menggunakan opsi "tabsize" di bagian [gui] file konfigurasi git (alias gui.tabsize). Kabar buruk:

  1. Beberapa tab setelah karakter non-spasi putih terakhir berubah menjadi ruang sederhana. Ini terlihat seperti bug di tcl.
  2. Kita harus me-restart git-gui setelah mengubah ukuran font untuk mendapatkan tab yang benar. Siapa yang tahu bagaimana mengatasinya?

Diuji dengan:

  • git-gui versi 0.13.0.8.g8f85
  • git versi 1.7.4.1
  • tcl versi 8.4.16-2 (paket Ubuntu 11.04 i386)
iFred
sumber