Page 1 of 1

Associate Compiler Program with File types

Posted: Thu Dec 11, 2003 11:14 pm
by dFoxGuru
Right now I create a run command and add it to the menu to compile a file type.

It would be nice if I could associate a compiler program definition with a file type and then have only one 'Compile' option in the menu. The menu option would be disabled if the active file has no associated compiler program. Associating a compiler would be done through the existing file types definitions.

Posted: Fri Dec 12, 2003 2:27 am
by CyberSlug
By next week, I hope to have something like this in my collection of tools:
http://www.textpad.com/forum/viewtopic.php?t=4721

Could you provide a list of the file types and compiler command line arguments you use?

Here's a partially working script....

Code: Select all

; Requires AutoIt3.exe from http://www.hiddensoft.com/autoit3/

;===================================================================\
; Compile a file according to its document class.
;   Philip Gump - 11 December 2003
;
; Command: AutoIt3.exe
; Parameters: "C:\pathToThisScript\Compile.au3" $file [any and other]
;
; YOU WILL NEED TO MODIFY SECTION THREE!
;===================================================================/

;;FIRST, determine the class (file extension) of the active document.
$titles = WinGetText("TextPad - ","")
$tmp = StringLeft($titles, StringInStr($titles, Chr(10)))   ; file path

While StringInstr($tmp, ".") <> 0   ; path may contain many dots
  $tmp = StringTrimLeft($tmp, StringInstr($tmp, "."))
WEnd
If StringInstr($tmp, "*") <> 0  ; file was modified since last save
  $class = StringTrimRight($tmp, 3)
Else
  $class = StringTrimRight($tmp, 1) ; need to remove carriage return
EndIf
; We now have the file extension (stored in variable $class)!


;SECOND, Get command line arguments ....
$file = ""
$arg2 = ""
If $cmdLine[0] == 0 Then
	MsgBox(0,"Error", "This tool needs command line arguments!")
	Exit
Else
	$file = '"' & $cmdLine[1] & '"'   ; enclose path/file in quotes
	;;;$arg2 = $cmdLine[2]  ; sample second argument
EndIf


;;THIRD, run the appropriate compiler
Select
	Case $class = "c" OR $class = "cpp"
		Run('something something ' & $file)
	Case $class = "java"
		Run('"c:\windows\foo\javac.exe" -classpath ' & $file)
	Case $class = "au3"
		Run('"C:\Program Files\AutoIt3\Aut2Exe\Aut2Exe.exe" /in ' & $file)
	Case Else
		MsgBox(0,"Error", "No command specified for " & $class & " file type.")
	Exit
EndSelect

Posted: Fri Dec 12, 2003 3:58 am
by talleyrand
Thought I'd throw a few out for you

Code: Select all

   Case $class = "c" OR $class = "cpp" 
      Run('c:\minGW\bin\gcc.exe ' & $file)
      ;; Run('c:\cygwin\bin\gcc.exe ' & $file)
      ;; Run(c:\borland\bcc55\Bin\bcc32.exe ' & $file)
   Case $class = "py" 
      Run('c:\python23\python.exe ' & $file) 
      ;; Run('c:\python22\python.exe ' & $file) 
   Case $class = "js" OR  $class = "vbs" 
      Run('c:\winnt\system32\wscript.exe ' & $file) 
   Case $class = "pl" 
      Run('c:\perl\bin\perl.exe ' & $file) 

Posted: Fri Dec 12, 2003 9:24 am
by ramonsky
Actually, it would be simple (and cool) if the tools displayed on the tools menu could be dependent upon the file extension of the current file. Thus, if you're editing a Java file, tools such as "Compile Java", "Compile Java to DLL", "Run Java" , etc., could magically become visible. Selecting a PHP document makes all these entries disappear, but others such as "Run PHP" become visible.

I'd like this. Sounds easy to do, too.

Jill

Posted: Fri Dec 12, 2003 10:49 pm
by CyberSlug
ramonsky wrote:Actually, it would be simple (and cool) if the tools displayed on the tools menu could be dependent upon the file extension of the current file.
I agree!!

We should be able to create global tools (available to all file classes) AND local tools (available to the active file class).

There should be one tool/button/keyboard-binding for things like "compile" and "comment/uncomment" so that we don't have to keep re-defining them which clutters up the tool menu!