Soru MATLAB komut dosyaları için argüman olarak dosya isimlerinin tab-tamamlanması


Biz MATLAB gibi MATLAB işlevinde argümanlar olarak kullanılan dosya isimleri için tab-tamamlama sağlar biliyorum importdata,imread. Oluşturduğumuz işlevler için bunu nasıl yapıyoruz?

DÜZENLE:

alt text

Geçerli dizindeki dosyaları ve klasörleri görüntüler.


21
2017-12-03 20:45


Menşei


Editör veya Komut Penceresinde işlev adının ilk bölümünü nasıl yazabileceğinizi ve ardından tamamlayan işlev adlarının bir listesini almak için sekmeyi tıklatacak mısınız? Yazdığım mevcut MATLAB yolundaki tüm işlevler bunu yaptığımda ortaya çıkıyor. - gnovice
@gnovice: Sorumu güncelledim - Jacob
Yarın kontrol etmeliyim (MATLAB'a eriştiğimde), ama ben düşünmek MATLAB, bir dize değerinde yazmaya başladığınızda öneriler olarak dizinler / dosyalar ile bir sekmeyi tamamlayacaktır. - gnovice
@gnovice: Hayır. İmread () ile evet, bir "'" yazarak ve basma sekmesi bir dosya listesini gösterir. Bunu yazdığım bir fonksiyonla denediğimde bu davranışa sahip değilim. - Hannes Ovrén
Nasıl yapılabileceğini görmek için fonksiyonların kaynak koduna bakabilirsiniz. En azından önerdiğin iki işlev için yapabilirsin. - Pablo Rodriguez


Cevaplar:


Dikkat: Desteklenmeyen bilgisayar korsanlığı burada.

Matlab yüklemenizdeki dosya araç kutusuna \ local \ TC.xml bir göz atın. Sekme tamamlama için argüman türü eşleştirmeleri içerdiği görülüyor. (Ben sadece R2009b'de "imread" için Matlab kurulumunu açarak buldum.)

Bu satırın içine ekleniyor <TC> Öğe, argümanlarının her biri için dosya adlarının tamamlanmasını sağlar.

<binding name="importdata"        ctype="FILE"/>

Bu Matlab kurulumunu yerinde değiştirmeyi gerektirir. Toolbox / local içindeki diğer dosyalardan bazıları için, classpath.txt gibi, Matlab'ı başlattığınız dizine değiştirilmiş kopyalar yerleştirerek bunları geçersiz kılabilirsiniz, ancak bu benim için TC.xml için çalışmadı.


22
2017-12-04 15:24



Bu oldukça iyi! - Jacob
Vay canına, sert! - Jason S
Bu çözüm, 6 yıl sonra ve R2015b sürümü hala geçerli mi? İçinde olduğu gibi: şimdi bunu yapmak için hack dışı bir yol var mı ve / veya bu şekilde çalışıyor mu? - Adriaan
Bunu yapmak için hala resmi "korsanlık yapmayan bir yol" yoktur, ama burada gör (undocumentedmatlab.com/blog/setting-desktop-tab-completions) biraz daha az hackish yolu (hala ne yazık ki TC.xml yazma erişimini gerektirir). - Elmar Zander


İşlevlerinizi tablonun tamamlandığını eklemek için desteklenen bir yol yoktur, ancak kullandığım bir numara "!" komutun önünde bir sistem komutu gibi ele alınır. Sekme daha sonra dosya yollarını tamamlayacaktır. MATLAB komutum bittiğinde, hattın başlangıcına ev sahipliği yapıyorum, "!" ve enter tuşuna basın.


5
2017-12-04 12:38



@Mike: Evet, sanırım işe yarayabilir. - Jacob


Matlab 2016a ve üstü için:

Matec 2016a'da Tc.xml dosyası mevcut değil. Kullanır .json (Java Script Nesne Notasyonu) dosyası aynıdır. Bunun basit bir örneği aşağıdaki gibi olabilir.

Adında bir Matlab işlev dosyanız olduğunu varsayalım myFunction.m. Ayrıca, bu fonksiyonun uzatma ile dosyalara ihtiyaç duyduğunu varsayalım. .ext giriş olarak ve bu fonksiyon için olası tüm giriş seçeneklerini göstermek için sekme tamamlanmasını istiyorsunuz. Ardından, aşağıdaki içeriği bir dosyaya yazın ve adlandırın. functionSignatures.json.

{
"myFunction":
{
  "inputs":
  [
    {"name":"filename", "kind":"required", "type":"filepath=*.ext" }
  ]
}
}

Bu dosyayı aynı dizine yerleştirin myFunction.m dosya. Şimdi, Matlab'ı yeniden başlat.

Bu dosyanın yaptığı: Fonksiyon girişine yazarken, sekme tuşuna basıldığında, uzantıya sahip dosyaların bir listesini görürsünüz. .ext haşhaş Uzantılarından bağımsız olarak tüm dosyaların sekme tamamlama açılır penceresinde gösterilmesini istiyorsanız, değiştirin "type":"filepath=*.ext" ile "type":"filepath" dosyanın içinde functionSignatures.json.

Kaynak : https://www.mathworks.com/matlabcentral/answers/306157-how-to-configure-tab-completion-for-my-function-in-matlab-2016#answer_237857


3
2018-01-19 15:54



Sadece vurgulamak için, Matlab'ın yeniden başlatılması yeni bir .json dosyası oluşturulduğunda önemlidir - onsuz Matlab onu görmeyecektir. - scrutari