How can you make All types (*.*) the default, when saving
-
@PeterJones said in How can you make All types (*.*) the default, when saving:
I haven’t looked at the code, but if that pulldown is statically generated (in resource files) rather than dynamically generated, it might be hard to add the UDL, which are dynamic.
@Alan-Kilborn - thoughts below keep with your “way Windows functions” sentiment - which is true. This just allows users to pick a default file type that equals . rather than *.txt or *.cpp or …
@guy038 - value your opinion as a “power user” on this sight and already chiming in on this discussion.The list I highlight in my above post dynamically generated and purposefully ignores L_USER (which is the default User Defined Language):
size_t index = 0; for (int i = L_TEXT ; i < nppParam.L_END ; ++i) { str.clear(); if (static_cast<LangType>(i) != L_USER) { int cmdID = nppParam.langTypeToCommandID(static_cast<LangType>(i)); if ((cmdID != -1)) { getNameStrFromCmd(cmdID, str); if (str.length() > 0) { _langList.push_back(LangID_Name(static_cast<LangType>(i), str)); ::SendDlgItemMessage(_hSelf, IDC_COMBO_DEFAULTLANG, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(str.c_str())); if (ndds._lang == i) index = _langList.size() - 1; } } } } ::SendDlgItemMessage(_hSelf, IDC_COMBO_DEFAULTLANG, CB_SETCURSEL, index, 0);
I see your point about confusion why not all custom UDLs would be added - and to me (and probably you and other “power users”) it would be obvious - because those custom UDLs are not in the Notepad++ L_* language ID list and they don’t have a build-in parser, etc. But alas, one fix to help those complaining now will lead to others complaining later.
Still, I wonder if an
if ... else
that identifies L_USER and then instead of ignoring it or adding it with its default name “User Defined Language”, it is added to that combo box as “All Files (.)” or “No Default Type”. Of course the Language menu and the bottom left status bar would still show “User Defined Language”, but maybe that would make it less obvious the two are “tied” together and thus squelch the cries for all custom UDLs to be added to the combo box?Comments, thoughts?
Cheers.
-
…
I experimented and verified the following:In Notepad++ v7.8.9-64bit
- I added
HKEY_CLASSES_ROOT\.xyzzy
with(Default)
=txtfile
, and Windows treated it as a text file, and Notepad++ Save As allowed me to type that extension (even when it’s not in thelangs.xml
list) - I added
HKEY_CLASSES_ROOT\.main
with nothing for(Default)
, and Windows didn’t treat it as a text file, but Notepad++ Save As still allowed me to type that extension - I verified
HKEY_CLASSES_ROOT\.magnify
did not exist, and Notepad++ Save As appended.txt
after the.magnify
that I typed.
I then switched to Microsoft Notepad, with the same three entries in my registry:
- Save As
ms.xyzzy
=> createdms.xyzzy
- Save As
ms.main
=> createdms.main
- Save As
ms.magnify
=>createdms.magnify.txt
So the Notepad++ Save As behaves similarly to Notepad Save As with regard to extensions.
—
PS: picked.magnify
because I saw.mag
just before.main
in the registry, so “magnify” popped into my mind, and I knew that.magnify
didn’t exist - I added
-
@Michael-Vincent said in How can you make All types (*.*) the default, when saving:
Still, I wonder if an if … else that identifies L_USER and then instead of ignoring it or adding it with its default name “User Defined Language”, it is added to that combo box as “All Files (.)” or “No Default Type”
That’s a great idea. Thanks for the research.
If we can convince @Marcel-Abele to submit the Feature Request issue, and you chime in with your notes there, you might be able to convince someone (maybe Scott) to add the
else
to the code you quoted. -
I recently said,
Save As
ms.magnify
=>createdms.magnify.txt
Just to make sure there wasn’t a difference between 3-letter extensions and long-extensions, I also tried
ms.max
(checking that regedit didn’t show a.max
key) in Microsoft Notepad, with Save As Type =Text Documents (*.txt)
, and Windows still added the extra.txt
, naming itms.max.txt
.In Notepad, I also went to Save As Type =
All Files (*.*)
, and typedms.max
, and it saved asms.max
without appending.txt
.In Notepad++, the Text type appended .txt so
blah.txt
becameblah.max.txt
, but withAll Types (*.*)
selected,blah.max
becameblah.max
, no extra extension.In other words, the Microsoft Save / Save As dialog behaves identically with regard to type and extension in Microsoft Notepad as it does in Notepad++.
-
@PeterJones said in How can you make All types (*.*) the default, when saving:
In other words, the Microsoft Save / Save As dialog behaves identically with regard to type and extension in Microsoft Notepad as it does in Notepad++.
I did some basic research (read: not as exhaustive and documented as yours) when this feature first was introduced and I was convinced it behaved like Windows notepad.exe. Glad to see proper documented research that upholds my claim.
Still, I think the (perceived) “issue” is that Notepad++ let’s a user pick the default language from a rather exhaustive list (Windows notepad.exe offers “
*.* or *.txt
”) so there is this assumption (right or wrong) that typing any extension will result in “myfile.anyExtension”, not “myfile.anyExtension.txt”.Of course, your research shows that if Windows knows about the extension - even though Notepad++ doesn’t have it in its language list, the assumption proves correct. If however Windows doesn’t know about it (maybe you’re creating your own user-defined file type, maybe you don’t have the program whose file you’re editing installed in your Windows so the filetype was not registered, whatever …) then the assumption proves wrong.
It seems with Notepad++ set to
*.*
then any extension typed, whether Windows knows about it or not results in “myfile.anyExtension” - so making the option to set*.*
as the default would “fix” the (perceived) “issue”. The current combo box just doesn’t have that option now and the easiest way to add it is with L_USER (User Defined Language), but I see the unintended consequences that may arise.Cheers.
-
@Michael-Vincent said in How can you make All types (*.*) the default, when saving:
so making the option to set . as the default would “fix” the (perceived) “issue”
But then wouldn’t the people that want
.txt
, or whatever fixed/known extension, to be added automatically–when no extension is manually appended by them–start complaining?Perhaps this is a “no win” situation, without the addition of a setting to control it, but I personally find that somewhat distasteful–one more confusing setting – probably would be confusing due to a complicated thing being explained in a short text blurb on the UI).
-
@Alan-Kilborn said in How can you make All types (*.*) the default, when saving:
But then wouldn’t the people that want .txt, or whatever fixed/known extension, to be added automatically–when no extension is manually appended by them
If I understand correctly, any new file saved will default to the extension specified by the first extension option based on what they have selected in the combo box we’re taking about. For me, I have “Normal Text” selected so any “new 1” file I have open and save for the first time as “myfile” (no extension),
.txt
is automatically appended for me. If I save as “myfile.xyzzy” (unknown brand new extension) then I get “myfile.xyzzy.txt” which is what the OP was asking about. Letting a user select “No Default Type” from that pull down would result in my examples:myfile => myfile
myfile.xyzzy => myfile.xyzzySelecting the default of Normal Text would result in:
myfile => myfile.txt
myfile.xyzzy => myfile.xyzzy.txtI won’t argue either is right - they both behave according to Windows default Save As behavior as @PeterJones shows above. My proposal just gives users the option to select
*.*
as the default new document type if that’s the way they want to operate.Cheers.
-
FWIW (probably nothing), I noticed that if you do a Rename… operation on a file, the Save as type: box seems to always be set to
All types (*.*)
when the Save As box appears. -
I just updated my Notepad++ on my Windows 10 laptop and hit this issue. Why is this issue? Because I use NppFTP to edit files on a lot of linux hosts. Now when I save files to my hosts after editing it applies useless .txt extension to all files.
-
Did you try any of the workarounds mentioned above? Because for the near future (until someone makes an official feature request, and the developers decide to implement and release it), your choices are to use one of those workarounds or downgrade to an earlier Notepad++.
If the workarounds don’t work for you, please explain exactly what you did, and we’ll try to help you get it working.
-
This post is deleted! -
@PeterJones Respectfully, if there was simply an option to choose “no extension” or “. All file types” in settings, this would be much, much less frustrating.
I understand that some, maybe even a majority may want “*.txt” as their default, but it should be far simpler for those of us who want no extension as their default. In any case, thanks for listening.
-
-
Respectfully, I called them workarounds, which implicitly acknowledges it might not be the best way to implement it, but it was the only way available at the time.
The good news is that someone did follow my advice, and put in the feature request; moreover, that feature has been implemented, and the version with it implemented has been released: v7.9.1. If you want that feature, install the new version.
-
@Alan-Kilborn That helped immensely. Thank you thank you thank you thank you!!!
-
Well, I didn’t do the work to make it happen, just pointed it out!
That part was very easy.
Praise to the developers, who do the hard parts!
:-) -
Thanks to the developers about this additional tick-box.
Much appreciated. -
I deployed 7.9.1 to our users yesterday, but they are still unhappy, as the new checkbox only returns the old behavior partly.
Without the checkbox enabled, and new file you “Save as” and an edited file you “save as” suggests you to save as .txt.
With the old notepad++ versions it was for new and edited files .
Now with the checkbox it is . for new files, but not for opened files.Example:
We explicitly have the problem, that our users have to edit .STA files (which are just text files with STA as a file ending).
So they open them via right click context menu, edit them and click “save as” and regardless that it’s a STA file, notepad++ 7.9.1 with the new checkbox enabled, always wants to save that file as .txt.
That is a huge problem. -
I didn’t need any of the latest features or fixes so I solved the problem today by overwriting my Notepad++ installation with version 7.8.1. Unfortunately, that does mean that I can’t install any version updates.
What put it over the edge for me was not only the inconvenience of having to scroll up to and pick All file types, but that any time I had a non-.TXT extension (i.e., every file I ever edit!), when I went to “Save as” in another location, or, say as the next file in a sequence (i.e., just change number in file name), it would automatically add the .TXT extension even though A FILE EXTENSION WAS ALREADY PRESENT–and Notepad++ should have been smart enough to understand that. Nor can I begin to count up how many times I accidentally saved PHP source files as something.php.txt and then wondered why something didn’t work.
After a month of tearing my hair out, I gave up and rolled back. Good luck, all, and stay safe in the pandemic! /Peters
-
fyi - just found out that this is already being handled:
https://github.com/notepad-plus-plus/notepad-plus-plus/pull/9328
Thanks to sasumner