mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 de9ed1ca54
			
		
	
	de9ed1ca54
	
	
	
		
			
			Problem:  filetype: karel files are not detected
Solution: detect '*.kl' files as karel filetype,
          include syntax and filetype plugin
          (Kirill Morozov)
closes: vim/vim#16075
fdac54d7bb
Co-authored-by: Kirill Morozov <kirill@robotix.pro>
Co-authored-by: KnoP-01 <knosowski@graeffrobotics.de>
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:    KAREL
 | |
| " Last Change: 2024-11-17
 | |
| " Maintainer:  Kirill Morozov <kirill@robotix.pro>
 | |
| " Credits:     Jay Strybis for the initial implementation and Patrick Knosowski
 | |
| "              for a couple of fixes.
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " KAREL is case-insensitive
 | |
| syntax case ignore
 | |
| 
 | |
| " Identifiers
 | |
| syn match   karelIdentifier  /[a-zA-Z0-9_]\+/
 | |
| hi def link karelIdentifier  Identifier
 | |
| 
 | |
| " Constants
 | |
| syn keyword karelConstant    CR
 | |
| syn region  karelString      start="'" end="'"
 | |
| syn match   karelReal        /\d\+\.\d\+/
 | |
| syn match   karelInteger     /\d\+/
 | |
| syn keyword karelBoolean     true false
 | |
| hi def link karelConstant    Constant
 | |
| hi def link karelString      String
 | |
| hi def link karelInteger     Number
 | |
| hi def link karelReal        Float
 | |
| hi def link karelBoolean     Boolean
 | |
| 
 | |
| " Directives
 | |
| syn match   karelDirective   /%[a-zA-Z]\+/
 | |
| hi def link karelDirective   PreProc
 | |
| 
 | |
| " Operators
 | |
| syn keyword karelOperator    AND OR NOT DIV MOD
 | |
