Jump to content

Cannot fix "cannot open" in SciTE au3.properties file


Recommended Posts

I have a au3.properties file that adds a search command to the right click context menu.  This command does a FINDSTR on all .au3 files in the "Program Files" directory.  However, on 32 bit Windows 7 and 8.1 OS's, 32 bit executables are now run from a "Program Files (x86)" directory.

I have a construct that builds a path variable that holds the locations to search.  In this variable, I have both "Program Files" and "Program Files (x86)", as well as a directory that holds my library file.

The constructor looks like this:

findcmd="C:\Windows\System32\Findstr.exe"
myLib="C:\Andy\AutoIT-src\myLib"
where1="C:\Program Files\autoit3\include\*.au3" "C:\Program Files (x86)\autoit3\include\*.au3" $(myLib)\*.au3

Then in the command definition, I use it like this:

#   "Find Definitions"
# Look in the C:\Program Files (x86)\AutoIt3\Include directory for any .au3 file
# that has a definition for the currently selected word (or the word the
# cursor is on)
#
command.name.42.$(au3)=
command.42.$(au3)=$(findcmd) /N /R /I /C:"^global [0-9a-f].* $(CurrentWord) =" $(where1)
command.subsystem.42.$(au3)=0
command.save.before.42.$(au3)=2

The problem is that on 32 bit systems without the "Program Files (x86)" directory, I get this error:
    FINDSTR: Cannot open C:\Program Files (x86)\autoit3\include\*.au3

I think that what I need is an 'if then else' something like this:
 

if exists "C:\Program Files (x86)" then
    where1=""C:\Program Files (x86)" $(myLib)\*.au3
else
    where1=""C:\Program Files" $(myLib)\*.au3
endif

How can I conditionally define the search path?

Link to comment
Share on other sites

  • Developers

What about when you use these enviroment variable: $(ProgramW6432) & $(ProgramFiles) in your properties file? 
I guess one is empty in a x86 system so would return  "".

PS: Don't change au3.properties, but make all changes in SciTEUSer.properties as the override the au3.properties settings and never get lost with an update of the installation.

Jos

 

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

I tried your example, but $(filePath) is replaced by an empty string.  Here's my new code with your suggested changes:
 

myLib=C:\Andy\AutoIT-src\myLib
# where1="C:\Program Files (x86)\autoit3\include\*.au3" $(myLib)\*.au3

Local $filePath
If FileExists("C:\Program Files (x86)") Then
    $filePath="C:\Program Files (x86)\autoit3\include\*.au3"
Els
    $filePath="C:\Program Files\autoit3\include\*.au3"
EndIf

$filePath=$(filepath) $(myLib)"\*.au3"

#  "Find References"
# Look in the C:\Program Files (x86)\AutoIt3\Include directory for any .au3 file
# that has references to the currently selected word (or the word the
# cursor is on)
#
command.name.41.$(au3)=
command.41.$(au3)=$(findcmd) /N /I /C:"$(CurrentWord)" $(filePath)
command.subsystem.41.$(au3)=0
command.save.before.41.$(au3)=2

When I highlight "SomeText" in my .au3 script and run command 41, here is what I see: 

>C:\Windows\System32\Findstr.exe /N /I /C:"SomeText"

So $(filePath) expanded to an empty string.  I tried using 'filePath' without the '$' and got similar results.  I'm not sure when to use filePath vs $filePath vs $(filePath).  Also the name concatenation on line 11 doesn't seem to work.

PS:  I put my au3.properties file in %SCITE_USERHOME%  (C:\Users\Andy\AppData\Local\AutoIt v3\SciTE).  A new install or upgrade will not override this directory.

 

Link to comment
Share on other sites

  • Developers
3 minutes ago, AndyS19 said:

PS:  I put my au3.properties file in %SCITE_USERHOME%  (C:\Users\Andy\AppData\Local\AutoIt v3\SciTE).  A new install or upgrade will not override this directory.

Somehow you have made a change to a production file since this wouldn't work if you didn't!  You really should only make changes to SciTEUser.properties!

 Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Jos, from the SciTE documenation:

There are two environment variables, "SciTE_HOME" and "SciTE_USERHOME", which the user may set to override the standard locations of the global and/or the user properties files (this and the following applies to Windows and GTK): 

If SciTE_USERHOME is set then it is where the user properties files are found. 
If SciTE_HOME is set then it is where the global properties files are found. 
If only SciTE_HOME is set then it is where both the global and user properties files are found.

 

Link to comment
Share on other sites

  • Developers

I know what the environment variables are used for, but what I stated about properties files is still valid. ;)
So you maintain your own total set of standard properties files and update them each time SciTE4AutoIt3 is released?

Jos 

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

We're getting a little off topic, but yes, I have my user properties files (au3.properties, etc.) in a local directory and merely copy them to the  %SCITE_USERHOME% directory and the next time I edit a .au3 file, the changes are applied.  I've been doing this through laptop and OS changes for years now.

Link to comment
Share on other sites

Ooh, disregard my suggestion then. I misread your question and did not realize you were working in the au3.properties file. I'm not exactly sure how that file is parsed, but I doubt you can use AutoIt syntax within it.

UHJvZmVzc2lvbmFsIENvbXB1dGVyZXI=

Link to comment
Share on other sites

So, the suggested if-else-endif was not correct.  I tested it with the conditions reversed and the same output is generated.  I wish there was a way to syntax check properties files.  I need to go back to my original question: 

How can I conditionally define the search path?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...