2014-12-14 1 views
0

이것은 오래된 버그 일 수 있습니다. 나는 this report을 발견했다. 는 않습니다이 일어날 저장, 나는 숭고한 3을 사용하고 있습니다하지만 난 플러그인 내에서 self.view.run_command('save')를 호출 할 때이 코드는 2Sublime Text Plugin에 저장 한 후 탭/파일 상태 업데이트

에서 작동 생각 - 나는 콘솔 창에서 파일을 입력하고 결과를 볼 수 있습니다. 더러운 깃발이 지워진 것 같습니다. 그러나 파일의 탭에는 파일이 저장되지 않았 음을 나타내는 x 대신 점이 있습니다. 그리고 확실하게, 닫으려고하면 파일을 저장할 것인지 묻습니다.

파일 창이 새로 고쳐 지므로 파일이 저장되었다는 것을 인식하는 방법이 있습니까?

여기 내 플러그인 코드입니다 :이 아마 끔찍한 해킹 확신

# Sublime Text plugin to insert output in the OUTPUT_SHOULD_BE comment 
# Bind to key with: 
# { "keys": ["f12"], "command": "insert_output" }, 
import sublime, sublime_plugin, pprint, os, re 

class InsertOutputCommand(sublime_plugin.TextCommand): 

    def run(self, edit): 
    outfile = self.view.file_name().rsplit('.')[0] + ".out" 
    if not os.path.exists(outfile): 
     sublime.error_message("Not Found: " + outfile) 
     return 
    out_data = open(outfile).read().strip() 
    region = self.view.find(r"/\* OUTPUT_SHOULD_BE\n", 0) 
    if region: 
     self.view.insert(edit, region.end(), out_data) 
     self.view.run_command('save') 
     self.view.window().focus_view(self.view) 
    else: 
     sublime.error_message("Not Found: OUTPUT_SHOULD_BE") 

답변

1

을 (이것은 내 첫 번째 플러그인이 그리 명확 스타일의 문제를 실례이다), 그러나 그것은 작동합니다

self.view.run_command("save") 
# Refresh the buffer and clear the dirty flag: 
sublime.set_timeout(lambda: self.view.run_command("revert"), 10) 

revert 명령은 작업하기 위해 지연되어야하며 파일에 저장된 내용을 다시 가져옵니다. 파일이 디스크에 성공적으로 저장되었으므로이 파일은 이미 화면에 표시된 파일과 같습니다. 이 과정에서 더티 플래그가 지워지고 파일 탭의 점이 x가됩니다.

나에게 매우 해로운 느낌이 들며, 더 적절한 해결책을 원합니다. 그러나 적어도 그것은 추악하거나 불만을 가지고 있습니다.