2015-08-11 26 views
9

Nie dotyczy to tych plików, które mają ustawioną flagę tylko do odczytu na poziomie systemu operacyjnego, ale każdego pliku, który użytkownicy nie zamierzają modyfikować. Po prostu chcę wysublimowanego tekstu do zignorować wszelkie zmiany i zapobiec zapisywaniu czegokolwiek do takich plików. Jednym z przykładów tego scenariusza jest, gdy użytkownik czyta kod źródłowy, który i tak nie powinien zostać zmieniony.Czy Sublime Text 2 ma tryb tylko do odczytu?

"Tylko bądź ostrożny i nie naciskaj żadnych przycisków" to niewątpliwie dobra rada, ale gdybym miał "przypadkowo" (< - notowania lotnicze), usuń ten octothorpe przed komentarzem lub dodaj nowy linie do pliku, który jest wrażliwy na takie rzeczy (niektóre pliki konfiguracyjne w systemie Linux), a następnie przez trafienie Zapisz ...

Znalazłem this plugin na github, ale tak naprawdę przełączam uprawnienia do plików (tylko do odczytu, zapisu) - Nie do końca to, co chciałem.

Odpowiedz

6

Tak, jest to możliwe, ale musisz napisać wtyczkę (co w rzeczywistości nie jest takie trudne, szczególnie jeśli znasz Python). Wywołanie API to view.set_read_only(flag) w module sublime, gdzie Flag jest boolowskie. Oto krótki przykład, który sprawdza, czy nowo otwarty plik ma pewien sufiks, a jeśli tak, ustawia go tylko do odczytu.

import sublime 
import sublime_plugin 


class MakeViewReadOnlyCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     if self.view.file_name().endswith(".cfg"): 
      self.view.set_read_only(True) 


class ConfigFileListener(sublime_plugin.EventListener): 
    def on_load(self, view): 
     view.run_command("make_view_read_only") 

Otwórz nowy plik ze składnią Pythona, skopiuj kod do niego, zmieniać je w zależności od potrzeb, a następnie zapisać go w katalogu Packages/User jak make_view_read_only.py. Zrestartuj Sublime, aby go wczytać, i powinieneś wszystko ustawić. Aby sprawdzić, czy dany pogląd jest tylko do odczytu, otwórz konsolę i wpisz

view.is_read_only() 
+0

+1 Brilliant. Znam trochę pythona i muszę przeczytać jego dokumentację API, aby ręcznie utworzyć wtyczkę. Czy byłoby możliwe dodanie "trybu tylko do odczytu" w menu kontekstowym edytora dla wszystkich typów plików? –

+0

@RenaeLider tak, jest to możliwe. Skoro jest to poza zakresem tego oryginalnego pytania, po prostu zadaj nowe pytanie i odnieś się do tego - jeśli zrobisz to w ciągu najbliższych 24 godzin, będę w stanie odpowiedzieć na to pytanie (wybieram się w piątek na wakacje). – MattDMo

+0

Czy OP faktycznie zadał takie pytanie? Byłoby miło z linkiem z tej kontroli jakości, nie można go znaleźć. – emilBeBri

0

Wtyczka Toggle the View Read-Only powinien to zrobić. Zasadniczo wystarczy to, co powiedział MattDMo: po ustawieniu widoku jako tylko do odczytu, plik może nadal być zmieniany przez inny program (lub innego użytkownika), a Sublime Text odbierze te zmiany. Ma również element menu kontekstowego, o który prosiłeś. Podoba mi się wskaźnik "Tylko do odczytu" na pasku stanu.

Nie przetestowałem go na Sublime Text 2, ale w Sublime Text 3 działa świetnie i twierdzi, że działa również na Sublime Text 2.