2016-03-28 20 views
0

Haskell dosyalarını derlemek için bir bina sistemi oluşturmak istiyorum; geçerli dosyayı bir ST penceresinde çalıştıran ortak "CTRL + B" kısayolunu değiştirmek istemediğimi unutmayın.yüce metin 3: çalışma nasıl bir haskell yapı sistemi?

yüzden this messages sonrasında bu dosyayı, dizininde yer alan "/ opt/sublime_text" oluşturuldu:

: o zaman

import sublime, sublime_plugin 

class MakeHaskellCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     self.view.window().run_command('exec', {"working_dir":"${project_path:${folder}}",'cmd': ["ghc","$file"]}) 

, ben yüce-haskell paketinin bağlayıcı kullanıcı anahtarını modifiye

[ 
    { 
     "keys": ["f1"], 
     "context": [ 
      { "key": "haskell_source" }, 
      { "key": "scanned_source" } ], 
     "command": "MakeHaskellCommand" 
    } 
] 

ancak ST yeniden başlatıldıktan sonra, FN + F1 tuşlarına bastığımda hiçbir şey olmuyor.

Yardımcı olabilir misiniz?

EDIT İlk mesajınız için teşekkürler! Çalışıyor, ancak şimdi başka bir sorunum var: Kaynak dosya ve ikili dışındaki dizindeki tüm dosyaları silmek istiyorum. Bu eklenti başlatabilirsiniz:

import sublime 
import sublime_plugin 


class MakeHaskell2Command(sublime_plugin.WindowCommand): 
    def run(self): 
     variables = self.window.extract_variables() 
     args = sublime.expand_variables({ 
      "working_dir": "${project_path:${file_path}}", 
      "cmd": ["rm", "*.hi"], 
      "cmd": ["rm", "*.o"] 
     }, variables) 
     self.window.run_command('exec', args) 

ama dosyaları kaldırmaz. Bunun için bana tekrar yardım edebilir misin?

cevap

1

Sadece birkaç puan: örneğin Paketleri, alt klasörlerine

  1. oluşturabilir eklentileri klavye haritası içinde
  2. komut isimleri
  3. elimden biten Command ile snake_case edilir Kullanıcı klasör Sen
  4. Sen f1 değil fn+f1
  5. exec komutu baskı yapması gerektiğini inşa sistemleri için bir TextCommand yerine WindowCommand kullanmalıdır senin davranış basın Tools >>> New Plugin... oluşturmak için değişkenleri

genişletmek değil, yapıştırma ve kaydedin:

import sublime 
import sublime_plugin 


class MakeHaskellCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     variables = self.window.extract_variables() 
     args = sublime.expand_variables({ 
      "working_dir": "${project_path:${file_path}}", 
      "cmd": ["ghc", "$file"] 
     }, variables) 
     self.window.run_command('exec', args) 

Ardından da tuş eşleşmesini açıp keybinding ekleyin:

{ 
    "keys": ["f1"], 
    "command": "make_haskell", 
    "context": 
    [ 
     { "key": "selector", "operator": "equal", "operand": "source.haskell" } 
    ] 
}, 

Edit: Eğer kabuk rm komutunu kullanarak sonradan temizlik yapmak istiyorum , o zaman yerine cmd ait shell_cmd kullanmalıdır. (execshell_cmd bir dizi (why) için bir dize ve cmd olduğu kabul) Biraz daha sonra temizleme için eklenti modifiye:

import sublime 
import sublime_plugin 


class MakeHaskellCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     variables = self.window.extract_variables() 
     args = sublime.expand_variables({ 
      "working_dir": "$file_path", 
      "shell_cmd": "ghc $file && rm $file_base_name.o $file_base_name.hi" 
     }, variables) 
     self.window.run_command('exec', args) 
İlgili konular