एक ही लाइन पर सभी एनम को रखने से ग्रहण फॉर्मेटर को कैसे रोकें


106

मेरे पास एनम हैं:

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

फ़ाइल स्वरूपण करते समय, आउटपुट बन जाता है:

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

1
क्या बाहरी एनटरेटर (org.eclipse.jdt.core.formatter ......) में कोई वैरिएबल है जो प्रत्येक एन्यूम वैरिएबल को एक अलग लाइन में लागू करता है?
परमीश कोर्रकुटी

जवाबों:


198

@Wans द्वारा दिए गए उत्तर ने सामान्य एनमों के लिए ठीक काम किया, लेकिन तर्कों के साथ एनमों के लिए नहीं। उनके उत्तर पर थोड़ा विस्तार करने के लिए, यहां उन सेटिंग्स को प्रस्तुत किया गया है जो ग्रहण जूनो में मेरे लिए सबसे समझदार प्रारूपण प्रदान करती हैं:

  1. Window> Preferences> Java> Code Style>Formatter
  2. क्लिक करें Edit
  3. Line Wrappingटैब का चयन करें
  4. enumघोषणा treenode का चयन करें
  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. Constantsट्रिनोड का चयन करें
  8. जाँच Force split, even if line shorter than maximum line width

यह एनम ट्रीनोड के लिए एक ही रैपिंग पॉलिसी के लिए 3 सबनॉड सेट करता है, और एक ही फोर्स स्प्लिट पॉलिसी को छोड़कर Constants ट्रिनोड के लिए है, इसलिए तर्कों के साथ आपके एनमों को प्रत्येक को अपनी लाइन पर स्वरूपित किया जाएगा। यदि वे अधिकतम पंक्ति चौड़ाई से अधिक होंगे तो तर्क केवल तभी लिपटेंगे।

उदाहरण:

@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
अभी भी मेरे लिए ग्रहण के पूर्वावलोकनकर्ता में गलत दिखता है लेकिन जब मैंने इसे वास्तविक स्रोत पर आज़माया तो यह एक आकर्षण की तरह काम करता था। धन्यवाद।
बेन थर्ले

50

आप इसे अपनी फ़ॉर्मेटर प्राथमिकताओं में निर्दिष्ट कर सकते हैं:

  • वरीयताएँ: जावा - कोड शैली - प्रारूप
  • संपादित करें पर क्लिक करें
  • 'लाइन रैपिंग' टैब चुनें
  • बाईं ओर स्थित बॉक्स में 'एनम' डिक्लेरेशन -> लगातार चुनें
  • लाइन रैपिंग पॉलिसी को 'सभी तत्वों को लपेटें, हर तत्व को एक नई लाइन पर सेट करें'
  • चेक करें 'फोर्स स्प्लिट ...'

मुझे महीनों से यह समस्या थी। मैंने जो कोशिश नहीं की वह थी "बल विभाजन"। सुनिश्चित नहीं हैं कि इसकी आवश्यकता क्यों होनी चाहिए क्योंकि आपको लगता है कि "सभी तत्वों को लपेटें" वास्तव में सभी तत्वों को लपेटेंगे! समाधान के लिए धन्यवाद।
लीजेंडलेंथ

11

यह थोड़ा बदसूरत भी है, लेकिन यदि आपकी कंपनी की नीति आपको फ़ॉर्मेटर बदलने से रोकती है, तो आप केवल उन पंक्तियों के अंत में टिप्पणियां डाल सकते हैं जिन्हें आप लपेटना नहीं चाहते हैं।

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

5

यह अच्छा नहीं है, लेकिन आप कोड के कुछ वर्गों के लिए ग्रहण फ़ॉर्मेटर को बंद कर सकते हैं ...

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

विकल्प विंडोज में है-> प्राथमिकताएं-> जावा-> कोड शैली-> प्रारूप-> संपादन-> बंद / पर टैग पैनल


1
यह काम करता है ... तरह का। संकलक अब अपनी एक त्रुटि सोचता है। उन्हें टिप्पणियों में डालने से यह समस्या खत्म हो जाती है जैसे कि @formatter: off
Bob Kuhar

4

आपको "कॉन्स्टेंट्स" के लिए enum घोषणा के तहत लाइन रैपिंग पॉलिसी सेट करने की आवश्यकता है।

रैपिंग पॉलिसी को सेट करें

  • सभी तत्वों, हर तत्व को एक नई लाइन पर लपेटें

तथा

  • बॉक्स को चेक करें जो कहता है "फोर्स स्प्लिट, भले ही लाइन से कम,,,,,

0

बस नवीनतम ग्रहण 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.