1*3d350729SMasatake YAMATO;; 2*3d350729SMasatake YAMATO;; Copyright (c) 2019, Red Hat, Inc. 3*3d350729SMasatake YAMATO;; Copyright (c) 2019, Masatake YAMATO 4*3d350729SMasatake YAMATO;; 5*3d350729SMasatake YAMATO;; Author: Masatake YAMATO <yamato@redhat.com> 6*3d350729SMasatake YAMATO;; 7*3d350729SMasatake YAMATO;; This program is free software; you can redistribute it and/or 8*3d350729SMasatake YAMATO;; modify it under the terms of the GNU General Public License 9*3d350729SMasatake YAMATO;; as published by the Free Software Foundation; either version 2 10*3d350729SMasatake YAMATO;; of the License, or (at your option) any later version. 11*3d350729SMasatake YAMATO;; 12*3d350729SMasatake YAMATO;; This program is distributed in the hope that it will be useful, 13*3d350729SMasatake YAMATO;; but WITHOUT ANY WARRANTY; without even the implied warranty of 14*3d350729SMasatake YAMATO;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*3d350729SMasatake YAMATO;; GNU General Public License for more details. 16*3d350729SMasatake YAMATO;; 17*3d350729SMasatake YAMATO;; You should have received a copy of the GNU General Public License 18*3d350729SMasatake YAMATO;; along with this program; if not, write to the Free Software 19*3d350729SMasatake YAMATO;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 20*3d350729SMasatake YAMATO;; USA. 21*3d350729SMasatake YAMATO 22*3d350729SMasatake YAMATO(require 'generic) 23*3d350729SMasatake YAMATO 24*3d350729SMasatake YAMATO(defun ctags-optlib-mode-setup-function () 25*3d350729SMasatake YAMATO (let ((st (syntax-table))) 26*3d350729SMasatake YAMATO (modify-syntax-entry ?\' " " st) 27*3d350729SMasatake YAMATO (modify-syntax-entry ?\" " " st))) 28*3d350729SMasatake YAMATO 29*3d350729SMasatake YAMATO(define-generic-mode ctags-optlib-mode 30*3d350729SMasatake YAMATO '(?#) 31*3d350729SMasatake YAMATO nil 32*3d350729SMasatake YAMATO '(;; 33*3d350729SMasatake YAMATO ;; Language 34*3d350729SMasatake YAMATO ;; 35*3d350729SMasatake YAMATO ("^--\\(langdef\\)=\\([a-zA-Z0-9]+\\)" 36*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 37*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 38*3d350729SMasatake YAMATO ("^--\\(map\\)-\\([a-zA-Z0-9]+\\)=.*" 39*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 40*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 41*3d350729SMasatake YAMATO ("--\\(alias\\)-\\([a-zA-Z0-9]+\\)=.*" 42*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 43*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 44*3d350729SMasatake YAMATO ;; 45*3d350729SMasatake YAMATO ;; Kinds 46*3d350729SMasatake YAMATO ;; 47*3d350729SMasatake YAMATO ("^--\\(kinddef\\)-\\([^=]+\\)=\\([a-zA-Z]\\),\\([a-zA-Z0-9]+\\),\\(.*\\)$" 48*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 49*3d350729SMasatake YAMATO (2 font-lock-type-face t) 50*3d350729SMasatake YAMATO (3 font-lock-constant-face t) 51*3d350729SMasatake YAMATO (4 font-lock-variable-name-face t) 52*3d350729SMasatake YAMATO (5 font-lock-doc-face t)) 53*3d350729SMasatake YAMATO ("^--\\(kinds\\)-\\([^=]+\\)=[+-]?\\([a-zA-Z]+\\)" 54*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 55*3d350729SMasatake YAMATO (2 font-lock-type-face t) 56*3d350729SMasatake YAMATO (3 font-lock-constant-face t)) 57*3d350729SMasatake YAMATO ;; 58*3d350729SMasatake YAMATO ;; Singe line regex 59*3d350729SMasatake YAMATO ;; 60*3d350729SMasatake YAMATO ("^--\\(regex\\)-\\([^=]+\\)=" 61*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 62*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 63*3d350729SMasatake YAMATO ;; 64*3d350729SMasatake YAMATO ;; Mline regex 65*3d350729SMasatake YAMATO ;; 66*3d350729SMasatake YAMATO ("^--\\(mline-regex\\)-\\([^=]+\\)=" 67*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 68*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 69*3d350729SMasatake YAMATO ;; 70*3d350729SMasatake YAMATO ;; Mtable regex 71*3d350729SMasatake YAMATO ;; 72*3d350729SMasatake YAMATO ("^--\\(_tabledef\\)-\\([^=]+\\)=\\([a-zA-Z0-9_]+\\)" 73*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 74*3d350729SMasatake YAMATO (2 font-lock-type-face t) 75*3d350729SMasatake YAMATO (3 font-lock-function-name-face t) 76*3d350729SMasatake YAMATO ) 77*3d350729SMasatake YAMATO ("^--\\(_mtable-regex\\)-\\([^=]+\\)=\\([a-zA-Z0-9_]+\\)/\\(.*\\)$" 78*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 79*3d350729SMasatake YAMATO (2 font-lock-type-face t) 80*3d350729SMasatake YAMATO (3 font-lock-function-name-face t) 81*3d350729SMasatake YAMATO (4 nil t)) 82*3d350729SMasatake YAMATO ("^--\\(_mtable-extend\\)-\\([^=]+\\)=\\([a-zA-Z0-9_]+\\)\\+\\([a-zA-Z0-9_]+\\)" 83*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 84*3d350729SMasatake YAMATO (2 font-lock-type-face t) 85*3d350729SMasatake YAMATO (3 font-lock-function-name-face t) 86*3d350729SMasatake YAMATO (4 font-lock-function-name-face t)) 87*3d350729SMasatake YAMATO ;; 88*3d350729SMasatake YAMATO ;; Fields 89*3d350729SMasatake YAMATO ;; 90*3d350729SMasatake YAMATO ("^--\\(_fielddef\\)-\\([a-zA-Z0-9]+\\)=\\([a-zA-Z0-9]+\\),\\(.*\\)$" 91*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 92*3d350729SMasatake YAMATO (2 font-lock-type-face t) 93*3d350729SMasatake YAMATO (3 font-lock-variable-name-face t) 94*3d350729SMasatake YAMATO (4 font-lock-doc-face t)) 95*3d350729SMasatake YAMATO ("^--\\(fields\\)-\\([a-zA-Z0-9]+\\)=.?{\\([a-zA-Z0-9]+\\)}" 96*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 97*3d350729SMasatake YAMATO (2 font-lock-type-face t) 98*3d350729SMasatake YAMATO (3 font-lock-variable-name-face t)) 99*3d350729SMasatake YAMATO ;; 100*3d350729SMasatake YAMATO ;; Roles 101*3d350729SMasatake YAMATO ;; 102*3d350729SMasatake YAMATO ("^--\\(_roledef\\)-\\([a-zA-Z0-9]+\\)=\\([a-zA-Z]\\)\\.\\([a-zA-Z0-9]+\\),\\(.*\\)$" 103*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 104*3d350729SMasatake YAMATO (2 font-lock-type-face t) 105*3d350729SMasatake YAMATO (3 font-lock-constant-face t) 106*3d350729SMasatake YAMATO (4 font-lock-constant-face t) 107*3d350729SMasatake YAMATO (5 font-lock-doc-face t)) 108*3d350729SMasatake YAMATO ;; 109*3d350729SMasatake YAMATO ;; Extras 110*3d350729SMasatake YAMATO ;; 111*3d350729SMasatake YAMATO ("^--\\(_extradef\\)-\\([a-zA-Z0-9]+\\)=\\([a-zA-Z0-9]+\\),\\(.*\\)$" 112*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 113*3d350729SMasatake YAMATO (2 font-lock-type-face t) 114*3d350729SMasatake YAMATO (3 font-lock-variable-name-face t) 115*3d350729SMasatake YAMATO (4 font-lock-doc-face t)) 116*3d350729SMasatake YAMATO ("^--\\(extras\\)-\\([a-zA-Z0-9]+\\)=.?{\\([a-zA-Z0-9]+\\)}" 117*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 118*3d350729SMasatake YAMATO (2 font-lock-type-face t) 119*3d350729SMasatake YAMATO (3 font-lock-variable-name-face t)) 120*3d350729SMasatake YAMATO ;; 121*3d350729SMasatake YAMATO ;; Flags 122*3d350729SMasatake YAMATO ;; 123*3d350729SMasatake YAMATO (".*{\\(tenter\\|tjump\\)=\\([a-zA-Z0-9_]+\\)}" 124*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 125*3d350729SMasatake YAMATO (2 font-lock-function-name-face t)) 126*3d350729SMasatake YAMATO (".*{\\(tenter\\)=\\([a-zA-Z0-9_]+\\)\\(,\\([a-zA-Z0-9_]+\\)\\)}" 127*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 128*3d350729SMasatake YAMATO (2 font-lock-function-name-face t) 129*3d350729SMasatake YAMATO (4 font-lock-function-name-face t)) 130*3d350729SMasatake YAMATO ("{\\(_field\\)=\\([a-zA-Z0-9_]+\\):[^}]+}" 131*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 132*3d350729SMasatake YAMATO (2 font-lock-variable-name-face t)) 133*3d350729SMasatake YAMATO ("{\\(_role\\)=\\([a-zA-Z0-9_]+\\)}" 134*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 135*3d350729SMasatake YAMATO (2 font-lock-constant-face t)) 136*3d350729SMasatake YAMATO ("{\\(_extra\\)=\\([a-zA-Z0-9_]+\\)}" 137*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 138*3d350729SMasatake YAMATO (2 font-lock-variable-name-face t)) 139*3d350729SMasatake YAMATO ("{\\(base\\)=\\([a-zA-Z0-9]+\\)}" 140*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 141*3d350729SMasatake YAMATO (2 font-lock-type-face t)) 142*3d350729SMasatake YAMATO ("{\\(_advanceTo\\)=[0-9]+\\(start\\|end\\)}" 143*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 144*3d350729SMasatake YAMATO (2 font-lock-builtin-face t)) 145*3d350729SMasatake YAMATO ("{\\(scope\\)=\\(pop\\|ref\\|set\\|push\\|clear\\)}" 146*3d350729SMasatake YAMATO (1 font-lock-keyword-face t) 147*3d350729SMasatake YAMATO (2 font-lock-builtin-face t)) 148*3d350729SMasatake YAMATO ("{\\(icase\\|exclusive\\|tleave\\|placeholder\\|tquit\\|mgroup\\|dedicated\\|shared\\|_trace\\)[^}]*}" 149*3d350729SMasatake YAMATO (1 font-lock-keyword-face t)) 150*3d350729SMasatake YAMATO ("/\\([a-zA-Z]\\)/" 151*3d350729SMasatake YAMATO (1 font-lock-constant-face t)) 152*3d350729SMasatake YAMATO ) 153*3d350729SMasatake YAMATO '("\\.ctags\\'") 154*3d350729SMasatake YAMATO '(ctags-optlib-mode-setup-function) 155*3d350729SMasatake YAMATO "Mode for editing .ctags optlib parser file") 156*3d350729SMasatake YAMATO 157*3d350729SMasatake YAMATO(provide 'ctags-optlib-mode) 158