| syn match   karelOperator    /[\+\-\*\/\<\=\>\:\#\@]/
 | |
| syn match   karelOperator    /<=/
 | |
| syn match   karelOperator    />=/
 | |
| syn match   karelOperator    /<>/
 | |
| syn match   karelOperator    />=</
 | |
| hi def link karelOperator    Operator
 | |
| 
 | |
| " Types
 | |
| syn keyword karelType        ARRAY BOOLEAN BYTE CONFIG DISP_DAT_T FILE INTEGER JOINTPOS PATH POSITION QUEUE_TYPE REAL SHORT STD_PTH_NODE STRING VECTOR XYZWPR XYZWPREXT
 | |
| syn keyword karelStructure   STRUCTURE ENDSTRUCTURE
 | |
| hi def link karelType        Type
 | |
| hi def link karelStructure   Typedef
 | |
| 
 | |
| syn keyword karelAction      NOABORT NOMESSAGE NOPAUSE PAUSE PULSE RESUME STOP UNHOLD UNPAUSE
 | |
| syn match   karelAction      /SIGNAL EVENT/
 | |
| syn match   karelAction      /SIGNAL SEMAPHORE/
 | |
| hi def link karelAction      Keyword
 | |
| 
 | |
| syn keyword karelFunction    ABS ACOS APPROACH ARRAY_LEN ASIN ATAN2 ATTACH BYNAME BYTES_LEFT CHR COS CURJPOS CURPOS CURR_PROG EXP
 | |
| syn keyword karelFunction    FRAME GET_FILE_POS GET_JPOS_REG GET_JPOS_TPE GET_PORT_ATR GET_POS_REG GET_POS_TPE GET_USEC_TIM INDEX
 | |
| syn keyword karelFunction    IN_RANGE INV IO_STATUS J_IN_RANGE JOINT2POS LN MIRROR MOTION_CTL NODE_SIZE ORD ORIENT PATH_LEN POS POS2JOINT
 | |
| syn keyword karelFunction    ROUND SEMA_COUNT SIN SQRT STR_LEN SUB_STR TAN TRUNC UNINIT
 | |
| hi def link karelFunction    Function
 | |
| 
 | |
| syn keyword karelClause      EVAL FROM IN WHEN WITH
 | |
| hi def link karelClause      Keyword
 | |
| 
 | |
| syn keyword karelConditional IF THEN ELSE ENDIF SELECT ENDSELECT CASE
 | |
| hi def link karelConditional Conditional
 | |
| 
 | |
| syn keyword karelRepeat      WHILE DO ENDWHILE FOR
 | |
| hi def link karelRepeat      Repeat
 | |
| 
 | |
| syn keyword karelProcedure   ABORT_TASK ACT_SCREEN ACT_TBL ADD_BYNAMEPC ADD_DICT ADD_INTPC ADD_REALPC ADD_STRINGPC APPEND_NODE APPEND_QUEUE
 | |
| syn keyword karelProcedure   ATT_WINDOW_D ATT_WINDOW_S AVL_POS_NUM
 | |
| syn keyword karelProcedure   BYTES_AHEAD
 | |
| syn keyword karelProcedure   CALL_PROG CALL_PROGLIN CHECK_DICT CHECK_EPOS CHECK_NAME CLEAR CLEAR_SEMA CLOSE_TEP CLR_IO_STAT CLR_PORT_SIM CLR_POS_REG
 | |
| syn keyword karelProcedure   CNC_DYN_DISB CNC_DYN_DISE CNC_DYN_DISI CNC_DYN_DISP CNC_DYN_DISR CNC_DYN_DISS CNCL_STP_MTN CNV_CNF_STRG CNV_CONF_STR CNV_INT_STR CNV_JPOS_REL CNV_REAL_STR CNV_REL_JPOS CNV_STR_CONF CNV_STR_INT CNV_STR_REAL CNV_STR_TIME CNV_TIME_STR
 | |
| syn keyword karelProcedure   COMPARE_FILE CONT_TASK COPY_FILE COPY_PATH COPY_QUEUE COPY_TPE CREATE_TPE CREATE_VAR
 | |
| syn keyword karelProcedure   DAQ_CHECKP DAQ_REGPIPE DAQ_START DAQ_STOP DAQ_UNREG DAQ_WRITE DEF_SCREEN DEF_WINDOW
 | |
| syn keyword karelProcedure   DELETE_FILE DELETE_NODE DELETE_QUEUE DEL_INST_TPE DET_WINDOW DISCTRL_ALPH DISCTRL_FORM DISCTRL_LIST DISCTRL_PLMN DISCTRL_SBMN DISCTRL_TBL DISMOUNT_DEV DOSFILE_INF
 | |
| syn keyword karelProcedure   ERR_DATA FILE_LIST FORCE_SPMENU FORMAT_DEV GET_ATTR_PRG GET_PORT_ASG GET_PORT_CMT GET_PORT_MOD GET_PORT_SIM GET_PORT_VAL GET_POS_FRM GET_POS_TYP GET_PREG_CMT GET_QUEUE
 | |
| syn keyword karelProcedure   GET_REG GET_REG_CMT GET_SREG_CMT GET_STR_REG GET_TIME GET_TPE_CMT GET_TPE_PRM GET_TSK_INFO GET_USEC_SUB GET_VAR
 | |
| syn keyword karelProcedure   INI_DYN_DISB INI_DYN_DISE INI_DYN_DISI INI_DYN_DISP INI_DYN_DISR INI_DYN_DISS INIT_QUEUE INIT_TBL INSERT_NODE INSERT_QUEUE IO_MOD_TYPE
 | |
| syn keyword karelProcedure   KCL KCL_NO_WAIT KCL_STATUS LOAD LOAD_STATUS LOCK_GROUP MODIFY_QUEUE MOUNT_DEV MOVE_FILE MSG_CONNECT MSG_DISO MSG_PING
 | |
| syn keyword karelProcedure   OPEN_TPE PAUSE_TASK PEND_SEMA PIPE_CONFIG POP_KEY_RD POS_REG_TYPE POST_ERR POST_ERR_L POST_SEMA PRINT_FILE PROG_BACKUP PROG_CLEAR PROG_RESTORE PROG_LIST
 | |
| syn keyword karelProcedure   PURGE_DEV PUSH_KEY_RD READ_DICT READ_DICT_V READ_KB REMOVE_DICT RENAME_FILE RENAME_VAR RENAME_VARS RESET RUN_TASK SAVE SAVE_DRAM SELECT_TPE SEND_DATAPC SEND_EVENTPC SET_ATTR_PRG SET_CURSOR SET_EPOS_REG SET_EPOS_TPE
 | |
| syn keyword karelProcedure   SET_FILE_ATR SET_FILE_POS SET_INT_REG SET_JPOS_REG SET_JPOS_TPE SET_LANG SET_PERCH SET_PORT_ASG SET_PORT_ATR SET_PORT_CMT SET_PORT_MOD SET_PORT_SIM SET_PORT_VAL SET_POS_REG SET_POS_TPE SET_PREG_CMT SET_REAL_REG SET_REG CMT SET_SREG_CMT SET_STR_REG SET_TIME SET_TPE_CMT SET_TRNS_TPE SET_TSK_ATTR SET_TSK_NAME SET_VAR
 | |
| syn keyword karelProcedure   TRANSLATE UNLOCK_GROUP UNPOS V_CAM_CALIB V_GET_OFFSET V_GET_PASSFL V_GET_QUEUE V_INIT_QUEUE V_RALC_QUEUE V_RUN_FIND V_SET_REF V_START_VTRK V_STOP_VTRK VAR_INFO VAR_LIST VOL_SPACE VREG_FND_POS VREG_OFFSET
 | |
| syn keyword karelProcedure   WRITE_DICT WRITE_DICT_V XML_ADDTAG XML_GETDATA XML_REMTAG XML_SCAN XML_SETVAR
 | |
| hi def link karelProcedure   Function
 | |
| 
 | |
| syn keyword karelStatement   ABORT CONDITION ENDCONDITION CONTINUE DELAY ERROR EVENT FOR ENDFOR HOLD READ RELEASE REPEAT RETURN SEMAPHORE UNTIL USING ENDUSING WRITE
 | |
| syn match   karelStatement   /CANCEL FILE/
 | |
| syn match   karelStatement   /CLOSE FILE/
 | |
| syn match   karelStatement   /CLOSE HAND/
 | |
| syn match   karelStatement   /CONNECT TIMER/
 | |
| syn match   karelStatement   /DISABLE CONDITION/
 | |
| syn match   karelStatement   /DISCONNECT TIMER/
 | |
| syn match   karelStatement   /ENABLE CONDITION/
 | |
| syn match   karelStatement   /GO TO/
 | |
| syn match   karelStatement   /OPEN FILE/
 | |
| syn match   karelStatement   /OPEN HAND/
 | |
| syn match   karelStatement   /PURGE CONDITION/
 | |
| syn match   karelStatement   /RELAX HAND/
 | |
| syn match   karelStatement   /WAIT FOR/
 | |
| hi def link karelStatement   Statement
 | |
| 
 | |
| syn keyword karelKeyword     BEGIN CONST END PROGRAM ROUTINE STRUCT TYPE VAR
 | |
| hi def link karelKeyword     Keyword
 | |
| 
 | |
| " Comments
 | |
| syn region karelComment      start="--" end="$"
 | |
| hi def link karelComment     Comment
 | |
| 
 | |
| let b:current_syntax = "karel"
 |