JavaScript ile betik yazımı

KatePart düzenleyici bileşeni, betik yazımı ile kolaylıkla genişletilebilir. Bunun içn kullanılan dil ECMAScript’tir (genellikle JavaScript olarak bilinir). KatePart iki tür betiği destekler: Girintileme ve komut satırı betikleri. Komut satırı betiklerine benzer bir işlevsellik ayrıca parçacıklar eklentisinde sunulmaktadır. Bu eklenti, özellikle küçük özelleştirilmiş betikler için daha iyi bir başlangıç noktası sağlayabilir.

Girintileme Betikleri

Girintileme betikleri (aynı zamanda girintileyiciler olarak da bilinir) metin yazarken kaynak kodu kendiliğinden girintiler. Örnek olarak, Dönüş düğmesine bastıktan sonra girinti düzeyi genelde artar.

Aşağıdaki bölümlerde basit bir girintileyici için temel çerçevenin nasıl oluşturulacağı adım adım açıklanmaktadır. İlk adım olarak, yerel ana klasör olan $XDG_DATA_HOME/katepart5/script/indentation klasöründe yeni bir *.js dosyası oluşturun; örneğin, javascript.js. Burada, XDG_DATA_HOME çevre değişkeni genellikle ~/.local veya ~/.local/share olarak genişletilir.

Windows®’ta bu dosyalar genelde C:\\Users\\user olarak genişleyen %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% konumundadır.

Girintileme Betiği Üstbilgisi

javascript.js dosyasının üstbilgisi, aşağıdaki gibi belgenin başına JSON olarak gömülür:

var katescript = {
    "name": "JavaScript",
    "author": "Örnek Ad <örnek.ad@bir.adres.org>",
    "license": "BSD License",
    "revision": 1,
    "kate-version": "5.1",
    "required-syntax-style": "javascript",
    "indent-languages": ["javascript"],
    "priority": 0,
}; // kate-script-header, dosyanın başında yorumsuz olmalıdır

Burada her giriş ayrıntılı olarak açıklanır:

  • name [zorunlu]: Bu, AraçlarGirintileme menüsünde ve yapılandırma iletişim kutusunda görünen girintileyici adıdır.

  • author [isteğe bağlı]: Yazarın adı ve iletişim bilgisi.

  • license [isteğe bağlı]: Lisansın kısa adı; örneğin, BSD License veya LGPLv3.

  • revision [zorunlu]: Betiğin revizyonu. Komut dosyasında her değişiklik yapıldığında bu sayının artırılması gerekir.

  • kate-version [zorunlu]: Zorunlu en düşük KatePart sürümü.

  • required-syntax-style [isteğe bağlı]: Sözdizim vurgulama dosyalarında belirtilen biçem ile eşleşen gerekli sözdizim biçemi. Bu, belgedeki belirli vurgulama bilgilerine dayanan girintileyiciler için önemlidir. Gerekli bir sözdizim biçemi belirtilirse girintileyici yalnızca uygun vurgulayıcı etkin olduğunda kullanılabilir. Bu, girintileyicinin beklenen vurgulama şeması olmadan kullanılmasından kaynaklanan tanımsız davranışı önler. Örneğin, Ruby girintileyicisi bunu, ruby.js ve ruby.xml dosyalarında kullanır.

  • indent-languages [isteğe bağlı]: Girintileyicinin düzgünce girintileyebildiği sözdizim biçemlerinin JSON dizilişi; örneğin: ["c++", "java"].

  • priority [isteğe bağlı]: Vurgulanan belirli bir dosya için birden fazla girintileyici uygunsa öncelik, öntanımlı girintileyici olarak hangi girintileyicinin seçileceğine karar verir.

Girintileyici Kaynak Kodu

Üstbilgiyi belirledikten sonra bu bölüm girintileme betiği oluşturma işleminin nasıl çalıştığını açıklamaktadır. Gövdenin temel iskeleti şöyle görünür:

// zorunlu katepart js kitaplıkları; örneğin, Range require ("range.js"); kullanıyorsanız range.js

triggerCharacters = "{}/:;";
function indent(line, indentWidth, ch)
{
    // triggerCharacters global değişkeninde belirtilen her bir yenisatır (ch == ’\n’) ve tüm karakterler için çağrılır. AraçlarGirintilemeyi Biçimlendir, ch değişkeni boştur; demeli, ch == ’’.
    //
    // Ayrıca bakınız: Betik Yazımı API’si
    return -2;
}

indent() işlevinin üç parametresi vardır:

  • line: Girintilenmesi gereken satır

  • indentWidth: Boşluk türünden girintileme genişliği

  • ch: Ya bir yenisatır karakteri (ch == ’\n’) ya triggerCharacters içinde belirtilen tetikleyici karakter ya da kullanıcı AraçlarGirintilemeyi Biçimlendir eylemini çağırdıysa boş.

indent() işlevinin döndürdüğü değer, satırın nasıl girintileneceğini belirtir. Dönüş değeri basit bir tamsayıysa aşağıdaki gibi değerlendirilir:

  • return value -2: Bir şey yapma

  • return value -1: Girintilemeyi tut (önceki boş olmayan satırları arar)

  • return value 0: >=0 sayıları, boşluk türünden girintileme derinliğini belirtir

Alternatif olarak, iki ögeli bir diziliş döndürülebilir:

  • return [ indent, align ];

