Halo, Habr! Kami baru-baru ini merilis MPS 2018.3 . Dalam versi ini ada banyak fitur baru yang bekerja pada proyek akan menjadi lebih efektif. Kami meningkatkan rencana pembuatan dan bahasa deskripsi editor, menambahkan konstruksi baru pada bahasa assembly dan pengemasan, memperbarui elemen antarmuka untuk navigasi yang nyaman dalam hierarki warisan, dan membuat banyak perubahan lain untuk pekerjaan produktif.

Bahasa dasar
Ikon untuk menavigasi konsep yang terlalu ditentukan / diterapkan
Ikon konsep yang didefinisikan ulang / diimplementasikan telah muncul di bidang konsep dan konsep antarmuka, yang menyederhanakan navigasi ke konsep anak.

Paket khusus untuk kelas BaseLanguage
Dalam versi MPS sebelumnya, paket Java dari kelas yang dihasilkan secara unik ditentukan oleh nama model di mana elemen sumber berada. Versi baru untuk BaseLanguage Classifiers menambahkan properti packageName, yang memungkinkan Anda untuk mengganti nama paket Java final. Properti packageName hanya masuk akal untuk pengklasifikasi BL tingkat atas, seperti halnya dengan pengklasifikasi Java.

Fitur Generator Baru untuk Ekstensi BaseLanguage
Untuk BaseLanguage, ekstensi sering dibuat. Namun, untuk beberapa ekstensi mungkin sulit untuk menulis generator yang cocok. Kami telah menambahkan beberapa konsep baru ke BaseLanguage untuk menyederhanakan proses penulisan generator untuk ekstensi.
Menghasilkan Ekspresi Nilai Lv
Ekspresi nilai adalah variabel di mana Anda dapat membaca atau menulis nilai. Dalam beberapa kasus, menghasilkan ekspresi Lvalue sulit karena mungkin tergantung pada konteks di mana ia digunakan. Konsep pembantu baru, generic lvalue-expression
akan menyederhanakan generator dan membuatnya independen terhadap konteks.

Konversi Lvalue Ekspresi ke Tautan
Beberapa ekspresi termasuk ekspresi Lvalue lain untuk operasi yang lebih kompleks dengan variabel (misalnya, ditambah penugasan atau kenaikan dan dapatkan ekspresi). Memperkenalkan konstruksi dengan semantik seperti itu sulit karena tidak mudah bagi mereka untuk menulis generator yang tepat.
Di versi baru, Anda bisa membungkus ekspresi @byRef
dengan @byRef
. Generator BaseLanguage mengubah ekspresi terbungkus menjadi ekspresi tipe Reference<T>
, yang menyediakan metode get dan set untuk variabel yang dibungkus.

Baca lebih lanjut tentang konsep baru dalam artikel ini .
Dukungan untuk metode standar
Di versi baru MPS, Anda bisa membuat metode default di antarmuka BaseLanguage. Kata kunci default diimplementasikan oleh konsep DefaultModifier, perpanjangan dari konsep Modifier. DefaultModifier terkandung dalam bahasa jetbrains.mps.baseLanguage.jdk8, jadi untuk membuat metode default di antarmuka, impor bahasa jdk8.

