;; I wrote this since I saw one mode for yacc files out there roaming the ;; world. I was daunted by the fact the it was written in 1990, and Emacs ;; has evolved so much since then (this I assume based on its evolution since ;; i started using it). So I figured if i wanted one, I should make it ;; myself. Please excuse idiosyncrasies, as this was my first major mode ;; of this kind. The indentation code may be a bit weird, I am not sure, ;; it was my first go at doing Emacs indentation, so I look at how other ;; modes did it, but then basically did what I thought was right ;; I hope this is useful to other hackers, and happy Bison/Yacc hacking ;; If you have ideas/suggestions/problems with this code, I can be reached at ;; beuscher@eecs.tulane.edu ;; Eric --- Sat Mar 7 1:40:20 CDT 1998 ;; Bison Sections: ;; there are five sections to a bison file (if you include the area above the ;; C declarations section. most everything in this file either does ;; actions based on which section you are deemed to be in, or based on an ;; assumption that the function will only be called from certain sections. ;; the function `bison--section-p' is the section parser ;; Indentation: ;; indentations are done based on the section of code you are in. there is ;; a procedure `bison--within-braced-c-expression-p' that checks for being in ;; C code. if you are within c-code, indentations should occur based on ;; how you have your C indentation set up. i am pretty sure this is the ;; case. ;; there are four variables, which control bison indentation within either ;; the bison declarations section or the bison grammar section ;; `bison-rule-separator-column' ;; `bison-rule-separator-column' ;; `bison-decl-type-column' ;; `bison-decl-token-column' ;; flaw: indentation works on a per-line basis, unless within braced C sexp, ;; i should fix this someday ;; and to make matters worse, i never took out c-indent-region, so that is ;; still the state of the `indent-region-function' variable ;; Electricity: ;; by default, there are electric -colon, -pipe, -open-brace, -close-brace, ;; -semicolon, -percent, -less-than, -greater-than ;; the indentation caused by these work closely with the 4 indentation ;; variables mentioned above. ;; any of these can be turned off individually by setting the appropriate ;; `bison-electric-...' variable. or all of them can be turned off by ;; setting `bison-all-electricity-off' ;; todo: should make available a way to use C-electricity if in C sexps