Bu durumda ilk öge, yukarıdaki gibi özel değerlerle aynı anlama gelen girintileme derinliğidir. Ancak ikinci öge, hizalama sütununu temsil eden mutlak bir değerdir. Bu değer girinti değerinden yüksekse, fark, ilk parametrenin girintisinden sonra eklenecek boşluk sayısını temsil eder. Aksi halde ikinci sayı dikkate alınmaz. Girintileme için sekmelerin ve boşlukların kullanılmasına genellikle karma kip adı verilir.

Aşağıdaki örneğe ele alın: Girintileme için sekmelerin kullanıldığını ve sekme genişliğinin 4 olduğunu varsayalım. Burada, <tab> bir sekmeyi ve '.' bir boşluğu temsil eder:

1: <tab><tab>foobar("merhaba",
2: <tab><tab>......."dünya");

2. satırı girintilerken, indent() işlevi [8, 15] değerini döndürür. Sonuç olarak, 8. sütuna girinti yapmak için iki sekme eklenir ve ikinci parametreyi birincinin altına hizalamak için 7 boşluk eklenir, böylece dosya farklı bir sekme genişliğinde görüntülenirse hizalı kalır.

Öntanımlı bir KDE kurulumu, KatePart uygulamasını birkaç girintileyici ile kurar. Karşılık gelen JavaScript kaynak kodu $XDG_DATA_DIRS/katepart5/script/indentation konumunda bulunabilir.

Windows®’ta bu dosyalar genelde C:\\Users\\user olarak genişleyen %USERPROFILE%\AppData\Local\katepart5\script\indentation. %USERPROFILE% konumundadır.

Bir girintileyici geliştirmek, değişikliklerin uygun şekilde davranıp davranmadığını görmek için betiklerin yeniden yüklenmesini gerektirir. Uygulamayı yeniden başlatmak yerine komut satırına geçin ve reload-scripts komutunu çağırın.

Eğer yararlı betikler geliştiriyorsanız lütfen onları KatePart projesine katkıda bulunmayın düşünün. Katkılarınızı GitLab sayfamıza gönderin.

Komut Satırı Betikleri

Not

Komut satırı betiklerine benzer bir işlevsellik ayrıca parçacıklar eklentisinde sunulmaktadır. Bu eklenti, özellikle küçük özelleştirilmiş betikler için daha iyi bir başlangıç noktası sağlayabilir.

Herkesin gereksinimlerini karşılamak güç olsa da, KatePart, yerleşik komut satırı ile tez metin manipülasyonunu sağlamak için küçük yardımcı araçlar sağlar. Örneğin, sort komutu bir betik olarak uygulanmıştır. Bu bölüm, KatePart uygulamasını olabildiğince genişletmek için nasıl *.js dosyaları oluşturulacağını açıklar.

Komut satırı betikleri, girintileme betikleriyle aynı klasörde bulunurlar. İlk adım olarak, yerel ana klasör olan $XDG_DATA_HOME/katepart5/script/commands klasöründe yeni bir *.js dosyası oluşturun; örneğin, izlencelerim.js. Burada, XDG_DATA_HOME çevre değişkeni genellikle ~/.local veya ~/.local/share olarak genişletilir.

Windows®’ta bu dosyalar genelde C:\\Users\\user olarak genişleyen %USERPROFILE%\AppData\Local\katepart5\script\commands. %USERPROFILE% konumundadır.

Komut Satırı Betik Üstbilgisi

javascript.js dosyasının üstbilgisi, aşağıdaki gibi belgenin başına JSON olarak gömülür:

