I am testing UESTUDIO editor and it is very good .
I am problem to create the cTags file (with Exuberant Ctags) .
There is a way to create the cTags with another programm ?
Regards Maurizio
#include "FiveWin.ch"
static oMeter2
//-----------------------------------------------------------------------------------------
function Main()
LOcal bAction := { | oMeter, oText, oDlg, lEnd | CreaTag( oMeter, oText, oDlg, @lEnd ) }
MyMsgMeter( bAction,,"Wait" )
return nil
Static function CreaTag(oMeter, oText, oDlg, lEnd)
Local aDir := {}
Local aFile := {}
Local cSubDir := ""
Local cFile := ""
Local cString := ""
Local nX ,nY := 1
local nT := 1
Local aDAti := {}
Local lOk := .F.
Local cFileExt := ""
Local cRiga := ""
Local cText := + ;
'!_TAG_FILE_FORMAT 1 /extended format; --format=1 will not append ; to lines/' + CRLF + ;
'!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/' + CRLF + ;
'!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/'+ CRLF + ;
'!_TAG_PROGRAM_NAME Exuberant Ctags //'+ CRLF + ;
'!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/'+ CRLF + ;
'!_TAG_PROGRAM_VERSION 5.6 //' + CRLF
Local cDati := cText
Local cFileDat := "c:\temp\list.tag"
Local cDir := "c:\fwh\"
Local nOutFile := 0
Local nTot := 0
MsgGet("", "Name file cTags ", @cFileDat )
MsgGet("", "Folder to scan (include subdirectoris) ", @cDir )
aDir := DIRECTORY(cDir,"D")
nOutfile := FCREATE(cFileDat, 0)
FWRITE(nOutfile, cText, len(cText))
FOR nX := 1 to len(aDir)
IF aDir[nX,5] == "D"
cSubDir := cDir + aDir[nX,1] + "\"
aFile := DIRECTORY(cSubdir)
FOR nY := 1 to len(aFile)
cFile := aFile[nY,1]
IF cFileExt(cFile) == "PRG"
nTot++
ENDIF
NEXT
ENDIF
NEXT
oMeter2:nTotal:= nTot
nTot := 1
For nX := 1 to len(aDir)
IF aDir[nX,5] == "D"
cSubDir := cDir + aDir[nX,1] + "\"
aFile := DIRECTORY(cSubdir)
for nY := 1 to len(aFile)
cFile := aFile[nY,1]
IF cFileExt(cFile) == "PRG"
oMeter:cText := cSubDir + "\" + cFile + " " + str(nX) + str(len(aDir))
cDati := ScriviFile(cSubdir + cFile,oMeter)
FWRITE(nOutfile, cDati, len(cDati))
nTot++
oMeter2:Set(nTot )
oMeter2:cText := str(nTot)+ "/" + str(oMeter2:nTotal)
endif
IF lEnd
return nil
endIF
NEXT
endif
NEXT
FCLOSE(nOutfile)
return .t.
//---------------------------------------------------------------------------------------------
Static function ScriviFile(cFileExt,oMeter)
Local cFile := ""
Local nX := 0
Local nT := 1
Local cString := ""
Local lOk := .F.
Local cDati := ""
cString := MEMOREAD(cFileExt)
nT := MLCOUNT(cString,254)
oMeter:nTotal := nT
for nX := 1 TO nT
lOk := .F.
cFile := UPPER(memoline(cString,254,nX))
IF at("FUNCTION",cFile) > 0
cFile := STRTRAN(cFile, "FUNCTION", "")
cFile := STRTRAN(cFile, "STATIC", "")
lOk := .T.
ENDIF
if Lok ==.f.
IF at("METHOD",cFile) > 0
IF at("CLASS",cFile) > 0
cFile := STRTRAN(cFile, "METHOD", "")
lOk := .T.
endIF
ENDIF
ENDIF
IF lOk
cFile := STRTRAN(cFile, " ", "")
cFile := SUBSTR(cFile,1,AT("(",cFile)-1)
cFile += chr(9) + cFileExt + chr(9) + alltrim(str(nX))
cDati += cFile + CRLF
endif
oMeter:Set(nX )
next
Return cDati
//======================================================================================================
function MyMsgMeter( bAction, cMsg, cTitle )
local oDlg, oMeter, oText, oBtn, oFont
local lEnd := .f., lCancel := .f.
local nVal,nVal2 := 0
DEFAULT bAction := { || nil },;
cMsg := "Processing...", cTitle := "Please, wait"
DEFINE FONT oFont NAME GetSysFont() SIZE 0, -8
DEFINE DIALOG oDlg FROM 5, 5 TO 13, 45 TITLE cTitle FONT oFont
@ 0.2, 0.5 SAY oText VAR cMsg SIZE 130, 10 OF oDlg
@ 1, 0.5 METER oMeter VAR nVal TOTAL 10 SIZE 150, 10 OF oDlg
@ 2, 0.5 METER oMeter2 VAR nVal2 TOTAL 10 SIZE 150, 10 OF oDlg
@ 2.2, 10.4 BUTTON oBtn PROMPT "&Cancel" OF oDlg ;
ACTION ( lEnd:= .t., lCancel:= .t. ) SIZE 32, 11
oDlg:bStart = { || Eval( bAction, oMeter, oText, oDlg, @lEnd, oBtn ),;
lEnd := .t., oDlg:End() }
ACTIVATE DIALOG oDlg CENTERED ;
VALID lEnd
oFont:End()
return lCancel
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: No registered users and 100 guests