Memindahkan dan menghilangkan baris kode; masalah dengan Editor XML Eclipse

95

Terkadang kode saya bergerak sendiri atau menghilang begitu saja di editor XML Eclipse.

Astaga!

Saat saya menyorot kode yang terpengaruh, baris yang disorot mencoba untuk mengoreksi sendiri. Tetapi ketika saya menggulir atau menyeret mouse ke arah yang berlawanan, kode tersebut bergeser lagi. Intinya saya akan mengulangi, hilang, dan baris kode rusak yang ditampilkan dari file bebas kesalahan. File yang terpengaruh melakukan kompilasi dan jika saya menutup / membukanya kembali masalah ini akan hilang, untuk saat ini. Ada ide tentang apa yang terjadi?


Tambahan: Jeff Axelrod memberikan link ke laporan bug baru dengan Google.

Sam
sumber
Kedengarannya seperti masalah grafis bagi saya. Apa versi OS dan Eclipse Anda?
sd
Vista dan Eclipse 3.7.2 Saya melihat-lihat di situs bug Eclipse, tapi tidak berhasil. Mungkin saya melewatkan kata kunci deskriptif?
Sam
2
Saya mempunyai masalah yang sama. Win7 Pro 32-bit dan Eclipse 3.7.2 dengan android 17.0.0 ... Skenario yang sama seperti yang Anda jelaskan dalam jawaban Anda. Tidak dapat menemukan laporan bug juga.
Tepuk
Saya juga mengalami ini, itu membuat saya gila ... Dalam kasus saya, menggunakan Windows XP dengan eclipse indigo. Masalah yang terjadi selalu saya beralih dari tata letak grafis ke editor xml
mdelolmo
1
Laporan bug Android diajukan di sini .
Jeff Axelrod

Jawaban:

32

Bug ini (akhirnya) diperbaiki di ADT 21. Perbaikannya sekarang tersedia di ADT 21 Pratinjau 9, diposting beberapa menit yang lalu, di sini: https://android-review.googlesource.com/#/c/44936/1

Alasan Anda mendapatkan artefak visual yang aneh adalah bahwa jika file berisi akhir baris DOS yang rusak (beberapa carriage kembali tanpa baris baru untuk setiap carriage return), Eclipse menjadi sangat bingung. Itu masalah Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Ada dua bagian untuk memperbaikinya: (1) Pertama, ADT telah diperbaiki sehingga tidak lagi memasukkan urutan ini ke dalam dokumen. Ini memastikan bahwa Anda tidak mendapatkan dokumen baru yang memicu perilaku pengeditan aneh, tetapi tidak memperbaiki dokumen lama dengan akhiran baris ini secara retroaktif, jadi jika Anda membukanya, Anda masih mendapatkan perilaku pengeditan yang aneh.

(2) Kedua, ada pemeriksaan lint baru yang mencari ujung garis putus-putus pada dokumen. Ini berjalan secara bertahap, jadi jika Anda mengedit file XML yang mengalami masalah ini, ADT akan menambahkan penanda kesalahan untuk masalah ini - bersama dengan perbaikan cepat untuk melakukan operasi pada dokumen untuk memperbaikinya.

Singkatnya: Dapatkan ADT 21 Preview 9; jalankan Lint pada proyek Anda dan cari keluhan apa pun tentang file yang berisi akhiran baris yang terputus, dan jika ditemukan, terapkan perbaikan cepat. Mulai sekarang, pengeditan lebih lanjut dengan editor tata letak akan menjaga format file tetap konsisten.

FYI, perbaikan yang relevan ada di sini: https://android-review.googlesource.com/#/c/44936/

Petunjuk untuk memperbarui Alat SDK dan plugin Eclipse ADT dengan mudah ada di sini: http://tools.android.com/preview-channel

- Tor (dari tim alat Android)

Tor Norbye
sumber
Terima kasih telah meluangkan waktu untuk menanggapi secara langsung, sejauh ini berfungsi dengan baik! Bagi mereka yang tidak ingin mengunduh kode sumber dan membangun alat secara lokal, cukup ikuti dua langkah ini untuk menginstal versi yang sudah dibuat sebelumnya. (Baca Menginstal Plugin Eclipse jika Anda lupa cara melakukan langkah kedua.)
Sam
Bekerja dengan baik untuk saya. Saya di Eclipse Juno. Buka saja Bantuan> Instal perangkat lunak baru> Apa yang sudah diinstal? Lalu saya memilih semua perangkat Android dari Google, memilih Perbarui, dan sekarang hidup baik-baik saja.
rodrigo-silveira
32

