mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 23:19:50 +02:00
IDE: fixed save package as when mainunit is custom unit
git-svn-id: trunk@27488 -
This commit is contained in:
parent
cc80ae5460
commit
766f240486
@ -1,51 +1,43 @@
|
|||||||
{ $Id$ }
|
{ This file was automatically created by Lazarus. Do not edit!
|
||||||
{
|
This source is only used to compile and install the package.
|
||||||
/***************************************************************************
|
}
|
||||||
allsyneditunits.pp
|
|
||||||
|
|
||||||
dummy unit to compile all units
|
unit allsyneditunits;
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
}
|
|
||||||
unit AllSynEditUnits;
|
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
SynTextDrawer, SynEditKeyCmds, SynEditTypes, SynEditStrConst,
|
SynBeautifier, SynCompletion, SynDesignStringConstants, SynEdit,
|
||||||
SynEditSearch, SynEditMiscProcs, SynEditmiscClasses, SynEditTextbuffer,
|
SynEditAutoComplete, SynEditExport, SynEditFoldedView, SynEditHighlighter,
|
||||||
SynEdit, SynCompletion, SynEditAutoComplete,
|
SynEditHighlighterFoldBase, SynEditHighlighterXMLBase, SynEditKeyCmds,
|
||||||
SynEditLazDsgn, SynRegExpr, SynEditRegexSearch, SynEditExport,
|
SynEditLazDsgn, SynEditLines, SynEditMarks, SynEditMarkup,
|
||||||
SynExportHTML, SynMemo, SynMacroRecorder, SynEditPlugins,
|
SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll,
|
||||||
SynPluginSyncronizedEditBase, SynPluginTemplateEdit, SynPluginSyncroEdit,
|
SynEditMarkupSelection, SynEditMarkupSpecialLine, SynEditMarkupWordGroup,
|
||||||
SynEditHighlighter, SynEditHighlighterFoldBase, SynEditHighlighterXMLBase,
|
SynEditMiscClasses, SynEditMiscProcs, SynEditMouseCmds, SynEditPlugins,
|
||||||
SynHighlighterAny,
|
SynEditPointClasses, SynEditRegexSearch, SynEditSearch, SynEditStrConst,
|
||||||
SynhighlighterCPP,
|
SynEditTextBase, SynEditTextBuffer, SynEditTextDoubleWidthChars,
|
||||||
SynHighlighterCss,
|
SynEditTextTabExpander, SynEditTextTrimmer, SynEditTypes, SynExportHTML,
|
||||||
SynHighlighterHashEntries,
|
SynGutter, SynGutterBase, SynGutterChanges, SynGutterCodeFolding,
|
||||||
SynhighlighterHTML,
|
SynGutterLineNumber, SynGutterLineOverview, SynGutterMarks,
|
||||||
SynHighlighterJava,
|
SynHighlighterAny, SynHighlighterCpp, SynHighlighterCss, SynHighlighterDiff,
|
||||||
SynHighlighterJScript,
|
SynHighlighterHashEntries, SynHighlighterHTML, SynHighlighterJava,
|
||||||
SynHighlighterLFM,
|
SynHighlighterJScript, SynHighlighterLFM, SynHighlighterMulti,
|
||||||
SynHighlighterMulti,
|
SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP,
|
||||||
SynHighlighterPas,
|
SynHighlighterPosition, SynHighlighterPython, SynHighlighterSQL,
|
||||||
SynHighlighterPerl,
|
SynHighlighterTeX, synhighlighterunixshellscript, SynHighlighterVB,
|
||||||
SynHighlighterPHP,
|
SynHighlighterXML, SynMacroRecorder, SynMemo, SynPluginSyncroEdit,
|
||||||
SynHighlighterPosition,
|
SynPluginSyncronizedEditBase, SynPluginTemplateEdit,
|
||||||
SynHighlighterPython,
|
SynPropertyEditObjectList, SynRegExpr, SynTextDrawer, LazarusPackageIntf;
|
||||||
SynHighlighterSQL,
|
|
||||||
SynHighlighterTeX,
|
|
||||||
SynHighlighterUNIXShellScript,
|
|
||||||
SynHighlighterVB,
|
|
||||||
SynHighlighterXML,
|
|
||||||
SynHighlighterDiff,
|
|
||||||
SynGutter, SynGutterChanges, SynGutterCodeFolding, SynGutterLineNumber,
|
|
||||||
SynGutterMarks, SynGutterLineOverview,
|
|
||||||
SynPropertyEditObjectList, SynDesignStringConstants;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
end.
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterUnit('SynEdit', @SynEdit.Register);
|
||||||
|
RegisterUnit('synhighlighterunixshellscript', @synhighlighterunixshellscript.
|
||||||
|
Register);
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
RegisterPackage('synedit1', @Register);
|
||||||
|
end.
|
||||||
|
@ -702,6 +702,7 @@ type
|
|||||||
procedure MoveFile(CurIndex, NewIndex: integer);
|
procedure MoveFile(CurIndex, NewIndex: integer);
|
||||||
procedure SortFiles;
|
procedure SortFiles;
|
||||||
function FixFilesCaseSensitivity: boolean;
|
function FixFilesCaseSensitivity: boolean;
|
||||||
|
function MainUnitHasPkgName: boolean;
|
||||||
// required dependencies (plus removed required dependencies)
|
// required dependencies (plus removed required dependencies)
|
||||||
function FindDependencyByName(const PkgName: string): TPkgDependency;
|
function FindDependencyByName(const PkgName: string): TPkgDependency;
|
||||||
function RequiredDepByIndex(Index: integer): TPkgDependency;
|
function RequiredDepByIndex(Index: integer): TPkgDependency;
|
||||||
@ -3234,6 +3235,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TLazPackage.MainUnitHasPkgName: boolean;
|
||||||
|
begin
|
||||||
|
Result:=(MainUnit=nil) or (SysUtils.CompareText(MainUnit.Unit_Name,Name)=0);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLazPackage.RemoveRemovedDependency(Dependency: TPkgDependency);
|
procedure TLazPackage.RemoveRemovedDependency(Dependency: TPkgDependency);
|
||||||
begin
|
begin
|
||||||
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
Dependency.RemoveFromList(FFirstRemovedDependency,pdlRequires);
|
||||||
|
@ -1156,6 +1156,7 @@ var
|
|||||||
BrokenDependencies: TFPList;
|
BrokenDependencies: TFPList;
|
||||||
RenameDependencies: Boolean;
|
RenameDependencies: Boolean;
|
||||||
OldPkgName: String;
|
OldPkgName: String;
|
||||||
|
NewMainUnitFileName: String;
|
||||||
|
|
||||||
procedure RenamePackageInProject;
|
procedure RenamePackageInProject;
|
||||||
var
|
var
|
||||||
@ -1203,6 +1204,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
NewFileName:=CleanAndExpandFilename(SaveDialog.Filename);
|
NewFileName:=CleanAndExpandFilename(SaveDialog.Filename);
|
||||||
NewPkgName:=ExtractFileNameOnly(NewFilename);
|
NewPkgName:=ExtractFileNameOnly(NewFilename);
|
||||||
|
if APackage.MainUnitHasPkgName then
|
||||||
|
NewMainUnitFileName:=ChangeFileExt(NewFileName,'.pas')
|
||||||
|
else
|
||||||
|
NewMainUnitFileName:='';
|
||||||
|
|
||||||
// check file extension
|
// check file extension
|
||||||
if ExtractFileExt(NewFilename)='' then begin
|
if ExtractFileExt(NewFilename)='' then begin
|
||||||
@ -1245,15 +1250,18 @@ begin
|
|||||||
if EnvironmentOptions.CharcaseFileAction = ccfaAutoRename then NewFileName:=LowerFilename;
|
if EnvironmentOptions.CharcaseFileAction = ccfaAutoRename then NewFileName:=LowerFilename;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// check unit name conflict
|
// check unit name conflict
|
||||||
PkgFile:=APackage.FindUnit(NewPkgName);
|
if NewMainUnitFileName<>'' then
|
||||||
if PkgFile<>nil then begin
|
begin
|
||||||
Result:=IDEMessageDialog(lisNameConflict,
|
PkgFile:=APackage.FindUnit(NewPkgName);
|
||||||
lisThePackageAlreadyContainsAUnitWithThisName,
|
if PkgFile<>nil then begin
|
||||||
mtWarning,[mbRetry,mbAbort]);
|
Result:=IDEMessageDialog(lisNameConflict,
|
||||||
if Result=mrAbort then exit;
|
lisThePackageAlreadyContainsAUnitWithThisName,
|
||||||
continue; // try again
|
mtWarning,[mbRetry,mbAbort]);
|
||||||
|
if Result=mrAbort then exit;
|
||||||
|
continue; // try again
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// check package name conflict
|
// check package name conflict
|
||||||
@ -1269,7 +1277,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// check file name conflict with project
|
// check file name conflict with project
|
||||||
if Project1.ProjectUnitWithFilename(NewFilename)<>nil then begin
|
if (NewMainUnitFileName<>'')
|
||||||
|
and (Project1.ProjectUnitWithFilename(NewMainUnitFileName)<>nil) then begin
|
||||||
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByProject,
|
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByProject,
|
||||||
Format(lisPkgMangTheFileNameIsPartOfTheCurrentProject, ['"',
|
Format(lisPkgMangTheFileNameIsPartOfTheCurrentProject, ['"',
|
||||||
NewFilename, '"', #13]),
|
NewFilename, '"', #13]),
|
||||||
@ -1279,17 +1288,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// check file name conflicts with files in other packages
|
// check file name conflicts with files in other packages
|
||||||
PkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,false);
|
if (NewMainUnitFileName<>'') then
|
||||||
if PkgFile<>nil then begin
|
begin
|
||||||
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByOtherPackage,
|
PkgFile:=PackageGraph.FindFileInAllPackages(NewMainUnitFileName,true,false);
|
||||||
Format(lisPkgMangTheFileNameIsUsedByThePackageInFile, ['"',
|
if PkgFile<>nil then begin
|
||||||
NewFilename, '"', #13, '"', PkgFile.LazPackage.IDAsString, '"',
|
Result:=IDEMessageDialog(lisPkgMangFilenameIsUsedByOtherPackage,
|
||||||
#13, '"', PkgFile.LazPackage.Filename, '"']),
|
Format(lisPkgMangTheFileNameIsUsedByThePackageInFile, ['"',
|
||||||
mtWarning,[mbRetry,mbAbort]);
|
NewFilename, '"', #13, '"', PkgFile.LazPackage.IDAsString, '"',
|
||||||
if Result=mrAbort then exit;
|
#13, '"', PkgFile.LazPackage.Filename, '"']),
|
||||||
continue; // try again
|
mtWarning,[mbRetry,mbAbort]);
|
||||||
|
if Result=mrAbort then exit;
|
||||||
|
continue; // try again
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// check for broken dependencies
|
// check for broken dependencies
|
||||||
BrokenDependencies:=PackageGraph.GetBrokenDependenciesWhenChangingPkgID(
|
BrokenDependencies:=PackageGraph.GetBrokenDependenciesWhenChangingPkgID(
|
||||||
APackage,NewPkgName,APackage.Version);
|
APackage,NewPkgName,APackage.Version);
|
||||||
@ -1307,14 +1319,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// check existing file
|
// check existing file
|
||||||
if (CompareFilenames(NewFileName,OldPkgFilename)<>0)
|
if (CompareFilenames(NewFileName,OldPkgFilename)<>0) then
|
||||||
and FileExistsUTF8(NewFileName) then begin
|
begin
|
||||||
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
|
if FileExistsUTF8(NewFileName) then begin
|
||||||
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
|
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
|
||||||
mtConfirmation,[mbOk,mbCancel]);
|
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
|
||||||
if Result<>mrOk then exit;
|
mtConfirmation,[mbOk,mbCancel]);
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
end;
|
||||||
|
if FileExistsUTF8(NewMainUnitFileName) then
|
||||||
|
begin
|
||||||
|
Result:=IDEMessageDialog(lisPkgMangReplaceFile,
|
||||||
|
Format(lisPkgMangReplaceExistingFile, ['"', NewFilename, '"']),
|
||||||
|
mtConfirmation,[mbOk,mbCancel]);
|
||||||
|
if Result<>mrOk then exit;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// check if new file is read/writable
|
// check if new file is read/writable
|
||||||
Result:=CheckCreatingFile(NewFileName,true);
|
Result:=CheckCreatingFile(NewFileName,true);
|
||||||
if Result=mrAbort then exit;
|
if Result=mrAbort then exit;
|
||||||
|
Loading…
Reference in New Issue
Block a user