diff --git a/src/ce_common.pas b/src/ce_common.pas index 1dd50b38..3fb660e8 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -81,6 +81,7 @@ type function length: integer; function toIntNoExcept(default: integer = -1): integer; function toInt: integer; + function normalizePath: string; end; (** @@ -446,6 +447,11 @@ begin exit(StrToIntDef(self, default)); end; +function TStringHelper.normalizePath: string; +begin + exit(TrimFilename(self)); +end; + procedure TProcessEx.Assign(value: TPersistent); var src: TProcess; diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 2063067d..0ed15f12 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -857,7 +857,7 @@ begin begin fTokList.Clear; lex(fDoc.Text, fTokList, nil); - fTokList.saveToFile(FileName); + fTokList.saveToFile(FileName.normalizePath); fTokList.Clear; end; finally @@ -923,7 +923,7 @@ begin fTokList.Clear; lex(fDoc.Text, fTokList, nil, [lxoNoComments]); getImports(fTOkList, str); - str.SaveToFile(filename); + str.SaveToFile(filename.normalizePath); fTokList.Clear; str.Free; end; diff --git a/src/ce_inspectors.pas b/src/ce_inspectors.pas index 7438c73e..839468c1 100644 --- a/src/ce_inspectors.pas +++ b/src/ce_inspectors.pas @@ -188,7 +188,8 @@ begin with TOpenDialog.create(nil) do try InitialDir := GetValue.extractFileName; FileName := GetValue; - if Execute then SetValue(FileName); + if Execute then + SetValue(FileName.normalizePath); finally free; end; diff --git a/src/ce_libmaneditor.pas b/src/ce_libmaneditor.pas index 75ebbde9..12fc8e5f 100644 --- a/src/ce_libmaneditor.pas +++ b/src/ce_libmaneditor.pas @@ -721,7 +721,7 @@ begin try FileName := ini; if Execute then - List.Selected.SubItems[2] := FileName; + List.Selected.SubItems[2] := FileName.normalizePath; finally free; end; @@ -741,6 +741,7 @@ begin filename := ini; if Execute then begin + filename := filename.normalizePath; if not filename.fileExists then List.Selected.SubItems[0] := filename.extractFilePath else diff --git a/src/ce_main.pas b/src/ce_main.pas index 54e6c1bc..2d6394c5 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -2161,6 +2161,7 @@ begin try if Execute then begin + filename := FileName.normalizePath; exp.Highlighter := fDoc.Highlighter; exp.Title := fDoc.fileName; exp.ExportAsText:=true; @@ -2198,9 +2199,6 @@ begin openFile(TMenuItem(Sender).Hint); end; -//TODO-cbugfix: OpenDialogs, double path separator when shortcuts resolved -// i.e when ofNoDereferenceLinks is not set. - procedure TCEMainForm.actFileOpenExecute(Sender: TObject); var fname: string; @@ -2213,7 +2211,7 @@ begin filter := DdiagFilter; if execute then for fname in files do - openFile(fname); + openFile(fname.normalizePath); finally free; end; @@ -2266,7 +2264,7 @@ begin if not fDoc.isTemporary and fDoc.fileName.fileExists then InitialDir := fDoc.fileName.extractFileDir; if execute then - fDoc.saveToFile(filename); + fDoc.saveToFile(filename.normalizePath); finally free; end; @@ -2351,7 +2349,7 @@ begin str := TStringList.create; try str.assign(fDoc.Lines); - str.saveToFile(FileName); + str.saveToFile(FileName.normalizePath); finally str.free; end; @@ -3308,7 +3306,7 @@ begin if fProject.filename.fileExists then InitialDir := fproject.filename.extractFileDir; if execute then - saveProjAs(filename); + saveProjAs(filename.normalizePath); finally Free; end; @@ -3336,10 +3334,12 @@ begin if checkProjectLock then exit; if assigned(fProject) and fProject.modified and - (dlgFileChangeClose(fProject.filename, UnsavedProj) = mrCancel) then exit; + (dlgFileChangeClose(fProject.filename, UnsavedProj) = mrCancel) then + exit; with TOpenDialog.Create(nil) do try - if execute then openProj(filename); + if execute then + openProj(filename.normalizePath); finally Free; end; @@ -3398,6 +3398,7 @@ begin try if execute then begin + filename := filename.normalizePath; fProjectGroup.closeGroup; fProjectGroup.openGroup(filename); fPrjGrpMru.Insert(0, filename); @@ -3414,7 +3415,7 @@ begin if fProjectGroup.groupFilename.fileExists then InitialDir := fProjectGroup.groupFilename.extractFileDir; if execute then - fProjectGroup.saveGroup(filename); + fProjectGroup.saveGroup(filename.normalizePath); finally free; end; diff --git a/src/ce_messages.pas b/src/ce_messages.pas index 0e30fd12..71718821 100644 --- a/src/ce_messages.pas +++ b/src/ce_messages.pas @@ -633,7 +633,7 @@ begin try for itm in List.Items do lst.Add(itm.Text); - lst.SaveToFile(filename); + lst.SaveToFile(filename.normalizePath); finally lst.Free; end; diff --git a/src/ce_projgroup.pas b/src/ce_projgroup.pas index f04aa742..ae4f2a46 100644 --- a/src/ce_projgroup.pas +++ b/src/ce_projgroup.pas @@ -558,9 +558,9 @@ begin exit; for fname in Files do begin - if projectGroup.findProject(fname) <> nil then + if projectGroup.findProject(fname.normalizePath) <> nil then continue; - projectGroup.addItem(fname); + projectGroup.addItem(fname.normalizePath); added := true; end; if added then diff --git a/src/ce_projinspect.pas b/src/ce_projinspect.pas index 48146ddc..5b07740c 100644 --- a/src/ce_projinspect.pas +++ b/src/ce_projinspect.pas @@ -312,7 +312,7 @@ begin begin proj.beginUpdate; for fname in Files do - proj.addSource(fname); + proj.addSource(fname.normalizePath); proj.endUpdate; end; finally