Setelah beberapa pengujian, saya menemukan bahwa opsi "Secara otomatis memformat XML yang diedit oleh editor tata letak visual" (di Preferensi | Android | Editor) mungkin menjadi penyebabnya di sini.

Dengan pengujian saya, saya telah menemukan bahwa mengubah properti (seperti layout_gravity) saat dalam mode desain Tata Letak Grafis selalu mengacaukan tampilan visual file ketika saya kembali ke mode XML (teks) saat opsi ini AKTIF tetapi bahwa saya tidak punya masalah saat dimatikan.

Jika Anda ingin memformat XML setelah Anda kembali dari mode desain Tata Letak Grafis, cukup gunakan pintasan Ctrl+ Shift+ F. Selain itu, saya tidak melihat masalah apa pun dengan menggunakan opsi "Format saat Menyimpan"; bahkan saat saya menggunakannya dalam mode Tata Letak Grafis; jadi Anda bisa menggunakan Ctrl+ Ssebagai gantinya saat Anda masih dalam mode Tata Letak Grafis untuk menyimpan dan memformat XML Anda.

Saya telah mencoba opsi editor lain seperti "Tampilkan indikator rentang" atau "Gunakan karakter untuk menunjukkan perubahan dalam penggaris vertikal" tetapi saya tidak melihat perbedaan dalam perilaku dengan mengaktifkan atau menonaktifkan opsi ini.

Terakhir, untuk mengoreksi tampilan visual file saat rusak; Saya menemukan bahwa menggunakan pintasan: Ctrl+ A, Ctrl+ C, Ctrl+ Vsedikit lebih mudah daripada menutup / membuka kembali file. Ini sama dengan membuat Select All, Copy, Paste; secara efektif menyalin seluruh file XML ke dirinya sendiri.

SylvainL
sumber
4
Menggunakan ADT versi 20120624 ... dan Indigo Service Rilis 2 dan SDK Tools Rev 20, dan dengan "Format otomatis XML ..." tidak aktif, saya masih memiliki garis menghilang dan berubah menjadi baris lain.
Brian
1
Coba dengan Juno. Saat ini, saya tidak dapat mereproduksi bug ini lagi dengan Juno. Namun, ada juga bug lain dengan Juno. Misalnya, pada satu waktu dengan dua file XML dibuka, tombol hapus bekerja pada file yang salah: mencoba menghapus satu karakter di satu file berarti menghapus karakter di file lain. Namun, tombol Backspace OK. Saya juga harus mengubah konfigurasi eclipse.ini default karena dari waktu ke waktu, saya mendapatkan pesan error tentang kurangnya ruang heap saat mencoba menjalankan EXE di emulator. Apakah Anda memeriksa versi 32 bit dan 64 bit?
SylvainL
Saya yakin saya hanya menggunakan versi 32-bit.
Brian
Ini adalah jawaban terbaik sampai saat ini karena mengurangi seberapa sering kesalahan ini terjadi, tetapi tidak menghilangkannya sehingga pertanyaannya tetap terbuka.
Sam
1
Saya masih memiliki masalah ini kadang-kadang tetapi tidak dengan Editor Grafis: sebagai gantinya, ini dengan file AndroidManifest.xml; yang menggunakan editor lain. Ini dengan versi terbaru - Juno tetapi saya harus mengakui bahwa akhir-akhir ini, saya tidak punya banyak waktu untuk mengerjakan aplikasi Android saya jadi saya tidak bisa memastikannya.
SylvainL
12

Masih mengalami bug ini di Juno (Eclipse 4.2.0, ADT r20).

Perbaikan saya: Buka Jendela -> Preferensi -> Android -> Editor. Saya mencentang "Format XML menggunakan standar Android XML ..." dan "Gunakan setelan Eclipse untuk indentasi ...." . Ini memecahkan masalah saya.

