# openLastClosedFile plugin v1.0.1 # # example keybinding: # import sublime, sublimeplugin, os from ctypes import wintypes, windll # portable solution, should work with win2000 and later CSIDL_APPDATA = 26 _SHGetFolderPath = windll.shell32.SHGetFolderPathA _SHGetFolderPath.argtypes = [wintypes.HWND, wintypes.c_int, wintypes.HANDLE, wintypes.DWORD, wintypes.LPCSTR] appdataPath = wintypes.create_string_buffer(wintypes.MAX_PATH) result = _SHGetFolderPath(0, CSIDL_APPDATA, 0, 0, appdataPath) if result <> 0: print "[Error] SHGetFolderPath returned: " + str(result) # we need to be able to load the filenames when command gets called class openLastClosedFileSecure(sublimeplugin.Plugin): def onClose(self, view): # untitled / not saved files have no filename if view.fileName() <> None: file = open(appdataPath.value+"\\sublime text\\Packages\\User\\openLastClosedFile.tmp", 'a') file.writelines(view.fileName()+"\n") file.close() class openLastClosedFileCommand(sublimeplugin.TextCommand): def run(self, view, args): fileName = appdataPath.value+"\\sublime text\\Packages\\User\\openLastClosedFile.tmp" if os.path.isfile(fileName): readFile = open(fileName,"r") lines = readFile.readlines() readFile.close() length = len(lines) if length > 0: lastline = lines[length-1] lastline = lastline.rstrip("\n") view.window().openFile(lastline, 0, 0) writeFile = open(fileName, "w") writeFile.writelines([item for item in lines[0:length-1]]) writeFile.close()