Kate fails with IF/ELSE/ENDIFs in Fortran 90
X <[email protected]> Mon, 27 Nov 2023 12:22:21 +0000 (UTC)
| Newsgroups | gmane.comp.kde.devel.kwrite |
|---|---|
| Message-ID | <[email protected]> |
Hello Kate developers,Nicest editor in the world! But has one big problem! 1) Here i specifically made the example for you where you can train Kate and fix this annoying bug with Fortran texts. I have numerous, numerous, millions places where it always fail!!! Load the file, click on IF, THEN END IF and you will not find ~50% of matched If/Endifs which should be marked in yellow. Kate just miserably miss themOnly simple and short IF/EndIF blocks always work. Please fix! Here is the demo text attached Please confirm when you fix it! 2) Would be nice if you had usual forum where we can discuss the bug and features.The options you have (mailing lists, chat) are ...how to say ... kind of inconvenient. No feedback from other users. Also, where we can send the suggestions ? Thanks you very muchDan
ifendif.f90
(text/x-fortran, 11.6 KB)
!=================================================================================
Integer function ReadTrajectData ()
ionCurr= ionSpecieNo
! temporally
if(ionCurr.ne.ionNumberToPlotDataFor) goto 1000
! if(iCellNoToTraceParticles (ionSpecieNo).LT.0.OR.iCellNoToTraceParticles (ionSpecieNo).GT.nAxialSlices) goto 1000
! iCellNoToTraceParticlesBcurr = iCellNoToTraceParticlesB(ionSpecieNo)
! if(iCellNoToTraceParticlesB(ionSpecieNo).LT.0.OR.iCellNoToTraceParticlesB(ionSpecieNo).GT.nAxialSlices) goto 1000
iStndrdOneDataLineDim = 9
! if(kPlotTrajectories.eq.1) then
! iAddT=1 ! standard line OneDataLine dimens=9
! iStndrdOneDataLineDim = 10
! endif
if(kDebugCheckpoint.eq.20.and.ionCurr.eq.0) then
aaaaaa = 0
kDebugCheckpoint = 0
endif
if(kDebugCheckpoint.eq.21.and.ionCurr.eq.1) then
aaaaaa = 1
kDebugCheckpoint = 0
endif
if(kDebugCheckpoint.eq.22.and.ionCurr.eq.2) then
aaaaaa = 2
kDebugCheckpoint = 0
endif
if(kDebugCheckpoint.eq.23.and.ionCurr.eq.3) then
aaaaaa = 3
kDebugCheckpoint = 0
endif
if(kDebugCheckpoint.eq.24.and.ionCurr.eq.4) then
aaaaaa = 4
kDebugCheckpoint = 0
endif
IF (iTimeNo.eq.1) THEN
if(nOfTrajectories.gt.nTrajMax) nOfTrajectories = nTrajMax
if(nOfTrajectories.le.0) nOfTrajectories = 1
iddd = abs(iCellNoToTraceParticles (ionSpecieNo)-iCellNoToTraceParticlesB(ionSpecieNo))
if(iddd.eq.0) then
nMaxTakesOfThisAxCell = 1
else
nMaxTakesOfThisAxCell = nOfTrajectories/ &
abs(iCellNoToTraceParticles (ionSpecieNo)-iCellNoToTraceParticlesB(ionSpecieNo))
endif
! ...Selected particles From File
if(kTrackParticlesManuallyFromFile.eq.0) Then
if(nMaxTakesOfThisAxCell.lt.1) then
nMaxTakesOfThisAxCell = 1
endif
if(kDistribHomogenAmongIncludCells.eq.1.and.k_selectHighestEnergyParticle.eq.0) then
if(iCellsTaken(iaxcell).gt.nMaxTakesOfThisAxCell) goto 1000
endif
if(iaxcell.lt.iCellNoToTraceParticles (ionSpecieNo)) goto 1000
if(iaxcell.gt.iCellNoToTraceParticlesB(ionSpecieNo)) goto 1000
if(kStartEnergyMustBeLargerThanThis.eq.1.and.OneDataLine(7)&
.lt.DoNotPlot_Traj_WithEnergy_LessThanMeV) goto 1000
Rcurr = sqrt(OneDataLine(2)**2+OneDataLine(3)**2)
if(Rcurr.lt.RminToTraceParticles) goto 1000
if(Rcurr.gt.RmaxToTraceParticles) goto 1000
x2 = OneDataLine(2)
y2 = OneDataLine(3)
AzimAng_Rad = atan2(y2,x2) ! y/x
if(y2.gt.0.) then
iAzimAng_Deg = AzimAng_Rad * 180./pi + 1
else if(y2.eq.0.) then
iAzimAng_Deg = 181
else
iAzimAng_Deg = 361 + AzimAng_Rad * 180./pi
endif
itraj = iAzimAng_Deg/360. * nOfTrajectories
if(itraj.gt.nOfTrajectories) itraj=nOfTrajectories
if(itraj.lt.1) itraj=1
If(k_selectHighestEnergyParticle.eq.1) then
nAxialParticleLoaded_traj (itraj,ionSpecieNo) = iaxcell
! nAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) + 1
if(E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).lt.OneDataLine(7)) then
nOfInitialTrajFound = nOfInitialTrajFound + 1
nOfInitialTrajByIonFound(ionSpecieNo) = nOfInitialTrajByIonFound(ionSpecieNo) + 1
E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo) = OneDataLine(7)
XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
! if(kAxialParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).le.0) then
iParticleNumber_traj (1,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+1))
iParticleNumber_traj (2,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+2))
kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = 1 ! iTimeNo
! XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
! endif ! if(kAxialParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).le.0) then
iCellsTaken(iaxcell) = iCellsTaken(iaxcell) + 1
endif ! if(E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).lt.OneDataLine(7)) then
Else ! if(k_selectHighestEnergyParticle.eq.1) then
nAxialParticleLoaded_traj (itraj,ionSpecieNo) = iaxcell
! nAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) + 1
if(kAxialParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).le.0) then
nOfInitialTrajFound = nOfInitialTrajFound + 1
nOfInitialTrajByIonFound(ionSpecieNo) = nOfInitialTrajByIonFound(ionSpecieNo) + 1
iParticleNumber_traj (1,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+1))
iParticleNumber_traj (2,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+2))
kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = 1 ! iTimeNo
XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo) = OneDataLine(7)
iCellsTaken(iaxcell) = iCellsTaken(iaxcell) + 1
endif
endIf ! if(k_selectHighestEnergyParticle.eq.1) then
!.......Tracking manually set particles
Else ! if(kTrackParticlesManuallyFromFile.eq.0) then
if(kAllParticlesForTracAreRead == 1) goto 5000
open(unit=622,file=InitFileForTrackingSelected,status='old', err=690)
DO i=1,nTrajMax
read(622,'(a)',err=695,end=680) CommentForManualTrackFile
read(622,'(1p, 11e15.8,7i6)',err=695,end=680) OneDataLine, ionSpecieNo, iaxcell, iParticleNo
ionSpecieNo2 = ionSpecieNo
if(kDistribHomogenAmongIncludCells.eq.1.and.k_selectHighestEnergyParticle.eq.0) then
if(iCellsTaken(iaxcell).gt.nMaxTakesOfThisAxCell) goto 1000
endif
if(iaxcell.lt.iCellNoToTraceParticles (ionSpecieNo)) goto 1000
if(iaxcell.gt.iCellNoToTraceParticlesB(ionSpecieNo)) goto 1000
if(kStartEnergyMustBeLargerThanThis.eq.1.and.OneDataLine(7)&
.lt.DoNotPlot_Traj_WithEnergy_LessThanMeV) goto 1000
Rcurr = sqrt(OneDataLine(2)**2+OneDataLine(3)**2)
if(Rcurr.lt.RminToTraceParticles) goto 1000
if(Rcurr.gt.RmaxToTraceParticles) goto 1000
x2 = OneDataLine(2)
y2 = OneDataLine(3)
AzimAng_Rad = atan2(y2,x2) ! y/x
if(y2.gt.0.) then
iAzimAng_Deg = AzimAng_Rad * 180./pi + 1
else if(y2.eq.0.) then
iAzimAng_Deg = 181
else
iAzimAng_Deg = 361 + AzimAng_Rad * 180./pi
endif
itraj = iAzimAng_Deg/360. * nOfTrajectories
if(itraj.gt.nOfTrajectories) itraj=nOfTrajectories
if(itraj.lt.1) itraj=1
If(k_selectHighestEnergyParticle.eq.1) then
nAxialParticleLoaded_traj (itraj,ionSpecieNo) = iaxcell
! nAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) + 1
if(E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).lt.OneDataLine(7)) then
nOfInitialTrajFound = nOfInitialTrajFound + 1
nOfInitialTrajByIonFound(ionSpecieNo) = nOfInitialTrajByIonFound(ionSpecieNo) + 1
E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo) = OneDataLine(7)
XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
iParticleNumber_traj (1,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+1))
iParticleNumber_traj (2,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+2))
kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = 1 ! iTimeNo
iCellsTaken(iaxcell) = iCellsTaken(iaxcell) + 1
endif ! if(E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).lt.OneDataLine(7)) then
Else ! if(k_selectHighestEnergyParticle.eq.1) then
nAxialParticleLoaded_traj (itraj,ionSpecieNo) = iaxcell
if(kAxialParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).le.0) then
nOfInitialTrajFound = nOfInitialTrajFound + 1
nOfInitialTrajByIonFound(ionSpecieNo) = nOfInitialTrajByIonFound(ionSpecieNo) + 1
iParticleNumber_traj (1,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+1))
iParticleNumber_traj (2,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+2))
kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = 1 ! iTimeNo
XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
E_max_ParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo) = OneDataLine(7)
iCellsTaken(iaxcell) = iCellsTaken(iaxcell) + 1
endif
endIf ! if(k_selectHighestEnergyParticle.eq.1) then
ENDDO ! i=1,100000
680 close(622,err=5000)
kAllParticlesForTracAreRead = 1
call window_update@(nOfInitialTrajByIonFound(:))
goto 5000
!...errors
690 Print*,'Sound 89356 Error opening file=', trim(InitFileForTrackingSelected)
call sound@(2000,2)
goto 5000
695 Print*,'Sound 89336 Error reading file=', trim(InitFileForTrackingSelected)
call sound@(2000,2)
close(622,err=5000)
5000 continue
EndIf ! if(kTrackParticlesManuallyFromFile.eq.0) then
!................ other times ......................
ELSE if(iTimeNo.gt.1) then
do itraj=1, nOfTrajectories
if(iParticleNumber_traj(1,itraj,ionSpecieNo,1).eq.nint(OneDataLine(iStndrdOneDataLineDim+1)).and. &
iParticleNumber_traj(2,itraj,ionSpecieNo,1).eq.nint(OneDataLine(iStndrdOneDataLineDim+2)) ) then
if(kAxialParticleLoaded_traj(itraj,ionSpecieNo,iTimeNo).eq.0) then
nAxialParticleLoaded_traj (itraj,ionSpecieNo) = iaxcell
! nAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) + 1
iParticleNumber_traj (1,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+1))
iParticleNumber_traj (2,itraj,ionSpecieNo,iTimeNo) = nint(OneDataLine(iStndrdOneDataLineDim+2))
! kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = iTimeNo
kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = kAxialParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo)+ 1
XYZMxMyMzE_traj (1:7,itraj,ionSpecieNo,iTimeNo) = OneDataLine(1:7)
E_max_ParticleLoaded_traj (itraj,ionSpecieNo,iTimeNo) = OneDataLine(7)
else
if(nTimesInThisPlace01.lt.100) then
nTimesInThisPlace01 = nTimesInThisPlace01 + 1
call sound@(5000,1)
Print*,'Sound 33871 ', &
nint(OneDataLine(iStndrdOneDataLineDim+1)), nint(OneDataLine(iStndrdOneDataLineDim+2))
endif
endif
endif
ENDDO ! DO i=1,100000
ENDIF ! IF (iTimeNo.eq.1) THEN
1000 continue
ReadTrajectData = 2
end function
!====================================================================