Tools__TagList.st
changeset 12332 6026e5c43ea5
parent 11830 b553a8ffa183
child 12334 201ec335aa40
--- a/Tools__TagList.st	Tue Jan 22 15:12:23 2013 +0100
+++ b/Tools__TagList.st	Wed Jan 23 23:01:22 2013 +0100
@@ -1607,9 +1607,12 @@
 !
 
 shellCommandTemplateFor:aFilenameString
-    "returns the shellCommand to be used (contains %1 for the filename)"
+    "returns the shellCommand to be used (contains %1 for the filename).
+     When first called, looks for ctags (both a private and the system-supplied),
+     and tries to see what version that is. I prefer exuberant ctags version"
 
     |lcSuffix shellCommand isCSuffix isCPlusPlusSuffix isJavaSuffix isEiffelSuffix isFortranSuffix
+     isTCLSuffix isRubySuffix isPythonSuffix isPhpSuffix isJavaScriptSuffix
      showOnly response suff fn|
 
     ctagsCommand isNil ifTrue:[
@@ -1617,7 +1620,7 @@
             "/ local use
             suff := (OperatingSystem isMSWINDOWSlike) ifTrue:'.exe' ifFalse:''.
 
-            ctagsCommand := Smalltalk getPackageFileName:'stx/support/tools/ctags-5.0.1/ctags',suff.
+            ctagsCommand := Smalltalk getPackageFileName:'stx/support/tools/ctags-5.8/ctags',suff.
             (ctagsCommand notNil and:[(fn := ctagsCommand asFilename) isExecutableProgram]) ifTrue:[
                 ctagsCommand := fn pathName.
                 ctagsIsExCtags := ctagsIsExCtags5x := true.
@@ -1685,9 +1688,18 @@
             (ctagsIsExCtags5x ? false) ifFalse:[
                 ^ nil
             ].
-            "/ ex_ctags5.x also supports awk, lisp, perl, pascal and a few others
-"/            ^ nil
+
+            "/ ex_ctags5.x also supports:
+            "/     Assembler, AWK, ASP, BETA,
+            "/     Bourne/Korn/Z Shell, C, C++, C#, COBOL, Eiffel, Erlang, Fortran, Java, Lisp,
+            "/     Lua, Makefile, Pascal, Perl, PHP, PL/SQL, Python, REXX, Ruby, Scheme,
+            "/     S-Lang, SML (Standard ML), Tcl, Vera, Verilog, VHDL, Vim, and YACC.
         ].
+        isTCLSuffix := self class isTCLSuffix:lcSuffix.
+        isRubySuffix := self class isRubySuffix:lcSuffix.
+        isPythonSuffix := self class isPythonSuffix:lcSuffix.
+        isPhpSuffix := self class isPhpSuffix:lcSuffix.
+        isJavaScriptSuffix := self class isJavaScriptSuffix:lcSuffix.
 
         usingDefaultCTags    := false.
         shellCommand := shellCommand asFilename asAbsoluteFilename pathName.
@@ -1724,28 +1736,15 @@
                     ] 
                 ] 
             ]. 
-            hideStructMembers == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-m'
-            ].
-            hideDefines == true ifTrue:[                
-                shellCommand := shellCommand, ' --c-types=-d'
-            ].
-            hideTypedefs == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-t'
-            ].
-            hideStructures == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-s'
-            ].
-            hideVariables == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-v'
-            ].
-            hideFunctions == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-f'
-            ].
-            hideClasses == true ifTrue:[
-                shellCommand := shellCommand, ' --c-types=-c'
-            ].
+            hideStructMembers == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-m'].
+            hideDefines == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-d' ].
+            hideTypedefs == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-t' ].
+            hideStructures == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-s'].
+            hideVariables == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-v'].
+            hideFunctions == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-f'].
+            hideClasses == true ifTrue:[ shellCommand := shellCommand, ' --c-types=-c'].
         ].
+
         isJavaSuffix ifTrue:[
             shellCommand := shellCommand, ' --lang=java'.
 
@@ -1760,27 +1759,18 @@
                     ]
                 ]
             ]. 
-            hideJavaClasses == true ifTrue:[
-                shellCommand := shellCommand, ' --java-types=-c'
-            ].
-            hideJavaMethods == true ifTrue:[
-                shellCommand := shellCommand, ' --java-types=-m'
-            ].
-            hideJavaInterfaces == true ifTrue:[
-                shellCommand := shellCommand, ' --java-types=-i'
-            ].
-            hideJavaFields == true ifTrue:[
-                shellCommand := shellCommand, ' --java-types=-f'
-            ].
-            hideJavaPackages == true ifTrue:[
-                shellCommand := shellCommand, ' --java-types=-p'
-            ].
+            hideJavaClasses == true ifTrue:[ shellCommand := shellCommand, ' --java-types=-c' ].
+            hideJavaMethods == true ifTrue:[ shellCommand := shellCommand, ' --java-types=-m' ].
+            hideJavaInterfaces == true ifTrue:[ shellCommand := shellCommand, ' --java-types=-i' ].
+            hideJavaFields == true ifTrue:[ shellCommand := shellCommand, ' --java-types=-f' ].
+            hideJavaPackages == true ifTrue:[ shellCommand := shellCommand, ' --java-types=-p' ].
         ].
+
         isEiffelSuffix ifTrue:[
             shellCommand := shellCommand, ' --lang=eiffel'.
 
-            showOnly == #classes ifTrue:[
-                shellCommand := shellCommand, ' --eiffel-types=c'
+            showOnly == #classes ifTrue:[ 
+                shellCommand := shellCommand, ' --eiffel-types=c' 
             ] ifFalse:[
                 showOnly == #features ifTrue:[
                     shellCommand := shellCommand, ' --eiffel-types=f'
@@ -3650,13 +3640,14 @@
 !TagList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.20 2012-09-30 09:39:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.21 2013-01-23 22:01:22 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.20 2012-09-30 09:39:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__TagList.st,v 1.21 2013-01-23 22:01:22 cg Exp $'
 !
 
 version_SVN
     ^ '§Id§'
 ! !
+