in

Android Studio’da Language Injection

Language Injection, Android Studio/IntelliJ’in güçlü, değeri bilinmeyen bir özelliğidir.

Android Studio, muhtemelen asla keşfedemeyeceğim çok sayıda özelliğe sahip güçlü bir IDE’dir. Ancak, IDE’nin hayalini kurduğum bir özelliğini keşfettiğimde, bu konuda mantıksız bir şekilde heyecanlanıyorum (ve çoğu zaman bunun gibi bir blog yazısı yazıyorum). Son zamanlarda ilgimi çeken bir özellik de “ Dil Enjeksiyonu ” özelliği.

 

Dil Enjeksiyonu nedir? 

Dil enjeksiyonu, aynı dosyada farklı dillerle çalışmanıza olanak tanır, örneğin bir Kotlin dizesi değişmezinde saklanan SQL ifadelerine sahip olmak. Dil ekleme, sözdizimi vurgulama ve bu snippet’in düzenlenmesini iyileştirir.

AndroidX Room kitaplığını hiç kullandınız ve SQL sözdizimi vurgulamayı nasıl başardığını merak ettiniz mi? Dize değişmezlerinin sözdiziminin vurgulandığından ve hatta yazarken doğrulandığından emin olmak için Dil Enjeksiyonu kullanıyor.

Hangi tabloların mevcut olduğuna dair tahminler veren Room örneği

Bir Oda @Query alanına yazdığınızda, doğru SQL için doğrulama yapar ve uygulamanızda tanımladığınız tablo adları / sütun adları için önerilerde bulunur.

Diğer senaryolarda nasıl kullanırım?

SQL’i depolayan ancak herhangi bir sözdizimi vurgusu göstermeyen bir dize örneği:

const val extractedSQL = "Select * From downloaded_font_family"

 Ama bu hiç eğlenceli değil! vurgulamak istiyoruz. Language Injection’ı kullanmak, bir Dize’ye veya ile açıklama eklemek kadar basit olabilir  . Bunun String değişmezinin üzerine yerleştirilmesi gerekiyor ve sihirli bir şekilde güzel bir şekilde vurgulanmış bir String’e dönüşecek. @Language("sql")// language=sql

//language=sql
const val extractedSQL = "Select * From downloaded_font_family"

Sözdizimi vurgulama, Language Injection ile ilgili tek ilginç kısım değil, hayatınızı biraz daha kolaylaştırmak için snippet’i ayrı bir düzenleyicide bile düzenleyebilirsiniz. Sadece çizgi için bağlam eylemlerini açın (sarı ampul simgesi) ve ardından “Düzenle … Parçala” yı tıklayın.

Bağlam eylemleri

Bu, yazabileceğiniz ayrı bir düzenleyici açacak ve uzun Dizeleri düzenlemeyi biraz daha kolaylaştıracaktır. 

String değişmezi için ayrı düzenleyici

Dil Enjeksiyonlarını nerede yararlı buldum?

Over uygulamasında çok sayıda OpenGL kullanıyoruz ve bazen bir Kotlin dosyası içinde yaşayan GLSL kodumuz var. Bu snippet’lerde doğru sözdizimi vurgulamadan biraz hayal kırıklığına uğradım. İsteğe bağlı olarak yüklediğimiz ayrı GLSL dosyaları oluşturmak zorunda kalma yoluna gitmek istemedim, çünkü bu, bir Android Contextnesnesini her yere iletmemizi gerektirebilir (ayrıca dosya okumanın ek yükü). 

Dizelerde GLSL sözdizimi vurgulamayı etkinleştirme

IDE’de GLSL kod parçacıklarının düzgün sözdizimi vurgulamasına sahip olması için Android Studio’da GLSL Destek Eklentisini kurdum .

O zaman tek yapmanız gereken, // language=glslveya öğesini String değişmezinin üzerindeki satıra yerleştirmek ve düzenleme işleviyle satır içi vurgulayan güzel sözdizimine sahip olacaksınız.@Language("glsl")

Custom Class Syntax Highlighting

Room’un yaptığı gibi bir şey yapmak isteseydiniz, @Queryalana biri yazarsa hemen sözdizimi vurgulamaya başlarsa? 

Örneğimizde, özel bir Glslaçıklama oluşturabilir ve ardından bu açıklama ile kodu otomatik olarak vurgulamak için yeni bir Dil Ekleme kuralı oluşturabiliriz:

Daha sonra codeSnippetyeni tanımlanan Glslaçıklama ile Dize’ye açıklama ekleriz. Ardından Editor Preferences -> Language Injections içinde +’yı tıklayın ve Generic Kotlin’i seçin :

Bu açıklamayı arayan ve bir parametreye açıklama eklendiğinde GLSL vurgulaması uygulayan yeni bir kural oluşturabiliriz: 

Bu noktadan sonra, muhtemelen şu anda yalnızca IDE’nizde olacağından, takım arkadaşlarınızın da bu kuralı onlar için kurmasını istersiniz. Yani Dil Denetimi ayarlarının alt kısmında kuralı “ IDE kapsamı ” yerine “ Proje kapsamı ” na taşıyabilirsiniz :

Bunu yaptıktan sonra, yeni oluşturduğunuz kuralı içerdiğinden, sürüm kontrolünü kontrol etmek isteyeceksiniz  . .idea/IntelliLang.xml

Ayrıca, bir sınıftaki bir String parametresindeki ek açıklamayı da kullanabileceğinizi ve bu örnekte aynı sonucun üretileceğini, ancak özel son ekler eklemek isterseniz özel bir açıklama size biraz daha fazla güç sağlayacağını ve önekler. @Language("glsl")

Nihayet

Language Injection, Android Studio/IntelliJ’in güçlü, değeri bilinmeyen bir özelliğidir.

Comments

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

GIPHY App Key not set. Please check settings

Yükleniyor…

0

Ne düşünüyorsun?

Games

Pahalı Oyunları Bedavaya Almak

SimpleDateFormat, DateFormat java sınıfını genişleten bir java sınıfıdır. Yerelleştirme duyarlı bir biçimde normalleştirme, biçimlendirme ve ayrıştırma tarihi için kullanılır.

Uygulamanızı R8 ile küçültme