var katescript = {
    "author": "Örnek Ad <örnek.ad@bir.adres.org>",
    "license": "LGPLv2+",
    "revision": 1,
    "kate-version": "5.1",
    "functions": ["sort", "moveLinesDown"],
    "actions": [
        {   "function": "sort",
            "name": "Seçili Metni Sırala",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Satırları Aşağı Taşı",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
}; // kate-script-header, dosyanın başında yorumsuz olmalıdır

Burada her giriş ayrıntılı olarak açıklanır:

  • author [isteğe bağlı]: Yazarın adı ve iletişim bilgisi.

  • license [isteğe bağlı]: Lisansın kısa adı; örneğin, BSD License veya LGPLv3.

  • revision [zorunlu]: Betiğin revizyonu. Komut dosyasında her değişiklik yapıldığında bu sayının artırılması gerekir.

  • kate-version [zorunlu]: Zorunlu en düşük KatePart sürümü.

  • functions [zorunlu]: Betikteki komutların JSON dizilişi.

  • actions [isteğe bağlı]: Uygulama menüsünde görünen eylemleri tanımlayan JSON nesnelerinin JSON dizilişi. Ayrıntılı bilgi, Kısayolları Bağıntılamak bölümünde sağlanmıştır.

functions değeri bir JSON dizilişi olduğundan, tek bir betik istediğiniz kadar komut satırı komutu içerebilir. Her bir işlev, KatePart uygulamasının yerleşik komut satırından kullanılabilir.

Betik Kaynak Kodu

Üstbilgide belirtilen tüm işlevlerin betikte uygulanması gerekir. Örneğin, yukarıdaki örnekteki komut dosyasının sort ve moveLinesDown işlevlerini uygulaması gerekir. Tüm işlevler aşağıdaki sözdizime sahiptir:

// zorunlu katepart js kitaplıkları; örneğin, Range require ("range.js"); kullanıyorsanız range.js

function <name>(arg1, arg2, …)
{
    // … uygulama, ayrıca bakınız: Betik Yazımı API’si
}

Komut satırındaki argümanlar işleve arg1, arg2, vb. olarak geçirilirler. Her bir komut için belgelendirmek sağlamak istiyorsanız yalnızca 'help' işlevini aşağıdaki gibi uygulayın:

function help(cmd)
{
    if (cmd == "sort") {
        return i18n("Seçili metni sıralayın.");
    } else if (cmd == "…") {
        // …
    }
}

Komut satırında help sort işlevini yürütmek, sonrasında bu yardım işlevini verilen komuta ayarlı cmd ile çağırır; başka bir deyişle, cmd == "sort". KatePart sonrasında döndürülen metni kullanıcıya belgelendirme olarak sunar. Dizileri başka dillere çevrilebilir yaptığınızdan emin olun.

Bir komut satırı betiği geliştirmek, değişikliklerin uygun şekilde davranıp davranmadığını görmek için betiklerin yeniden yüklenmesini gerektirir. Uygulamayı yeniden başlatmak yerine komut satırına geçin ve reload-scripts komutunu çağırın.

Kısayolları Bağıntılamak

Betiklerin uygulama menüsünden erişilebilir olmasını sağlamak ve kısayollar atamak için betiğin uygun bir betik başlığı sağlaması gerekir. Yukarıdaki örnekte, betik üstbilgisindeki aşağıdaki bölüm nedeniyle menüde hem sort hem de moveLinesDown işlevleri görünüyor:

var katescript = {
    …
    "actions": [
        {   "function": "sort",
            "name": "Seçili Metni Sırala",
            "icon": "",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Satırları Aşağı Taşı",
            "icon": "",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
};

Tek bir eylem için olan alanlar aşağıdaki gibidir:

  • function [zorunlu]: AraçlarBetikler menüsünde görünmesi gereken işlev.

  • name [zorunlu]: Betikler menüsünde görünen metin.

  • icon [isteğe bağlı]: Menüde metnin yanında görünen simge. Burada tüm KDE simgeleri adları kullanılabilir.

  • category [isteğe bağlı]: Bir kategori belirtilirse betik bir alt menüde görünür.

  • shortcut [isteğe bağlı]: Burada verilen kısayol, öntanımlı kısayoldur. Örnek: Kontrol+Seçenek+T. Daha fazla ayrıntı için Qt™ belgelendirmesine bakın.

  • interactive [isteğe bağlı]: Betiğin komut satırında kullanıcı girdisi bekleyip beklemediği. Bunu, true olarak ayarlayın.

Eğer yararlı betikler geliştiriyorsanız lütfen onları KatePart projesine katkıda bulunmayın düşünün. Katkılarınızı GitLab sayfamıza gönderin.

Betik Yazımı API’si

Burada sunulan betik yazımı API’si, tüm betikler için kullanılabilirdir; başka bir deyişle, girintileme betikleri ve komut satırı betikleri. Cursor ve Range sınıfları, $XDG_DATA_DIRS/katepart5/libraries içindeki kitaplık dosyaları tarafından sağlanırlar. Document veya View işlevlerinden bazılarını kullanması gereken bu API’yi betiğinizde kullanmak istiyorsanız şunu kullanarak gerekli kitaplığı içerin:

// zorunlu katepart js kitaplıkları; örneğin, Range require ("range.js"); kullanıyorsanız range.js
require ("range.js");

Standart betik yazımı API’sini kendi işlevleriniz ve prototiplerinizle genişletmek istiyorsanız yalnızca KDE’nin yerel yapılandırma klasörü olan $XDG_DATA_HOME/katepart5/libraries içinde yeni bir dosya oluşturun ve onu betiğinizde şunu kullanarak içerin:

require ("benimbetiğiminadıburaya.js");

Windows®’ta bu dosyalar genelde C:\\Users\\user olarak genişleyen %USERPROFILE%\AppData\Local\katepart5\libraries. %USERPROFILE% konumundadır.

Cursor veya Range gibi var olan prototipleri genişletmek istiyorsanız tavsiye edilen yol global *.js dosyalarını değiştirmek değildir. Bunun yerine, JavaScript içindeki Cursor prototipini cursor.js betiğinizde require ile içerildikten sonra değiştirin.

İmleçler ve Erimler

KatePart bir metin düzenleyici olduğundan, tüm betik oluşturma API’si olabildiğince imleçlere ve erimlere dayanır. İmleç, belgedeki bir metin konumunu temsil eden basit bir (satır, sütun) demettir. Erim, metni başlangıç imleç konumundan bitiş imleç konumuna kadar yayar. API sonraki bölümlerde ayrıntılı olarak açıklanmaktadır.

İmleç Prototipi
Cursor();

Yapıcı. (0, 0) konumunda bir imleç döndürür.

Örnek: var cursor = new Cursor();

Cursor(int satır, int sütun);

Yapıcı. Belirli bir konumda (satır, sütun) bir imleç döndürür.

Örnek: var cursor = new Cursor(3, 42);

Cursor(Cursor diğer);

Yapıcıyı kopyala. diğer imlecinin bir kopyasını döndürür.

Örnek: var copy = new Cursor(other);

Cursor Cursor.clone();

İmlecin bir klonunu döndürür.

Örnek: var clone = cursor.clone();

Cursor.setPosition(int satır, int sütun);

İmleç konumunu satır ve sütun olarak ayarlar.

Eklendiği sürüm: KDE 4.11

bool Cursor.isValid();

İmlecin geçerli olup olmadığını denetler. Satır ve/veya sütun -1 olarak ayarlanırsa imleç geçersizdir.

Örnek: var valid = cursor.isValid();

Cursor Cursor.invalid();

(-1, -1) konumunda yeni geçersiz bir imleç döndürür.

Örnek: var invalidCursor = cursor.invalid();

int Cursor.compareTo(Cursor diğer);

Bu imleci diğer imleç ile karşılaştırır. İmleç,

  • diğer imlecinden önce konumlandırılmışsa -1,

  • her iki imleç de eşitse 0 ve

  • bu imleç other imlecinden önce geliyorsa +1 döndürür.

bool Cursor.equals(Cursor diğer);

Bu imleç ve diğer imleç eşitse true, aksi takdirde false döndürür.

String Cursor.toString();

İmleci, Cursor(satır, sütun) biçiminde bir dizi olarak döndürür.

Erim Prototipi
Range();

Yapıcı. new Range() çağırmak, (0, 0)–(0, 0) konumunda bir erim döndürür.

Range(Cursor başlangıç, Cursor bitiş);

Yapıcı. new Range(başlangıç, bitiş) çağırmak, (başlangıç, bitiş) erimini döndürür.

Range(int başlangıçSatırı, int başlangıçSütunu, int bitişSatırı, int bitişSütunu);

Yapıcı. new Range(başlangıçSatırı, başlangıçSütunu, bitişSatırı, bitişSütunu) çağırmak, (başlangıçSatırı, başlangıçSütunu) değerlerini (bitişSatırı, bitişSütunu) olarak döndürür.

Range(Range diğer);

Yapıcıyı kopyala. diğer eriminin bir kopyasını döndürür.

Range Range.clone();

Erimin bir klonunu döndürür.

Örnek: var clone = range.clone();

bool Range.isEmpty();

Başlangıç ve bitiş imleçleri eşitse true döndürür.

Örnek: var empty = range.isEmpty();

Eklendiği sürüm: KDE 4.11

bool Range.isValid();

Hem başlangıç hem bitiş imleçleri eşitse true, aksi takdirde false döndürür.

Örnek: var valid = range.isValid();

Range Range.invalid();

(-1, -1) ile (-1, -1) arasındaki erimi döndürür.

bool Range.contains(Cursor imleç);

Eğer bu erim imleç konumunu içeriyorsa true, aksi takdirde false döndürür.

bool Range.contains(Range diğer);

Eğer bu erim diğer erimini içeriyorsa true, aksi takdirde false döndürür.

bool Range.containsColumn(int sütun);

sütun, yarı açık [başlangıç.sütun, bitiş.sütun) aralığındaysa true, aksi takdirde false döndürür.

bool Range.containsLine(int satır);

satır, yarı açık [başlangıç.satır, bitiş.satır) aralığındaysa true, aksi takdirde false döndürür.

bool Range.overlaps(Range diğer);

Bu erim ve diğer erimi ortak bir bölge paylaşıyorlarsa true, aksi takdirde false döndürür.

bool Range.overlapsLine(int satır);

satır, [başlangıç.satır, bitiş.satır) aralığındaysa true, aksi takdirde false döndürür.

bool Range.overlapsColumn(int sütun);

sütun, [başlangıç.sütun, bitiş.sütun) aralığındaysa true, aksi takdirde false döndürür.

bool Range.onSingleLine();

Erim aynı satırda başlıyor ve bitiyorsa true döndürür; başka bir deyişle, Range.start.line == Range.end.line ise.

Eklendiği sürüm: KDE 4.9

bool Range.equals(Range diğer);

Eğer bu erim ve diğer erimi eşitse true, aksi takdirde false döndürür.

String Range.toString();

Erimi, Cursor(satır, sütun) biçiminde bir dizi olarak döndürür.

Global İşlevler

Bu bölüm, tüm global işlevleri listeler.

Dosyaları Okumak ve İçermek
String read(String dosya);

Verilen dosya’yı katepart5/script/files dizinine göreceli olarak arar ve içeriğini bir dizi olarak döndürür.

void require(String dosya);

Verilen dosya’yı katepart5/script/libraries dizinine göreceli olarak arar ve onu değerlendirir. require, aynı dosya’nın birden çok içerilmesine karşı korumalıdır.

Eklendiği sürüm: KDE 4.10

Hata Ayıklama
void debug(String metin);

metin’i, uygulamayı başlatan konsolda stdout’a yazdırır.

Çeviri

Tam yerelleştirmeyi desteklemek için betiklerdeki dizileri çevirmek üzere birkaç işlev bulunur; bunlar, i18n, i18nc, i18np ve i18ncp olarak geçer. Bunlar kesin olarak KDE’nin çeviri işlevleri gibi davranırlar.

Çeviri işlevleri, sarılmış dizileri KDE’nin çeviri sistemi aracılığıyla uygulamada kullanılan dile çevirir. Resmi KatePart kaynaklarında geliştirilen komut dosyalarındaki dizeler otomatik olarak çıkarılır ve çevrilebilir. Başka bir deyişle, bir KatePart geliştiricisi olarak ileti çıkarma ve çeviri ile uğraşmanıza gerek yoktur. Bununla birlikte, çevirinin yalnızca KDE altyapısı içinde çalıştığını, yani KDE dışında geliştirilen 3. taraf betiklerdeki yeni dizilerin çevrilmediğini de belirtmek gerekir. Bu nedenle, doğru çevirinin olabilmesi için lütfen betiklerinizle Kate’e katkıda bulunmayı düşünün.

void i18n(String metin, arg1, …);

metin’i, uygulama tarafından kullanılan dile çevirir. arg1, …, argümanları isteğe bağlıdır ve %1, %2, gibi yer tutucuları değiştirmede kullanılırlar.

void i18nc(String bağlam, String metin, arg1, …);

metin’i, uygulama tarafından kullanılan dile çevirir. Ek olarak, bağlam metni çevirmenlere görünür, böylece daha iyi bir çeviri sağlayabilirler. arg1, …, argümanları isteğe bağlıdır ve %1, %2, gibi yer tutucuları değiştirmede kullanılırlar.

void i18np(String tekil, String çoğul, int sayı, arg1, …);

tekil veya çoğul varyantları, verilen sayı’ya bağlı olarak uygulama tarafından kullanılan dile çevirir. arg1, …, argümanları isteğe bağlıdır ve %1, %2, gibi yer tutucuları değiştirmede kullanılırlar.

void i18ncp(String bağlam, String tekil, String çoğul, int sayı, arg1, …);

tekil veya çoğul varyantları, verilen sayı’ya bağlı olarak uygulama tarafından kullanılan dile çevirir. Ek olarak, bağlam metni çevirmenlere görünür, böylece daha iyi bir çeviri sağlayabilirler. arg1, …, argümanları isteğe bağlıdır ve %1, %2, gibi yer tutucuları değiştirmede kullanılırlar.

Görünüm API’si

Ne zaman bir betik yürütülürse geçerli etkin düzenleyici görünümünü temsil eden bir view global değişkeni vardır. Tüm kullanılabilir View işlevleri aşağıda listelenmiştir.

void view.copy()

[ ] Metin seçilmeden çağrılırsa geçerli satırı kes/kopyala ayarlıysa bir seçim varken seçimi kopyala, aksi takdirde geçerli satırı kopyala.

Eklendiği sürüm: KDE Frameworks™ 5.79

void view.cut()

[ ] Metin seçilmeden çağrılırsa geçerli satırı kes/kopyala ayarlıysa bir seçim varken seçimi kes, aksi takdirde geçerli satırı kes.

Eklendiği sürüm: KDE Frameworks™ 5.79

void view.paste()

Pano içeriğini yapıştır.

Eklendiği sürüm: KDE Frameworks™ 5.79

Cursor view.cursorPosition()

Görünümdeki geçerli imleç konumunu döndürür.

void view.setCursorPosition(int satır, int sütun);
void view.setCursorPosition(Cursor imleç);

Geçerli imleç konumunu ya (satır, sütun) ya da verilen imlece ayarla.

Cursor view.virtualCursorPosition();

Geçerli sekme genişliğine bağlı olarak her sekmenin karşılık gelen boşluk miktarını saydığı sanal imleç konumunu döndürür.

void view.setVirtualCursorPosition(int satır, int sütun);
void view.setVirtualCursorPosition(Cursor imleç);

Geçerli sanal imleç konumunu (satır, sütun) veya verilen imleç olarak ayarlayın.

String view.selectedText();

Seçilen metni döndürür. Hiçbir metin seçilmezse döndürülen dizi boştur.

bool view.hasSelection();

Görünümde seçili metin varsa true değerini, aksi takdirde false değerini döndürür.

Range view.selection();

Seçili metin erimini döndürür. Seçili metin yoksa döndürülen erim geçersizdir.

void view.setSelection(Range erim);

Seçili metni verilen erime ayarla.

void view.removeSelectedText();

Seçili metni kaldır. Görünümde seçili metin yoksa bu hiçbir şey yapmaz.

void view.selectAll();

Belgedeki tüm metni seçer.

void view.clearSelection();

Metni kaldırmadan metin seçimini temizler.

void view.setBlockSelection(bool on);

Blok seçim kipini açar/kapatır.

bool view.blockSelection();

Blok seçim kipi açıksa true, aksi takdirde false döndürür.

void view.align(Range erim);

Geçerli girintileme ayarlarına göre erim’i düzgünce yeniden girintile.

void view.alignOn(Range erim, String dizgi = "");

Düzenli ifade dizgi verdiği sütundaki erim’deki satırları hizalar. Boş bir dizgi ile öntanımlı olarak ilk boş olmayan karaktere hizalanır. Dizginin bir yakalaması varsa yakalanan eşleşmeye girintili olacaktır.

Örnekler:

view.alignOn(document.documentRange(), '-');, tümünü aynı sütunda hizalamak için her satırın ilk - satırından önce boşluk ekler.

view.alignOn(document.documentRange(), ':\\s+(.)');, tümünü aynı sütunda hizalamak için iki nokta üst üsteden sonra oluşan ilk boş olmayan karakterden önce boşluk ekler.

object view.executeCommand(String komut,
                           String argümanlar,
                           Range erim);

komut komut satırı komutunu isteğe bağlı argümanlar ve erim ile yürütür. Döndürülen nesne’nin komut yürütmesinin başarılı olup olmadığını söyleyen bir object.ok Boole değeri vardır. Bir hata durumunda, object.status bir hata iletisi içerir.

Eklendiği sürüm: KDE Frameworks™ 5.50

Range view.searchText(Range erim,
                      String dizgi,
                      bool backwards = false);

erim’de dizgi’nin ilk oluşunu ara ve eşleşen erimi döndür. İsteğe bağlı Boole değeri backwards true olarak ayarlanırsa arama geriye doğru yapılır.

dizgi, erim’de bulunamazsa döndürülen erim geçersizdir (bkz. Range.isValid()).

Eklendiği sürüm: KDE Frameworks™ 5.97

Belge API’si

Ne zaman bir betik yürütülürse geçerli etkin belgeyi temsil eden bir document global değişkeni vardır. Tüm kullanılabilir Document işlevlerinin bir listesini aşağıda bulabilirsiniz.

String document.fileName();

Kaydedilmemiş metin arabellekleri için belgenin dosya adını veya boş bir diziyi döndürür.

String document.url();

Belgenin tam URL’sini veya kaydedilmemiş metin arabellekleri için boş bir diziyi döndürür.

String document.mimeType();

Belgenin MIME türünü veya uygun MIME türü bulunamazsa application/octet-stream MIME türünü döndürür.

String document.encoding();

Dosyayı kaydetmek için kullanılan geçerli kodlamayı döndürür.

String document.highlightingMode();

Tüm belge için kullanılan global vurgulama kipini döndürür.

String document.highlightingModeAt(Cursor konum);

Belgedeki belirli konumda kullanılan vurgulama kipini döndürür.

Array document.embeddedHighlightingModes();

Bu belgeye gömülü bir dizi vurgulama modunu döndürür.

bool document.isModified();

Belgede kaydedilmemiş değişiklikler varsa true, aksi takdirde false döndürür.

String document.text();

Belgenin tüm içeriğini tek bir metin dizisinde döndürür. Yeni satırlar, \n yenisatır karakteriyle işaretlenir.

String document.text(int satırdan, int sütundan, int satıra, int sütuna);
String document.text(Cursor şuradan, Cursor şuraya);
String document.text(Range erim);

Verilen erimdeki metni döndürür. Kaynak kodunun daha iyi okunabilmesi için imleç ve aralık tabanlı sürümün kullanılması önerilir.

String document.line(int satır);

Verilen metin satırını dizi olarak döndürür. İstenen satır erim dışıysa dizi boştur.

String document.wordAt(int satır, int sütun);
String document.wordAt(Cursor imleç);

Verilen imleç konumundaki sözcüğü döndürür.

Range document.wordRangeAt(int satır, int sütun);
Range document.wordRangeAt(Cursor imleç);

Verilen imleç konumundaki sözcüğün erimini döndürür. Metin konumu bir satırın sonundan sonraysa döndürülen erim geçersizdir (bkz. Range.isValid()). Verilen imleçte sözcük yoksa boş bir erim döndürülür.

Eklendiği sürüm: KDE 4.9

String document.charAt(int satır, int sütun);
String document.charAt(Cursor imleç);

Verilen imleç konumundaki karakteri döndürür.

String document.firstChar(int satır);

Verilen satırdaki boşluk olmayan ilk karakteri döndürür. İlk karakter 0 sütunundadır. Satır boşsa veya yalnızca boşluk karakterleri içeriyorsa döndürülen dizi boştur.

String document.lastChar(int satır);

Verilen satırdaki boşluk olmayan son karakteri döndürür. Satır boşsa veya yalnızca boşluk karakterleri içeriyorsa döndürülen dizi boştur.

bool document.isSpace(int satır, int sütun);
bool document.isSpace(Cursor imleç);

Verilen imleç konumundaki karakter boşluksa true, aksi takdirde false döndürür.

bool document.matchesAt(int satır, int sütun, String metin);
bool document.matchesAt(Cursor imleç, String metin);

Verilen metin ilgili imleç konumunda eşleşiyorsa true, aksi takdirde false döndürür.

bool document.startsWith(int satır, String metin, bool skipWhiteSpaces);

Satır metin ile başlıyorsa true, aksi takdirde false döndürür. skipWhiteSpaces argümanı, baştaki boşlukların yok sayılıp sayılmayacağını denetler.

bool document.endsWith(int satır, String metin, bool skipWhiteSpaces);

Satır metin ile bitiyorsa true, aksi takdirde false döndürür. skipWhiteSpaces argümanı, sondaki boşlukların yok sayılıp sayılmayacağını denetler.

bool document.setText(String metin);

Tüm belge metnini ayarlar.

bool document.clear();

Belgedeki tüm metni kaldırır.

bool document.truncate(int satır, int sütun);
bool document.truncate(Cursor imleç);

Verilen satırı verilen sütun veya imleç konumunda keser. Başarı durumunda true, verilen satır belge aralığının parçası değilse false döndürür.

bool document.insertText(int satır, int sütun, String metin);
bool document.insertText(Cursor imleç, String metin);

Verilen imleç konumunda metin metnini ekler. Başarı durumunda true, belge saltokunur kipteyse false döndürür.

bool document.removeText(int satırdan, int sütundan, int satıra, int sütuna);
bool document.removeText(Cursor şuradan, Cursor şuraya);
bool document.removeText(Range erim);

Verilen erimdeki metni kaldırır. Başarı durumunda true, belge saltokunur kipteyse false döndürür.

bool document.insertLine(int satır, String metin);

Verilen satırda metin ekler. Başarı durumunda true, belge saltokunur kipteyse veya satır belge eriminde değilse false döndürür.

bool document.removeLine(int satır);

Verilen metin satırını kaldırır. Başarı durumunda true, belge saltokunur kipteyse veya satır belge eriminde değilse false döndürür.

bool document.wrapLine(int satır, int sütun);
bool document.wrapLine(Cursor imleç);

Verilen imleç konumunda satırı kaydırır. Başarı durumunda true, aksi takdirde; örneğin, satır < 0 ise false döndürür.

Eklendiği sürüm: KDE 4.9

void document.joinLines(int başlangıçSatırı, int bitişSatırı);

başlangıçSatırı konumundan bitişSatırı konumuna kadar olan satırları birbirine katar. İki birbirini izleyen metin satırı her zaman bir boşluk ile ayrılır.

int document.lines();

Belgedeki satır sayısını döndürür.

bool document.isLineModified(int satır);

satır şu anda kaydedilmemiş veri içeriyorsa true döndürür.

Eklendiği sürüm: KDE 5.0

bool document.isLineSaved(int satır);

line değiştirildi ve belge kaydedildiyse true döndürür. Böylece, satırda şu anda kaydedilmeyen bir veri kalmamış olur.

Eklendiği sürüm: KDE 5.0

bool document.isLineTouched(int satır);

line içinde şu anda kaydedilmemiş veri varsa veya daha önce değiştirildiyse true döndürür.

Eklendiği sürüm: KDE 5.0

bool document.findTouchedLine(int başlangıçSatırı, bool aşağı);

line konumundan başlayan sonraki dokunulmuş satırı arar. Arama, down içinde belirtilen yöne göre aşağı veya yukarı doğru yapılır.

Eklendiği sürüm: KDE 5.0

int document.length();

Belgedeki karakter sayısını döndürür.

int document.lineLength(int satır);

satır’ın uzunluğunu döndürür.

void document.editBegin();

Geri Al/Yinele gruplaması için bir düzenleme grubu başlatır. Hem editEnd() hem de editBegin() işlevlerini aynı sayıda çağırdığınızdan emin olun. editBegin() işlevini çağırmak içsel olarak bir başvuru sayacı kullanır; demeli, bu çağrı iç içe geçirilebilir.

void document.editEnd();

Bir düzenleme grubunu sonlandırır. editEnd() işlevinin son çağrısı (başka bir deyişle editBegin() işlevinin ilk çağrısı için olan) düzenleme adımını bitirir.

int document.firstColumn(int satır);

Verilen satır’daki ilk boşluk olmayan sütunu döndürür. Satırda yalnızca boşluklar varsa -1 döndürülür.

int document.lastColumn(int satır);

Verilen satır’daki son boşluk olmayan sütunu döndürür. Satırda yalnızca boşluklar varsa -1 döndürülür.

int document.prevNonSpaceColumn(int satır, int sütun);
int document.prevNonSpaceColumn(Cursor imleç);

Verilen imleç konumundan başlayıp geriye doğru arama yaparak boşluk olmayan karakter içeren sütunu döndürür.

int document.nextNonSpaceColumn(int satır, int sütun);
int document.nextNonSpaceColumn(Cursor imleç);

Verilen imleç konumundan başlayıp ileriye doğru arama yaparak boşluk olmayan karakter içeren sütunu döndürür.

int document.prevNonEmptyLine(int satır);

Verilen imleç konumundan başlayıp geriye doğru arama yaparak sonraki boş olmayan satırı döndürür.

int document.nextNonEmptyLine(int satır);

Verilen imleç konumundan başlayıp ileriye doğru arama yaparak sonraki boş olmayan satırı döndürür.

bool document.isInWord(String karakter, int öznitelik);

Verilen öznitelik’i içeren karakter bir sözcüğün parçası olabiliyorsa true, aksi takdirde false döndürür.

bool document.canBreakAt(String karakter, int öznitelik);

Verilen öznitelik’i içeren karakter bir satırı kaydırmak için uygunsa true, aksi takdirde false döndürür.

bool document.canComment(int başlangıçÖzniteliği, int bitişÖzniteliği);

Verilen özniteliklerle başlayan ve biten bir erim, yorum olarak imlenebiliyorsa true, aksi takdirde false döndürür.

String document.commentMarker(int öznitelik);

Verilen bir öznitelik için tek satırlık yorumlar için olan yorum imleyicisini döndürür.

String document.commentStart(int öznitelik);

Verilen bir öznitelik için çok satırlık yorum başlangıçı için olan yorum imleyicisini döndürür.

String document.commentEnd(int öznitelik);

Verilen bir öznitelik için çok satırlık yorum bitişi için olan yorum imleyicisini döndürür.

Range document.documentRange();

Tüm belgeyi kapsayan bir erim döndürür.

Cursor documentEnd();

Belgedeki son satırın son sütununda konumlanan imleci döndürür.

bool isValidTextPosition(int satır, int sütun);
bool isValidTextPosition(Cursor imleç);

Verilen imleç konumu geçerli bir metin konumundaysa true değerini döndürür. Bir metin konumu yalnızca geçerli bir satırın başında, ortasında veya sonunda bulunuyorsa geçerlidir. Ayrıca bir metin konumu, bir Unicode vekilinde bulunuyorsa geçersizdir.

Eklendiği sürüm: KDE 5.0

int document.attribute(int satır, int sütun);
int document.attribute(Cursor imleç);

Verilen imleç konumundaki özniteliği döndürür.

bool document.isAttribute(int satır, int sütun, int öznitelik);
bool document.isAttribute(Cursor imleç, int öznitelik);

Verilen imleç konumundaki öznitelik attribute ile eşitse true, aksi takdirde false döndürür.

String document.attributeName(int satır, int sütun);
String document.attributeName(Cursor imleç);

Öznitelik adını insanlar tarafından okunabilir metin olarak döndürür. Bu, sözdizim vurgulama dosyalarındaki itemData adına eşittir.

bool document.isAttributeName(int satır, int sütun, String ad);
bool document.isAttributeName(Cursor imleç, String ad);

Belirli bir imleç konumundaki öznitelik adı verilen ad ile eşleşiyorsa true, aksi takdirde false döndürür.

String document.variable(String anahtar);

İstenen belge değişkeni anahtar’ın değerini döndürür. Belge değişkeni yoksa dönüş değeri boş bir dizidir.

void document.setVariable(String anahtar, String değer);

İstenen belge değişkeni anahtar’ın değerini ayarla.

Ayrıca bakınız: Kate belge değişkenleri

Eklendiği sürüm: KDE 4.8

int document.firstVirtualColumn(int satır);

Verilen satırdaki boşluk olmayan ilk karakterin sanal sütununu veya satır boşsa veya yalnızca boşluk karakterleri içeriyorsa -1 döndürür.

int document.lastVirtualColumn(int satır);

Verilen satırdaki boşluk olmayan son karakterin sanal sütununu veya satır boşsa veya yalnızca boşluk karakterleri içeriyorsa -1 döndürür.

int document.toVirtualColumn(int satır, int sütun);
int document.toVirtualColumn(Cursor imleç);
Cursor document.toVirtualCursor(Cursor imleç);

Verilen gerçek imleç konumunu, bir int veya Cursor nesnesi döndürerek sanal bir imleç konumuna dönüştürür.

int document.fromVirtualColumn(int satır, int sanalSütun);
int document.fromVirtualColumn(Cursor sanalİmleç);
Cursor document.fromVirtualCursor(Cursor sanalİmleç);

Verilen sanal imleç konumunu, bir int veya Cursor nesnesi döndürerek gerçek imleç konumuna dönüştürür.

Cursor document.anchor(int satır, int sütun, Char karakter);
Cursor document.anchor(Cursor imleç, Char karakter);

Verilen imleçten başlayarak verilen karakteri geriye doğru arar. Örnek olarak, eğer “(” karakter olarak iletilirse bu işlev “(” açılışının konumunu döndürecektir. Bu başvuru sayımı, yani diğer “(…)” yok sayılır.

Cursor document.rfind(int satır, int sütun, String metin, int öznitelik = -1);
Cursor document.rfind(Cursor imleç, String metin, int öznitelik = -1);

Verilen metni uygun öznitelik ile geriye doğru arayarak bulun. Argüman özniteliği, -1 olarak ayarlanmışsa yok sayılır. Metin bulunamadığında döndürülen imleç geçersizdir.

int document.defStyleNum(int satır, int sütun);
int document.defStyleNum(Cursor imleç);

Verilen imleç konumunda kullanılan öntanımlı biçemi döndürür.

bool document.isCode(int satır, int sütun);
bool document.isCode(Cursor imleç);

Verilen imleç konumundaki öznitelik aşağıdaki biçemlerin tümüne eşit değilse true değerini döndürür: dsComment, dsString, dsRegionMarker, dsChar, dsOthers.

bool document.isComment(int satır, int sütun);
bool document.isComment(Cursor imleç);

İmleç konumundaki karakterin özniteliği dsComment ise true, aksi takdirde false döndürür.

bool document.isString(int satır, int sütun);
bool document.isString(Cursor imleç);

İmleç konumundaki karakterin özniteliği dsString ise true, aksi takdirde false döndürür.

bool document.isRegionMarker(int satır, int sütun);
bool document.isRegionMarker(Cursor imleç);

İmleç konumundaki karakterin özniteliği dsRegionMarker ise true, aksi takdirde false döndürür.

bool document.isChar(int satır, int sütun);
bool document.isChar(Cursor imleç);

İmleç konumundaki karakterin özniteliği dsChar ise true, aksi takdirde false döndürür.

bool document.isOthers(int satır, int sütun);
bool document.isOthers(Cursor imleç);

İmleç konumundaki karakterin özniteliği dsOthers ise true, aksi takdirde false döndürür.

void document.indent(Range erim, int değişiklik);

erim’deki tüm satırları değişiklik sekme kadar veya değişiklik kez girintiler. tabSize boşlukları kullanıcı tercihlerine bağlıdır. değişiklik parametresi negatif olabilir.

Düzenleyici API’si

Belge ve görünüm API’sine ek olarak, genel düzenleyici betiği oluşturma işlevlerine yönelik işlevler sağlayan bir genel düzenleyici API’si vardır.

String editor.clipboardText();

Şu anda global panoda bulunan metni döndürür.

Eklendiği sürüm: KDE Frameworks™ 5.50

String editor.clipboardHistory();

Düzenleyici, en fazla 10 pano girdisini içeren bir pano geçmişini tutar. Bu işlev, şu anda pano geçmişinde bulunan tüm girdileri döndürür.

Eklendiği sürüm: KDE Frameworks™ 5.50

void editor.setClipboardText(String metin);

Panonun içeriğini metin olarak ayarlar. metin, pano geçmişine eklenir.

Eklendiği sürüm: KDE Frameworks™ 5.50