Vaiden
sumber
1
Tidak. Hapus centang "Format XML menggunakan standar Android XML ...". Ini akan memperbaiki kesalahan XML yang aneh, tetapi Anda juga harus hidup dengan konvensi Eclipse.
tom_mai78101
Secara pribadi saya lebih suka konvensi Eclipse; yang Android tidak membedakan antara tanda kurung tutup tag terbuka ( >) dan tanda kurung tutup tag mandiri ( />) untuk menentukan apakah akan mendahului dengan spasi (opsi terbatas pada keduanya atau tidak keduanya). Sepertinya masalah sepele, tetapi untuk beberapa alasan saya merasa sangat menjengkelkan.
JAB
12

EDIT: berisi metode yang lebih cepat, jadi itu dibawa ke atas:

Ctrl+ F -> isi seperti itu:

  1. "Temukan"          "\ r \ r \ n"
  2. "Ganti"    "\ r \ n"
  3. Alihkan "Ekspresi reguler" ke AKTIF
  4. hit the "Ganti semua" tombol
  5. Ctrl+A
  6. hapus teks.
  7. berbahagia =)

Asli ada di sini: Tapi jangan sembunyikan masalah itu, jika Anda dapat memperbaikinya. Beberapa kali bahkan menutup file XML tidak membantu.

Untuk memperbaikinya mari kita lihat alasannya. Pertama-tama Nyalakan "Tampilkan Karakter Ruang Kosong" ( Jendela> Preferensi> Umum> Editor> Editor Teks> Tampilkan karakter spasi kosong )

Kemudian kembali ke file XML Anda.

masukkan deskripsi gambar di sini

Dalam gambar berskala Anda mungkin melihat perbedaan "\ n" -warna simbol;

lalu letakkan kursor ke simbol itu, yang lebih gelap.
masukkan deskripsi gambar di sini

lihat, dua baris dipilih 0o ... itu mungkin alasannya!

jadi hapus saja, dan tekan tombol "Enter" atau "Return" untuk menambahkan simbol "\ n". masukkan deskripsi gambar di sini
Semoga membantu Anda.


Anda juga dapat menemukan simbol garis akhir lainnya:
masukkan deskripsi gambar di sini


Hapus saja juga, dan XML Anda akan terlihat bagus!

PS maaf untuk hyperlink, saya pemula dan SO saya tidak dapat mengunggah gambar atau lebih dari 2 tautan. jadi harap Anda mengerti maksudnya tanpa gambar tambahan;)

PPS Thx untuk orang yang memilih, sekarang saya bisa memberikan ini dengan gambar.

Bagilah Leprechaun
sumber
Terima kasih banyak. Saya tidak bisa mendapatkan komentar pilihan teratas untuk berfungsi tetapi yang ini berfungsi dengan baik.
Kekosongan statis publik
4

Saya mengalami kesulitan yang sama dan akhirnya menemukan solusinya: Klik kanan di editor, pilih Source/Cleanup Document.

pcs
sumber
0

Saya memiliki masalah yang sama. Langkah-langkah berikut adalah solusinya. Tautan menyarankan ini berfungsi untuk orang lain.

  1. Pergi ke Preferensi -> tombol
  2. Lepaskan salin, tempel, dan potong (tekan "terapkan", lalu "ok")
  3. ulangi langkah 1
  4. Pulihkan perintah tidak terikat dari langkah 2 (Saya tidak memulihkan cut, tapi saya yakin Anda akan baik-baik saja)

Perhatikan ada 2 binding untuk masing-masing dari 3 perintah tersebut

  1. Lepaskan fungsi sekunder untuk salin dan tempel (biarkan ctl + c / ctl + v [salin / tempel] terikat)

Pada titik ini Anda seharusnya hanya memiliki 2 binding yang disetel untuk melakukan salin / tempel (yaitu, ctl + c / ctl + v)

  1. Tekan terapkan -> OK

Solusi ini ditemukan di sini .

Stephen
sumber
0

Saat bug ini muncul dengan versi baru ADT (yang wajib diperbaiki dan bug tidak sering muncul), gunakan saja alat Lint untuk memperbaikinya ..

Temukan di peringatan Lint dan klik ikon bola lampu kuning di pojok kanan atas daftar peringatan Lint tersebut ..

Semoga bisa membantu seseorang

Ewok
sumber