2012-12-08 24 views
5

Özel bir dil için bir mod ile as uzatmak istiyorum. Anlayabildiğim kadarıyla, genel işlem şu şekildedir:ACE için nasıl bağımsız mod uzantısı oluştururum?

  1. As kaynağı.
  2. Özel diliniz için yeni bir lib/ace/mode/foo.js oluşturun. ACE'yi yeniden oluşturmak için "make build" (veya benzeri) komutunu çalıştırın.
  3. Web sitenizde yeni derlenmiş yapı/src-min-no-cont-çatışma (veya her neyse) ACE dağıtımını kullanın.

Ancak, web sitemde mevcut bir ACE dağıtımını tek başına yeni modumla birlikte kullanmak istiyorum. Yeni modumu oluşturmak için ACE'yi derleme işlemimin bir parçası olarak yeniden oluşturmak zorunda kalmak istemiyorum. Yaptığım işin yakınlığı:

ace.config.setModuleUrl("foo-mode", "./foo.js"); 
session.setMode("foo-mode"); 

Ancak javascript/bağımlılık problemlerine hızla girdim. Örneğin, modumun içinde require("ace/mode/matching_brace_outdent") yapamadım. İlk olarak setMode('ace/mode/c_cpp') numaralı telefonu arayarak geçici olarak hackledim (bir yan ürün olarak eşleşen_brace_outdent modülünü tanımlar). Ama işe yaramış özel bir WorkerClient almaya çalışırken daha da kötüye gittim.

Benim modumu ACE'nin bir parçası olarak oluşturma seçeneğim var mı? Yoksa bir şey mi özlüyorum?

cevap

1

Önceden oluşturulmuş sürümü deneyin.

https://github.com/ajaxorg/ace-builds/releases

diğer dosyaları düzenlemek gerekebilir arayüzünde yeni dilinizi sergilemek isteyen biçimine göre (modları vs. listeleri): hayır çatışma modunda require ile ilgili olarak

0

ace.define("ace/mode/your_module_name", 
     ["require","exports","module","ace/your_other_dependencies"], 
     function(require, exports, module) { 

    // you can use require('...') here 
}); 
: bir modül veya define veya ace.define içindeki modüllerin bir dizi olarak özel modunu tanımlarsanız, sadece fonksiyon ambalajında ​​size sağlanan require kullanmak gerekir, işçiler değil özel modlarında

ace.require'u da kullanabileceğinizi düşünüyorum.

Özel bir çalışanın "manuel olarak oluşturulmasına", ancak this answer'un ardından, relatively slim worker-json.js nolu çekirdeğin çevresine kod kopyalayarak çalışmam gerektiğini düşünüyorum.

İlgili konular