Eclipse formatter'ın tüm numaralandırmaları tek bir satıra yerleştirmesini nasıl engelleyebilirim?


106

Benim gibi numaralandırmalarım var:

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

Dosyayı biçimlendirirken çıktı şu hale gelir:

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

1
Harici formatlayıcıda (org.eclipse.jdt.core.formatter ......) her bir enum değişkenini ayrı bir satırda zorlamak için herhangi bir değişken var mı?
Paramesh Korrakuti

Yanıtlar:


198

@Wjans tarafından verilen yanıt, normal numaralandırmalar için iyi çalıştı, ancak bağımsız değişkenler içeren numaralandırmalar için değil. Cevabını biraz genişletmek gerekirse, Eclipse Juno'da benim için en mantıklı biçimlendirmeyi sağlayan ayarlar:

  1. Window> Preferences> Java> Code Style>Formatter
  2. Tıklayın Edit
  3. Line WrappingSekmeyi seçin
  4. enumBildirim ağaç modunu seçin
  5. Set Line wrapping policyiçin Wrap all elements, every element on a new line (...)şimdi 3 parantez içinde 3 diyor böylece.
  6. İşaretini kaldırın, Force split, even if line shorter than maximum line width (...)böylece parantez içinde 3'ün 3'ü görünecektir.
  7. ConstantsTreenode'u seçin
  8. Kontrol Force split, even if line shorter than maximum line width

Bu, numaralandırma treenode için 3 alt düğümü aynı sarma politikasına ve aynı kuvvet bölme politikasına ayarlar. Constants ağaç düğümü ayarlar, böylece bağımsız değişkenlere sahip numaralandırmalarınız her biri kendi satırında biçimlendirilir. Bağımsız değişkenler yalnızca maksimum satır genişliğini aşarlarsa kaydırılır.

Örnekler:

@kafadergisi

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

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

Yukarıda açıklanan çözüm:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

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

1
Tutulma önizleyicide benim için hala yanlış görünüyor ama gerçek kaynakta denediğimde bir cazibe gibi çalıştı. Teşekkürler.
Ben Thurley

50

Bunu formatlayıcı tercihlerinizde belirtebilirsiniz:

  • Tercihler: Java - Kod Stili - Biçimlendirici
  • Düzenle'yi tıklayın
  • 'Satır Kaydırma' sekmesini seçin
  • Soldaki kutuda 'enum' bildirimi -> Sabitler'i seçin
  • Satır kaydırma politikasını 'Tüm öğeleri, her öğeyi yeni bir satıra kaydır' olarak ayarlayın
  • 'Kuvvet bölme ...' seçeneğini işaretleyin.

Bu problemi aylardır yaşadım. Denemediğim şey "zorla bölme" idi. "Tüm öğeleri sarma" nın aslında tüm öğeleri saracağını düşündüğünüz için neden gerekli olduğundan emin değilim! Çözüm için teşekkürler.
LegendLength

11

Bu da biraz çirkin, ancak şirket politikanız biçimlendiriciyi değiştirmenizi engelliyorsa, kaydırılmasını istemediğiniz satırların sonuna yorum ekleyebilirsiniz.

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

5

Hoş değil ama bazı kod bölümleri için Eclipse formatlayıcıyı kapatabilirsiniz ...

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

seçenek Windows-> Tercihler-> Java-> Kod Stili-> Biçimlendirici-> Düzenle-> Kapalı / Açık Etiketler panelindedir


1
Bu işe yarıyor ... bir nevi. Derleyici artık bir hata olduğunu düşünüyor. Onları yorumlara koymak, // @formatter: off
Bob Kuhar

4

"Sabitler" için enum bildirimi altında satır kaydırma politikasını ayarlamanız gerekir.

Sarmalama politikasını şu şekilde ayarlayın:

  • Tüm öğeleri, her öğeyi yeni bir çizgiye sarın

VE

  • "Satır ,,,,, satırından daha kısa olsa bile Bölmeye Zorla yazan kutuyu işaretleyin.

0

En son Eclipse 2018.9'u ekliyoruz

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. Line WrappingAğaç düğümünü genişletin .
  3. Genişlet Wrapping settings
  4. Genişlet 'enum' declaration
  5. Düzenle Constantsve Constant arguments.

Sabitlerin olması gerekir Wrap all elements, every element on a new line. Sabit argümanların olması gerekir Wrap where necessary.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.