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

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

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

我怎样才能将其默认设置为“.txt”?

这可能是 Windows 的问题,因为我确信它只是使用默认的 Windows 文件打开对话框,但其他程序(textpad、notepad)能够将其设置为默认。

答案1

我刚刚完成了 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);

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

fDlg._ofn.nFilterIndex = 2L;
fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);

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


另一种快速修复此问题的简单方法是修改这些行(再次,在NppIO.cpp)使其看起来像这样:

fDlg.setExtFilter(TEXT("Text files"), TEXT(".txt"),
                  TEXT("All types"),  TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);

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

答案2

对于程序员来说,编写代码当然是可能的,但是一旦设置好了就无法改变它了。很抱歉。

答案3

默认情况下,您无法以正常方式更改该“功能”。

一种解决方案是更改程序二进制文件,进行一些代码更改(如果代码是开放的并且您有这样做的许可),然后重新编译它以生成不同的程序二进制文件,或者使用十六进制编辑器或已创建的补丁更改一些文件来“破解”二进制文件。另一种解决方案是以某种方式更改默认的 Windows 文件对话框。

你可以试试那个软件,应该使用第二种解决方案:文件扩展

有了它,您可以添加一些功能来打开和保存对话框并记住所选的过滤器。尝试一下,如果它对您有用,请发布。

相关内容