Generator
Bahasa generator (bahasa transformasi model)
Kami menghapus $ makro $ TERMASUK, mengganti penggunaannya dengan $ CALL $. Migrasi yang tepat akan membantu memperbarui proyek Anda. Makro $ TERMASUK $ tidak mendukung template dengan argumen, dan keberadaan dua fungsi makro yang sama mempersulit bahasa.
Makro $ WEAVE $ dan aturan tenun sekarang telah belajar memanggil pola dengan argumen. Selain itu, kami memperbaiki cacat yang tidak menyenangkan, meskipun tidak terlalu mencolok yang terjadi saat menggunakan templat yang dikompilasi dan ditafsirkan. "Pengantar" (menenun) dari template eksternal dari kode yang ditafsirkan selalu selalu mengarah pada interpretasi, tetapi sekarang template yang dikompilasi akan bekerja (tentu saja, asalkan penggunaan template yang dikompilasi termasuk dalam properti generator). Demikian pula, "menenun" template eksternal yang ditafsirkan dari yang dikompilasi bekerja.
QueriesGenerated, seperangkat kueri model yang dikompilasi untuk model dengan templat, selalu mengandalkan konvensi penamaan dan mesin refleksi Java untuk mengeksekusi kode. Anda bisa melihat ini di jejak tumpukan, ketika ada yang salah dalam permintaan model dari generator. Kami akhirnya menyingkirkan mekanisme ini.
Elemen UI / UX
Dukungan MacBook Touchbar
Pemilik macbook dengan touchbar sekarang dapat menggunakannya untuk bekerja di MPS: misalnya, menjalankan tindakan untuk meluncurkan, membangun dan men-debug aplikasi dari touchbar, serta dengan cepat memilih konfigurasi run / debug atau membuat yang baru. Kontrol panel sentuh dapat dikonfigurasikan pada Pengaturan / Preferensi | Penampilan & Perilaku | Menu dan Toolbar.
Dan tentu saja, kemampuan touchbar dapat diperluas! Cukup tambahkan tindakan yang diinginkan ke InterfaceGroup
sesuai.

Tema kontras tinggi
Seperti IntelliJ Platform, MPS memiliki tema kontras tinggi baru. Itu dapat diaktifkan di Pengaturan / Preferensi -> Penampilan & Perilaku.

Alat untuk menemukan kode usang
Dalam Migrasi | Tindakan Kode yang sudah tidak berlaku lagi diambil untuk menemukan kode yang sudah usang dan bekerja dengan penggunaannya. Temukan Penggunaan hasil pencarian grup yang tidak digunakan oleh versi penghapusan yang dimaksudkan, yang membantu menentukan tingkat keparahan dan memilih mana dari penggunaan yang harus dihapus terlebih dahulu.

Ikon untuk menavigasi metode perilaku yang diganti / diterapkan
Di bidang kelas perilaku, kami menambahkan ikon untuk menavigasi / menerapkan metode perilaku. Berikut ini adalah daftar metode getPresentation () yang menimpa atau mengimplementasikan metode yang dipilih. Dari daftar, Anda dapat dengan mudah pergi ke salah satu metode ini.

Penyempurnaan pop-up untuk menavigasi penggantian
Munculan dari konsep / kelas / metode yang ditimpa / diimplementasikan menjadi asinkron. Ini berarti bahwa MPS akan menambahkan hasil pencarian ke popup di latar belakang. Selain itu, Anda sekarang dapat memfilter hasil pencarian berdasarkan nama objek.

Pencari Perubahan
Dalam versi ini, kami telah memperbarui dan mengoptimalkan pencari. Untuk eksekusi pencari yang tidak sinkron, gunakan ekspresi khusus OnEachNodeFoundByExpression, yang merupakan panggilan sederhana untuk pencari dengan fungsi panggilan balik untuk setiap node yang terdeteksi.
Pengaturan Cari Penggunaan untuk konsep juga telah berubah. Kami telah menambahkan opsi pencarian Concept Ancestors dan Derived Concepts, yang masing-masing menampilkan daftar konsep induk dan anak. Selain itu, kemampuan pencarian untuk metode perilaku telah ditingkatkan dengan opsi Metode Overridden dan Metode Overriding.

Mengabaikan Kesalahan
Di MPS, Anda dapat mengabaikan kesalahan pada node. Ini nyaman dalam kasus-kasus di mana kesalahan ditampilkan di editor, tetapi dalam konteks tertentu tidak masuk akal (misalnya, dalam templat generator). Sebelumnya, kemungkinan untuk menekan kesalahan seperti itu tidak fleksibel. Jika node diberi penjelasan dengan atribut 'SuppressErrorAnnotation', maka efek 'Suppress error for node ...' dipanggil. Penggunaan maksud ini menekan semua jenis kesalahan pada simpul ini dan semua turunannya - dengan cara ini kesalahan aktual dapat diabaikan.
Sekarang dimungkinkan untuk mengabaikan hanya jenis kesalahan tertentu. Kesalahan yang dipilih akan diabaikan untuk simpul ini dan semua turunannya, tetapi semua pesan lainnya akan ditampilkan. Baca lebih lanjut tentang fitur manajemen kesalahan baru dalam dokumentasi .

