예제 #1
0
        private async Task <BackupMetadata> SaveLastSavedChangesAsync(ITextEditor textEditor)
        {
            TextFile    snapshot = textEditor.LastSavedSnapshot;
            StorageFile backupFile;

            try
            {
                backupFile = await SessionUtility.CreateNewBackupFileAsync(textEditor.Id.ToString("N") + "-LastSaved");

                await FileSystemUtility.WriteToFile(LineEndingUtility.ApplyLineEnding(snapshot.Content, snapshot.LineEnding), snapshot.Encoding, backupFile);
            }
            catch (Exception ex)
            {
                LoggingService.LogError($"Failed to save backup file: {ex.Message}");
                return(null);
            }

            return(new BackupMetadata
            {
                BackupFilePath = backupFile.Path,
                Encoding = snapshot.Encoding,
                LineEnding = snapshot.LineEnding,
                DateModified = snapshot.DateModifiedFileTime
            });
        }
예제 #2
0
        private string TrimTextAndFixLineEnding(string text, LineEnding lineEnding)
        {
            // Trim end \r
            if (!string.IsNullOrEmpty(text) && text[text.Length - 1] == '\r')
            {
                text = text.Substring(0, text.Length - 1);
            }

            return(LineEndingUtility.ApplyLineEnding(text, lineEnding));
        }
예제 #3
0
        //public static string GetTextWithDefaultTabIndentation(string text)
        //{
        //    if (EditorSettingsService.EditorDefaultTabIndents == -1) return text;
        //    var tabStr = new string(' ', EditorSettingsService.EditorDefaultTabIndents);
        //    text = text.Replace("\t", tabStr);
        //    return text;
        //}

        public async Task SaveToFile(StorageFile file)
        {
            Encoding encoding = Encoding ?? new UTF8Encoding(false);
            var      text     = GetText();

            text = LineEndingUtility.ApplyLineEnding(text, LineEnding);
            await FileSystemUtility.WriteToFile(text, encoding, file);

            EditingFile = file;
            Encoding    = encoding;
            Saved       = true;
        }
예제 #4
0
        private async Task <bool> BackupTextAsync(string text, Encoding encoding, LineEnding lineEnding, StorageFile file)
        {
            try
            {
                await FileSystemUtility.WriteToFile(LineEndingUtility.ApplyLineEnding(text, lineEnding), encoding, file);

                return(true);
            }
            catch (Exception ex)
            {
                LoggingService.LogError($"[SessionManager] Failed to save backup file: {ex.Message}");
                return(false);
            }
        }
예제 #5
0
        private async Task <BackupMetadata> SaveLastSavedChangesAsync(TextEditor textEditor)
        {
            TextFile    originalSnapshot = textEditor.OriginalSnapshot;
            StorageFile backupFile;

            try
            {
                backupFile = await SessionUtility.CreateNewBackupFileAsync(textEditor.Id.ToString("N") + "-LastSaved");

                await FileSystemUtility.WriteToFile(LineEndingUtility.ApplyLineEnding(originalSnapshot.Content, originalSnapshot.LineEnding), originalSnapshot.Encoding, backupFile);
            }
            catch
            {
                return(null);
            }

            return(new BackupMetadata
            {
                BackupFilePath = backupFile.Path,
                Encoding = originalSnapshot.Encoding,
                LineEnding = originalSnapshot.LineEnding,
                DateModified = originalSnapshot.DateModifiedFileTime
            });
        }
예제 #6
0
 private string FixLineEnding(string text, LineEnding lineEnding)
 {
     return(LineEndingUtility.ApplyLineEnding(text, lineEnding));
 }