Aptana Journal #3: Bug Tanda Koma


Pada saat sedang mengotak-atik Aptana Studio, secara tidak sengaja saya menemukan sebuah bug yang berhubungan dengan dokumentasi ScriptDoc XML dan penggunaan tanda koma dalam deskripsi dokumentasi tersebut.   Bila deskripsi mengandung tanda koma, maka ‘huruf tebal‘ di context info yang muncul tidak akan mengikuti posisi parameter yang sedang di-isi, seperti yang terlihat pada gambar berikut ini:

Formatting di Context Info Tidak Menyesuaikan Dengan Posisi Kursor

Formatting di Context Info Tidak Menyesuaikan Dengan Posisi Kursor

Hal ini hanya terjadi bila deskripsi yang ditampilkan mengandung tanda koma, misalnya pada gambar di atas, adalah: “A DOM Element, Document, or jQuery to use as context”.   Bila tanda koma dihilangkan, maka semuanya berjalan dengan lancar.  Mengapa bisa demikian?

Untuk menjawab pertanyaan ini, saya membuka file com.aptana.editor.js/src/com/aptana/editor/js/contentassist/JSContextInformationValidator.java dan mempelajari method updatePresentation(). Sepertinya ini adalah method yang menentukan bagian apa saja yang akan di-beri ‘huruf tebal‘ dengan memakai TextPresentation.

Berikut ini adalah potongan kode program yang saya duga menjadi sumber kesalahan:

startingPosition = endingPosition;
endingPosition = info.indexOf(',', startingPosition + 1);

if (endingPosition == -1)
{
    endingPosition = info.indexOf(')', startingPosition);
}

if (endingPosition == -1)
{
    break;
}

Salah satu dari penggalan kode program di atas akan mencari tanda koma di deskripsi mulai dari startingPosition+1.  Asumsinya adalah setelah tanda kurung tutup tidak ada lagi tanda koma!  Padahal, tanda koma bisa saja muncul setelah tanda kurung tutup, misalnya pada bagian deskripsi.

Untuk memperbaiki kesalahan, saya mengubah kode program tersebut menjadi seperti berikut ini:

startingPosition = endingPosition;
endingPosition = info.indexOf(',', startingPosition + 1);				
int posisiKurungTutup = info.indexOf(')', startingPosition);

if (endingPosition == -1 || endingPosition > posisiKurungTutup)
{
    endingPosition = posisiKurungTutup;
}

if (endingPosition == -1)
{
    break;
}

Sekarang, pada saat content assist muncul, posisi tulisan yang diberi ‘huruf tebal‘ akan benar sesuai dengan posisi kursor, seperti yang terlihat pada gambar berikut ini:

Hasil Perbaikan Bug

Hasil Perbaikan Bug

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: