如何让 Notepad++ 使用“.txt”文件作为默认的打开文件对话框过滤器?

cor*_*iKa 6 notepad++

当我在 NPP 中打开文件时,文件类型默认为“所有类型 ( . )”。

如何将此默认设置为“.txt”?

它可能是 Windows 的事情,因为我确定它只使用默认的 Windows 文件打开对话框,但其他程序(文本板、记事本)能够默认它。

Bre*_*ugh 4

我刚刚审查完 NPP 源代码,如果您想为自己寻求解决方案,我还提供了一些其他详细信息。当您转到“文件”->“打开”时,将从 Scintilla (SciLexer.dll) 文件加载文件扩展名列表。

现在,当您转到“文件”->“打开”时,void Notepad_plus::fileOpen()将调用该函数(在NppIO.cpp文件中)。最初,All Types, *.*过滤器被添加到过滤器列表中,然后int Notepad_plus::setFileOpenSaveDlgFilters(FileDialog & fDlg, int langType)调用该函数(在同一文件中)。该函数遍历我上面提到的 Scintilla 条目,并将它们添加到传递的FileDialog过滤器列表中。中的代码FileOpen如下所示:

fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
Run Code Online (Sandbox Code Playgroud)

您可以更改默认过滤器索引。为此,您可以将这些行更改为:

fDlg._ofn.nFilterIndex = 2L;
fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
Run Code Online (Sandbox Code Playgroud)

默认情况下,这应该将过滤器索引设置为第二个。


快速解决此问题的另一种简单方法是将这些行(再次在 中NppIO.cpp)修改为如下所示:

fDlg.setExtFilter(TEXT("Text files"), TEXT(".txt"),
                  TEXT("All types"),  TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);
Run Code Online (Sandbox Code Playgroud)

这将确保文本文件是列表中的第一个过滤器。请注意,这将导致 .txt 扩展名在条目中被双重定义,但如果您可以接受该警告,那么这应该可以正常工作。