Fortran Free Form User Defined - bug

2. Help
  • Brendan

    I have been gratefully using the user defined lang for fortran free from, but I have found a bug. Fortran text is delimited by single quotes. The problem occurs when an operator, in my case a colon : , is in delimited text. Notepad++ does not properly close the text. The text is closed at the colon. The closing quote is interpreted as an opening quote.

    Is there a simple fix to this?

                <Keywords name="Delimiters">&apos;&quot;0&apos;&quot;0</Keywords>
                <Keywords name="Folder+">do then</Keywords>
                <Keywords name="Folder-">enddo endif end</Keywords>
                <Keywords name="Operators">- % &amp; ( ) * , . / : ; + &lt;= &gt;</Keywords>
                <Keywords name="Comment">1 2 0!</Keywords>
                <Keywords name="Words1">
                    access action advance allocatable allocate apostrophe assign assignment associate asynchronous 
                    backspace bind blank blockdata
                    call case character class close common complex contains continue cycle data
                    deallocate decimal delim default dimension direct dowhile double doubleprecision
                    else elseif elsewhere encoding end endassociate endblockdata endfile endforall
                    endfunction endinterface endmodule endprogram endselect endsubroutine endtype
                    endwhere entry eor equivalence err errmsg exist exit external
                    file flush fmt forall form format formatted function
                    go goto
                    id if implicit in include inout integer inquire intent interface intrinsic iomsg iolength iostat
                    len logical
                    name named namelist nextrec nml none nullify number
                    only open opened operator optional out
                    pad parameter pass pause pending pointer pos position precision print private program protected public
                    read readwrite real rec recl recursive result return rewind
                    save select selectcase selecttype sequential sign size stat status stop stream subroutine
                    target to type
                    unformatted unit use
                    value volatile
                    wait where while write
                <Keywords name="Words2">
                    abs achar acos acosd adjustl adjustr aimag
                    aimax0 aimin0 aint ajmax0 ajmin0 akmax0 akmin0 all allocated alog alog10 amax0
                    amax1 amin0 amin1 amod anint any asin asind associated atan atan2 atan2d atand
                    bitest bitl bitlr bitrl bjtest bit_size bktest break btest
                    cabs ccos cdabs cdcos cdexp cdlog cdsin cdsqrt ceiling cexp char clog cmplx conjg
                    cos cosd cosh count cpu_time cshift csin csqrt
                    dabs dacos dacosd dasin dasind datan datan2 datan2d datand date date_and_time dble
                    dcmplx dconjg dcos dcosd dcosh dcotan ddim dexp dfloat dflotk dfloti dflotj digits 
                    dim dimag dint dlog dlog10 dmax1 dmin1 dmod dnint dot_product dprod dreal dsign 
                    dsin dsind dsinh dsqrt dtan dtand dtanh
                    eoshift epsilon errsns exp exponent
                    float floati floatj floatk floor fraction free
                    iabs iachar iand ibclr ibits ibset ichar idate idim idint idnint ieor
                    ifix iiabs iiand iibclr iibits iibset iidim iidint iidnnt iieor iifix iint iior
                    iiqint iiqnnt iishft iishftc iisign ilen imax0 imax1 imin0 imin1 imod index
                    inint inot int int1 int2 int4 int8 iqint iqnint ior ishft ishftc isign isnan
                    jiand jibclr jibits jibset jidim jidint jidnnt jieor jifix jint jior jiqint
                    jiqnnt jishft jishftc jisign jmax0 jmax1 jmin0 jmin1 jmod jnint jnot jzext
                    kiabs kiand kibclr kibits kibset kidim kidint kidnnt kieor kifix kind kint kior
                    kishft kishftc kisign kmax0 kmax1 kmin0 kmin1 kmod knint knot kzext
                    lbound leadz len len_trim lenlge lge lgt lle llt log log10 logical lshift
                    malloc matmul max max0 max1 maxexponent maxloc maxval merge min min0 min1
                    minexponent minloc minval mod modulo mvbits
                    nearest nint not nworkers number_of_processors
                    pack popcnt poppar precision present product
                    radix random random_number random_seed range real repeat reshape rrspacing rshift
                    scale scan secnds selected_int_kind selected_real_kind set_exponent shape sign sin
                    sind sinh size sizeof sngl snglq spacing spread sqrt sum system_clock
                    tan tand tanh tiny transfer transpose trim
                    ubound unpack
                <Keywords name="Words3">
                    cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand
                    dcmplx dconjg dcotan dcotand decode dimag dll_export dll_import doublecomplex dreal dvchk
                    find flen flush
                    getarg getcharqq getcl getdat getenv gettim
                    ibchng identifier imag int1 int2 int4 intc intrup invalop iostat_msg isha ishc ishl
                    lacfar locking locnear
                    nargs nbreak ndperr ndpexc
                    offset ovefl
                    peekcharqq precfill prompt
                    qabs qacos qacosd qasin qasind qatan qatand qatan2 qcmplx qconjg qcos qcosd qcosh qdim qexp qext
                    qextd qfloat qimag qlog qlog10 qmax1 qmin1 qmod qreal qsign qsin qsind qsinh qsqrt qtan qtand qtanh
                    ran rand randu rewrite
                    segment setdat settim system
                    undfl unlock union
                    val virtual volatile
                    zabs zcos zexp zlog zsin zsqrt
                <Keywords name="Words4">
                    eq and or ne ge gt le lt true false
  • Loreia2


    I can't reproduce the problem.

    What is your NPP version?
    Can you reproduce the problem with plugins folder temporarily renamed?

    This is what I get:


  • Brendan


    Sorry for the late reply. I  have notepad++ v6.0 unicode. I renamed plugins, started up and still have the issue. Here are two image of the problem:

  • Brendan

    Okay. The problem occurs when there is no space between the equals sign and an opening quotation mark. Is there an easy solution to this?

  • Loreia2

    Hi Brendan,

    can you upgrade to latest Npp (6.2.1) and try the same thing with new UDL?


  • Brendan

    Hi Loreia,

    Problem seems to be fixed in 6.2.2. I can now fully appreciate syntax highlighting in Fortran 90 onwards. Thanks Team NPP . (No idea what UDL is. UnDying Love?)

    Last edit: Brendan 2012-11-19
  • Brendan

    Finally got around to expressing my undying love for NPP through PayPal donation. Have a round on me. Keep up the great work.

  • Loreia2

    (No idea what UDL is. UnDying Love?)


    User Defined Language
    Its that thing that gives you ability to specify custom code coloring.