mirror of https://github.com/libsdl-org/SDL
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Lua
		
	
| -- This code adapted from https://gitlab.com/saalen/highlight/-/wikis/Plug-Ins
 | |
| 
 | |
| -- first add a description of what the plug-in does
 | |
| Description="Add wiki.libsdl.org reference links to HTML, LaTeX or RTF output"
 | |
| 
 | |
| -- define the plugin categories (ie. supported output formats; languages)
 | |
| Categories = { "c", "c++" }
 | |
| 
 | |
| -- the syntaxUpdate function contains code related to syntax recognition
 | |
| function syntaxUpdate(desc)
 | |
| 
 | |
|   -- if the current file is not C/C++ file we exit
 | |
|   if desc~="C and C++" then
 | |
|      return
 | |
|   end
 | |
| 
 | |
|   -- this function returns a qt-project reference link of the given token
 | |
|   function getURL(token)
 | |
|      -- generate the URL
 | |
|      url='https://wiki.libsdl.org/SDL3/'.. token
 | |
| 
 | |
|      -- embed the URL in a hyperlink according to the output format
 | |
|      -- first HTML, then LaTeX and RTF
 | |
|      if (HL_OUTPUT== HL_FORMAT_HTML or HL_OUTPUT == HL_FORMAT_XHTML) then
 | |
|          return '<a class="hl" target="new" href="'
 | |
|                 .. url .. '">'.. token .. '</a>'
 | |
|      elseif (HL_OUTPUT == HL_FORMAT_LATEX) then
 | |
|          return '\\href{'..url..'}{'..token..'}'
 | |
|      elseif (HL_OUTPUT == HL_FORMAT_RTF) then
 | |
|          return '{{\\field{\\*\\fldinst HYPERLINK "'
 | |
|                 ..url..'" }{\\fldrslt\\ul\\ulc0 '..token..'}}}'
 | |
|      end
 | |
|    end
 | |
| 
 | |
|   -- the Decorate function will be invoked for every recognized token
 | |
|   function Decorate(token, state)
 | |
| 
 | |
|     -- we are only interested in keywords, preprocessor or default items
 | |
|     if (state ~= HL_STANDARD and state ~= HL_KEYWORD and
 | |
|         state ~=HL_PREPROC) then
 | |
|       return
 | |
|     end
 | |
| 
 | |
|     -- SDL keywords start with SDL_
 | |
|     -- if this pattern applies to the token, we return the URL
 | |
|     -- if we return nothing, the token is outputted as is
 | |
|     if ( (token == "Uint8") or (token == "Uint16") or (token == "Uint32") or (token == "Uint64") or
 | |
|          (token == "Sint8") or (token == "Sint16") or (token == "Sint32") or (token == "Sint64") or
 | |
|          (string.find(token, "SDL_") == 1) ) then
 | |
|       return getURL(token)
 | |
|     end
 | |
| 
 | |
|   end
 | |
| end
 | |
| 
 | |
| -- the themeUpdate function contains code related to the theme
 | |
| function themeUpdate(desc)
 | |
|   -- the Injections table can be used to add style information to the theme
 | |
| 
 | |
|   -- HTML: we add additional CSS style information to beautify hyperlinks,
 | |
|   -- they should have the same color as their surrounding tags
 | |
|   if (HL_OUTPUT == HL_FORMAT_HTML or HL_OUTPUT == HL_FORMAT_XHTML) then
 | |
|     Injections[#Injections+1]=
 | |
|       "a.hl, a.hl:visited {color:inherit;font-weight:inherit;text-decoration:none}"
 | |
| 
 | |
|   -- LaTeX: hyperlinks require the hyperref package, so we add this here
 | |
|   -- the colorlinks and pdfborderstyle options remove ugly boxes in the output
 | |
|   elseif (HL_OUTPUT==HL_FORMAT_LATEX) then
 | |
|     Injections[#Injections+1]=
 | |
|       "\\usepackage[colorlinks=false, pdfborderstyle={/S/U/W 1}]{hyperref}"
 | |
|   end
 | |
| end
 | |
| 
 | |
| -- let highlight load the chunks
 | |
| Plugins={
 | |
|   { Type="lang", Chunk=syntaxUpdate },
 | |
|   { Type="theme", Chunk=themeUpdate },
 | |
| }
 | |
| 
 |