Bahasa assembly dan pengemasan
Kiat & Trik
Aplikasi RCP (Rich Client Platform) digunakan untuk menambahkan tip & trik dari MPS secara default. Sekarang tips & trik untuk aplikasi Anda dapat didefinisikan ulang menggunakan desain tips & trik baru dalam skrip build. Seperti sebelumnya, Anda dapat menggunakan tips dari distribusi MPS atau menentukannya sendiri dalam direktori atau modul solusi dan impor.

Tip & Trik Deskripsi Bahasa
Untuk mengimpor kiat & trik ke skrip build dari modul solusi, buat solusi dan impor bahasa jetbrains.mps.build.tips dan jetbrains.mps.core.xml. Kemudian buat sebuah instance dari konsep MPSTipsAndTricks dan jelaskan tips Anda di dalamnya. Setiap tip adalah teks HTML dan dapat berisi tidak lebih dari satu gambar.

Metode pengepakan
Kami menandai kemasan khusus di BuildMps_IdeaPlugin sebagai usang. Sebagai gantinya, gunakan metode pengemasan dalam konstruk BuildMpsLayout_Plugin.
Metode perakitan kemasan otomatis menempatkan semua modul bahasa dan jenis solusi ke dalam folder 'bahasa' pada direktori root plug-in, dan opsi pengemasan manual memungkinkan pengembang untuk mengatur struktur plug-in secara independen.

Desain baru bahasa rakitan dan pengemasan
Kami telah memperluas kemampuan konfigurasi pengujian dalam bahasa rakitan dan pengemasan. Sekarang dimungkinkan untuk menentukan plugin IntelliJ IDEA tambahan yang harus dimuat untuk menjalankan tes MPS dari Ant.
Dalam beberapa kasus, untuk menjalankan tes, diperlukan plug-in tertentu, yang bahasa assembly tidak dapat menghitung dengan modul yang berisi tes. Sekarang Anda dapat menentukan plugin yang diperlukan untuk menjalankan tes dalam desain konfigurasi tes.

Editor
Gunakan kembali peta aksi sel
Elemen peta aksi sel dari peta aksi yang ada dapat digunakan kembali menggunakan impor.

Perbaikan lainnya
Tipe data yang dikompilasi sepenuhnya
Bergerak menuju bahasa yang dikompilasi sepenuhnya, kami menciptakan tipe data yang dihasilkan sepenuhnya. Semua informasi tipe data yang dihasilkan tersedia melalui SModel API.
Menyimpan data migrasi dalam anotasi
Kami telah menerapkan cara baru untuk menyimpan data selama migrasi, yang kami sarankan untuk digunakan di masa mendatang. Node yang diturunkan yang berisi data sekarang harus dilampirkan ke setiap node yang terletak cukup dekat dengan tempat data tersebut berada.
Dalam skrip migrasi yang membuat simpul dengan data, Anda perlu mendeklarasikan konsep simpul tersebut dan menggunakan konstruk putData () untuk menyisipkan setiap anotasi tersebut ke dalam model:

Mengambil node yang berisi data sama dengan sebelumnya:

Perubahan pada dialog resolusi konflik
Sebelumnya, dalam konflik, perubahan hanya dapat diterapkan di satu sisi. Namun terkadang penting untuk tidak kehilangan perubahan lainnya.
Ini berlaku untuk perubahan pada node tetangga yang berada dalam peran jamak yang sama. Sekarang, setelah menerapkan perubahan di satu sisi konflik, perubahan dari cabang lain akan ditampilkan sebagai tambahan. Untuk menyelesaikan resolusi konflik, penambahan ini harus diterapkan atau ditolak.
Setelah menerapkan perubahan di sisi kiri konflik, Anda dapat menerapkan atau mengabaikan garis di sisi kanan:

Anda dapat mengunduh versi baru di sini , kami harap ini akan menyenangkan Anda. Bagaimanapun, kami akan menunggu tanggapan Anda! Daftar perbaikan lengkap tersedia di halaman ini . Silakan laporkan masalah apa pun kepada kami di pelacak .
Tim MPS JetBrains Anda
Dorongan untuk berkembang