View Issue Details

IDProjectCategoryView StatusLast Update
0004091PluginsAdvanced comparepublic2026-02-15 11:08
ReporterDimonRuses Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status newResolutionopen 
Platformx64OSWindowsOS Version10
Product Version3.0 
Summary0004091: The plugin crashes when comparing files under the cursor (F2).
DescriptionWhen comparing files under the cursor (F2 hotkey), the plugin crashes with an error. The files are exactly the same (I checked with other programs), but they are located in different folders.
The file is called "wizard.script". Attached to this message. I also attached the Far error report. It's in the archive.
TagsAdvCmpEx

Activities

DimonRuses

2026-02-14 18:43

reporter  

bug_report.txt (337,886 bytes)
far.mdmp (535,768 bytes)

DimonRuses

2026-02-14 18:45

reporter   bugnote:0017655

wizard.script (6,956 bytes)   
////////////////////////////////////////////////////////////////////////////////
//
// FLTK project wizard
//
////////////////////////////////////////////////////////////////////////////////

// globals (windows only)
FltkPathRelease    <- _T("$(#fl)");
FltkPathReleaseInc <- _T("$(#fl.include)");
FltkPathReleaseLib <- _T("$(#fl.lib)");
FltkPathReleaseBin <- _T("$(#fl.bin)");
FltkPathDebug      <- _T("$(#fld)");
FltkPathDebugInc   <- _T("$(#fld.include)");
FltkPathDebugLib   <- _T("$(#fld.lib)");
FltkPathDebugBin   <- _T("$(#fld.bin)");
FltkPath <- _T("");

FLTKQuickProject <- true;

function BeginWizard()
{
    local intro_msg = _("Welcome to the new FLTK project wizard!\n\n") +
                      _("This wizard will guide you to create a new project\nusing the FLTK GUI C++ library.\n\n") +
                      _("When you're ready to proceed, please click \"Next\"...");

    // "select fltk project to generate" text
    local fltkprjtype_descr = _("Please select the type of project to generate.");
    local fltkprj_choices = _("Simple main() example;FLUID-based project");

    Wizard.AddInfoPage(_T("FltkIntro"), intro_msg);
    Wizard.AddProjectPathPage();
    if (PLATFORM == PLATFORM_MSW)
    {
        local fltkpath_descr = _("Please select the location of FLTK on your computer.\n") +
                               _("This is the top-level folder where FLTK was installed (unpacked).\n") +
                               _("To help you, this folder must contain the subfolders\n\"include\" and \"lib\".\n\n") +
                               _("You can also use a global variable, p.e. $(#fl)\n");

        Wizard.AddGenericSelectPathPage(_T("FltkPath"), fltkpath_descr, _("Please select FLTK's location:"), FltkPathRelease);
    }

    Wizard.AddGenericSingleChoiceListPage(_T("FLTKPrjType"), fltkprjtype_descr, fltkprj_choices, 0);
    Wizard.AddCompilerPage(_T(""), _T("*"), true, true);
}

////////////////////////////////////////////////////////////////////////////////
// FLTK's path page
////////////////////////////////////////////////////////////////////////////////

function OnLeave_FltkPath(fwd)
{
    if (fwd)
    {
        local dir         = Wizard.GetTextControlValue(_T("txtFolder")); // txtFolder is the text control in GenericSelectPathPage
        local dir_nomacro = VerifyDirectory(dir);

        if (dir_nomacro.IsEmpty())
            return false;

        // verify include dependencies
        local dir_nomacro_inc = GetCompilerIncludeDir(dir, FltkPathRelease, FltkPathReleaseInc);
        if (dir_nomacro_inc.IsEmpty())
            return false;
        if (!VerifyFile(dir_nomacro_inc + wxFILE_SEP_PATH + _T("FL"), _T("Fl.H"), _("FLTK's include")))
        {
            return false;
        }

        // verify library dependencies
        local dir_nomacro_lib = GetCompilerLibDir(dir, FltkPathRelease, FltkPathReleaseLib);
        if (dir_nomacro_lib.IsEmpty())
            return false;
        if (!VerifyLibFile(dir_nomacro_lib, _T("fltk"), _("FLTK's"))) return false;


        FltkPath = dir; // Remember the original selection.

        local is_macro = _T("");

        // try to resolve the include directory as macro
        is_macro = GetCompilerIncludeMacro(dir, FltkPathRelease, FltkPathReleaseInc);
        if (is_macro.IsEmpty())
        {
            // not possible -> use the real inc path we had computed instead
            FltkPathReleaseInc = dir_nomacro_inc;
        }

        // try to resolve the library directory as macro
        is_macro = GetCompilerLibMacro(dir, FltkPathRelease, FltkPathReleaseLib);
        if (is_macro.IsEmpty())
        {
            // not possible -> use the real lib path we had computed instead
            FltkPathReleaseLib = dir_nomacro_lib;
        }
    }
    return true;
}

