เปลี่ยน tabsize ใน git-gui


15

ฉันสงสัยว่ามันเป็นไปได้ที่จะเปลี่ยน tabsize ใน git-gui จาก 8 ตัวอักษรเป็น 4 สิ่งเดียวที่ฉันพบคือcore.whitespace = tabsize=4แต่สิ่งนั้นมีผลต่อ diff เท่านั้น

เหตุผลที่ฉันถามคือเพราะฉันเลิกใช้แท็บอย่างช้า ๆ และใช้การเว้นวรรค 4 แบบแทน อย่างไรก็ตามสิ่งนี้สามารถให้ผลลัพธ์ที่สับสนเมื่อดู diff ใน git-gui เนื่องจาก tabsize มีความยาว 8 ตัวอักษร

ฉันรู้ว่า:retabVim ง่าย ๆในการแก้ปัญหาของฉัน แต่บ่อยครั้งที่ฉันต้องทำงานกับไฟล์ขนาดใหญ่ที่มีประวัติระยะยาวซึ่งอาจมีการดัดแปลงในสาขาแยกต่างหาก ดังนั้นฉันไม่สามารถแปลงแท็บทั้งหมดได้ตลอดเวลา

คำตอบ:


5

ในฐานะของgit-gui-0.20และgit 2.4.0 ( commit ) มีพารามิเตอร์การกำหนดค่าที่ถูกเพิ่มเพื่อกำหนดค่า tabsize ที่แสดงใน git gui

เพิ่มสิ่งนี้ใน ~ / .gitconfig ของคุณ

[gui]
    tabsize = 4

หรือเปลี่ยนผ่านเมนูการตั้งค่าของ git-gui (แก้ไข -> ตัวเลือก ... )


ขอบคุณ ฉันอัปเดต Git ของฉัน (อยู่ที่ 1.8: -O) และฉันเห็นตัวเลือกนี้ ฉันยังคงต้องจัดการกับแท็บและช่องว่างหลาย ๆ ครั้งในตอนนี้ดังนั้นมันจึงยอดเยี่ยม
Htbaa

10

ฉันทำวิจัย

การกำหนดค่าcore.whitespaceไม่เกี่ยวข้องกับวิธีแสดงแท็บ มันจะใช้สำหรับ git ที่จะรับรู้ข้อผิดพลาดของช่องว่างที่เกี่ยวข้องกับแท็บ ตัวอย่างเช่น: เมื่อindent-with-non-tabเปิดใช้งานและcore.whitespaceตั้งค่าเป็นtabwidth=4และมีการเยื้องบรรทัดโดยใช้ช่องว่าง 4 ช่องขึ้นไป git จะรายงานข้อผิดพลาด

สำหรับ git นอกเหนือจากแท็บที่เกี่ยวข้องกับคุณสมบัติการตรวจจับข้อผิดพลาดของช่องว่างอักขระแท็บคืออักขระเหมือนอักขระอื่น ๆ มันจะถูกเปรียบเทียบและมันจะถูกเททิ้งไปยังเครื่องมือใดก็ตามที่ใช้แสดงตัวละคร ซึ่งหมายความว่าในการกำหนดค่าความกว้างแท็บที่แสดงคุณต้องกำหนดค่า "ส่วนหน้า" ของ git ในกรณีgit diffที่เป็น "น้อยกว่า" (เครื่องมือ unix "น้อยกว่า") ในกรณีgit guiที่จะเป็น git-gui เอง

การกำหนดค่าน้อยเป็นเรื่องง่าย คุณสามารถตั้งค่าการกำหนดค่า git core.pagerเพื่อตั้งค่าให้น้อยลงเพื่อแสดงแท็บโดยใช้ช่องว่าง 4 ตัว (น้อยกว่ามีพารามิเตอร์-xnในการตั้งค่าแบนด์วิดท์เป็นn )

การกำหนดค่า git-gui กลายเป็นเรื่องยากมาก Git-gui เขียนเป็น Tcl / Tk ฉันพบตัวเลือก Tcl / Tk เพื่อกำหนดความกว้างแท็บในวิดเจ็ตข้อความ ฉันยังพบบรรทัดgit-gui.shที่ดูเหมือนว่าวิดเจ็ตข้อความกำลังถูกกำหนดค่าเริ่มต้น

นี่คือบรรทัด 3346 ของไฟล์git-gui.shใน git รุ่น 1.7.5:

catch {$ui_diff configure -tabstyle wordprocessor}

ฉันเปลี่ยนสิ่งนั้นตามคู่มือ Tcl / Tk เป็น:

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

ดูเหมือนจะไม่มีผลอะไรเลย ฉันพยายามที่แตกต่างกันสำหรับค่า-tabsและพวกเขาก็มีบางส่วนผลกระทบต่อความกว้างของแท็บแสดงดังนั้นจึงน่าจะเป็นสายที่ถูกต้องในการปรับเปลี่ยน

น่าเสียดายที่ Tcl / Tk ดูเหมือนจะไม่มีความคิดของความกว้างแท็บในแง่ของตัวอักษรแทนความกว้างของแท็บจะต้องตั้งค่าเป็นพิกเซลหรือเซนติเมตร

โปรดทราบว่าฉันไม่มีประสบการณ์ใน Tcl / TK ใด ๆ ดังนั้นบางทีฉันแค่มองสิ่งที่ง่ายที่นี่

อย่างไรก็ตามตอนนี้คุณรู้แล้วว่าจะเริ่มขุดได้ที่ไหน อย่าลืมรายงานกลับมาที่นี่หากคุณมีวิธีแก้ปัญหาที่ใช้งานได้ โชคดี.


ขอบคุณสำหรับการวิจัย ฉันจะต้องจองเวลาสักพักเพื่อที่จะได้ลอง เงินรางวัลเป็นของคุณตามสมควร ฉันควรรายงานกลับมาที่นี่เมื่อไหร่และถ้าฉันรู้วิธีการทำ
Htbaa

@Htbaa: ฉันคิดว่าคุณต้องคลิกปุ่ม "รางวัลรางวัล" เพื่อมอบรางวัล การยอมรับคำตอบไม่ได้เป็นการมอบรางวัลให้
lesmana

ขอบคุณ ทำ! ฉันค่อนข้างมั่นใจว่าได้รับรางวัลไปแล้ว
Htbaa

5

ฉันทำวิจัยอย่างละเอียดโดยเลมาน่า

เส้น

catch {$ui_diff configure -tabstyle wordprocessor}`

Lesmana ที่กล่าวถึงควรถูกแทนที่ด้วยสิ่งต่อไปนี้

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

หลังจากทำสิ่งนี้สามารถปรับขนาดแท็บโดยใช้ตัวเลือก "tabsize" ในส่วน [gui] ของไฟล์กำหนดค่า git (aka gui.tabsize) ข่าวร้าย:

  1. แท็บบางแท็บหลังจากอักขระที่ไม่ใช่ช่องว่างล่าสุดเปลี่ยนเป็นช่องว่างแบบง่าย นี่ดูเหมือนข้อผิดพลาดใน tcl
  2. หนึ่งต้องรีสตาร์ท git-gui หลังจากเปลี่ยนขนาดตัวอักษรเพื่อรับแท็บที่ถูกต้อง ใครจะรู้วิธีการแก้ไข

ทดสอบกับ:

  • git-gui เวอร์ชั่น 0.13.0.8.g8f85
  • git เวอร์ชั่น 1.7.4.1
  • tcl รุ่น 8.4.16-2 (แพ็คเกจ Ubuntu 11.04 i386)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.