! vim: set ft=rapid :

! START_INDENT

%%%
VERSION:1
LANGUAGE:ENGLISH
%%%

module LowerCaseModule

  task pers num n1 := 0;
  local pers num n2 := 1;
  var bool b1 := false;
  var intnum i1;

! put some stuff in those strings that may confuse indentation
  const string st1 := "endmodule ("; 
  pers string st_Appl_Info{3,3}:=[
          [
                  "["
                  ,
                  "default"
                  ,
                  "case"
                  ],
          [
                  "else"
                  ,
                  "then"
                  ,
                  "endif"
                  ],
          [
                  "do"
                  ,
                  "}"
                  ,
                  ")"
                  ],
          ];

  pers tooldata tTool1:=[TRUE, 
          [
                  [97.4, 0, 223.1], 
                  [0.924, 0, 0.383 ,0]
                  ], 
          [5, 
                  [23, 0, 75], 
                  [1, 0, 0, 0], 0, 0, 0
                  ]
          ];
  const robtarget p1:=[ 
          [600, 500, 225.3], 
          [1, 0, 0, 0], 
          [1, 1, 0, 0], 
          [ 11, 12.3, 9E9, 9E9, 9E9, 9E9]
          ];

  record myRec
    num nRecNum1
    bool bRecBool1
  endrecord

  proc proc1(num n1,
            num n2)
    var string st1;
    n1 := n1+1;
    MoveJSync p1, vmax, z30, tool1, "proc2";
  backward
    MoveJSync p1, v100, fine, tool1, "proc2";
  undo
    n1 := n1-1;
  error
    trynext;
  endproc

  func num nFunc1(
            switch s1
            |switch s2
            ,num n1
            ,bool b1)
    var num nVar;
    if not Present(s1) return;
    if Present(s1) then
      Incr n1;'
    elseif Present(s2) then
      b1:=false;
    else
      while n1>0 do
        Decr n1;
        test n1

        case 1:
          test1;
        case 2:
          test2;
        default:
          WaitUntil false;
        endtest
      endwhile
    endif
    for i from 1 to 10 step 2 do
      for j from 1 to 10 do
        st_Appl_Info{i,j} := "";
      endfor
    endfor
!     return 1;
    return 0;
  error
    return -1;
  endfunc

  trap Trap1
    Reset do1;
  endtrap

endmodule

MODULE UpperCaseModule(SYSMODULE,NOSTEPIN)
  TASK pers num n1 := 0;
  LOCAL pers num n2 := 1;
  VAR bool b1 := false;
  VAR intnum i1;

  LOCAL FUNC num nFunc1(
            switch s1
            |switch s2
            ,num n1
            ,bool b1)
    VAR num nVar;
    IF NOT PRESENT(s1) RETURN;
    IF PRESENT(s1) THEN
      INCR n1;'
    ELSEIF PRESENT(s2) THEN
      b1:=FALSE;
    ELSE
      WHILE n1>0 DO
        DECR n1;
        TEST n1

        CASE 1:
          test1;
        CASE 2:
          test2;
        DEFAULT:
          WAITUNTIL FALSE;
        ENDTEST
      ENDWHILE
    ENDIF
    FOR i FROM 1 TO 10 STEP 2 DO
      FOR j FROM 1 TO 10 DO
        st_Appl_Info{i,j} := "";
      ENDFOR
    ENDFOR
!     RETURN 1;
    RETURN 0;
  ERROR
    RETURN -1;
  ENDFUNC

  TRAP Trap1
    Reset do1;
  ENDTRAP

ENDMODULE

Module MixedCaseModule(SysModule)
  Task pers num n1 := 0;
  Local pers num n2 := 1;
  Var bool b1 := false;
  Var intnum i1;

  Task Func num nFunc1(
            switch s1
            |switch s2
            ,num n1
            ,bool b1)
    Var num nVar;
    If Not Present(s1) Return;
    If Present(s1) Then
      Incr n1;'
    ElseIf Present(s2) Then
      b1:=false;
    Else
      While n1>0 Do
        Decr n1;
        Test n1

        Case 1:
          test1;
        Case 2:
          test2;
        Default:
          WaitUntil false;
        EndTest
      EndWhile
    EndIf
    For i From 1 To 10 Step 2 Do
      For j From 1 To 10 Do
        st_Appl_Info{i,j} := "";
      EndFor
    EndFor
!     Return 1;
    Return 0;
  Error
    Return -1;
  EndFunc

  Trap Trap1
    Reset do1;
  EndTrap

EndModule

! END_INDENT

! START_INDENT
! INDENT_EXE let g:rapidSpaceIndent = 0
! INDENT_EXE set shiftwidth=4

proc bla()
    var num i;
    Incr i;
endproc

! END_INDENT

! START_INDENT
! INDENT_EXE let g:rapidCommentIndent = 1
!
proc bla()
    ! indent this first column comment because of g:rapidCommentIndent=1
endproc
! END_INDENT

! START_INDENT
! INDENT_EXE let g:rapidNewStyleIndent = 1
pers string st_Appl_Info{3,3}:=
[
                [
                                "["
                                ,
                                "default"
                                ,
                                "case"
                ]
                ,
                [
                                "else"
                                ,
                                "then"
                                ,
                                "endif"
                ]
                ,
                [
                                "do"
                                ,
                                "}"
                                ,
                                ")"
                ]
                ,
];
! END_INDENT
