NppExec v0.6.2 has been released!
-
NppExec v0.6.2:
- changed: now NppExec uses CreateFile+FILE_FLAG_WRITE_THROUGH while writing
files to avoid filling with zero bytes on system shutdown. - changed: now NppExec changes the current directory to %TEMP% when an unnamed
file (such as “new 1”) is activated and “Follow $(CURRENT_DIRECTORY)” is on.
To revert to the old behavior (the current directory is not changed when an
unnamed file is activated), set the manual option “Cd_UnnamedFile” to 0.
- added: now NppExec supports “cloud location path” in Notepad++'s settings.
With cloud location path specified in Notepad++'s settings, NppExec does
the following:- On start, NppExec tries to read its configuration files from the cloud
location path. If these files do not exist or are filled with NULs,
NppExec reads its configuration from $(PLUGINS_CONFIG_DIR). - When NppExec saves its configuration files, first they are saved to
$(PLUGINS_CONFIG_DIR) and then copied to the cloud location path. Thus,
NppExec always has copies of its current configuration files within the
$(PLUGINS_CONFIG_DIR) folder. - NppExec’s saved scripts - the “npes_saved.txt” file - are monitored in
the cloud location path. So, if you manually edit the “npes_saved.txt”
within the cloud location, NppExec detects it. If, however, you manually
edit the “npes_saved.txt” within the $(PLUGINS_CONFIG_DIR) folder, it is
ignored.
When the cloud location path is not specified in Notepad++'s settings,
NppExec reads and stores its configuration within $(PLUGINS_CONFIG_DIR).
And the “npes_saved.txt” is monitored in that folder.
- On start, NppExec tries to read its configuration files from the cloud
- added: $(NPP_FULL_FILE_PATH), $(CLOUD_LOCATION_PATH)
- added: indirect variable reference, e.g. $($(name)). Examples:
set local c = 123 // $(c) = 123
set local b = c // $(b) = c
set local a = $($(b)) // $(a) = $($(b)) = $(c) = 123
set local $($(b)) = 456 // $(c) = 456
unset local $($(b)) // deletes $(c)
set local i = # // $(i) = #
set local j = 1 // $(j) = 1
echo $($(i)$(j)) // echo $(#1)
- changed: now the variables $(ARGC), $(ARGV), $(ARGV[1]) and so on support
the indirect variable reference (see above)
- added: Ctrl+Break in the Console aborts the currently running script
As always, get it either here:
https://github.com/d0vgan/nppexec/releases/tag/v062
or here:
https://sourceforge.net/projects/npp-plugins/files/NppExec/NppExec Plugin v0.6.2/Have fun!
- changed: now NppExec uses CreateFile+FILE_FLAG_WRITE_THROUGH while writing
-
@Vitaliy-Dovgan said in NppExec v0.6.2 has been released!:
NppExec v0.6.2:
Already installed and experimenting. I like the indirect variable references - probably need to relook at some of my scripts - I know that would have come in handy in the past.
Thanks for continued support of this great plugin!
Cheers.
-
Hello, @vitaliy-dovgan and All,
As administrator, I took the liberty to modify slightly your post, because of a side-effect of the
Markdown
syntax !Indeed, when you write :
set local c = 123 // $(c) = 123
we get this sentence:
set local c = 123 // $© = 123
And so, I modified this sentence, and the other ones containing
$(c)
, with :set local c = 123 // $\(c\) = 123
which correctly displays :
set local c = 123 // $(c) = 123
Many thanks for your continued support and enhancements of this main N++ plugin !
Best Regards,
guy038
-
Maybe not possible, maybe an enhancement if not - can I get the return “value” of an NppExec script? I see I can get the exit status:
$(LAST_CMD_RESULT) : result of the last NppExec's command (1 - succeeded, 0 - failed, -1 - invalid arg)
It would be incredible if I could run an NppExec script as a “subroutine” for input to another:
SET LOCAL RESULT = NPP_EXEC my_script
My thought would be to create a
getopt
-like script similar to:::getopt SET LOCAL START = 0 SET LOCAL END ~ $(ARGC) - 1 IF $(START)==$(END) GOTO END :LOOP ECHO $(ARGV[$(START)]) SET LOCAL START ~ $(START) + 1 IF $(START)<=$(END) GOTO LOOP :END
Instead of
ECHO
, I could concat the args into a variable and return that - just thinking about uses for the new indirect variable reference expansion.Cheers.
-
@Michael-Vincent
If I understand the idea correctly, the same goal can be achieved by setting a non-local variable within a script. E.g.set x = 1 set s = abc ded
will make these variables available everywhere (inside a script, outside a script, inside other scripts) until
unset
is called for them. -
@Vitaliy-Dovgan said in NppExec v0.6.2 has been released!:
achieved by setting a non-local variable within a script
I hadn’t considered that but yes, that would do it.
NPP_EXEC
returns to where it was called acting like a subroutine call and we can useSET
(notLOCAL
) to store the return value.Thanks for that!
Cheers.