////////////////////////////////////////////////////////////////////////////////
// Project type to create
////////////////////////////////////////////////////////////////////////////////

function OnLeave_FLTKPrjType(fwd)
{
    if (fwd)
    {
        FLTKQuickProject = Wizard.GetListboxSelection(_T("GenericChoiceList")) == 0;
    }
    return true;
}

// return the files this project contains
function GetFilesDir()
{
    if (FLTKQuickProject)
        return _T("fltk/files");
    return _T("fltk/fluid");
}

// setup the already created project
function SetupProject(project)
{
    if (PLATFORM == PLATFORM_MSW)
    {
        // set project options

        // add link libraries
        project.AddLinkLib(_T("fltk"));
        project.AddLinkLib(_T("ole32"));
        project.AddLinkLib(_T("uuid"));
        project.AddLinkLib(_T("comctl32"));
        project.AddLinkLib(_T("wsock32"));
        project.AddLinkLib(_T("m"));
        project.AddLinkLib(_T("gdi32"));
		project.AddLinkLib(_T("gdiplus"));
        project.AddLinkLib(_T("user32"));
        project.AddLinkLib(_T("kernel32"));
		project.AddLinkLib(_T("winspool"));
		project.AddLinkLib(_T("comdlg32"));

        project.AddCompilerOption(_T("-DWIN32"))
        project.AddCompilerOption(_T("-mms-bitfields"))
    }
    else // PLATFORM != PLATFORM_MSW
    {
        // fltk-config based: things are ultra-simple :)
        project.AddCompilerOption(_T("`fltk-config --cxxflags`"));
        project.AddLinkerOption(_T("`fltk-config --ldstaticflags`"));
    }

    // Debug
    local target = project.GetBuildTarget(Wizard.GetDebugName());
    if (!IsNull(target))
    {
        target.SetTargetType(ttConsoleOnly); // ttConsoleOnly: console for debugging
        target.SetOutputFilename(Wizard.GetDebugOutputDir() + Wizard.GetProjectName() + DOT_EXT_EXECUTABLE);
        if (Wizard.GetCompilerID().Matches(_T("gcc")))
        {
            // enable generation of debugging symbols for target
            // Note: DebugSymbolsOn() won't work because -Wall produces far too many warnings
            target.AddCompilerOption(_T("-g"));
			target.AddIncludeDir(FltkPathDebugInc);
			target.AddLibDir(FltkPathDebugLib);
			target.AddLibDir(FltkPathDebugBin);
        }
    }

    // Release
    target = project.GetBuildTarget(Wizard.GetReleaseName());
    if (!IsNull(target))
    {
        target.SetTargetType(ttExecutable); // ttExecutable: no console
        target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + DOT_EXT_EXECUTABLE);
        if (Wizard.GetCompilerID().Matches(_T("gcc")))
        {
            // enable optimizations for target.
            // Note: OptimizationsOn() won't work because of -I-!
            target.AddCompilerOption(_T("-O2"));
            target.AddCompilerOption(_T("-s"));
			target.AddIncludeDir(FltkPathReleaseInc);
			target.AddLibDir(FltkPathReleaseLib);
			target.AddLibDir(FltkPathReleaseBin);
        }
    }

    return true;
}
wizard.script (6,956 bytes)   

sdindikov

2026-02-14 22:25

developer   bugnote:0017656

Far Group do not support not standart plugin

JohnDoe

2026-02-15 09:49

updater   bugnote:0017657

But it is still maintained on forum.
Try the latest versiom btw https://forum.farmanager.com/viewtopic.php?p=182087#p182087

DimonRuses

2026-02-15 11:08

reporter   bugnote:0017658

Thanks for the tip. I have the latest version. I wrote to the developer on github.
https://github.com/FarPlugins/AdvCmpEx/issues/6

Issue History

Date Modified Username Field Change
2026-02-14 18:43 DimonRuses New Issue
2026-02-14 18:43 DimonRuses Tag Attached: AdvCmpEx
2026-02-14 18:43 DimonRuses File Added: bug_report.txt
2026-02-14 18:43 DimonRuses File Added: far.mdmp
2026-02-14 18:45 DimonRuses Note Added: 0017655
2026-02-14 18:45 DimonRuses File Added: wizard.script
2026-02-14 22:25 sdindikov Note Added: 0017656
2026-02-15 09:49 JohnDoe Note Added: 0017657
2026-02-15 11:08 DimonRuses Note Added: 0017658