วิธีหยุดตัวจัดรูปแบบ Eclipse จากการวาง enums ทั้งหมดในบรรทัดเดียว


106

ฉันมี enums เช่น:

public static enum Command
{
login,
register,
logout,
newMessage
}

เมื่อฟอร์แมตไฟล์ผลลัพธ์จะกลายเป็น:

public static enum Command 
{
login, register, logout, newMessage
}

1
มีตัวแปรใดในฟอร์แมตเตอร์ภายนอก (org.eclipse.jdt.core.formatter ...... ) เพื่อบังคับใช้ตัวแปร enum แต่ละตัวในบรรทัดแยกกันหรือไม่
Paramesh Korrakuti

คำตอบ:


198

คำตอบโดย @wjans ทำงานได้ดีสำหรับ enums ปกติ แต่ไม่ใช่สำหรับ enums ที่มีข้อโต้แย้ง เพื่อขยายคำตอบของเขาเล็กน้อยนี่คือการตั้งค่าที่จัดรูปแบบที่เหมาะสมที่สุดสำหรับฉันใน Eclipse Juno:

  1. Window> Preferences> Java> Code Style>Formatter
  2. คลิก Edit
  3. เลือกLine Wrappingแท็บ
  4. เลือกenumtreenode การประกาศ
  5. ตั้งค่าLine wrapping policyการWrap all elements, every element on a new line (...)เพื่อให้ได้ในขณะนี้กล่าวว่า 3 ของ 3 ในวงเล็บ
  6. ยกเลิกการทำเครื่องหมายForce split, even if line shorter than maximum line width (...)ตอนนี้จึงบอกว่า 3 จาก 3 ในวงเล็บ
  7. เลือกConstantstreenode
  8. ตรวจสอบ Force split, even if line shorter than maximum line width

สิ่งนี้ตั้งค่าโหนดย่อย 3 โหนดสำหรับ enum treenode เป็นนโยบายการตัดเดียวกันและนโยบายการแยกบังคับเดียวกันยกเว้นConstantstreenode ดังนั้น enums ที่มีอาร์กิวเมนต์ของคุณจะถูกจัดรูปแบบในแต่ละบรรทัด อาร์กิวเมนต์จะตัดก็ต่อเมื่อเกินความกว้างของบรรทัดสูงสุด

ตัวอย่าง:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(
        0,
        255,
        0),
    RED(
        255,
        0,
        0)
}

โซลูชันที่อธิบายไว้ข้างต้น:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}

1
ยังคงดูผิดในตัวแสดงตัวอย่างคราสสำหรับฉัน แต่เมื่อฉันลองใช้กับแหล่งที่มาจริงมันก็ใช้งานได้เหมือนมีเสน่ห์ ขอบคุณ.
Ben Thurley

50

คุณสามารถระบุสิ่งนี้ในการตั้งค่าฟอร์แมตเตอร์ของคุณ:

  • ค่ากำหนด: Java - รูปแบบโค้ด - ฟอร์แมตเตอร์
  • คลิกแก้ไข
  • เลือกแท็บ 'Line Wrapping'
  • เลือกการประกาศ 'enum' -> ค่าคงที่ในช่องทางด้านซ้าย
  • ตั้งค่านโยบายการตัดบรรทัดเป็น "รวมองค์ประกอบทั้งหมดทุกองค์ประกอบในบรรทัดใหม่"
  • ตรวจสอบ "บังคับแยก ... "

ฉันมีปัญหานี้มาหลายเดือนแล้ว สิ่งที่ฉันไม่ได้ลองคือ "แรงแยก" ไม่แน่ใจว่าเหตุใดจึงควรจำเป็นเนื่องจากคุณคิดว่า "การรวมองค์ประกอบทั้งหมด" จะรวมองค์ประกอบทั้งหมดไว้ด้วยกัน! ขอบคุณสำหรับการแก้ปัญหา
LegendLength

11

มันน่าเกลียดเล็กน้อยเช่นกัน แต่หากนโยบาย บริษัท ของคุณป้องกันไม่ให้คุณเปลี่ยนฟอร์แมตเตอร์คุณก็สามารถใส่ความคิดเห็นไว้ที่ท้ายบรรทัดที่คุณไม่ต้องการถูกรวมเข้าด้วยกัน

public static enum Command 
{
    login,//
    register,//
    logout,//
    newMessage//
};

5

มันไม่ดี แต่คุณสามารถปิดตัวจัดรูปแบบ Eclipse สำหรับบางส่วนของโค้ด ...

// @formatter:off
public static enum Command {
    login,
    register,
    logout,
    newMessage
};
// @formatter:on

ตัวเลือกอยู่ในแผง Windows-> Preferences-> Java-> Code Style-> Formatter-> Edit-> Off / On Tags


1
มันได้ผล ... ตอนนี้คอมไพเลอร์คิดว่าเป็นข้อผิดพลาด การใส่ความคิดเห็นจะช่วยแก้ปัญหานี้ได้เช่น // @formatter: off
Bob Kuhar

4

คุณต้องตั้งค่านโยบายการตัดบรรทัดภายใต้การประกาศ enum สำหรับ "ค่าคงที่"

ตั้งค่านโยบายการห่อเป็น

  • รวมองค์ประกอบทั้งหมดทุกองค์ประกอบไว้ในบรรทัดใหม่

และ

  • ทำเครื่องหมายในช่องที่ระบุว่า "Force Split แม้ว่าบรรทัดจะสั้นกว่า ,,,,,

0

เพียงแค่เพิ่ม Eclipse ล่าสุด 2018.9

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. ขยายLine Wrappingโหนดต้นไม้
  3. ขยาย Wrapping settings
  4. ขยาย 'enum' declaration
  5. แก้ไขConstantsและConstant arguments.

Wrap all elements, every element on a new lineคงต้องมีการ Wrap where necessaryการขัดแย้งคงต้องมีการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.