((and (eq c ?:) (or (not b) (eq (char-syntax b) ? ))))
((eq c ?\\) (eq b ??)))))
- (defun ruby-singleton-class-p (&optional pos)
+ (defun ruby-verify-heredoc (&optional pos)
(save-excursion
(when pos (goto-char pos))
- (forward-word -1)
- (and (or (bolp) (not (eq (char-before (point)) ?_)))
- (looking-at ruby-singleton-class-re))))
+ ;; Not right after a symbol or prefix character.
+ ;; Method names are only allowed when separated by
+ ;; whitespace. Not a limitation in Ruby, but it's hard for
+ ;; us to do better.
+ (when (not (memq (car (syntax-after (1- (point)))) '(2 3 6 10)))
+ (or (not (memq (char-before) '(?\s ?\t)))
- (ignore (forward-word-strictly -1))
++ (ignore (forward-word -1))
+ (eq (char-before) ?_)
+ (not (looking-at ruby-singleton-class-re))))))
(defun ruby-expr-beg (&optional option)
"Check if point is possibly at the beginning of an expression.
--- /dev/null
+;;; ruby-mode-tests.el --- Test suite for ruby-mode
+
+;; Copyright (C) 2012-2016 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'ruby-mode)
+
+(defmacro ruby-with-temp-buffer (contents &rest body)
+ (declare (indent 1) (debug t))
+ `(with-temp-buffer
+ (insert ,contents)
+ (ruby-mode)
+ ,@body))
+
+(defun ruby-should-indent (content column)
+ "Assert indentation COLUMN on the last line of CONTENT."
+ (ruby-with-temp-buffer content
+ (indent-according-to-mode)
+ (should (= (current-indentation) column))))
+
+(defun ruby-should-indent-buffer (expected content)
+ "Assert that CONTENT turns into EXPECTED after the buffer is re-indented.
+
+The whitespace before and including \"|\" on each line is removed."
+ (ruby-with-temp-buffer (ruby-test-string content)
+ (indent-region (point-min) (point-max))
+ (should (string= (ruby-test-string expected) (buffer-string)))))
+
+(defun ruby-test-string (s &rest args)
+ (apply 'format (replace-regexp-in-string "^[ \t]*|" "" s) args))
+
+(defun ruby-assert-state (content index value &optional point)
+ "Assert syntax state values at the end of CONTENT.
+
+VALUES-PLIST is a list with alternating index and value elements."
+ (ruby-with-temp-buffer content
+ (when point (goto-char point))
+ (syntax-propertize (point))
+ (should (eq (nth index
+ (parse-partial-sexp (point-min) (point)))
+ value))))
+
+(defun ruby-assert-face (content pos face)
+ (ruby-with-temp-buffer content
+ (font-lock-ensure nil nil)
+ (should (eq face (get-text-property pos 'face)))))
+
+(ert-deftest ruby-indent-after-symbol-made-from-string-interpolation ()
+ "It can indent the line after symbol made using string interpolation."
+ (ruby-should-indent "def foo(suffix)\n :\"bar#{suffix}\"\n"
+ ruby-indent-level))
+
+(ert-deftest ruby-indent-after-js-style-symbol-with-block-beg-name ()
+ "JS-style hash symbol can have keyword name."
+ (ruby-should-indent "link_to \"home\", home_path, class: \"foo\"\n" 0))
+
+(ert-deftest ruby-discern-singleton-class-from-heredoc ()
+ (ruby-assert-state "foo <<asd\n" 3 ?\n)
+ (ruby-assert-state "class <<asd\n" 3 nil))
+
+(ert-deftest ruby-heredoc-font-lock ()
+ (let ((s "foo <<eos.gsub('^ *', '')"))
+ (ruby-assert-face s 9 font-lock-string-face)
+ (ruby-assert-face s 10 nil)))
+
+(ert-deftest ruby-singleton-class-no-heredoc-font-lock ()
+ (ruby-assert-face "class<<a" 8 nil))
+
+(ert-deftest ruby-heredoc-highlights-interpolations ()
+ (ruby-assert-face "s = <<EOS\n #{foo}\nEOS" 15 font-lock-variable-name-face))
+
+(ert-deftest ruby-no-heredoc-inside-quotes ()
+ (ruby-assert-state "\"<<\", \"\",\nfoo" 3 nil))
+
++(ert-deftest ruby-no-heredoc-left-shift ()
++ ;; We can't really detect the left shift operator (like in similar
++ ;; cases, it depends on the type of foo), so we just require for <<
++ ;; to be preceded by a character from a known set.
++ (ruby-assert-state "foo(a<<b)" 3 nil))
++
++(ert-deftest ruby-no-heredoc-class-self ()
++ (ruby-assert-state "class <<self\nend" 3 nil))
++
+(ert-deftest ruby-exit!-font-lock ()
+ (ruby-assert-face "exit!" 5 font-lock-builtin-face))
+
+(ert-deftest ruby-deep-indent ()
+ (let ((ruby-deep-arglist nil)
+ (ruby-deep-indent-paren '(?\( ?\{ ?\[ ?\] t)))
+ (ruby-should-indent "foo = [1,\n2" 7)
+ (ruby-should-indent "foo = {a: b,\nc: d" 7)
+ (ruby-should-indent "foo(a,\nb" 4)))
+
+(ert-deftest ruby-deep-indent-disabled ()
+ (let ((ruby-deep-arglist nil)
+ (ruby-deep-indent-paren nil))
+ (ruby-should-indent "foo = [\n1" ruby-indent-level)
+ (ruby-should-indent "foo = {\na: b" ruby-indent-level)
+ (ruby-should-indent "foo(\na" ruby-indent-level)))
+
+(ert-deftest ruby-indent-after-keyword-in-a-string ()
+ (ruby-should-indent "a = \"abc\nif\"\n " 0)
+ (ruby-should-indent "a = %w[abc\n def]\n " 0)
+ (ruby-should-indent "a = \"abc\n def\"\n " 0))
+
+(ert-deftest ruby-regexp-doesnt-start-in-string ()
+ (ruby-assert-state "'(/', /\d+/" 3 nil))
+
+(ert-deftest ruby-regexp-starts-after-string ()
+ (ruby-assert-state "'(/', /\d+/" 3 ?/ 8))
+
+(ert-deftest ruby-regexp-interpolation-is-highlighted ()
+ (ruby-assert-face "/#{foobs}/" 4 font-lock-variable-name-face))
+
+(ert-deftest ruby-regexp-skips-over-interpolation ()
+ (ruby-assert-state "/#{foobs.join('/')}/" 3 nil))
+
+(ert-deftest ruby-regexp-continues-till-end-when-unclosed ()
+ (ruby-assert-state "/bars" 3 ?/))
+
+(ert-deftest ruby-regexp-can-be-multiline ()
+ (ruby-assert-state "/bars\ntees # toots \nfoos/" 3 nil))
+
+(ert-deftest ruby-slash-symbol-is-not-mistaken-for-regexp ()
+ (ruby-assert-state ":/" 3 nil))
+
+(ert-deftest ruby-slash-char-literal-is-not-mistaken-for-regexp ()
+ (ruby-assert-state "?/" 3 nil))
+
+(ert-deftest ruby-indent-simple ()
+ (ruby-should-indent-buffer
+ "if foo
+ | bar
+ |end
+ |zot
+ |"
+ "if foo
+ |bar
+ | end
+ | zot
+ |"))
+
+(ert-deftest ruby-indent-keyword-label ()
+ (ruby-should-indent-buffer
+ "bar(class: XXX) do
+ | foo
+ |end
+ |bar
+ |"
+ "bar(class: XXX) do
+ | foo
+ | end
+ | bar
+ |"))
+
+(ert-deftest ruby-indent-method-with-question-mark ()
+ (ruby-should-indent-buffer
+ "if x.is_a?(XXX)
+ | foo
+ |end
+ |"
+ "if x.is_a?(XXX)
+ | foo
+ | end
+ |"))
+
+(ert-deftest ruby-indent-expr-in-regexp ()
+ (ruby-should-indent-buffer
+ "if /#{foo}/ =~ s
+ | x = 1
+ |end
+ |"
+ "if /#{foo}/ =~ s
+ | x = 1
+ | end
+ |"))
+
+(ert-deftest ruby-indent-singleton-class ()
+ (ruby-should-indent-buffer
+ "class<<bar
+ | foo
+ |end
+ |"
+ "class<<bar
+ |foo
+ | end
+ |"))
+
+(ert-deftest ruby-indent-inside-heredoc-after-operator ()
+ (ruby-should-indent-buffer
+ "b=<<eos
+ | 42"
+ "b=<<eos
+ | 42"))
+
+(ert-deftest ruby-indent-inside-heredoc-after-space ()
+ (ruby-should-indent-buffer
+ "foo <<eos.gsub(' ', '*')
+ | 42"
+ "foo <<eos.gsub(' ', '*')
+ | 42"))
+
+(ert-deftest ruby-indent-array-literal ()
+ (let ((ruby-deep-indent-paren nil))
+ (ruby-should-indent-buffer
+ "foo = [
+ | bar
+ |]
+ |"
+ "foo = [
+ | bar
+ | ]
+ |"))
+ (ruby-should-indent-buffer
+ "foo do
+ | [bar]
+ |end
+ |"
+ "foo do
+ |[bar]
+ | end
+ |"))
+
+(ert-deftest ruby-indent-begin-end ()
+ (ruby-should-indent-buffer
+ "begin
+ | a[b]
+ |end
+ |"
+ "begin
+ | a[b]
+ | end
+ |"))
+
+(ert-deftest ruby-indent-array-after-paren-and-space ()
+ (ruby-should-indent-buffer
+ "class A
+ | def foo
+ | foo( [])
+ | end
+ |end
+ |"
+ "class A
+ | def foo
+ |foo( [])
+ |end
+ | end
+ |"))
+
+(ert-deftest ruby-indent-after-block-in-continued-expression ()
+ (ruby-should-indent-buffer
+ "var =
+ | begin
+ | val
+ | end
+ |statement"
+ "var =
+ |begin
+ |val
+ |end
+ |statement"))
+
+(ert-deftest ruby-indent-spread-args-in-parens ()
+ (let ((ruby-deep-indent-paren '(?\()))
+ (ruby-should-indent-buffer
+ "foo(1,
+ | 2,
+ | 3)
+ |"
+ "foo(1,
+ | 2,
+ | 3)
+ |")))
+
+(ert-deftest ruby-align-to-stmt-keywords-t ()
+ (let ((ruby-align-to-stmt-keywords t))
+ (ruby-should-indent-buffer
+ "foo = if bar?
+ | 1
+ |else
+ | 2
+ |end
+ |
+ |foo || begin
+ | bar
+ |end
+ |
+ |foo ||
+ | begin
+ | bar
+ | end
+ |"
+ "foo = if bar?
+ | 1
+ |else
+ | 2
+ | end
+ |
+ | foo || begin
+ | bar
+ |end
+ |
+ | foo ||
+ | begin
+ |bar
+ | end
+ |")
+ ))
+
+(ert-deftest ruby-align-to-stmt-keywords-case ()
+ (let ((ruby-align-to-stmt-keywords '(case)))
+ (ruby-should-indent-buffer
+ "b = case a
+ |when 13
+ | 6
+ |else
+ | 42
+ |end"
+ "b = case a
+ | when 13
+ | 6
+ | else
+ | 42
+ | end")))
+
+(ert-deftest ruby-align-chained-calls ()
+ (let ((ruby-align-chained-calls t))
+ (ruby-should-indent-buffer
+ "one.two.three
+ | .four
+ |
+ |my_array.select { |str| str.size > 5 }
+ | .map { |str| str.downcase }"
+ "one.two.three
+ | .four
+ |
+ |my_array.select { |str| str.size > 5 }
+ | .map { |str| str.downcase }")))
+
+(ert-deftest ruby-move-to-block-stops-at-indentation ()
+ (ruby-with-temp-buffer "def f\nend"
+ (beginning-of-line)
+ (ruby-move-to-block -1)
+ (should (looking-at "^def"))))
+
+(ert-deftest ruby-toggle-block-to-do-end ()
+ (ruby-with-temp-buffer "foo {|b|\n}"
+ (beginning-of-line)
+ (ruby-toggle-block)
+ (should (string= "foo do |b|\nend" (buffer-string)))))
+
+(ert-deftest ruby-toggle-block-to-brace ()
+ (let ((pairs '((17 . "foo { |b| b + 2 }")
+ (16 . "foo { |b|\n b + 2\n}"))))
+ (dolist (pair pairs)
+ (with-temp-buffer
+ (let ((fill-column (car pair)))
+ (insert "foo do |b|\n b + 2\nend")
+ (ruby-mode)
+ (beginning-of-line)
+ (ruby-toggle-block)
+ (should (string= (cdr pair) (buffer-string))))))))
+
+(ert-deftest ruby-toggle-block-to-multiline ()
+ (ruby-with-temp-buffer "foo {|b| b + 1}"
+ (beginning-of-line)
+ (ruby-toggle-block)
+ (should (string= "foo do |b|\n b + 1\nend" (buffer-string)))))
+
+(ert-deftest ruby-toggle-block-with-interpolation ()
+ (ruby-with-temp-buffer "foo do\n \"#{bar}\"\nend"
+ (beginning-of-line)
+ (ruby-toggle-block)
+ (should (string= "foo { \"#{bar}\" }" (buffer-string)))))
+
+(ert-deftest ruby-recognize-symbols-starting-with-at-character ()
+ (ruby-assert-face ":@abc" 3 font-lock-constant-face))
+
+(ert-deftest ruby-hash-character-not-interpolation ()
+ (ruby-assert-face "\"This is #{interpolation}\"" 15
+ font-lock-variable-name-face)
+ (ruby-assert-face "\"This is \\#{no interpolation} despite the #\""
+ 15 font-lock-string-face)
+ (ruby-assert-face "\n#@comment, not ruby code" 5 font-lock-comment-face)
+ (ruby-assert-state "\n#@comment, not ruby code" 4 t)
+ (ruby-assert-face "# A comment cannot have #{an interpolation} in it"
+ 30 font-lock-comment-face)
+ (ruby-assert-face "# #{comment}\n \"#{interpolation}\"" 16
+ font-lock-variable-name-face))
+
+(ert-deftest ruby-interpolation-suppresses-quotes-inside ()
+ (let ((s "\"<ul><li>#{@files.join(\"</li><li>\")}</li></ul>\""))
+ (ruby-assert-state s 8 nil)
+ (ruby-assert-face s 9 font-lock-string-face)
+ (ruby-assert-face s 10 font-lock-variable-name-face)
+ (ruby-assert-face s 41 font-lock-string-face)))
+
+(ert-deftest ruby-interpolation-suppresses-one-double-quote ()
+ (let ((s "\"foo#{'\"'}\""))
+ (ruby-assert-state s 8 nil)
+ (ruby-assert-face s 8 font-lock-variable-name-face)
+ (ruby-assert-face s 11 font-lock-string-face)))
+
+(ert-deftest ruby-interpolation-suppresses-one-backtick ()
+ (let ((s "`as#{'`'}das`"))
+ (ruby-assert-state s 8 nil)))
+
+(ert-deftest ruby-interpolation-keeps-non-quote-syntax ()
+ (let ((s "\"foo#{baz.tee}bar\""))
+ (ruby-with-temp-buffer s
+ (goto-char (point-min))
+ (ruby-mode)
+ (syntax-propertize (point-max))
+ (search-forward "tee")
+ (should (string= (thing-at-point 'symbol) "tee")))))
+
+(ert-deftest ruby-interpolation-inside-percent-literal ()
+ (let ((s "%( #{boo} )"))
+ (ruby-assert-face s 1 font-lock-string-face)
+ (ruby-assert-face s 4 font-lock-variable-name-face)
+ (ruby-assert-face s 10 font-lock-string-face)
+ (ruby-assert-state s 8 nil)))
+
+(ert-deftest ruby-interpolation-inside-percent-literal-with-paren ()
+ :expected-result :failed
+ (let ((s "%(^#{\")\"}^)"))
+ (ruby-assert-face s 3 font-lock-string-face)
+ (ruby-assert-face s 4 font-lock-variable-name-face)
+ (ruby-assert-face s 10 font-lock-string-face)
+ ;; It's confused by the closing paren in the middle.
+ (ruby-assert-state s 8 nil)))
+
+(ert-deftest ruby-interpolation-inside-double-quoted-percent-literals ()
+ (ruby-assert-face "%Q{foo #@bar}" 8 font-lock-variable-name-face)
+ (ruby-assert-face "%W{foo #@bar}" 8 font-lock-variable-name-face)
+ (ruby-assert-face "%r{foo #@bar}" 8 font-lock-variable-name-face)
+ (ruby-assert-face "%x{foo #@bar}" 8 font-lock-variable-name-face))
+
+(ert-deftest ruby-no-interpolation-in-single-quoted-literals ()
+ (ruby-assert-face "'foo #@bar'" 7 font-lock-string-face)
+ (ruby-assert-face "%q{foo #@bar}" 8 font-lock-string-face)
+ (ruby-assert-face "%w{foo #@bar}" 8 font-lock-string-face)
+ (ruby-assert-face "%s{foo #@bar}" 8 font-lock-string-face))
+
+(ert-deftest ruby-interpolation-after-dollar-sign ()
+ (ruby-assert-face "\"$#{balance}\"" 2 'font-lock-string-face)
+ (ruby-assert-face "\"$#{balance}\"" 3 'font-lock-variable-name-face))
+
+(ert-deftest ruby-no-unknown-percent-literals ()
+ ;; No folding of case.
+ (ruby-assert-face "%S{foo}" 4 nil)
+ (ruby-assert-face "%R{foo}" 4 nil))
+
++(ert-deftest ruby-no-nested-percent-literals ()
++ (ruby-with-temp-buffer "a = %w[b %()]"
++ (syntax-propertize (point))
++ (should (null (nth 8 (syntax-ppss))))
++ (should (eq t (nth 3 (syntax-ppss (1- (point-max))))))
++ (search-backward "[")
++ (should (eq t (nth 3 (syntax-ppss))))))
++
+(ert-deftest ruby-add-log-current-method-examples ()
+ (let ((pairs '(("foo" . "#foo")
+ ("C.foo" . ".foo")
+ ("self.foo" . ".foo"))))
+ (dolist (pair pairs)
+ (let ((name (car pair))
+ (value (cdr pair)))
+ (ruby-with-temp-buffer (ruby-test-string
+ "module M
+ | class C
+ | def %s
+ | _
+ | end
+ | end
+ |end"
+ name)
+ (search-backward "_")
+ (forward-line)
+ (should (string= (ruby-add-log-current-method)
+ (format "M::C%s" value))))))))
+
+(ert-deftest ruby-add-log-current-method-outside-of-method ()
+ (ruby-with-temp-buffer (ruby-test-string
+ "module M
+ | class C
+ | def foo
+ | end
+ | _
+ | end
+ |end")
+ (search-backward "_")
+ (should (string= (ruby-add-log-current-method)"M::C"))))
+
+(ert-deftest ruby-add-log-current-method-in-singleton-class ()
+ (ruby-with-temp-buffer (ruby-test-string
+ "class C
+ | class << self
+ | def foo
+ | _
+ | end
+ | end
+ |end")
+ (search-backward "_")
+ (should (string= (ruby-add-log-current-method) "C.foo"))))
+
+(ert-deftest ruby-add-log-current-method-namespace-shorthand ()
+ (ruby-with-temp-buffer (ruby-test-string
+ "class C::D
+ | def foo
+ | _
+ | end
+ |end")
+ (search-backward "_")
+ (should (string= (ruby-add-log-current-method) "C::D#foo"))))
+
+(ert-deftest ruby-add-log-current-method-after-inner-class ()
+ (ruby-with-temp-buffer (ruby-test-string
+ "module M
+ | class C
+ | class D
+ | end
+ | def foo
+ | _
+ | end
+ | end
+ |end")
+ (search-backward "_")
+ (should (string= (ruby-add-log-current-method) "M::C#foo"))))
+
+(defvar ruby-block-test-example
+ (ruby-test-string
+ "class C
+ | def foo
+ | 1
+ | end
+ |
+ | def bar
+ | 2
+ | end
+ |
+ | def baz
+ |some do
+ |3
+ | end
+ | end
+ |end"))
+
+(defmacro ruby-deftest-move-to-block (name &rest body)
+ (declare (indent defun))
+ `(ert-deftest ,(intern (format "ruby-move-to-block-%s" name)) ()
+ (with-temp-buffer
+ (insert ruby-block-test-example)
+ (ruby-mode)
+ (goto-char (point-min))
+ ,@body)))
+
+(ruby-deftest-move-to-block works-on-do
+ (forward-line 10)
+ (ruby-end-of-block)
+ (should (= 13 (line-number-at-pos)))
+ (ruby-beginning-of-block)
+ (should (= 11 (line-number-at-pos))))
+
+(ruby-deftest-move-to-block zero-is-noop
+ (forward-line 4)
+ (ruby-move-to-block 0)
+ (should (= 5 (line-number-at-pos))))
+
+(ruby-deftest-move-to-block ok-with-three
+ (forward-line 1)
+ (ruby-move-to-block 3)
+ (should (= 14 (line-number-at-pos))))
+
+(ruby-deftest-move-to-block ok-with-minus-two
+ (forward-line 9)
+ (ruby-move-to-block -2)
+ (should (= 2 (line-number-at-pos))))
+
+(ert-deftest ruby-move-to-block-skips-percent-literal ()
+ (dolist (s (list (ruby-test-string
+ "foo do
+ | a = %%w(
+ | def yaa
+ | )
+ |end")
+ (ruby-test-string
+ "foo do
+ | a = %%w|
+ | end
+ | |
+ |end")))
+ (ruby-with-temp-buffer s
+ (goto-char (point-min))
+ (ruby-end-of-block)
+ (should (= 5 (line-number-at-pos)))
+ (ruby-beginning-of-block)
+ (should (= 1 (line-number-at-pos))))))
+
+(ert-deftest ruby-move-to-block-skips-heredoc ()
+ (ruby-with-temp-buffer
+ (ruby-test-string
+ "if something_wrong?
+ | ActiveSupport::Deprecation.warn(<<-eowarn)
+ | boo hoo
+ | end
+ | eowarn
+ |end")
+ (goto-char (point-min))
+ (ruby-end-of-block)
+ (should (= 6 (line-number-at-pos)))
+ (ruby-beginning-of-block)
+ (should (= 1 (line-number-at-pos)))))
+
+(ert-deftest ruby-move-to-block-does-not-fold-case ()
+ (ruby-with-temp-buffer
+ (ruby-test-string
+ "foo do
+ | Module.to_s
+ |end")
+ (let ((case-fold-search t))
+ (ruby-beginning-of-block))
+ (should (= 1 (line-number-at-pos)))))
+
+(ert-deftest ruby-move-to-block-moves-from-else-to-if ()
+ (ruby-with-temp-buffer (ruby-test-string
+ "if true
+ | nested_block do
+ | end
+ |else
+ |end")
+ (goto-char (point-min))
+ (forward-line 3)
+ (ruby-beginning-of-block)
+ (should (= 1 (line-number-at-pos)))))
+
+(ert-deftest ruby-beginning-of-defun-does-not-fold-case ()
+ (ruby-with-temp-buffer
+ (ruby-test-string
+ "class C
+ | def bar
+ | Class.to_s
+ | end
+ |end")
+ (goto-char (point-min))
+ (forward-line 3)
+ (let ((case-fold-search t))
+ (beginning-of-defun))
+ (should (= 2 (line-number-at-pos)))))
+
+(ert-deftest ruby-end-of-defun-skips-to-next-line-after-the-method ()
+ (ruby-with-temp-buffer
+ (ruby-test-string
+ "class D
+ | def tee
+ | 'ho hum'
+ | end
+ |end")
+ (goto-char (point-min))
+ (forward-line 1)
+ (end-of-defun)
+ (should (= 5 (line-number-at-pos)))))
+
+(defvar ruby-sexp-test-example
+ (ruby-test-string
+ "class C
+ | def foo
+ | self.end
+ | D.new.class
+ | [1, 2, 3].map do |i|
+ | i + 1
+ | end.sum
+ | end
+ |end"))
+
+(ert-deftest ruby-forward-sexp-skips-method-calls-with-keyword-names ()
+ (ruby-with-temp-buffer ruby-sexp-test-example
+ (goto-line 2)
+ (ruby-forward-sexp)
+ (should (= 8 (line-number-at-pos)))))
+
+(ert-deftest ruby-backward-sexp-skips-method-calls-with-keyword-names ()
+ (ruby-with-temp-buffer ruby-sexp-test-example
+ (goto-line 8)
+ (end-of-line)
+ (ruby-backward-sexp)
+ (should (= 2 (line-number-at-pos)))))
+
+(ert-deftest ruby--insert-coding-comment-ruby-style ()
+ (with-temp-buffer
+ (let ((ruby-encoding-magic-comment-style 'ruby))
+ (ruby--insert-coding-comment "utf-8")
+ (should (string= "# coding: utf-8\n" (buffer-string))))))
+
+(ert-deftest ruby--insert-coding-comment-emacs-style ()
+ (with-temp-buffer
+ (let ((ruby-encoding-magic-comment-style 'emacs))
+ (ruby--insert-coding-comment "utf-8")
+ (should (string= "# -*- coding: utf-8 -*-\n" (buffer-string))))))
+
+(ert-deftest ruby--insert-coding-comment-custom-style ()
+ (with-temp-buffer
+ (let ((ruby-encoding-magic-comment-style 'custom)
+ (ruby-custom-encoding-magic-comment-template "# encoding: %s\n"))
+ (ruby--insert-coding-comment "utf-8")
+ (should (string= "# encoding: utf-8\n\n" (buffer-string))))))
+
+
+(provide 'ruby-mode-tests)
+
+;;; ruby-mode-tests.el ends here
--- /dev/null
- Bar::f4 perl-src/kai-test.pl /^sub Bar::f4 {$/
- Bar::f5 perl-src/kai-test.pl /^sub f5 {$/
+#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/
+#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/
+$0x80 c-src/sysdep.h 32
+$SYS_##syscall_na c-src/sysdep.h 31
+$domain php-src/lce_functions.php 175
+$filename php-src/lce_functions.php 174
+$ignore_ws php-src/lce_functions.php 171
+$memassign php-src/ptest.php 9
+$memassign_space php-src/ptest.php 10
+$member php-src/ptest.php 8
+$msgid php-src/lce_functions.php 107
+$msgid php-src/lce_functions.php 165
+$msgid_lc php-src/lce_functions.php 113
+$msgstr php-src/lce_functions.php 108
+$msgstr php-src/lce_functions.php 166
+$msgstr_lc php-src/lce_functions.php 114
+$po_entries php-src/lce_functions.php 172
+$poe_num php-src/lce_functions.php 173
+$por_a php-src/lce_functions.php 500
+$prefix php-src/lce_functions.php 72
+$state php-src/lce_functions.php 170
+$sys_comment php-src/lce_functions.php 110
+$sys_comment php-src/lce_functions.php 168
+$sys_comment_lc php-src/lce_functions.php 116
+$test php-src/ptest.php 12
+$unk_comment php-src/lce_functions.php 111
+$unk_comment php-src/lce_functions.php 169
+$unk_comment_lc php-src/lce_functions.php 117
+$user_comment php-src/lce_functions.php 109
+$user_comment php-src/lce_functions.php 167
+$user_comment_lc php-src/lce_functions.php 115
+${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
+%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/
+%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/
+($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8
+($prog,$_,@list perl-src/yagrip.pl 39
+($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40
+(a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/
+(another-forth-word forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/
++ ruby-src/test.rb /^ def +(y)$/
++ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/space \/exclam/
+/A ps-src/rfc1245.ps /^\/A { $/
+/Acircumflex ps-src/rfc1245.ps /^\/Acircumflex \/Ecircumflex \/Aacute \/Edieresis \/Egra/
+/B ps-src/rfc1245.ps /^\/B { $/
+/BEGINBITMAP2BIT ps-src/rfc1245.ps /^\/BEGINBITMAP2BIT { $/
+/BEGINBITMAP2BITc ps-src/rfc1245.ps /^\/BEGINBITMAP2BITc { $/
+/BEGINBITMAPBW ps-src/rfc1245.ps /^\/BEGINBITMAPBW { $/
+/BEGINBITMAPBWc ps-src/rfc1245.ps /^\/BEGINBITMAPBWc { $/
+/BEGINBITMAPGRAY ps-src/rfc1245.ps /^\/BEGINBITMAPGRAY { $/
+/BEGINBITMAPGRAYc ps-src/rfc1245.ps /^\/BEGINBITMAPGRAYc { $/
+/BEGINPRINTCODE ps-src/rfc1245.ps /^\/BEGINPRINTCODE { $/
+/BF ps-src/rfc1245.ps /^\/BF { $/
+/BITMAPCOLOR ps-src/rfc1245.ps /^\/BITMAPCOLOR { $/
+/BITMAPCOLORc ps-src/rfc1245.ps /^\/BITMAPCOLORc { $/
+/BITMAPGRAY ps-src/rfc1245.ps /^\/BITMAPGRAY { $/
+/BITMAPGRAYc ps-src/rfc1245.ps /^\/BITMAPGRAYc { $/
+/C ps-src/rfc1245.ps /^\/C { $/
+/COMMONBITMAP ps-src/rfc1245.ps /^\/COMMONBITMAP { $/
+/COMMONBITMAPc ps-src/rfc1245.ps /^\/COMMONBITMAPc { $/
+/D ps-src/rfc1245.ps /^\/D {curveto} bind def$/
+/DiacriticEncoding ps-src/rfc1245.ps /^\/DiacriticEncoding [$/
+/E ps-src/rfc1245.ps /^\/E {lineto} bind def$/
+/ENDBITMAP ps-src/rfc1245.ps /^\/ENDBITMAP {$/
+/ENDPRINTCODE ps-src/rfc1245.ps /^\/ENDPRINTCODE {$/
+/F ps-src/rfc1245.ps /^\/F { $/
+/FMBEGINEPSF ps-src/rfc1245.ps /^\/FMBEGINEPSF { $/
+/FMBEGINPAGE ps-src/rfc1245.ps /^\/FMBEGINPAGE { $/
+/FMDEFINEFONT ps-src/rfc1245.ps /^\/FMDEFINEFONT { $/
+/FMDOCUMENT ps-src/rfc1245.ps /^\/FMDOCUMENT { $/
+/FMENDEPSF ps-src/rfc1245.ps /^\/FMENDEPSF {$/
+/FMENDPAGE ps-src/rfc1245.ps /^\/FMENDPAGE {$/
+/FMLOCAL ps-src/rfc1245.ps /^\/FMLOCAL {$/
+/FMNORMALIZEGRAPHICS ps-src/rfc1245.ps /^\/FMNORMALIZEGRAPHICS { $/
+/FMVERSION ps-src/rfc1245.ps /^\/FMVERSION {$/
+/FMversion ps-src/rfc1245.ps /^\/FMversion (2.0) def $/
+/Fmcc ps-src/rfc1245.ps /^\/Fmcc {$/
+/FrameDict ps-src/rfc1245.ps /^\/FrameDict 190 dict def $/
+/G ps-src/rfc1245.ps /^\/G { $/
+/H ps-src/rfc1245.ps /^\/H { $/
+/Icircumflex ps-src/rfc1245.ps /^\/Icircumflex \/Idieresis \/Igrave \/Oacute \/Ocircumfl/
+/L ps-src/rfc1245.ps /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V \/W \/X \/Y \/Z \/brac/
+/L ps-src/rfc1245.ps /^\/L { $/
+/M ps-src/rfc1245.ps /^\/M {newpath moveto} bind def$/
+/N ps-src/rfc1245.ps /^\/N { $/
+/Ntilde ps-src/rfc1245.ps /^\/Ntilde \/Odieresis \/Udieresis \/aacute \/agrave \/aci/
+/O ps-src/rfc1245.ps /^\/O {closepath} bind def$/
+/Otilde ps-src/rfc1245.ps /^\/Otilde \/OE \/oe \/endash \/emdash \/quotedblleft \/quo/
+/P ps-src/rfc1245.ps /^\/P { $/
+/PF ps-src/rfc1245.ps /^\/PF { $/
+/R ps-src/rfc1245.ps /^\/R { $/
+/RF ps-src/rfc1245.ps /^\/RF { $/
+/RR ps-src/rfc1245.ps /^\/RR { $/
+/ReEncode ps-src/rfc1245.ps /^\/ReEncode { $/
+/S ps-src/rfc1245.ps /^\/S { $/
+/SF ps-src/rfc1245.ps /^\/SF { $/
+/T ps-src/rfc1245.ps /^\/T { $/
+/TF ps-src/rfc1245.ps /^\/TF { $/
+/U ps-src/rfc1245.ps /^\/U { $/
+/Uacute ps-src/rfc1245.ps /^\/Uacute \/Ucircumflex \/Ugrave \/dotlessi \/circumflex/
+/V ps-src/rfc1245.ps /^\/V { $/
+/W ps-src/rfc1245.ps /^\/W { $/
+/X ps-src/rfc1245.ps /^\/X { $/
+/Y ps-src/rfc1245.ps /^\/Y { $/
+/Z ps-src/rfc1245.ps /^\/Z {$/
+/atilde ps-src/rfc1245.ps /^\/atilde \/aring \/ccedilla \/eacute \/egrave \/ecircumf/
+/bl ps-src/rfc1245.ps /^\/bl { $/
+/braceright ps-src/rfc1245.ps /^\/braceright \/asciitilde \/.notdef \/Adieresis \/Aring/
+/bracketright ps-src/rfc1245.ps /^\/bracketright \/asciicircum \/underscore \/grave \/a \//
+/breve ps-src/rfc1245.ps /^\/breve \/dotaccent \/ring \/cedilla \/hungarumlaut \/og/
+/cfs ps-src/rfc1245.ps /^\/cfs { $/
+/colorsetup ps-src/rfc1245.ps /^\/colorsetup {$/
+/desperatepapersize ps-src/rfc1245.ps /^\/desperatepapersize {$/
+/dieresis ps-src/rfc1245.ps /^\/dieresis \/.notdef \/AE \/Oslash \/.notdef \/.notdef \//
+/dmatrix ps-src/rfc1245.ps /^\/dmatrix matrix def$/
+/dnormalize ps-src/rfc1245.ps /^\/dnormalize {$/
+/dpi ps-src/rfc1245.ps /^\/dpi 72 0 dmatrix defaultmatrix dtransform$/
+/exclamdown ps-src/rfc1245.ps /^\/exclamdown \/logicalnot \/.notdef \/florin \/.notdef /
+/fakecolorsetup ps-src/rfc1245.ps /^\/fakecolorsetup {$/
+/fillprocs ps-src/rfc1245.ps /^\/fillprocs 32 array def$/
+/fl ps-src/rfc1245.ps /^\/fl { $/
+/fraction ps-src/rfc1245.ps /^\/fraction \/currency \/guilsinglleft \/guilsinglright/
+/freq ps-src/rfc1245.ps /^\/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} i/
+/gn ps-src/rfc1245.ps /^\/gn { $/
+/graymode ps-src/rfc1245.ps /^\/graymode true def$/
+/grayness ps-src/rfc1245.ps /^\/grayness {$/
+/guillemotleft ps-src/rfc1245.ps /^\/guillemotleft \/guillemotright \/ellipsis \/.notdef /
+/home/www/pub/etags.c.gz make-src/Makefile /^\/home\/www\/pub\/etags.c.gz: etags.c$/
+/home/www/pub/software/unix/etags.tar.gz make-src/Makefile /^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/
+/hx ps-src/rfc1245.ps /^\/hx { $/
+/i ps-src/rfc1245.ps /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s \/t \/u \/v \/w \/x \/y/
+/iacute ps-src/rfc1245.ps /^\/iacute \/igrave \/icircumflex \/idieresis \/ntilde \/o/
+/ic ps-src/rfc1245.ps /^\/ic [ $/
+/inch ps-src/rfc1245.ps /^\/inch {72 mul} def$/
+/ip ps-src/rfc1245.ps /^\/ip { $/
+/less ps-src/rfc1245.ps /^\/less \/equal \/greater \/question \/at \/A \/B \/C \/D \/E/
+/lnormalize ps-src/rfc1245.ps /^\/lnormalize { $/
+/manualpapersize ps-src/rfc1245.ps /^\/manualpapersize {$/
+/max ps-src/rfc1245.ps /^\/max {2 copy lt {exch} if pop} bind def$/
+/min ps-src/rfc1245.ps /^\/min {2 copy gt {exch} if pop} bind def$/
+/ms ps-src/rfc1245.ps /^\/ms { $/
+/nbluet ps-src/rfc1245.ps /^\/nbluet 256 array def$/
+/ngrayt ps-src/rfc1245.ps /^\/ngrayt 256 array def$/
+/ngreent ps-src/rfc1245.ps /^\/ngreent 256 array def$/
+/normalize ps-src/rfc1245.ps /^\/normalize {$/
+/nredt ps-src/rfc1245.ps /^\/nredt 256 array def$/
+/numbersign ps-src/rfc1245.ps /^\/numbersign \/dollar \/percent \/ampersand \/quotesing/
+/ocircumflex ps-src/rfc1245.ps /^\/ocircumflex \/odieresis \/otilde \/uacute \/ugrave \/u/
+/ordfeminine ps-src/rfc1245.ps /^\/ordfeminine \/ordmasculine \/.notdef \/ae \/oslash \/q/
+/pagedimen ps-src/rfc1245.ps /^\/pagedimen { $/
+/papersize ps-src/rfc1245.ps /^\/papersize {$/
+/paragraph ps-src/rfc1245.ps /^\/paragraph \/germandbls \/registered \/copyright \/tra/
+/parenright ps-src/rfc1245.ps /^\/parenright \/asterisk \/plus \/comma \/hyphen \/period/
+/periodcentered ps-src/rfc1245.ps /^\/periodcentered \/quotesinglbase \/quotedblbase \/per/
+/quoteleft ps-src/rfc1245.ps /^\/quoteleft \/quoteright \/.notdef \/.notdef \/ydieresi/
+/restorematrix ps-src/rfc1245.ps /^\/restorematrix {$/
+/s1 ps-src/rfc1245.ps /^\/s1 1 string def$/
+/sangle ps-src/rfc1245.ps /^\/sangle 1 0 dmatrix defaultmatrix dtransform exch /
+/savematrix ps-src/rfc1245.ps /^\/savematrix {$/
+/setmanualfeed ps-src/rfc1245.ps /^\/setmanualfeed {$/
+/setpapername ps-src/rfc1245.ps /^\/setpapername { $/
+/setpattern ps-src/rfc1245.ps /^\/setpattern {$/
+/two ps-src/rfc1245.ps /^\/two \/three \/four \/five \/six \/seven \/eight \/nine \//
+/udieresis ps-src/rfc1245.ps /^\/udieresis \/dagger \/.notdef \/cent \/sterling \/secti/
+/wbytes ps-src/rfc1245.ps /^\/wbytes { $/
+/wh ps-src/rfc1245.ps /^\/wh { $/
+/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef \/.notdef /
+:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
+< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
+<< ruby-src/test.rb /^ def <<(y)$/
+<= ruby-src/test.rb /^ def <=(y)$/
+<=> ruby-src/test.rb /^ def <=>(y)$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/
+=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/
+== ruby-src/test.rb /^ def ==(y)$/
+=== ruby-src/test.rb /^ def ===(y)$/
+=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
+=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
+=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
+> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/
+>field1 forth-src/test-forth.fth /^ 9 field >field1$/
+>field2 forth-src/test-forth.fth /^ 5 field >field2$/
+A c.c 162
+A cp-src/c.C 39
+A cp-src/c.C 56
+A cp-src/c.C 57
+A cp-src/c.C /^void A::A() {}$/
+A cp-src/c.C 73
+A cp-src/c.C 117
+A cp-src/fail.C 7
+A cp-src/fail.C 23
+A ruby-src/test1.ru /^class A$/
+A ruby-src/test1.ru /^module A$/
+ABC ruby-src/test1.ru 11
+ADASRC make-src/Makefile /^ADASRC=etags-test-for.ada 2ataspri.adb 2ataspri.ad/
+ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZ/
+ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378
+ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define ALLOCATED_BEFORE_DUMPING(P) \\$/
+ALLOCATE_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define ALLOCATE_PSEUDOVECTOR(type, field, tag) /
+ALLOCATE_ZEROED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, /
+AND y-src/cccp.c 11
+ANSIC c-src/h.h 84
+ANSIC c-src/h.h 85
+AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/
+ARGS make-src/Makefile /^ARGS=- < srclist$/
+ARITH_EQUAL c-src/emacs/src/lisp.h 3498
+ARITH_GRTR c-src/emacs/src/lisp.h 3501
+ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503
+ARITH_LESS c-src/emacs/src/lisp.h 3500
+ARITH_LESS_OR_EQUAL c-src/emacs/src/lisp.h 3502
+ARITH_NOTEQUAL c-src/emacs/src/lisp.h 3499
+ARRAYELTS c-src/emacs/src/lisp.h /^#define ARRAYELTS(arr) (sizeof (arr) \/ sizeof (arr/
+ARRAYP c-src/emacs/src/lisp.h /^ARRAYP (Lisp_Object x)$/
+ARRAY_MARK_FLAG c-src/emacs/src/lisp.h 768
+ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)$/
+ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Objec/
+ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/
+ASRC make-src/Makefile /^ASRC=empty.zz empty.zz.gz$/
+AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName *n, unsigned l/
+AST_ConcreteType::AST_ConcreteType cp-src/c.C /^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/
+AST_Root cp-src/c.C 92
+AT cp-src/c.C 52
+AU cp-src/c.C 53
+AUTOLOADP c-src/emacs/src/lisp.h /^AUTOLOADP (Lisp_Object x)$/
+AUTO_CONS c-src/emacs/src/lisp.h /^#define AUTO_CONS(name, a, b) Lisp_Object name = A/
+AUTO_CONS_EXPR c-src/emacs/src/lisp.h /^#define AUTO_CONS_EXPR(a, b) \\$/
+AUTO_LIST1 c-src/emacs/src/lisp.h /^#define AUTO_LIST1(name, a) \\$/
+AUTO_LIST2 c-src/emacs/src/lisp.h /^#define AUTO_LIST2(name, a, b) \\$/
+AUTO_LIST3 c-src/emacs/src/lisp.h /^#define AUTO_LIST3(name, a, b, c) \\$/
+AUTO_LIST4 c-src/emacs/src/lisp.h /^#define AUTO_LIST4(name, a, b, c, d) \\$/
+AUTO_STRING c-src/emacs/src/lisp.h /^#define AUTO_STRING(name, str) \\$/
+AVAIL_ALLOCA c-src/emacs/src/lisp.h /^#define AVAIL_ALLOCA(size) (sa_avail -= (size), al/
+Abort_Handler_Pointer/t ada-src/2ataspri.ads /^ type Abort_Handler_Pointer is access procedure /
+Abort_Task/p ada-src/2ataspri.adb /^ procedure Abort_Task (T : TCB_Ptr) is$/
+Abort_Task/p ada-src/2ataspri.ads /^ procedure Abort_Task (T : TCB_Ptr);$/
+Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/
+Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/
+Ada_funcs c-src/etags.c /^Ada_funcs (FILE *inf)$/
+Ada_getit c-src/etags.c /^Ada_getit (FILE *inf, const char *name_qualifier)$/
+Ada_help c-src/etags.c 475
+Ada_suffixes c-src/etags.c 473
+AddNullToNmStr pas-src/common.pas /^function AddNullToNmStr; (*($/
+Address_To_Call_State/f ada-src/2ataspri.adb /^ function Address_To_Call_State is new$/
+Address_To_TCB_Ptr/f ada-src/2ataspri.ads /^ function Address_To_TCB_Ptr is new$/
+Advanced usage tex-src/gzip.texi /^@node Advanced usage, Environment, Invoking gzip, /
+Aligned_Cons c-src/emacs/src/lisp.h 4670
+Aligned_String c-src/emacs/src/lisp.h 4676
+AppendTextString pas-src/common.pas /^function AppendTextString;(*($/
+Arith_Comparison c-src/emacs/src/lisp.h 3497
+Asm_help c-src/etags.c 504
+Asm_labels c-src/etags.c /^Asm_labels (FILE *inf)$/
+Asm_suffixes c-src/etags.c 493
+B cp-src/c.C 54
+B cp-src/c.C 56
+B cp-src/c.C 74
+B cp-src/c.C /^void B::B() {}$/
+B cp-src/c.C 122
+B cp-src/fail.C 8
+B cp-src/fail.C 24
+B ruby-src/test1.ru /^ class B$/
+BE_Node cp-src/c.C /^void BE_Node::BE_Node() {}$/
+BE_Node cp-src/c.C 77
+BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 125
+BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 129
+BITS_PER_CHAR c-src/emacs/src/lisp.h 136
+BITS_PER_EMACS_INT c-src/emacs/src/lisp.h 139
+BITS_PER_LONG c-src/emacs/src/lisp.h 138
+BITS_PER_SHORT c-src/emacs/src/lisp.h 137
+BITS_WORD_MAX c-src/emacs/src/lisp.h 124
+BITS_WORD_MAX c-src/emacs/src/lisp.h 128
+BLACK cp-src/screen.hpp 12
+BLOCK c-src/emacs/src/gmalloc.c /^#define BLOCK(A) (((char *) (A) - _heapbase) \/ BLO/
+BLOCKIFY c-src/emacs/src/gmalloc.c /^#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) \//
+BLOCKLOG c-src/emacs/src/gmalloc.c 125
+BLOCKSIZE c-src/emacs/src/gmalloc.c 126
+BLUE cp-src/screen.hpp 13
+BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 114
+BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 115
+BOOL_VECTOR_P c-src/emacs/src/lisp.h /^BOOL_VECTOR_P (Lisp_Object a)$/
+BROWN cp-src/screen.hpp 18
+BUFFERP c-src/emacs/src/lisp.h /^BUFFERP (Lisp_Object a)$/
+BUFFERSIZE objc-src/Subprocess.h 43
+BUFFER_OBJFWDP c-src/emacs/src/lisp.h /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/
+BYTE_MARK_STACK c-src/emacs/src/lisp.h 3181
+Bar lua-src/test.lua /^function Square.something:Bar ()$/
+Bar perl-src/kai-test.pl /^package Bar;$/
- Foo::Bar::f6 perl-src/kai-test.pl /^sub f6 {$/
- Foo::f3 perl-src/kai-test.pl /^sub f3 {$/
+Barrier_Function_Pointer/t ada-src/etags-test-for.ada /^ type Barrier_Function_Pointer is access$/
+Bidule/b ada-src/etags-test-for.ada /^ protected body Bidule is$/
+Bidule/b ada-src/waroquiers.ada /^ protected body Bidule is$/
+Bidule/t ada-src/etags-test-for.ada /^ protected Bidule is$/
+Bidule/t ada-src/waroquiers.ada /^ protected Bidule is$/
+Body_Required/f ada-src/etags-test-for.ada /^ function Body_Required$/
+Boo cp-src/c.C 129
+Boo cp-src/c.C /^ Boo(int _i, int _a, int _b) : i(_i), a(_a), b(/
+Boo::Boo cp-src/c.C /^Boo::Boo(Boo) :$/
+ButtonBar pyt-src/server.py /^def ButtonBar(frame, legend, ref, alternatives, co/
+C cp-src/fail.C 9
+C cp-src/fail.C /^ C(int i) {x = i;}$/
+C cp-src/fail.C 25
+CALLMANY c-src/emacs/src/lisp.h /^#define CALLMANY(f, array) (f) (ARRAYELTS (array),/
+CALLN c-src/emacs/src/lisp.h /^#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object [/
+CAR c-src/emacs/src/lisp.h /^CAR (Lisp_Object c)$/
+CAR_SAFE c-src/emacs/src/lisp.h /^CAR_SAFE (Lisp_Object c)$/
+CATCHER c-src/emacs/src/lisp.h 3021
+CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/
+CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/
+CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/
+CHAR y-src/cccp.c 7
+CHARACTERBITS c-src/emacs/src/lisp.h 2457
+CHARS c-src/etags.c 157
+CHARTAB_SIZE_BITS c-src/emacs/src/lisp.h 1565
+CHARTAB_SIZE_BITS_0 c-src/emacs/src/lisp.h 1567
+CHARTAB_SIZE_BITS_1 c-src/emacs/src/lisp.h 1568
+CHARTAB_SIZE_BITS_2 c-src/emacs/src/lisp.h 1569
+CHARTAB_SIZE_BITS_3 c-src/emacs/src/lisp.h 1570
+CHAR_ALT c-src/emacs/src/lisp.h 2445
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 593
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 597
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 605
+CHAR_CTL c-src/emacs/src/lisp.h 2449
+CHAR_HYPER c-src/emacs/src/lisp.h 2447
+CHAR_META c-src/emacs/src/lisp.h 2450
+CHAR_MODIFIER_MASK c-src/emacs/src/lisp.h 2452
+CHAR_SHIFT c-src/emacs/src/lisp.h 2448
+CHAR_SUPER c-src/emacs/src/lisp.h 2446
+CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h /^CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct/
+CHAR_TABLE_P c-src/emacs/src/lisp.h /^CHAR_TABLE_P (Lisp_Object a)$/
+CHAR_TABLE_REF c-src/emacs/src/lisp.h /^CHAR_TABLE_REF (Lisp_Object ct, int idx)$/
+CHAR_TABLE_REF_ASCII c-src/emacs/src/lisp.h /^CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t id/
+CHAR_TABLE_SET c-src/emacs/src/lisp.h /^CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Obje/
+CHAR_TABLE_STANDARD_SLOTS c-src/emacs/src/lisp.h 1697
+CHAR_TYPE_SIZE cccp.y 87
+CHAR_TYPE_SIZE y-src/cccp.y 87
+CHECKFLAGS make-src/Makefile /^CHECKFLAGS=-DDEBUG -Wno-unused-function$/
+CHECKOBJS make-src/Makefile /^CHECKOBJS=chkmalloc.o chkxm.o$/
+CHECK_ARRAY c-src/emacs/src/lisp.h /^CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate)/
+CHECK_BOOL_VECTOR c-src/emacs/src/lisp.h /^CHECK_BOOL_VECTOR (Lisp_Object x)$/
+CHECK_BUFFER c-src/emacs/src/lisp.h /^CHECK_BUFFER (Lisp_Object x)$/
+CHECK_CONS c-src/emacs/src/lisp.h /^CHECK_CONS (Lisp_Object x)$/
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 571
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579
+CHECK_LIST c-src/emacs/src/lisp.h /^CHECK_LIST (Lisp_Object x)$/
+CHECK_LIST_CONS c-src/emacs/src/lisp.h /^# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_C/
+CHECK_NATNUM c-src/emacs/src/lisp.h /^CHECK_NATNUM (Lisp_Object x)$/
+CHECK_NUMBER c-src/emacs/src/lisp.h /^# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x)$/
+CHECK_NUMBER_CAR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CAR (Lisp_Object x)$/
+CHECK_NUMBER_CDR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CDR (Lisp_Object x)$/
+CHECK_NUMBER_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_COERCE_MARKER(x) \\$/
+CHECK_NUMBER_OR_FLOAT c-src/emacs/src/lisp.h /^CHECK_NUMBER_OR_FLOAT (Lisp_Object x)$/
+CHECK_NUMBER_OR_FLOAT_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) /
+CHECK_PROCESS c-src/emacs/src/lisp.h /^CHECK_PROCESS (Lisp_Object x)$/
+CHECK_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_RANGED_INTEGER(x, lo, hi) \\$/
+CHECK_STRING_CAR c-src/emacs/src/lisp.h /^CHECK_STRING_CAR (Lisp_Object x)$/
+CHECK_SYMBOL c-src/emacs/src/lisp.h /^# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)$/
+CHECK_TYPE c-src/emacs/src/lisp.h /^# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK/
+CHECK_TYPE_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_TYPE_RANGED_INTEGER(type, x) \\$/
+CHECK_VECTOR c-src/emacs/src/lisp.h /^CHECK_VECTOR (Lisp_Object x)$/
+CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h /^CHECK_VECTOR_OR_STRING (Lisp_Object x)$/
+CHECK_WINDOW c-src/emacs/src/lisp.h /^CHECK_WINDOW (Lisp_Object x)$/
+CK_ABS_C y-src/parse.y /^#define CK_ABS_C(x) if((x)<MIN_COL || (x)>MAX_COL)/
+CK_ABS_C parse.y /^#define CK_ABS_C(x) if((x)<MIN_COL || (x)>MAX_COL)/
+CK_ABS_R y-src/parse.y /^#define CK_ABS_R(x) if((x)<MIN_ROW || (x)>MAX_ROW)/
+CK_ABS_R parse.y /^#define CK_ABS_R(x) if((x)<MIN_ROW || (x)>MAX_ROW)/
+CK_REL_C y-src/parse.y /^#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)<cu/
+CK_REL_C parse.y /^#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)<cu/
+CK_REL_R y-src/parse.y /^#define CK_REL_R(x) if( ((x)>0 && MAX_ROW-(x)<cu/
+CK_REL_R parse.y /^#define CK_REL_R(x) if( ((x)>0 && MAX_ROW-(x)<cu/
+CMultiChannelCSC19_3D cp-src/c.C 2
+CNL c-src/etags.c /^#define CNL() \\$/
+CNL_SAVE_DEFINEDEF c-src/etags.c /^#define CNL_SAVE_DEFINEDEF() \\$/
+COBOLFLAGS make-src/Makefile /^COBOLFLAGS=--language=none --regex='\/.......[a-zA-/
+COLORS cp-src/screen.hpp 11
+COMPILEDP c-src/emacs/src/lisp.h /^COMPILEDP (Lisp_Object a)$/
+COMPILED_ARGLIST c-src/emacs/src/lisp.h 2431
+COMPILED_BYTECODE c-src/emacs/src/lisp.h 2432
+COMPILED_CONSTANTS c-src/emacs/src/lisp.h 2433
+COMPILED_DOC_STRING c-src/emacs/src/lisp.h 2435
+COMPILED_INTERACTIVE c-src/emacs/src/lisp.h 2436
+COMPILED_STACK_DEPTH c-src/emacs/src/lisp.h 2434
+CONDITION_CASE c-src/emacs/src/lisp.h 3021
+CONSP c-src/emacs/src/lisp.h /^# define CONSP(x) lisp_h_CONSP (x)$/
+CONSTYPE_HEAP c-src/emacs/src/lisp.h 3739
+CONSTYPE_PURE c-src/emacs/src/lisp.h 3739
+CONS_TO_INTEGER c-src/emacs/src/lisp.h /^#define CONS_TO_INTEGER(cons, type, var) \\$/
+CONVERT_CHARSTRING_TO_VALUE pas-src/common.pas /^procedure CONVERT_CHARSTRING_TO_VALUE;(*($/
+CPPFLAGS make-src/Makefile /^CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS -DHAVE_GETCW/
+CPSRC make-src/Makefile /^CPSRC=c.C abstract.C abstract.H cfront.H burton.cp/
+CSRC make-src/Makefile /^CSRC=abbrev.c ..\/etags\/h.h .\/\/c.c torture.c getopt/
+CTAGS c-src/etags.c 146
+CTAGS c-src/etags.c 147
+CTAGS c-src/etags.c 149
+CTAGS make-src/Makefile /^CTAGS: ctags ${infiles}$/
+CTAGS% make-src/Makefile /^CTAGS%: ctags% ${infiles}$/
+CTAGS13 CTAGS14 CTAGS15 make-src/Makefile /^CTAGS13 CTAGS14 CTAGS15: ctags% ${infiles}$/
+CYAN cp-src/screen.hpp 15
+C_AUTO c-src/etags.c 2198
+C_EXT c-src/etags.c 2193
+C_JAVA c-src/etags.c 2197
+C_PLAIN c-src/etags.c 2194
+C_PLPL c-src/etags.c 2195
+C_STAR c-src/etags.c 2196
+C_entries c-src/etags.c /^C_entries (int c_ext, FILE *inf)$/
+C_stab_entry c-src/etags.c 2271
+C_symtype c-src/etags.c /^C_symtype (char *str, int len, int c_ext)$/
+ChangeFileType pas-src/common.pas /^function ChangeFileType; (*(FileName : NameString;/
+Circle.getPos lua-src/test.lua /^function Circle.getPos ()$/
+Cjava_entries c-src/etags.c /^Cjava_entries (FILE *inf)$/
+Cjava_help c-src/etags.c 551
+Cjava_suffixes c-src/etags.c 549
+ClassExample ruby-src/test.rb /^ class ClassExample$/
+Clear/p ada-src/2ataspri.adb /^ procedure Clear (Cell : in out TAS_Cell) is$/
+Clear/p ada-src/2ataspri.ads /^ procedure Clear (Cell : in out TAS_Cell)/
+Cobol_help c-src/etags.c 558
+Cobol_paragraphs c-src/etags.c /^Cobol_paragraphs (FILE *inf)$/
+Cobol_suffixes c-src/etags.c 556
+CommentAD php-src/lce_functions.php 70
+CommentAD php-src/lce_functions.php /^ function CommentAD($/
+ConcatT pas-src/common.pas /^function ConcatT;(*($/
+Concept Index tex-src/gzip.texi /^@node Concept Index, , Problems, Top$/
+Cond_Signal/p ada-src/2ataspri.adb /^ procedure Cond_Signal (Cond : in out Condition_/
+Cond_Signal/p ada-src/2ataspri.ads /^ procedure Cond_Signal (Cond : in out Condition_/
+Cond_Timed_Wait/p ada-src/2ataspri.adb /^ procedure Cond_Timed_Wait$/
+Cond_Timed_Wait/p ada-src/2ataspri.ads /^ procedure Cond_Timed_Wait$/
+Cond_Wait/p ada-src/2ataspri.adb /^ procedure Cond_Wait (Cond : in out Condition_Va/
+Cond_Wait/p ada-src/2ataspri.ads /^ procedure Cond_Wait (Cond : in out Condition_Va/
+Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is private;$/
+Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is$/
+Configure pyt-src/server.py /^class Configure(Frame, ControlEdit):$/
+ConfirmQuit pyt-src/server.py /^def ConfirmQuit(frame, context):$/
+Constant ruby-src/test1.ru 42
+ControlEdit pyt-src/server.py /^class ControlEdit(Frame):$/
+Controls pyt-src/server.py /^class Controls:$/
+CopyTextString pas-src/common.pas /^function CopyTextString;(*($/
+Copying tex-src/gzip.texi /^@node Copying, Overview, , Top$/
+Cplusplus_entries c-src/etags.c /^Cplusplus_entries (FILE *inf)$/
+Cplusplus_help c-src/etags.c 540
+Cplusplus_suffixes c-src/etags.c 535
+Create_LL_Task/p ada-src/2ataspri.adb /^ procedure Create_LL_Task$/
+Create_LL_Task/p ada-src/2ataspri.ads /^ procedure Create_LL_Task$/
+Cstar_entries c-src/etags.c /^Cstar_entries (FILE *inf)$/
+Cstar_suffixes c-src/etags.c 562
+Cube.data.getFoo lua-src/test.lua /^function Cube.data.getFoo ()$/
+D cp-src/fail.C 41
+D cp-src/fail.C /^ D() : ::A::T2::T(97), x(1066) {}$/
+DAEMON_RUNNING c-src/emacs/src/lisp.h 4258
+DAEMON_RUNNING c-src/emacs/src/lisp.h 4262
+DARKGRAY cp-src/screen.hpp 20
+DEAFUN c.c /^DEAFUN ("expand-file-name", Fexpand_file_name, Sex/
+DEBUG c-src/etags.c 84
+DEBUG c-src/etags.c 85
+DEBUG c-src/etags.c 87
+DEBUG objc-src/PackInsp.m 37
+DECLARE_GDB_SYM c-src/emacs/src/lisp.h /^#define DECLARE_GDB_SYM(type, id) type const id EX/
+DEFAULT_HASH_SIZE c-src/emacs/src/lisp.h 1940
+DEFAULT_HASH_SIZE c-src/emacs/src/lisp.h 1940
+DEFAULT_REHASH_SIZE c-src/emacs/src/lisp.h 1950
+DEFAULT_REHASH_THRESHOLD c-src/emacs/src/lisp.h 1946
+DEFINE_GDB_SYMBOL_BEGIN c-src/emacs/src/lisp.h /^# define DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE/
+DEFINE_GDB_SYMBOL_BEGIN c-src/emacs/src/lisp.h /^# define DEFINE_GDB_SYMBOL_BEGIN(type, id) extern /
+DEFINE_GDB_SYMBOL_END c-src/emacs/src/lisp.h /^# define DEFINE_GDB_SYMBOL_END(id) = id;$/
+DEFINE_GDB_SYMBOL_END c-src/emacs/src/lisp.h /^# define DEFINE_GDB_SYMBOL_END(val) ;$/
+DEFINE_LISP_SYMBOL c-src/emacs/src/lisp.h /^#define DEFINE_LISP_SYMBOL(name) \\$/
+DEFINE_NON_NIL_Q_SYMBOL_MACROS c-src/emacs/src/lisp.h 755
+DEFSYM c-src/emacs/src/lisp.h /^#define DEFSYM(sym, name) \/* empty *\/$/
+DEFSYM c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, (Lisp_Ob/
+DEFUN c-src/emacs/src/lisp.h /^#define DEFUN(lname, fnname, sname, minargs, maxar/
+DEFUN c-src/emacs/src/lisp.h /^#define DEFUN(lname, fnname, sname, minargs, maxar/
+DEFUN_ARGS_0 c-src/emacs/src/lisp.h 714
+DEFUN_ARGS_1 c-src/emacs/src/lisp.h 715
+DEFUN_ARGS_2 c-src/emacs/src/lisp.h 716
+DEFUN_ARGS_3 c-src/emacs/src/lisp.h 717
+DEFUN_ARGS_4 c-src/emacs/src/lisp.h 718
+DEFUN_ARGS_5 c-src/emacs/src/lisp.h 719
+DEFUN_ARGS_6 c-src/emacs/src/lisp.h 721
+DEFUN_ARGS_7 c-src/emacs/src/lisp.h 723
+DEFUN_ARGS_8 c-src/emacs/src/lisp.h 725
+DEFUN_ARGS_MANY c-src/emacs/src/lisp.h 712
+DEFUN_ARGS_UNEVALLED c-src/emacs/src/lisp.h 713
+DEFUN_func2 c.c /^DEFUN_func2()$/
+DEFVAR_BOOL c-src/emacs/src/lisp.h /^#define DEFVAR_BOOL(lname, vname, doc) \\$/
+DEFVAR_BUFFER_DEFAULTS c-src/emacs/src/lisp.h /^#define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) /
+DEFVAR_INT c-src/emacs/src/lisp.h /^#define DEFVAR_INT(lname, vname, doc) \\$/
+DEFVAR_KBOARD c-src/emacs/src/lisp.h /^#define DEFVAR_KBOARD(lname, vname, doc) \\$/
+DEFVAR_LISP c-src/emacs/src/lisp.h /^#define DEFVAR_LISP(lname, vname, doc) \\$/
+DEFVAR_LISP_NOPRO c-src/emacs/src/lisp.h /^#define DEFVAR_LISP_NOPRO(lname, vname, doc) \\$/
+DEVICE_LAST c-src/h.h 24
+DEVICE_SWP c-src/h.h 23
+DOS_NT c-src/etags.c 117
+DOS_NT c-src/etags.c 118
+DUMPED c-src/emacs/src/gmalloc.c 80
+Debug cp-src/functions.cpp /^void Debug ( int lineno, int level, char* func , c/
+Def_ ruby-src/test1.ru 12
+DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/
+DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/
+ELEM_I c-src/h.h 3
+ELSRC make-src/Makefile /^ELSRC=TAGTEST.EL emacs\/lisp\/progmodes\/etags.el$/
+EMACS_INT c-src/emacs/src/lisp.h 91
+EMACS_INT c-src/emacs/src/lisp.h 96
+EMACS_INT c-src/emacs/src/lisp.h 103
+EMACS_INT_MAX c-src/emacs/src/lisp.h 93
+EMACS_INT_MAX c-src/emacs/src/lisp.h 98
+EMACS_INT_MAX c-src/emacs/src/lisp.h 105
+EMACS_LISP_H c-src/emacs/src/lisp.h 22
+EMACS_NAME c-src/etags.c 786
+EMACS_UINT c-src/emacs/src/lisp.h 92
+EMACS_UINT c-src/emacs/src/lisp.h 97
+EMACS_UINT c-src/emacs/src/lisp.h 104
+ENTRY c-src/sysdep.h /^#define ENTRY(name) \\$/
+ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/
+ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (symbol_redirect) redirect : 3;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16; \/* = Lisp_M/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16; \/* = Lisp_M/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind : CHAR_BIT;$/
+EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/
+EQUAL y-src/cccp.c 12
+ERLSRC make-src/Makefile /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
+ERROR y-src/parse.y 303
+ERROR parse.y 303
+ERROR y-src/cccp.c 9
+ETAGS make-src/Makefile /^ETAGS: FRC etags ${infiles}$/
+ETAGS% make-src/Makefile /^ETAGS%: FRC etags% ${infiles}$/
+ETAGS12 make-src/Makefile /^ETAGS12: etags12 ${infiles}$/
+ETAGS13 ETAGS14 ETAGS15 make-src/Makefile /^ETAGS13 ETAGS14 ETAGS15: etags% ${infiles}$/
+EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/
+EXTAGS make-src/Makefile /^EXTAGS: extags ${infiles} Makefile$/
+EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497
+EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372
+EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* : NameString*);$/
+Environment tex-src/gzip.texi /^@node Environment, Tapes, Advanced usage, Top$/
+Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/
+Erlang_help c-src/etags.c 567
+Erlang_suffixes c-src/etags.c 565
+ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/
+Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is new Interfaces.C.POSI/
+Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/
+Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/
+ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo; (*($/
+FASTCFLAGS make-src/Makefile /^FASTCFLAGS=-O3 -finline-functions -ffast-math -fun/
+FASTCFLAGSWARN make-src/Makefile /^FASTCFLAGSWARN=${WARNINGS} -Werror ${FASTCFLAGS}$/
+FILTER make-src/Makefile /^FILTER=grep -v '\\.[Cchefy][lor]*,[1-9][0-9]*' || t/
+FINALIZERP c-src/emacs/src/lisp.h /^FINALIZERP (Lisp_Object x)$/
+FINAL_FREE_BLOCKS c-src/emacs/src/gmalloc.c 135
+FIXNUM_BITS c-src/emacs/src/lisp.h 252
+FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^#define FIXNUM_OVERFLOW_P(i) \\$/
+FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_O/
+FLOATP c-src/emacs/src/lisp.h /^# define FLOATP(x) lisp_h_FLOATP (x)$/
+FLOAT_TO_STRING_BUFSIZE c-src/emacs/src/lisp.h 3927
+FORTHSRC make-src/Makefile /^FORTHSRC=test-forth.fth$/
+FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define FOR_EACH_ALIST_VALUE(head_var, list_var, v/
+FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list, tortoise, n) \\$/
+FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/
+FRC make-src/Makefile /^FRC:;$/
+FREEFLOOD c-src/emacs/src/gmalloc.c 1858
+FSRC make-src/Makefile /^FSRC=entry.for entry.strange_suffix entry.strange$/
+FUN0 y-src/parse.y /^yylex FUN0()$/
+FUN0 parse.y /^yylex FUN0()$/
+FUN1 y-src/parse.y /^yyerror FUN1(char *, s)$/
+FUN1 y-src/parse.y /^str_to_col FUN1(char **,str)$/
+FUN1 parse.y /^yyerror FUN1(char *, s)$/
+FUN1 parse.y /^str_to_col FUN1(char **,str)$/
+FUN2 y-src/parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2 y-src/parse.y /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUN2 parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2 parse.y /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUNCTIONP c-src/emacs/src/lisp.h /^FUNCTIONP (Lisp_Object obj)$/
+FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 4766
+FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5061
+F_getit c-src/etags.c /^F_getit (FILE *inf)$/
+F_takeprec c-src/etags.c /^F_takeprec (void)$/
+Fails_t c-src/h.h 5
+Finalize_Cond/p ada-src/2ataspri.adb /^ procedure Finalize_Cond (Cond : in out Conditio/
+Finalize_Cond/p ada-src/2ataspri.ads /^ procedure Finalize_Cond (Cond : in out Conditio/
+Finalize_Lock/p ada-src/2ataspri.adb /^ procedure Finalize_Lock (L : in out Lock) is$/
+Finalize_Lock/p ada-src/2ataspri.ads /^ procedure Finalize_Lock (L : in out Lock);$/
+Finalize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure Finalize_TAS_Cell (Cell : in out TAS_/
+Finalize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure Finalize_TAS_Cell (Cell : in out TA/
+First100Chars pas-src/common.pas /^procedure First100Chars; (*($/
+Foo perl-src/kai-test.pl /^package Foo;$/
+Foo::Bar perl-src/kai-test.pl /^package Foo::Bar;$/
- main::f1 perl-src/kai-test.pl /^sub f1 {$/
- main::f2 perl-src/kai-test.pl /^sub main::f2 {$/
- main::f7 perl-src/kai-test.pl /^sub f7 {$/
- main::file_end perl-src/htlmify-cystic /^sub file_end ()$/
- main::finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/
- main::finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
- main::finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/
- main::finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
- main::getopt perl-src/yagrip.pl /^sub getopt {$/
- main::read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
- main::section_href perl-src/htlmify-cystic /^sub section_href ($)$/
- main::section_name perl-src/htlmify-cystic /^sub section_name ($)$/
- main::section_url perl-src/htlmify-cystic /^sub section_url ()$/
- main::section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
- main::section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
- main::toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
- main::usage perl-src/yagrip.pl /^sub usage {$/
+Forth_help c-src/etags.c 573
+Forth_suffixes c-src/etags.c 571
+Forth_words c-src/etags.c /^Forth_words (FILE *inf)$/
+Fortran_functions c-src/etags.c /^Fortran_functions (FILE *inf)$/
+Fortran_help c-src/etags.c 579
+Fortran_suffixes c-src/etags.c 577
+GCALIGNED c-src/emacs/src/lisp.h 288
+GCALIGNED c-src/emacs/src/lisp.h 290
+GCALIGNMENT c-src/emacs/src/lisp.h 243
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(varname) ((void) gcpro1)$/
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(a) \\$/
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(a) \\$/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(varname1, varname2) ((void) gcpro2,/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(a, b) \\$/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(a, b) \\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(varname1, varname2, varname3) \\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(a, b, c) \\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(a, b, c) \\$/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(varname1, varname2, varname3, varna/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(a, b, c, d) \\$/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(a, b, c, d) \\$/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(varname1, varname2, varname3, varna/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(a, b, c, d, e) \\$/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(a, b, c, d, e) \\$/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(varname1, varname2, varname3, varna/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(a, b, c, d, e, f) \\$/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(a, b, c, d, e, f) \\$/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 (a, b,/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) \\$/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) \\$/
+GCTYPEBITS c-src/emacs/src/lisp.h 67
+GCTYPEBITS c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)$/
+GC_MAKE_GCPROS_NOOPS c-src/emacs/src/lisp.h 3172
+GC_MARK_STACK c-src/emacs/src/lisp.h 3177
+GC_MARK_STACK_CHECK_GCPROS c-src/emacs/src/lisp.h 3173
+GC_USE_GCPROS_AS_BEFORE c-src/emacs/src/lisp.h 3171
+GC_USE_GCPROS_CHECK_ZOMBIES c-src/emacs/src/lisp.h 3174
+GE y-src/parse.c 8
+GENERIC_PTR cccp.y 56
+GENERIC_PTR cccp.y 58
+GENERIC_PTR y-src/cccp.y 56
+GENERIC_PTR y-src/cccp.y 58
+GEQ y-src/cccp.c 15
+GETOPTOBJS make-src/Makefile /^GETOPTOBJS= #getopt.o getopt1.o$/
+GREEN cp-src/screen.hpp 14
+GROW_RAW_KEYBUF c-src/emacs/src/keyboard.c 119
+GatherControls pyt-src/server.py /^ def GatherControls(self):$/
+GetLayerByName lua-src/allegro.lua /^function GetLayerByName (name)$/
+GetNameList pas-src/common.pas /^function GetNameList; (* : BinNodePointer;*)$/
+GetNewNameListNode pas-src/common.pas /^function GetNewNameListNode;(*($/
+GetTextRef pas-src/common.pas /^function GetTextRef;(*($/
+GetUniqueLayerName lua-src/allegro.lua /^function GetUniqueLayerName ()$/
+Get_Own_Priority/f ada-src/2ataspri.adb /^ function Get_Own_Priority return System.Any_Pri/
+Get_Own_Priority/f ada-src/2ataspri.ads /^ function Get_Own_Priority return System.Any_Pri/
+Get_Priority/f ada-src/2ataspri.adb /^ function Get_Priority (T : TCB_Ptr) return Syst/
+Get_Priority/f ada-src/2ataspri.ads /^ function Get_Priority (T : TCB_Ptr) return Syst/
+HASH_HASH c-src/emacs/src/lisp.h /^HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t id/
+HASH_INDEX c-src/emacs/src/lisp.h /^HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t i/
+HASH_KEY c-src/emacs/src/lisp.h /^HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx/
+HASH_NEXT c-src/emacs/src/lisp.h /^HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t id/
+HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/
+HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)$/
+HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/
+HAVE_NTGUI c-src/etags.c 116
+HEAP c-src/emacs/src/gmalloc.c 131
+HTMLSRC make-src/Makefile /^HTMLSRC=softwarelibero.html index.shtml algrthms.h/
+HTML_help c-src/etags.c 584
+HTML_labels c-src/etags.c /^HTML_labels (FILE *inf)$/
+HTML_suffixes c-src/etags.c 582
+IEEE_FLOATING_POINT c-src/emacs/src/lisp.h 2415
+IMAGEP c-src/emacs/src/lisp.h /^IMAGEP (Lisp_Object x)$/
+INPUT_EVENT_POS_MAX c-src/emacs/src/keyboard.c 3698
+INPUT_EVENT_POS_MIN c-src/emacs/src/keyboard.c 3701
+INSERT_TREE_NODE pas-src/common.pas /^procedure INSERT_TREE_NODE;(*( $/
+INSTANTIATE_MDIAGARRAY_FRIENDS cp-src/MDiagArray2.h /^#define INSTANTIATE_MDIAGARRAY_FRIENDS(T) \\$/
+INT c-src/h.h 32
+INT y-src/cccp.c 6
+INTEGERP c-src/emacs/src/lisp.h /^# define INTEGERP(x) lisp_h_INTEGERP (x)$/
+INTEGER_TO_CONS c-src/emacs/src/lisp.h /^#define INTEGER_TO_CONS(i) \\$/
+INTERVAL c-src/emacs/src/lisp.h 1149
+INTMASK c-src/emacs/src/lisp.h 437
+INTTYPEBITS c-src/emacs/src/lisp.h 249
+INT_BIT c-src/emacs/src/gmalloc.c 124
+INT_TYPE_SIZE cccp.y 91
+INT_TYPE_SIZE y-src/cccp.y 91
+ISALNUM c-src/etags.c /^#define ISALNUM(c) isalnum (CHAR (c))$/
+ISALPHA c-src/etags.c /^#define ISALPHA(c) isalpha (CHAR (c))$/
+ISDIGIT c-src/etags.c /^#define ISDIGIT(c) isdigit (CHAR (c))$/
+ISLOWER c-src/etags.c /^#define ISLOWER(c) islower (CHAR (c))$/
+ISO_FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5149
+ISUPPER c-src/etags.c /^# define ISUPPER(c) isupper (CHAR (c))$/
+IS_DAEMON c-src/emacs/src/lisp.h 4257
+IS_DAEMON c-src/emacs/src/lisp.h 4261
+InitNameList pas-src/common.pas /^procedure InitNameList;$/
+InitNameStringPool pas-src/common.pas /^procedure InitNameStringPool;$/
+InitializeStringPackage pas-src/common.pas /^procedure InitializeStringPackage;$/
+Initialize_Cond/p ada-src/2ataspri.adb /^ procedure Initialize_Cond (Cond : in out Condit/
+Initialize_Cond/p ada-src/2ataspri.ads /^ procedure Initialize_Cond (Cond : in out Condit/
+Initialize_LL_Tasks/p ada-src/2ataspri.adb /^ procedure Initialize_LL_Tasks (T : TCB_Ptr) is$/
+Initialize_LL_Tasks/p ada-src/2ataspri.ads /^ procedure Initialize_LL_Tasks (T : TCB_Ptr);$/
+Initialize_Lock/p ada-src/2ataspri.adb /^ procedure Initialize_Lock$/
+Initialize_Lock/p ada-src/2ataspri.ads /^ procedure Initialize_Lock (Prio : System.Any_Pr/
+Initialize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure Initialize_TAS_Cell (Cell : out TAS_C/
+Initialize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure Initialize_TAS_Cell (Cell : out TA/
+Inner1/b ada-src/etags-test-for.ada /^ package body Inner1 is$/
+Inner1/b ada-src/waroquiers.ada /^ package body Inner1 is$/
+Inner1/s ada-src/etags-test-for.ada /^ package Inner1 is$/
+Inner1/s ada-src/waroquiers.ada /^ package Inner1 is$/
+Inner2/b ada-src/etags-test-for.ada /^ package body Inner2 is$/
+Inner2/b ada-src/waroquiers.ada /^ package body Inner2 is$/
+Inner2/s ada-src/etags-test-for.ada /^ package Inner2 is$/
+Inner2/s ada-src/waroquiers.ada /^ package Inner2 is$/
+Install_Abort_Handler/p ada-src/2ataspri.adb /^ procedure Install_Abort_Handler (Handler : Abor/
+Install_Abort_Handler/p ada-src/2ataspri.ads /^ procedure Install_Abort_Handler (Handler : Abor/
+Install_Error_Handler/p ada-src/2ataspri.adb /^ procedure Install_Error_Handler (Handler : Syst/
+Install_Error_Handler/p ada-src/2ataspri.ads /^ procedure Install_Error_Handler (Handler : Syst/
+Invoking gzip tex-src/gzip.texi /^@node Invoking gzip, Advanced usage, Sample, Top$/
+IsControlChar pas-src/common.pas /^function IsControlChar; (*($/
+IsControlCharName pas-src/common.pas /^function IsControlCharName($/
+Is_Set/f ada-src/2ataspri.adb /^ function Is_Set (Cell : in TAS_Cell) return Bo/
+Is_Set/f ada-src/2ataspri.ads /^ function Is_Set (Cell : in TAS_Cell)/
+JAVASRC make-src/Makefile /^JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol./
+KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82
+KBYTES objc-src/PackInsp.m 58
+KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTE/
+LATEST make-src/Makefile /^LATEST=17$/
+LCE_COMMENT php-src/lce_functions.php 13
+LCE_COMMENT_TOOL php-src/lce_functions.php 17
+LCE_COMMENT_USER php-src/lce_functions.php 15
+LCE_FUNCTIONS php-src/lce_functions.php 4
+LCE_MSGID php-src/lce_functions.php 19
+LCE_MSGSTR php-src/lce_functions.php 21
+LCE_TEXT php-src/lce_functions.php 23
+LCE_UNKNOWN php-src/lce_functions.php 9
+LCE_WS php-src/lce_functions.php 11
+LDFLAGS make-src/Makefile /^LDFLAGS=#-static -lc_p$/
+LE y-src/parse.c 7
+LEQ y-src/cccp.c 14
+LIGHTBLUE cp-src/screen.hpp 21
+LIGHTCYAN cp-src/screen.hpp 23
+LIGHTGRAY cp-src/screen.hpp 19
+LIGHTGREEN cp-src/screen.hpp 22
+LIGHTMAGENTA cp-src/screen.hpp 25
+LIGHTRED cp-src/screen.hpp 24
+LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) {i}$/
+LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) (i)$/
+LISP_INITIALLY_ZERO c-src/emacs/src/lisp.h 582
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^#define LISP_MACRO_DEFUN(name, type, argdecls, arg/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XLI, EMACS_INT, (Lisp_Object o),/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XPNTR, void *, (Lisp_Object a), /
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCAR, Lisp_Object, (Lisp_Object /
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x)/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (CONSP, bool, (Lisp_Object x), (x/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^#define LISP_MACRO_DEFUN_VOID(name, argdecls, args/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (CHECK_TYPE,$/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL,$/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Obje/
+LISTCONTENTS objc-src/PackInsp.m 39
+LISTCONTENTSBUTTON objc-src/PackInsp.m 48
+LISTDESCRIPTIONBUTTON objc-src/PackInsp.m 49
+LL_Assert/p ada-src/2ataspri.adb /^ procedure LL_Assert (B : Boolean; M : String) i/
+LL_Assert/p ada-src/2ataspri.ads /^ procedure LL_Assert (B : Boolean; M : String);$/
+LL_Task_Procedure_Access/t ada-src/etags-test-for.ada /^ type LL_Task_Procedure_Access is access procedu/
+LL_Task_Procedure_Access/t ada-src/2ataspri.ads /^ type LL_Task_Procedure_Access is access procedu/
+LL_Wrapper/p ada-src/etags-test-for.ada /^ procedure LL_Wrapper (T : TCB_Ptr);$/
+LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T : TCB_Ptr);$/
+LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T : TCB_Ptr) is$/
+LOCALIZE objc-src/PackInsp.m /^#define LOCALIZE(s) NXLoadLocalizedStringFromTabl/
+LOCALIZE_ARCH objc-src/PackInsp.m /^#define LOCALIZE_ARCH(s) NXLoadLocalizedStringFrom/
+LOCK c-src/emacs/src/gmalloc.c /^#define LOCK() \\$/
+LOCK c-src/emacs/src/gmalloc.c /^#define LOCK()$/
+LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define LOCK_ALIGNED_BLOCKS() \\$/
+LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define LOCK_ALIGNED_BLOCKS()$/
+LONG_TYPE_SIZE cccp.y 95
+LONG_TYPE_SIZE y-src/cccp.y 95
+LOOKING_AT c-src/etags.c /^#define LOOKING_AT(cp, kw) \/* kw is the keyword, /
+LOOKING_AT_NOCASE c-src/etags.c /^#define LOOKING_AT_NOCASE(cp, kw) \/* the keyword i/
+LOOKUP objc-src/PackInsp.m /^#define LOOKUP(key, notfound) ([table isKey:key] ?/
+LOOKUP objc-src/PackInsp.m 176
+LOOP_ON_INPUT_LINES c-src/etags.c /^#define LOOP_ON_INPUT_LINES(file_pointer, line_buf/
+LSH y-src/cccp.c 16
+LTGT cp-src/MDiagArray2.h 35
+LTGT cp-src/MDiagArray2.h 39
+LTGT cp-src/MDiagArray2.h 42
+LTGT cp-src/MDiagArray2.h 144
+LUASRC make-src/Makefile /^LUASRC=allegro.lua$/
+L_CELL y-src/parse.c 10
+L_CONST y-src/parse.c 13
+L_FN0 y-src/parse.c 14
+L_FN1 y-src/parse.c 15
+L_FN1R y-src/parse.c 20
+L_FN2 y-src/parse.c 16
+L_FN2R y-src/parse.c 21
+L_FN3 y-src/parse.c 17
+L_FN3R y-src/parse.c 22
+L_FN4 y-src/parse.c 18
+L_FN4R y-src/parse.c 23
+L_FNN y-src/parse.c 19
+L_FNNR y-src/parse.c 24
+L_GE y-src/parse.c 27
+L_LE y-src/parse.c 25
+L_NE y-src/parse.c 26
+L_RANGE y-src/parse.c 11
+L_VAR y-src/parse.c 12
+L_getit c-src/etags.c /^L_getit (void)$/
+LabeledEntry pyt-src/server.py /^class LabeledEntry(Frame):$/
+Lang_function c-src/etags.c 182
+Lang_function c-src/h.h 6
+Lisp_Bits c-src/emacs/src/lisp.h 239
+Lisp_Bool_Vector c-src/emacs/src/lisp.h 1384
+Lisp_Boolfwd c-src/emacs/src/lisp.h 2284
+Lisp_Buffer_Local_Value c-src/emacs/src/lisp.h 2334
+Lisp_Buffer_Objfwd c-src/emacs/src/lisp.h 2302
+Lisp_Char_Table c-src/emacs/src/lisp.h 1575
+Lisp_Compiled c-src/emacs/src/lisp.h 2429
+Lisp_Cons c-src/emacs/src/lisp.h 475
+Lisp_Finalizer c-src/emacs/src/lisp.h 2186
+Lisp_Float c-src/emacs/src/lisp.h 477
+Lisp_Float c-src/emacs/src/lisp.h 2391
+Lisp_Free c-src/emacs/src/lisp.h 2201
+Lisp_Fwd c-src/emacs/src/lisp.h 2368
+Lisp_Fwd_Bool c-src/emacs/src/lisp.h 505
+Lisp_Fwd_Buffer_Obj c-src/emacs/src/lisp.h 507
+Lisp_Fwd_Int c-src/emacs/src/lisp.h 504
+Lisp_Fwd_Kboard_Obj c-src/emacs/src/lisp.h 508
+Lisp_Fwd_Obj c-src/emacs/src/lisp.h 506
+Lisp_Fwd_Type c-src/emacs/src/lisp.h 502
+Lisp_Hash_Table c-src/emacs/src/lisp.h 1823
+Lisp_Int0 c-src/emacs/src/lisp.h 461
+Lisp_Int1 c-src/emacs/src/lisp.h 462
+Lisp_Intfwd c-src/emacs/src/lisp.h 2274
+Lisp_Kboard_Objfwd c-src/emacs/src/lisp.h 2362
+Lisp_Marker c-src/emacs/src/lisp.h 1978
+Lisp_Misc c-src/emacs/src/lisp.h 458
+Lisp_Misc c-src/emacs/src/lisp.h 2212
+Lisp_Misc_Any c-src/emacs/src/lisp.h 1971
+Lisp_Misc_Finalizer c-src/emacs/src/lisp.h 491
+Lisp_Misc_Float c-src/emacs/src/lisp.h 494
+Lisp_Misc_Free c-src/emacs/src/lisp.h 487
+Lisp_Misc_Limit c-src/emacs/src/lisp.h 496
+Lisp_Misc_Marker c-src/emacs/src/lisp.h 488
+Lisp_Misc_Overlay c-src/emacs/src/lisp.h 489
+Lisp_Misc_Save_Value c-src/emacs/src/lisp.h 490
+Lisp_Misc_Type c-src/emacs/src/lisp.h 485
+Lisp_Object c-src/emacs/src/lisp.h 567
+Lisp_Object c-src/emacs/src/lisp.h 577
+Lisp_Objfwd c-src/emacs/src/lisp.h 2294
+Lisp_Overlay c-src/emacs/src/lisp.h 2021
+Lisp_Save_Type c-src/emacs/src/lisp.h 2064
+Lisp_Save_Value c-src/emacs/src/lisp.h 2110
+Lisp_String c-src/emacs/src/lisp.h 466
+Lisp_Sub_Char_Table c-src/emacs/src/lisp.h 1606
+Lisp_Subr c-src/emacs/src/lisp.h 1670
+Lisp_Symbol c-src/emacs/src/lisp.h 454
+Lisp_Symbol c-src/emacs/src/lisp.h 654
+Lisp_Type c-src/emacs/src/lisp.h 451
+Lisp_Vector c-src/emacs/src/lisp.h 1369
+Lisp_Vectorlike c-src/emacs/src/lisp.h 472
+Lisp_functions c-src/etags.c /^Lisp_functions (FILE *inf)$/
+Lisp_help c-src/etags.c 591
+Lisp_suffixes c-src/etags.c 589
+ListEdit pyt-src/server.py /^class ListEdit(Frame):$/
+Locate pas-src/common.pas /^function Locate; (*($/
+Lock/t ada-src/2ataspri.ads /^ type Lock is private;$/
+Lock/t ada-src/2ataspri.ads /^ type Lock is$/
+LowerCaseNmStr pas-src/common.pas /^function LowerCaseNmStr; (*($/
+Lua_functions c-src/etags.c /^Lua_functions (FILE *inf)$/
+Lua_help c-src/etags.c 600
+Lua_suffixes c-src/etags.c 598
+MAGENTA cp-src/screen.hpp 17
+MAGICBYTE c-src/emacs/src/gmalloc.c 1856
+MAGICFREE c-src/emacs/src/gmalloc.c 1855
+MAGICWORD c-src/emacs/src/gmalloc.c 1854
+MAKE make-src/Makefile /^MAKE:=$(MAKE) --no-print-directory$/
+MAKESRC make-src/Makefile /^MAKESRC=Makefile$/
+MALLOCFLOOD c-src/emacs/src/gmalloc.c 1857
+MANY c-src/emacs/src/lisp.h 2833
+MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP (x)$/
+MAXPATHLEN c-src/etags.c 115
+MAX_ALLOCA c-src/emacs/src/lisp.h 4556
+MAX_ALLOCA c-src/emacs/src/lisp.h 4556
+MAX_ENCODED_BYTES c-src/emacs/src/keyboard.c 2254
+MAX_HASH_VALUE c-src/etags.c 2329
+MAX_WORD_LENGTH c-src/etags.c 2327
+MAYBEREL y-src/parse.y /^#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1])/
+MAYBEREL parse.y /^#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1])/
+MBYTES objc-src/PackInsp.m 59
+MCHECK_DISABLED c-src/emacs/src/gmalloc.c 285
+MCHECK_FREE c-src/emacs/src/gmalloc.c 287
+MCHECK_HEAD c-src/emacs/src/gmalloc.c 288
+MCHECK_OK c-src/emacs/src/gmalloc.c 286
+MCHECK_TAIL c-src/emacs/src/gmalloc.c 289
+MDiagArray2 cp-src/MDiagArray2.h 78
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (T *d, int r, int c) : DiagArray2<T>/
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (void) : DiagArray2<T> () { }$/
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c) : DiagArray2<T> (r, c/
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c, const T& val) : DiagA/
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const Array<T>& a) : DiagArray2<T> /
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const DiagArray2<T>& a) : DiagArray/
+MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const MDiagArray2<T>& a) : DiagArra/
+MIN_HASH_VALUE c-src/etags.c 2328
+MIN_WORD_LENGTH c-src/etags.c 2326
+MISCP c-src/emacs/src/lisp.h /^# define MISCP(x) lisp_h_MISCP (x)$/
+MOST_NEGATIVE_FIXNUM c-src/emacs/src/lisp.h 835
+MOST_POSITIVE_FIXNUM c-src/emacs/src/lisp.h 834
+MOVE c-src/sysdep.h /^#define MOVE(x,y) movl x, y$/
+MSDOS c-src/etags.c 100
+MSDOS c-src/etags.c 106
+MSDOS c-src/etags.c 107
+MSDOS c-src/etags.c 110
+MSGSEL f-src/entry.for /^ ENTRY MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange_suffix /^ ENTRY MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange /^ ENTRY MSGSEL ( TYPE )$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6231
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6764
+Machin_T/b ada-src/waroquiers.ada /^ protected body Machin_T is$/
+Machin_T/t ada-src/etags-test-for.ada /^ protected type Machin_T is$/
+Machin_T/t ada-src/etags-test-for.ada /^ protected Machin_T is$/
+Machin_T/t ada-src/waroquiers.ada /^ protected type Machin_T is$/
+Machine_Exceptions/t ada-src/2ataspri.ads /^ type Machine_Exceptions is new Interfaces.C.POS/
+MakeDispose pyt-src/server.py /^ def MakeDispose(self):$/
+MakeSitelist pyt-src/server.py /^ def MakeSitelist(self, master):$/
+Makefile_filenames c-src/etags.c 603
+Makefile_help c-src/etags.c 605
+Makefile_targets c-src/etags.c /^Makefile_targets (FILE *inf)$/
+Mc cp-src/c.C /^int main (void) { my_function0(0); my_function1(1)/
+Mcccp cccp.y /^main ()$/
+Mcccp y-src/cccp.y /^main ()$/
+Mconway.cpp cp-src/conway.cpp /^void main(void)$/
+Metags c-src/etags.c /^main (int argc, char **argv)$/
+Mfail cp-src/fail.C /^main()$/
+Mkai-test.pl perl-src/kai-test.pl /^package main;$/
+ModuleExample ruby-src/test.rb /^module ModuleExample$/
+More_Lisp_Bits c-src/emacs/src/lisp.h 801
+MoveLayerAfter lua-src/allegro.lua /^function MoveLayerAfter (this_one)$/
+MoveLayerBefore lua-src/allegro.lua /^function MoveLayerBefore (this_one)$/
+MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/
+MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/
+Mtest.go go-src/test.go 1
+Mtest.go go-src/test.go /^func main() {$/
+Mtest1.go go-src/test1.go 1
+Mtest1.go go-src/test1.go /^func main() {$/
+Mx.cc cp-src/x.cc /^main(int argc, char *argv[])$/
+NAME y-src/cccp.c 8
+NATNUMP c-src/emacs/src/lisp.h /^NATNUMP (Lisp_Object x)$/
+NDEBUG c-src/etags.c 88
+NE y-src/parse.c 6
+NEG y-src/parse.c 9
+NEXT_ALMOST_PRIME_LIMIT c-src/emacs/src/lisp.h 3573
+NILP c-src/emacs/src/lisp.h /^# define NILP(x) lisp_h_NILP (x)$/
+NIL_IS_ZERO c-src/emacs/src/lisp.h 1515
+NONPOINTER_BITS c-src/emacs/src/lisp.h 78
+NONPOINTER_BITS c-src/emacs/src/lisp.h 80
+NONSRCS make-src/Makefile /^NONSRCS=entry.strange lists.erl clheir.hpp.gz$/
+NOTEQUAL y-src/cccp.c 13
+NULL cccp.y 51
+NULL y-src/cccp.y 51
+NULL_PTR cccp.y 63
+NULL_PTR y-src/cccp.y 63
+NUMSTATS objc-src/PackInsp.h 36
+NUM_MOD_NAMES c-src/emacs/src/keyboard.c 6325
+NUM_RECENT_KEYS c-src/emacs/src/keyboard.c 91
+NameHasChar pas-src/common.pas /^function NameHasChar; (* (TheName : NameString; Th/
+NameStringLess pas-src/common.pas /^function NameStringLess;(*(var Name1,Name2 : NameS/
+NewLayer lua-src/allegro.lua /^function NewLayer (name, x, y, w, h)$/
+NewLayerSet lua-src/allegro.lua /^function NewLayerSet (name)$/
+NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP: NameStringPo/
+NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/
+NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str : NameString) : i/
+OBJCPPSRC make-src/Makefile /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/
+OBJCSRC make-src/Makefile /^OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackI/
+OBJS make-src/Makefile /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/
+OPENBUTTON objc-src/PackInsp.m 47
+OPTIONS make-src/Makefile /^OPTIONS=--members --declarations --regex=@regexfil/
+OR y-src/cccp.c 10
+OTAGS make-src/Makefile /^OTAGS: oetags ${SRCS} srclist$/
+OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/
+Objc_help c-src/etags.c 613
+Objc_suffixes c-src/etags.c 609
+OperatorFun c-src/h.h 88
+Overview tex-src/gzip.texi /^@node Overview, Sample, Copying, Top$/
+PASSRC make-src/Makefile /^PASSRC=common.pas$/
+PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC make-src/Makefile /^PERLSRC=htlmify-cystic yagrip.pl kai-test.pl mirro/
+PHPSRC make-src/Makefile /^PHPSRC=lce_functions.php ptest.php sendmail.php$/
+PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/
+PHP_help c-src/etags.c 639
+PHP_suffixes c-src/etags.c 637
+POEntry php-src/lce_functions.php 105
+POEntry php-src/lce_functions.php /^ function POEntry()$/
+POEntryAD php-src/lce_functions.php 29
+PORManager php-src/lce_functions.php 498
+PORManager php-src/lce_functions.php /^ function PORManager()$/
+POReader php-src/lce_functions.php 163
+POReader php-src/lce_functions.php /^ function POReader($domain, $filename)$/
+POSTSCRIPTFLAGS make-src/Makefile /^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/
+PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804
+PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/
+PROLSRC make-src/Makefile /^PROLSRC=ordsets.prolog natded.prolog$/
+PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF (tool_bar_item_properties, /
+PROP c-src/emacs/src/keyboard.c 8379
+PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) protect_malloc_/
+PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/
+PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PRTPKG f-src/entry.strange /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args) /
+PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type, nonlispfield) \\$/
+PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int code)$/
+PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h 818
+PSEUDOVECTOR_FLAG c-src/emacs/src/lisp.h 774
+PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h 813
+PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h 814
+PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808
+PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809
+PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, i/
+PSSRC make-src/Makefile /^PSSRC=rfc1245.ps$/
+PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/
+PS_help c-src/etags.c 649
+PS_suffixes c-src/etags.c 647
+PTY_LENGTH objc-src/Subprocess.m 21
+PTY_TEMPLATE objc-src/Subprocess.m 20
+PUSH_C_STR c-src/emacs/src/keyboard.c /^#define PUSH_C_STR(str, listvar) \\$/
+PUSH_HANDLER c-src/emacs/src/lisp.h /^#define PUSH_HANDLER(c, tag_ch_val, handlertype) \\/
+PVEC_BOOL_VECTOR c-src/emacs/src/lisp.h 787
+PVEC_BUFFER c-src/emacs/src/lisp.h 788
+PVEC_CHAR_TABLE c-src/emacs/src/lisp.h 796
+PVEC_COMPILED c-src/emacs/src/lisp.h 795
+PVEC_FONT c-src/emacs/src/lisp.h 798
+PVEC_FRAME c-src/emacs/src/lisp.h 785
+PVEC_FREE c-src/emacs/src/lisp.h 783
+PVEC_HASH_TABLE c-src/emacs/src/lisp.h 789
+PVEC_NORMAL_VECTOR c-src/emacs/src/lisp.h 782
+PVEC_OTHER c-src/emacs/src/lisp.h 793
+PVEC_PROCESS c-src/emacs/src/lisp.h 784
+PVEC_SUBR c-src/emacs/src/lisp.h 792
+PVEC_SUB_CHAR_TABLE c-src/emacs/src/lisp.h 797
+PVEC_TERMINAL c-src/emacs/src/lisp.h 790
+PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819
+PVEC_WINDOW c-src/emacs/src/lisp.h 786
+PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791
+PYTSRC make-src/Makefile /^PYTSRC=server.py$/
+PackageInspector objc-src/PackInsp.h /^@interface PackageInspector:WMInspector$/
+Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/
+Pascal_help c-src/etags.c 621
+Pascal_suffixes c-src/etags.c 619
+Perl_functions c-src/etags.c /^Perl_functions (FILE *inf)$/
+Perl_help c-src/etags.c 630
+Perl_interpreters c-src/etags.c 628
+Perl_suffixes c-src/etags.c 626
+Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1 is$/
+Pkg1/b ada-src/waroquiers.ada /^package body Pkg1 is$/
+Pkg1/s ada-src/etags-test-for.ada /^package Pkg1 is$/
+Pkg1/s ada-src/waroquiers.ada /^package Pkg1 is$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean;$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean is separate;$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^function Pkg1_Func1 return Boolean is$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean;$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean is separate;$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^function Pkg1_Func1 return Boolean is$/
+Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/
+Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/
+Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/
+Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/
+Pkg1_Pkg1/b ada-src/etags-test-for.ada /^ package body Pkg1_Pkg1 is separate;$/
+Pkg1_Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/b ada-src/waroquiers.ada /^ package body Pkg1_Pkg1 is separate;$/
+Pkg1_Pkg1/b ada-src/waroquiers.ada /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s ada-src/etags-test-for.ada /^ package Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s ada-src/waroquiers.ada /^ package Pkg1_Pkg1 is$/
+Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1 is$/
+Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1 is$/
+Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1 is$/
+Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer);$/
+Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/
+Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer);$/
+Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/
+PostControls pyt-src/server.py /^ def PostControls(self):$/
+Pre_Call_State/t ada-src/2ataspri.ads /^ type Pre_Call_State is new System.Address;$/
+PrintAdd go-src/test1.go /^func (s str) PrintAdd() {$/
+PrintAdd go-src/test1.go /^func (n intNumber) PrintAdd() {$/
+Private objc-src/Subprocess.m /^@interface Subprocess(Private)$/
+Private_T/b ada-src/etags-test-for.ada /^ task body Private_T is$/
+Private_T/b ada-src/waroquiers.ada /^ task body Private_T is$/
+Private_T/k ada-src/etags-test-for.ada /^ task Private_T;$/
+Private_T/k ada-src/waroquiers.ada /^ task Private_T;$/
+Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T;$/
+Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T is$/
+Private_T/p ada-src/waroquiers.ada /^ procedure Private_T;$/
+Private_T/p ada-src/waroquiers.ada /^ procedure Private_T is$/
+Private_T/t ada-src/etags-test-for.ada /^ type Private_T is private;$/
+Private_T/t ada-src/etags-test-for.ada /^ type Private_T is$/
+Private_T/t ada-src/waroquiers.ada /^ type Private_T is private;$/
+Private_T/t ada-src/waroquiers.ada /^ type Private_T is$/
+Problems tex-src/gzip.texi /^@node Problems, Concept Index, Tapes, Top$/
+Proc/t ada-src/2ataspri.ads /^ type Proc is access procedure (Addr : System.Ad/
+Prolog_functions c-src/etags.c /^Prolog_functions (FILE *inf)$/
+Prolog_help c-src/etags.c 654
+Prolog_suffixes c-src/etags.c 652
+Public_T/t ada-src/etags-test-for.ada /^ type Public_T is$/
+Public_T/t ada-src/waroquiers.ada /^ type Public_T is$/
+Python_functions c-src/etags.c /^Python_functions (FILE *inf)$/
+Python_help c-src/etags.c 660
+Python_suffixes c-src/etags.c 658
+QUIT c-src/emacs/src/lisp.h 3101
+QUITP c-src/emacs/src/lisp.h 3112
+Qpre_abbrev_expand_hook c-src/abbrev.c 83
+RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intma/
+RCSid objc-src/PackInsp.m 30
+READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346
+READABLE_EVENTS_FILTER_EVENTS c-src/emacs/src/keyboard.c 347
+READABLE_EVENTS_IGNORE_SQUEEZABLES c-src/emacs/src/keyboard.c 348
+RECC_ALNUM c-src/emacs/src/regex.h 610
+RECC_ALPHA c-src/emacs/src/regex.h 610
+RECC_ASCII c-src/emacs/src/regex.h 617
+RECC_BLANK c-src/emacs/src/regex.h 615
+RECC_CNTRL c-src/emacs/src/regex.h 613
+RECC_DIGIT c-src/emacs/src/regex.h 614
+RECC_ERROR c-src/emacs/src/regex.h 609
+RECC_GRAPH c-src/emacs/src/regex.h 611
+RECC_LOWER c-src/emacs/src/regex.h 612
+RECC_MULTIBYTE c-src/emacs/src/regex.h 616
+RECC_NONASCII c-src/emacs/src/regex.h 616
+RECC_PRINT c-src/emacs/src/regex.h 611
+RECC_PUNCT c-src/emacs/src/regex.h 613
+RECC_SPACE c-src/emacs/src/regex.h 615
+RECC_UNIBYTE c-src/emacs/src/regex.h 617
+RECC_UPPER c-src/emacs/src/regex.h 612
+RECC_WORD c-src/emacs/src/regex.h 610
+RECC_XDIGIT c-src/emacs/src/regex.h 614
+RED cp-src/screen.hpp 16
+REGEX make-src/Makefile /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/
+REGEXOBJS make-src/Makefile /^REGEXOBJS=regex.o$/
+REGS_FIXED c-src/emacs/src/regex.h 378
+REGS_REALLOCATE c-src/emacs/src/regex.h 377
+REGS_UNALLOCATED c-src/emacs/src/regex.h 376
+REG_BADBR c-src/emacs/src/regex.h 313
+REG_BADPAT c-src/emacs/src/regex.h 305
+REG_BADRPT c-src/emacs/src/regex.h 316
+REG_EBRACE c-src/emacs/src/regex.h 312
+REG_EBRACK c-src/emacs/src/regex.h 310
+REG_ECOLLATE c-src/emacs/src/regex.h 306
+REG_ECTYPE c-src/emacs/src/regex.h 307
+REG_EEND c-src/emacs/src/regex.h 319
+REG_EESCAPE c-src/emacs/src/regex.h 308
+REG_ENOSYS c.c 279
+REG_ENOSYS c-src/emacs/src/regex.h 297
+REG_EPAREN c-src/emacs/src/regex.h 311
+REG_ERANGE c-src/emacs/src/regex.h 314
+REG_ERANGEX c-src/emacs/src/regex.h 322
+REG_ERPAREN c-src/emacs/src/regex.h 321
+REG_ESIZE c-src/emacs/src/regex.h 320
+REG_ESPACE c-src/emacs/src/regex.h 315
+REG_ESUBREG c-src/emacs/src/regex.h 309
+REG_EXTENDED c-src/emacs/src/regex.h 263
+REG_ICASE c-src/emacs/src/regex.h 267
+REG_NEWLINE c-src/emacs/src/regex.h 272
+REG_NOERROR c-src/emacs/src/regex.h 300
+REG_NOMATCH c-src/emacs/src/regex.h 301
+REG_NOSUB c-src/emacs/src/regex.h 276
+REG_NOTBOL c-src/emacs/src/regex.h 286
+REG_NOTEOL c-src/emacs/src/regex.h 289
+RELEASELIST make-src/Makefile /^RELEASELIST=pot@gnu.org xemacs-review@xemacs.org j/
+RESUME_POLLING c-src/emacs/src/keyboard.c 2170
+RETURN_UNGCPRO c-src/emacs/src/lisp.h /^#define RETURN_UNGCPRO(expr) \\$/
+RE_BACKSLASH_ESCAPE_IN_LISTS c-src/emacs/src/regex.h 47
+RE_BK_PLUS_QM c-src/emacs/src/regex.h 52
+RE_CHAR_CLASSES c-src/emacs/src/regex.h 58
+RE_CONTEXT_INDEP_ANCHORS c-src/emacs/src/regex.h 72
+RE_CONTEXT_INDEP_OPS c-src/emacs/src/regex.h 80
+RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84
+RE_DEBUG c-src/emacs/src/regex.h 161
+RE_DOT_NEWLINE c-src/emacs/src/regex.h 88
+RE_DOT_NOT_NULL c-src/emacs/src/regex.h 92
+RE_DUP_MAX c-src/emacs/src/regex.h 253
+RE_DUP_MAX c-src/emacs/src/regex.h 256
+RE_FRUGAL c-src/emacs/src/regex.h 147
+RE_HAT_LISTS_NOT_NEWLINE c-src/emacs/src/regex.h 96
+RE_INTERVALS c-src/emacs/src/regex.h 101
+RE_LIMITED_OPS c-src/emacs/src/regex.h 105
+RE_NEWLINE_ALT c-src/emacs/src/regex.h 109
+RE_NO_BK_BRACES c-src/emacs/src/regex.h 114
+RE_NO_BK_PARENS c-src/emacs/src/regex.h 118
+RE_NO_BK_REFS c-src/emacs/src/regex.h 122
+RE_NO_BK_VBAR c-src/emacs/src/regex.h 126
+RE_NO_EMPTY_RANGES c-src/emacs/src/regex.h 132
+RE_NO_GNU_OPS c-src/emacs/src/regex.h 144
+RE_NO_NEWLINE_ANCHOR c-src/emacs/src/regex.h 153
+RE_NO_POSIX_BACKTRACKING c-src/emacs/src/regex.h 140
+RE_NREGS c-src/emacs/src/regex.h 440
+RE_SHY_GROUPS c-src/emacs/src/regex.h 150
+RE_SYNTAX_AWK c-src/emacs/src/regex.h 186
+RE_SYNTAX_ED c-src/emacs/src/regex.h 216
+RE_SYNTAX_EGREP c-src/emacs/src/regex.h 206
+RE_SYNTAX_EMACS c-src/emacs/src/regex.h 183
+RE_SYNTAX_GNU_AWK c-src/emacs/src/regex.h 193
+RE_SYNTAX_GREP c-src/emacs/src/regex.h 201
+RE_SYNTAX_POSIX_AWK c-src/emacs/src/regex.h 197
+RE_SYNTAX_POSIX_BASIC c-src/emacs/src/regex.h 225
+RE_SYNTAX_POSIX_EGREP c-src/emacs/src/regex.h 212
+RE_SYNTAX_POSIX_EXTENDED c-src/emacs/src/regex.h 234
+RE_SYNTAX_POSIX_MINIMAL_BASIC c-src/emacs/src/regex.h 231
+RE_SYNTAX_POSIX_MINIMAL_EXTENDED c-src/emacs/src/regex.h 242
+RE_SYNTAX_SED c-src/emacs/src/regex.h 218
+RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332
+RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136
+RSH y-src/cccp.c 17
+RTE/s ada-src/2ataspri.adb /^ package RTE renames Interfaces.C.POSIX_RTE;$/
+RUN make-src/Makefile /^RUN=time --quiet --format '%U + %S: %E'$/
+RUN make-src/Makefile /^RUN=$/
+RXINCLUDE make-src/Makefile /^RXINCLUDE=-Iemacs\/src$/
+Range cp-src/Range.h 35
+Range cp-src/Range.h /^ Range (void)$/
+Range cp-src/Range.h /^ Range (const Range& r)$/
+Range cp-src/Range.h /^ Range (double b, double l)$/
+Range cp-src/Range.h /^ Range (double b, double l, double i)$/
+ReadVacation cp-src/functions.cpp /^void ReadVacation ( char *filename ) {$/
+Read_Lock/p ada-src/2ataspri.adb /^ procedure Read_Lock (L : in out Lock; Ceiling_V/
+Read_Lock/p ada-src/2ataspri.ads /^ procedure Read_Lock (L : in out Lock; Ceiling_V/
+Rectangle.getPos lua-src/test.lua /^function Rectangle.getPos ()$/
+ReleaseNameString pas-src/common.pas /^procedure ReleaseNameString; (* (var NSP: NameStri/
+RemoveLayer lua-src/allegro.lua /^function RemoveLayer ()$/
+RemoveUnderlineControl pas-src/common.pas /^function RemoveUnderlineControl; (*($/
+ReprOfChar pas-src/common.pas /^function ReprOfChar; (*( ch : char) : NameString;*/
+S c.c 156
+SAFE_ALLOCA c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA(size) ((size) <= sa_avail \\/
+SAFE_ALLOCA_LISP c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_LISP(buf, nelt) \\$/
+SAFE_ALLOCA_STRING c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_STRING(ptr, string) \\$/
+SAFE_FREE c-src/emacs/src/lisp.h /^#define SAFE_FREE() \\$/
+SAFE_NALLOCA c-src/emacs/src/lisp.h /^#define SAFE_NALLOCA(buf, multiplier, nitems) \\/
+SAVE_FUNCPOINTER c-src/emacs/src/lisp.h 2049
+SAVE_INTEGER c-src/emacs/src/lisp.h 2048
+SAVE_OBJECT c-src/emacs/src/lisp.h 2051
+SAVE_POINTER c-src/emacs/src/lisp.h 2050
+SAVE_SLOT_BITS c-src/emacs/src/lisp.h 2055
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2062
+SAVE_TYPE_FUNCPTR_PTR_OBJ c-src/emacs/src/lisp.h 2076
+SAVE_TYPE_INT_INT c-src/emacs/src/lisp.h 2066
+SAVE_TYPE_INT_INT_INT c-src/emacs/src/lisp.h 2067
+SAVE_TYPE_MEMORY c-src/emacs/src/lisp.h 2080
+SAVE_TYPE_OBJ_OBJ c-src/emacs/src/lisp.h 2069
+SAVE_TYPE_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2070
+SAVE_TYPE_OBJ_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2071
+SAVE_TYPE_PTR_INT c-src/emacs/src/lisp.h 2073
+SAVE_TYPE_PTR_OBJ c-src/emacs/src/lisp.h 2074
+SAVE_TYPE_PTR_PTR c-src/emacs/src/lisp.h 2075
+SAVE_UNUSED c-src/emacs/src/lisp.h 2047
+SAVE_VALUEP c-src/emacs/src/lisp.h /^SAVE_VALUEP (Lisp_Object x)$/
+SAVE_VALUE_SLOTS c-src/emacs/src/lisp.h 2058
+SBYTES c-src/emacs/src/lisp.h /^SBYTES (Lisp_Object string)$/
+SCHARS c-src/emacs/src/lisp.h /^SCHARS (Lisp_Object string)$/
+SCREEN_FP cp-src/screen.hpp /^#define SCREEN_FP(x,y) \\$/
+SCREEN_START cp-src/screen.hpp 33
+SDATA c-src/emacs/src/lisp.h /^SDATA (Lisp_Object string)$/
+SDTrefGetInteger pas-src/common.pas /^function SDTrefGetInteger : integer;$/
+SDTrefIsEnd pas-src/common.pas /^function SDTrefIsEnd : Boolean;$/
+SDTrefRecToString pas-src/common.pas /^procedure SDTrefRecToString (* ($/
+SDTrefSkipSpaces pas-src/common.pas /^procedure SDTrefSkipSpaces;$/
+SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec (* ($/
+SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SETPRT f-src/entry.strange /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Li/
+SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lis/
+SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_/
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define SINGLE_LETTER_MOD(BIT) \\$/
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6212
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define SINGLE_LETTER_MOD(BIT) \\$/
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6763
+SIZEFORMAT objc-src/PackInsp.m 57
+SPECPDL_BACKTRACE c-src/emacs/src/lisp.h 2948
+SPECPDL_LET c-src/emacs/src/lisp.h 2949
+SPECPDL_LET_DEFAULT c-src/emacs/src/lisp.h 2952
+SPECPDL_LET_LOCAL c-src/emacs/src/lisp.h 2951
+SPECPDL_UNWIND c-src/emacs/src/lisp.h 2944
+SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946
+SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945
+SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947
+SRCS make-src/Makefile /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} $/
+SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/
+SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/
+SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index, unsigne/
+STACK_CONS c-src/emacs/src/lisp.h /^#define STACK_CONS(a, b) \\$/
+STATE_ABORT php-src/lce_functions.php 25
+STATE_COMPRESSD objc-src/PackInsp.m 54
+STATE_INSTALLED objc-src/PackInsp.m 53
+STATE_LOOP php-src/lce_functions.php 27
+STATE_OK php-src/lce_functions.php 26
+STATE_UNINSTALLED objc-src/PackInsp.m 52
+STAT_EQ objc-src/PackInsp.m /^#define STAT_EQ(s1, s2) ((s1)->st_ino == (s2)->st_/
+STDIN c-src/etags.c 408
+STDIN c-src/etags.c 411
+STOP_POLLING c-src/emacs/src/keyboard.c 2166
+STRING_BYTES c-src/emacs/src/lisp.h /^STRING_BYTES (struct Lisp_String *s)$/
+STRING_BYTES_BOUND c-src/emacs/src/lisp.h 1261
+STRING_MULTIBYTE c-src/emacs/src/lisp.h /^STRING_MULTIBYTE (Lisp_Object str)$/
+STRING_SET_CHARS c-src/emacs/src/lisp.h /^STRING_SET_CHARS (Lisp_Object string, ptrdiff_t ne/
+STRING_SET_MULTIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_MULTIBYTE(STR) \\$/
+STRING_SET_UNIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_UNIBYTE(STR) \\$/
+SUBRP c-src/emacs/src/lisp.h /^SUBRP (Lisp_Object a)$/
+SUB_CHAR_TABLE_OFFSET c-src/emacs/src/lisp.h 1701
+SUB_CHAR_TABLE_P c-src/emacs/src/lisp.h /^SUB_CHAR_TABLE_P (Lisp_Object a)$/
+SXHASH_REDUCE c-src/emacs/src/lisp.h /^SXHASH_REDUCE (EMACS_UINT x)$/
+SYMBOLP c-src/emacs/src/lisp.h /^# define SYMBOLP(x) lisp_h_SYMBOLP (x)$/
+SYMBOL_BLV c-src/emacs/src/lisp.h /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/
+SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/
+SYMBOL_FORWARDED c-src/emacs/src/lisp.h 651
+SYMBOL_FWD c-src/emacs/src/lisp.h /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/
+SYMBOL_INDEX c-src/emacs/src/lisp.h /^#define SYMBOL_INDEX(sym) i##sym$/
+SYMBOL_INTERNED c-src/emacs/src/lisp.h 642
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY c-src/emacs/src/lisp.h 643
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object /
+SYMBOL_INTERNED_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_P (Lisp_Object sym)$/
+SYMBOL_LOCALIZED c-src/emacs/src/lisp.h 650
+SYMBOL_NAME c-src/emacs/src/lisp.h /^SYMBOL_NAME (Lisp_Object sym)$/
+SYMBOL_PLAINVAL c-src/emacs/src/lisp.h 648
+SYMBOL_UNINTERNED c-src/emacs/src/lisp.h 641
+SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym)$/
+SYMBOL_VARALIAS c-src/emacs/src/lisp.h 649
+SYSCALL c-src/machsyscalls.c /^#define SYSCALL(name, number, type, args, typed_ar/
+Sample tex-src/gzip.texi /^@node Sample, Invoking gzip, Overview, Top$/
+Scheme_functions c-src/etags.c /^Scheme_functions (FILE *inf)$/
+Scheme_help c-src/etags.c 667
+Scheme_suffixes c-src/etags.c 665
+SelectLayer lua-src/allegro.lua /^function SelectLayer (layer)$/
+Self/f ada-src/2ataspri.adb /^ function Self return TCB_Ptr is$/
+Self/f ada-src/2ataspri.ads /^ function Self return TCB_Ptr;$/
+Server pyt-src/server.py /^class Server:$/
+ServerEdit pyt-src/server.py /^class ServerEdit(Frame):$/
+Set_Own_Priority/p ada-src/2ataspri.adb /^ procedure Set_Own_Priority (Prio : System.Any_P/
+Set_Own_Priority/p ada-src/2ataspri.ads /^ procedure Set_Own_Priority (Prio : System.Any_P/
+Set_Priority/p ada-src/2ataspri.adb /^ procedure Set_Priority$/
+Set_Priority/p ada-src/2ataspri.ads /^ procedure Set_Priority (T : TCB_Ptr; Prio : Sys/
+SimpleCalc objcpp-src/SimpleCalc.H /^@interface SimpleCalc:Object$/
+SkipBlanks pas-src/common.pas /^function SkipBlanks; (*($/
+SkipChars pas-src/common.pas /^function SkipChars; (*($/
+SkipSpaces pas-src/common.pas /^procedure SkipSpaces; (* (Str : NameString; var I /
+Square.something:Bar lua-src/test.lua /^function Square.something:Bar ()$/
+StartDay cp-src/functions.cpp /^Date StartDay(Date a,int days){\/\/Function to calcu/
+StripPath pas-src/common.pas /^function StripPath; (*($/
+SubString pas-src/common.pas /^function SubString; (*($/
+Subprocess objc-src/Subprocess.h 41
+Subprocess objc-src/Subprocess.h /^@interface Subprocess:Object$/
+System.Task_Primitives/b ada-src/2ataspri.adb /^package body System.Task_Primitives is$/
+System.Task_Primitives/s ada-src/2ataspri.ads /^package System.Task_Primitives is$/
+T cp-src/fail.C 14
+T2 cp-src/fail.C 16
+T3 c.c 163
+TAGS make-src/Makefile /^TAGS: etags.c$/
+TAG_PTR c-src/emacs/src/lisp.h /^#define TAG_PTR(tag, ptr) \\$/
+TAG_SYMOFFSET c-src/emacs/src/lisp.h /^#define TAG_SYMOFFSET(offset) \\$/
+TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is private;$/
+TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is$/
+TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all Task_Control_Block;$/
+TCLFLAGS make-src/Makefile /^TCLFLAGS=--lang=none --regex='\/proc[ \\t]+\\([^ \\t]+/
+TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/
+TEST php-src/ptest.php 1
+TEXSRC make-src/Makefile /^TEXSRC=testenv.tex gzip.texi texinfo.tex nonewline/
+TEX_LESC c-src/etags.c 4986
+TEX_SESC c-src/etags.c 4987
+TEX_clgrp c-src/etags.c 4922
+TEX_decode_env c-src/etags.c /^TEX_decode_env (const char *evarname, const char */
+TEX_defenv c-src/etags.c 4912
+TEX_esc c-src/etags.c 4920
+TEX_mode c-src/etags.c /^TEX_mode (FILE *inf)$/
+TEX_opgrp c-src/etags.c 4921
+TEX_toktab c-src/etags.c 4908
+TOTAL_KEYWORDS c-src/etags.c 2325
+TSL/s ada-src/2ataspri.adb /^ package TSL renames System.Tasking_Soft_Links;$/
+TYPESTOSTAT objc-src/PackInsp.h 37
+TYPE_RANGED_INTEGERP c-src/emacs/src/lisp.h /^#define TYPE_RANGED_INTEGERP(type, x) \\$/
+Tapes tex-src/gzip.texi /^@node Tapes, Problems, Environment, Top$/
+Task_Control_Block/t ada-src/2ataspri.ads /^ type Task_Control_Block is record$/
+Task_Storage_Size/t ada-src/2ataspri.ads /^ type Task_Storage_Size is new Interfaces.C.size/
+Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/
+Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/
+Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/
+Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/
+TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/
+TeX_help c-src/etags.c 674
+TeX_suffixes c-src/etags.c 672
+Test_Abort/p ada-src/2ataspri.adb /^ procedure Test_Abort is$/
+Test_Abort/p ada-src/2ataspri.ads /^ procedure Test_Abort;$/
+Test_And_Set/p ada-src/2ataspri.adb /^ procedure Test_And_Set (Cell : in out TAS_Cell;/
+Test_And_Set/p ada-src/2ataspri.ads /^ procedure Test_And_Set (Cell : in out TAS_Cell;/
+Texinfo_help c-src/etags.c 688
+Texinfo_nodes c-src/etags.c /^Texinfo_nodes (FILE *inf)$/
+Texinfo_suffixes c-src/etags.c 686
+Time_to_position c-src/emacs/src/keyboard.c /^Time_to_position (Time encoded_pos)$/
+To_Lower pas-src/common.pas /^function To_Lower;(*(ch:char) : char;*)$/
+To_Start_Addr/f ada-src/2ataspri.adb /^ function To_Start_Addr is new$/
+To_TCB_Ptr/f ada-src/2ataspri.adb /^ function To_TCB_Ptr is new$/
+To_Upper pas-src/common.pas /^function To_Upper;(*(ch:char) : char;*)$/
+To_void_ptr/f ada-src/2ataspri.adb /^ function To_void_ptr is new$/
+Top tex-src/gzip.texi /^@node Top, , , (dir)$/
+Truc.Bidule/b ada-src/etags-test-for.ada /^package body Truc.Bidule is$/
+Truc.Bidule/b ada-src/waroquiers.ada /^package body Truc.Bidule is$/
+Truc.Bidule/s ada-src/etags-test-for.ada /^package Truc.Bidule is$/
+Truc.Bidule/s ada-src/waroquiers.ada /^package Truc.Bidule is$/
+Truc/s ada-src/etags-test-for.ada /^package Truc is$/
+Truc/s ada-src/waroquiers.ada /^package Truc is$/
+Type_Specific_Data/t ada-src/etags-test-for.ada /^ type Type_Specific_Data is record$/
+UCHAR c-src/emacs/src/lisp.h 2424
+UNARY y-src/cccp.c 18
+UNDEFINED c-src/h.h 118
+UNEVALLED c-src/emacs/src/lisp.h 2834
+UNGCPRO c-src/emacs/src/lisp.h 3202
+UNGCPRO c-src/emacs/src/lisp.h 3257
+UNGCPRO c-src/emacs/src/lisp.h 3353
+UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK() \\$/
+UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK()$/
+UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS() \\$/
+UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS()$/
+UNSIGNED_CMP c-src/emacs/src/lisp.h /^#define UNSIGNED_CMP(a, op, b) \\$/
+USE_LSB_TAG c-src/emacs/src/lisp.h 271
+USE_LSB_TAG c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)$/
+USE_PTHREAD c-src/emacs/src/gmalloc.c 25
+USE_SAFE_ALLOCA c-src/emacs/src/lisp.h 4560
+USE_STACK_CONS c-src/emacs/src/lisp.h 4689
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4652
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4658
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4659
+USE_STACK_STRING c-src/emacs/src/lisp.h 4691
+U_CHAR cccp.y 38
+U_CHAR y-src/cccp.y 38
+Unlock/p ada-src/2ataspri.adb /^ procedure Unlock (L : in out Lock) is$/
+Unlock/p ada-src/2ataspri.ads /^ procedure Unlock (L : in out Lock);$/
+User pyt-src/server.py /^class User:$/
+UserEdit pyt-src/server.py /^class UserEdit(Frame):$/
+VALBITS c-src/emacs/src/lisp.h 246
+VALMASK c-src/emacs/src/lisp.h 829
+VALMASK c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK)$/
+VAL_MAX c-src/emacs/src/lisp.h 263
+VECSIZE c-src/emacs/src/lisp.h /^#define VECSIZE(type) \\$/
+VECTORLIKEP c-src/emacs/src/lisp.h /^# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x)$/
+VECTORP c-src/emacs/src/lisp.h /^VECTORP (Lisp_Object x)$/
+VERSION c-src/etags.c 789
+VERSION erl-src/gs_dialog.erl /^-define(VERSION, '2001.1101').$/
+VERSION objc-src/PackInsp.m 34
+VHDLFLAGS make-src/Makefile /^VHDLFLAGS=--language=none --regex='\/[ \\t]*\\(ARCHIT/
+Vabbrev_start_location c-src/abbrev.c 63
+Vabbrev_start_location_buffer c-src/abbrev.c 66
+Vabbrev_table_name_list c-src/abbrev.c 43
+ValToNmStr pas-src/common.pas /^function ValToNmStr; (*($/
+Vfundamental_mode_abbrev_table c-src/abbrev.c 52
+Vglobal_abbrev_table c-src/abbrev.c 48
+Vlast_abbrev c-src/abbrev.c 70
+Vlast_abbrev_text c-src/abbrev.c 75
+Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172
+Vpre_abbrev_expand_hook c-src/abbrev.c 83
+WAIT_READING_MAX c-src/emacs/src/lisp.h 4281
+WAIT_READING_MAX c-src/emacs/src/lisp.h 4283
+WARNINGS make-src/Makefile /^WARNINGS=-pedantic -Wall -Wpointer-arith -Winline /
+WCHAR_TYPE_SIZE cccp.y 99
+WCHAR_TYPE_SIZE y-src/cccp.y 99
+WHITE cp-src/screen.hpp 27
+WINDOWP c-src/emacs/src/lisp.h /^WINDOWP (Lisp_Object a)$/
+WINDOWSNT c-src/etags.c 101
+WINDOWSNT c-src/etags.c 102
+WINDOW_CONFIGURATIONP c-src/emacs/src/lisp.h /^WINDOW_CONFIGURATIONP (Lisp_Object a)$/
+WORKING objc-src/PackInsp.m 368
+WorkingDays cp-src/functions.cpp /^int WorkingDays(Date a, Date b){$/
+Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out Lock; Ceiling_/
+Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out Lock; Ceiling_/
+X c-src/h.h 100
+XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/
+XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/
+XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
+XCAR c-src/emacs/src/lisp.h /^# define XCAR(c) lisp_h_XCAR (c)$/
+XCDR c-src/emacs/src/lisp.h /^# define XCDR(c) lisp_h_XCDR (c)$/
+XCHAR_TABLE c-src/emacs/src/lisp.h /^XCHAR_TABLE (Lisp_Object a)$/
+XCHG_0 c-src/sysdep.h 47
+XCHG_1 c-src/sysdep.h 48
+XCHG_2 c-src/sysdep.h 49
+XCHG_3 c-src/sysdep.h 50
+XCHG_4 c-src/sysdep.h 51
+XCHG_5 c-src/sysdep.h 52
+XCONS c-src/emacs/src/lisp.h /^# define XCONS(a) lisp_h_XCONS (a)$/
+XDEFUN c.c /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/
+XFASTINT c-src/emacs/src/lisp.h /^# define XFASTINT(a) lisp_h_XFASTINT (a)$/
+XFASTINT c-src/emacs/src/lisp.h /^XFASTINT (Lisp_Object a)$/
+XFINALIZER c-src/emacs/src/lisp.h /^XFINALIZER (Lisp_Object a)$/
+XFLOAT c-src/emacs/src/lisp.h /^XFLOAT (Lisp_Object a)$/
+XFLOATINT c-src/emacs/src/lisp.h /^XFLOATINT (Lisp_Object n)$/
+XFLOAT_DATA c-src/emacs/src/lisp.h /^XFLOAT_DATA (Lisp_Object f)$/
+XFWDTYPE c-src/emacs/src/lisp.h /^XFWDTYPE (union Lisp_Fwd *a)$/
+XHASH c-src/emacs/src/lisp.h /^# define XHASH(a) lisp_h_XHASH (a)$/
+XHASH_TABLE c-src/emacs/src/lisp.h /^XHASH_TABLE (Lisp_Object a)$/
+XIL c-src/emacs/src/lisp.h /^# define XIL(i) lisp_h_XIL (i)$/
+XINT c-src/emacs/src/lisp.h /^# define XINT(a) lisp_h_XINT (a)$/
+XINT c-src/emacs/src/lisp.h /^XINT (Lisp_Object a)$/
+XINTPTR c-src/emacs/src/lisp.h /^XINTPTR (Lisp_Object a)$/
+XLI c-src/emacs/src/lisp.h /^# define XLI(o) lisp_h_XLI (o)$/
+XLI_BUILTIN_LISPSYM c-src/emacs/src/lisp.h /^#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/
+XMARKER c-src/emacs/src/lisp.h /^XMARKER (Lisp_Object a)$/
+XMISC c-src/emacs/src/lisp.h /^XMISC (Lisp_Object a)$/
+XMISCANY c-src/emacs/src/lisp.h /^XMISCANY (Lisp_Object a)$/
+XMISCTYPE c-src/emacs/src/lisp.h /^XMISCTYPE (Lisp_Object a)$/
+XOVERLAY c-src/emacs/src/lisp.h /^XOVERLAY (Lisp_Object a)$/
+XPNTR c-src/emacs/src/lisp.h /^# define XPNTR(a) lisp_h_XPNTR (a)$/
+XPROCESS c-src/emacs/src/lisp.h /^XPROCESS (Lisp_Object a)$/
+XSAVE_FUNCPOINTER c-src/emacs/src/lisp.h /^XSAVE_FUNCPOINTER (Lisp_Object obj, int n)$/
+XSAVE_INTEGER c-src/emacs/src/lisp.h /^XSAVE_INTEGER (Lisp_Object obj, int n)$/
+XSAVE_OBJECT c-src/emacs/src/lisp.h /^XSAVE_OBJECT (Lisp_Object obj, int n)$/
+XSAVE_POINTER c-src/emacs/src/lisp.h /^XSAVE_POINTER (Lisp_Object obj, int n)$/
+XSAVE_VALUE c-src/emacs/src/lisp.h /^XSAVE_VALUE (Lisp_Object a)$/
+XSETBOOL_VECTOR c-src/emacs/src/lisp.h /^#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a/
+XSETBUFFER c-src/emacs/src/lisp.h /^#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, /
+XSETCDR c-src/emacs/src/lisp.h /^XSETCDR (Lisp_Object c, Lisp_Object n)$/
+XSETCHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a,/
+XSETCOMPILED c-src/emacs/src/lisp.h /^#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b/
+XSETCONS c-src/emacs/src/lisp.h /^#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Li/
+XSETFASTINT c-src/emacs/src/lisp.h /^#define XSETFASTINT(a, b) ((a) = make_natnum (b))$/
+XSETFLOAT c-src/emacs/src/lisp.h /^#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, L/
+XSETINT c-src/emacs/src/lisp.h /^#define XSETINT(a, b) ((a) = make_number (b))$/
+XSETMISC c-src/emacs/src/lisp.h /^#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Li/
+XSETPROCESS c-src/emacs/src/lisp.h /^#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b,/
+XSETPSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETPSEUDOVECTOR(a, b, code) \\$/
+XSETPVECTYPE c-src/emacs/src/lisp.h /^#define XSETPVECTYPE(v, code) \\$/
+XSETPVECTYPESIZE c-src/emacs/src/lisp.h /^#define XSETPVECTYPESIZE(v, code, lispsize, restsi/
+XSETSTRING c-src/emacs/src/lisp.h /^#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, /
+XSETSUBR c-src/emacs/src/lisp.h /^#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PV/
+XSETSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR/
+XSETSYMBOL c-src/emacs/src/lisp.h /^#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (/
+XSETTERMINAL c-src/emacs/src/lisp.h /^#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b/
+XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) /
+XSETVECTOR c-src/emacs/src/lisp.h /^#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, /
+XSETWINDOW c-src/emacs/src/lisp.h /^#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, /
+XSETWINDOW_CONFIGURATION c-src/emacs/src/lisp.h /^#define XSETWINDOW_CONFIGURATION(a, b) \\$/
+XSET_HASH_TABLE c-src/emacs/src/lisp.h /^#define XSET_HASH_TABLE(VAR, PTR) \\$/
+XSTRING c-src/emacs/src/lisp.h /^XSTRING (Lisp_Object a)$/
+XSUBR c-src/emacs/src/lisp.h /^XSUBR (Lisp_Object a)$/
+XSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^XSUB_CHAR_TABLE (Lisp_Object a)$/
+XSYMBOL c-src/emacs/src/lisp.h /^# define XSYMBOL(a) lisp_h_XSYMBOL (a)$/
+XSYMBOL c-src/emacs/src/lisp.h /^XSYMBOL (Lisp_Object a)$/
+XTERMINAL c-src/emacs/src/lisp.h /^XTERMINAL (Lisp_Object a)$/
+XTYPE c-src/emacs/src/lisp.h /^# define XTYPE(a) lisp_h_XTYPE (a)$/
+XTYPE c-src/emacs/src/lisp.h /^XTYPE (Lisp_Object a)$/
+XUNTAG c-src/emacs/src/lisp.h /^# define XUNTAG(a, type) lisp_h_XUNTAG (a, type)$/
+XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/
+XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/
+XX cp-src/x.cc 1
+Xyzzy ruby-src/test1.ru 13
+Y c-src/h.h 100
+YACC c-src/etags.c 2199
+YELLOW cp-src/screen.hpp 26
+YSRC make-src/Makefile /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/
+YYABORT /usr/share/bison/bison.simple 153
+YYABORT /usr/share/bison/bison.simple 154
+YYACCEPT /usr/share/bison/bison.simple 152
+YYACCEPT /usr/share/bison/bison.simple 153
+YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/
+YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/
+YYBISON y-src/parse.c 4
+YYBISON y-src/cccp.c 4
+YYDEBUG parse.y 88
+YYDEBUG cccp.y 122
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
+YYEMPTY /usr/share/bison/bison.simple 150
+YYEMPTY /usr/share/bison/bison.simple 151
+YYEOF /usr/share/bison/bison.simple 151
+YYEOF /usr/share/bison/bison.simple 152
+YYERRCODE /usr/share/bison/bison.simple 178
+YYERRCODE /usr/share/bison/bison.simple 179
+YYERROR /usr/share/bison/bison.simple 154
+YYERROR /usr/share/bison/bison.simple 155
+YYFAIL /usr/share/bison/bison.simple 158
+YYFAIL /usr/share/bison/bison.simple 159
+YYFINAL parse.y 93
+YYFINAL cccp.y 127
+YYFLAG parse.y 94
+YYFLAG cccp.y 128
+YYFPRINTF /usr/share/bison/bison.simple 225
+YYFPRINTF /usr/share/bison/bison.simple 226
+YYINITDEPTH /usr/share/bison/bison.simple 244
+YYINITDEPTH /usr/share/bison/bison.simple 245
+YYLAST parse.y 266
+YYLAST cccp.y 274
+YYLEX /usr/share/bison/bison.simple 200
+YYLEX /usr/share/bison/bison.simple 202
+YYLEX /usr/share/bison/bison.simple 206
+YYLEX /usr/share/bison/bison.simple 208
+YYLEX /usr/share/bison/bison.simple 212
+YYLEX /usr/share/bison/bison.simple 201
+YYLEX /usr/share/bison/bison.simple 203
+YYLEX /usr/share/bison/bison.simple 207
+YYLEX /usr/share/bison/bison.simple 209
+YYLEX /usr/share/bison/bison.simple 213
+YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/
+YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/
+YYMAXDEPTH /usr/share/bison/bison.simple 255
+YYMAXDEPTH /usr/share/bison/bison.simple 259
+YYMAXDEPTH /usr/share/bison/bison.simple 256
+YYMAXDEPTH /usr/share/bison/bison.simple 260
+YYNTBASE parse.y 95
+YYNTBASE cccp.y 129
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359
+YYPOPSTACK /usr/share/bison/bison.simple 445
+YYPOPSTACK /usr/share/bison/bison.simple 447
+YYPOPSTACK /usr/share/bison/bison.simple 445
+YYPOPSTACK /usr/share/bison/bison.simple 447
+YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING() (!!yyerrstatus)$/
+YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING() (!!yyerrstatus)$/
+YYSIZE_T /usr/share/bison/bison.simple 51
+YYSIZE_T /usr/share/bison/bison.simple 56
+YYSIZE_T /usr/share/bison/bison.simple 71
+YYSIZE_T /usr/share/bison/bison.simple 75
+YYSIZE_T /usr/share/bison/bison.simple 128
+YYSIZE_T /usr/share/bison/bison.simple 131
+YYSIZE_T /usr/share/bison/bison.simple 136
+YYSIZE_T /usr/share/bison/bison.simple 140
+YYSIZE_T /usr/share/bison/bison.simple 145
+YYSIZE_T /usr/share/bison/bison.simple 52
+YYSIZE_T /usr/share/bison/bison.simple 57
+YYSIZE_T /usr/share/bison/bison.simple 72
+YYSIZE_T /usr/share/bison/bison.simple 76
+YYSIZE_T /usr/share/bison/bison.simple 129
+YYSIZE_T /usr/share/bison/bison.simple 132
+YYSIZE_T /usr/share/bison/bison.simple 137
+YYSIZE_T /usr/share/bison/bison.simple 141
+YYSIZE_T /usr/share/bison/bison.simple 146
+YYSTACK_ALLOC /usr/share/bison/bison.simple 50
+YYSTACK_ALLOC /usr/share/bison/bison.simple 55
+YYSTACK_ALLOC /usr/share/bison/bison.simple 59
+YYSTACK_ALLOC /usr/share/bison/bison.simple 78
+YYSTACK_ALLOC /usr/share/bison/bison.simple 51
+YYSTACK_ALLOC /usr/share/bison/bison.simple 56
+YYSTACK_ALLOC /usr/share/bison/bison.simple 60
+YYSTACK_ALLOC /usr/share/bison/bison.simple 79
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/
+YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/
+YYSTACK_FREE /usr/share/bison/bison.simple 79
+YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/
+YYSTACK_FREE /usr/share/bison/bison.simple 80
+YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93
+YYSTACK_GAP_MAX /usr/share/bison/bison.simple 94
+YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/
+YYSTACK_RELOCATE /usr/share/bison/bison.simple 548
+YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/
+YYSTACK_RELOCATE /usr/share/bison/bison.simple 548
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/
+YYSTYPE y-src/parse.y 71
+YYSTYPE y-src/parse.y 72
+YYSTYPE parse.y 71
+YYSTYPE parse.y 72
+YYSTYPE parse.y 85
+YYSTYPE cccp.y 119
+YYTERROR /usr/share/bison/bison.simple 177
+YYTERROR /usr/share/bison/bison.simple 178
+YYTRANSLATE parse.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yyt/
+YYTRANSLATE cccp.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yyt/
+YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374
+YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 385
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 385
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
+Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/
+Yacc_help c-src/etags.c 693
+Yacc_suffixes c-src/etags.c 691
+Z c-src/h.h 100
+[] ruby-src/test.rb /^ def [](y)$/
+[]= ruby-src/test.rb /^ def []=(y, val)$/
+\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} }}%$/
+\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
+\' tex-src/texinfo.tex /^\\def\\'{{'}}$/
+\* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("global-abbrev-table", &Vglobal_abb/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("fundamental-mode-abbrev-table", &V/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
+ "/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_t/
+\1 c-src/abbrev.c /^ DEFVAR_INT ("last-abbrev-location", &last_abbrev/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location", &Vabbrev_s/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location-buffer", &Va/
+\1 c-src/abbrev.c /^ DEFVAR_PER_BUFFER ("local-abbrev-table", ¤/
+\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/
+\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("internal--top-level-message", Vint/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-command-event", last_command_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-input-event", last_input_even/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-command-events", Vunread_co/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-post-input-method-events", /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("unread-input-method-events", Vunre/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("meta-prefix-char", meta_prefix_cha/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("last-command", Vlast_command,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("real-last-command", Vreal_last_c/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("last-repeatable-command", Vlast_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-command", Vthis_command,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("real-this-command", Vreal_this_com/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-command-keys-shift-translated/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-original-command", Vthis_orig/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("auto-save-interval", auto_save_inte/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("auto-save-timeout", Vauto_save_tim/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("echo-keystrokes", Vecho_keystrokes/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("polling-period", polling_period,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("double-click-time", Vdouble_click_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("double-click-fuzz", double_click_fu/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("num-input-keys", num_input_keys,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("num-nonmacro-input-events", num_non/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-event-frame", Vlast_event_fra/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("tty-erase-char", Vtty_erase_char,
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-char", Vhelp_char,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-event-list", Vhelp_event_list/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-form", Vhelp_form,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("prefix-help-command", Vprefix_help/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("top-level", Vtop_level,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("keyboard-translate-table", Vkeyb/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("cannot-suspend", cannot_suspend,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("menu-prompting", menu_prompting,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("menu-prompt-more-char", menu_promp/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("extra-keyboard-modifiers", extra_ke/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("pre-command-hook", Vpre_command_ho/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("post-command-hook", Vpost_command_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("echo-area-clear-hook", ...,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("lucid-menu-bar-dirty-flag", Vlucid/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_f/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("tool-bar-separator-image-expressio/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("overriding-terminal-local-map",
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("overriding-local-map", Voverriding/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("overriding-local-map-menu-flag", V/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("special-event-map", Vspecial_event/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("track-mouse", do_mouse_tracking,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("system-key-alist", Vsystem_key_a/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("local-function-key-map", Vlocal_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("input-decode-map", Vinput_decode/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("function-key-map", Vfunction_key_m/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("key-translation-map", Vkey_transla/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deferred-action-list", Vdeferred_a/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deferred-action-function", Vdeferr/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("delayed-warnings-list", Vdelayed_w/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-list", Vtimer_list,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-idle-list", Vtimer_idle_list/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("input-method-function", Vinput_met/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("input-method-previous-message",
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("show-help-function", Vshow_help_fu/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("disable-point-adjustment", Vdisabl/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("global-disable-point-adjustment",
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("minibuffer-message-timeout", Vmini/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("throw-on-input", Vthrow_on_input,
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("command-error-function", Vcommand_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("enable-disabled-menus-and-buttons"/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("select-active-regions",
+ Vs/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("saved-region-selection",
+ V/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("selection-inhibit-update-commands"/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("debug-on-event",
+ Vd/
+\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
+\@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
+\@ tex-src/texinfo.tex /^\\def\\@{@}%$/
+\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
+\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
+\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
+\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
+\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
+\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
+\Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
+\Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
+\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
+\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Neccessary kludge.$/
+\Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
+\Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+\Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+\Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+\Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
+\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
+\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
+\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
+\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
+\Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
+\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
+\Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+\Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+\Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
+\Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
+\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
+\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
+\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
+\HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
+\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
+\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
+\Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
+\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
+\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
+\Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
+\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
+\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
+\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
+\` tex-src/texinfo.tex /^\\def\\`{{`}}$/
+\aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
+\activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
+\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
+\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
+\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
+\alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
+\appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+\appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
+\appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+\appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+\appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
+\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
+\appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
+\appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
+\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
+\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
+\author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
+\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
+\authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
+\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
+\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
+\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
+\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
+\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+\begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
+\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
+\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
+\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
+\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
+\bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
+\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
+\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
+\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
+\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
+\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
+\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
+\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
+\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
+\chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+\chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
+\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
+\chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
+\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
+\chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
+\chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
+\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
+\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
+\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
+\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
+\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
+\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
+\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
+\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
+\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
+\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
+\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
+\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
+\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
+\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
+\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
+\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
+\cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
+\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
+\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
+\defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
+\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
+\deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
+\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
+\defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
+\defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
+\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
+\defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
+\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
+\defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
+\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
+\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
+\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
+\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
+\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
+\defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
+\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
+\defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
+\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
+\defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
+\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
+\deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
+\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
+\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
+\deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
+\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
+\deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
+\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
+\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
+\deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
+\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
+\deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
+\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
+\defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
+\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
+\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
+\defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
+\defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
+\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
+\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
+\defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
+\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
+\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
+\description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
+\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+\direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
+\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
+\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
+\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
+\dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
+\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
+\docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
+\doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+\donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
+\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
+\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
+\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
+\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
+\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
+\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
+\dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
+\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
+\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
+\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
+\doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
+\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
+\enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
+\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
+\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
+\enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
+\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
+\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
+\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+\error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
+\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
+\evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+\evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+\everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+\everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
+\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
+\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
+\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
+\expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
+\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
+\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
+\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
+\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
+\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
+\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
+\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
+\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
+\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
+\ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
+\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
+\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
+\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
+\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
+\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
+\heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
+\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
+\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
+\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
+\ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+\ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
+\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
+\ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
+\ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+\ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
+\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
+\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
+\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
+\ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
+\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
+\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
+\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
+\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
+\include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
+\includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+\indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
+\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
+\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
+\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
+\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
+\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
+\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
+\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
+\infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+\infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+\infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+\infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+\infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
+\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
+\infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+\infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+\infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+\infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+\infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+\infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+\infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+\infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
+\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
+\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
+\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
+\internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
+\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
+\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
+\item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
+\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
+\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
+\itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
+\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
+\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
+\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
+\itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
+\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
+\kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+\kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
+\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
+\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
+\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
+\kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
+\kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
+\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
+\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
+\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
+\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
+\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
+\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
+\linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
+\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
+\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
+\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
+\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
+\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
+\majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
+\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
+\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
+\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
+\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
+\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
+\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
+\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
+\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
+\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
+\nodexxx[ tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+\nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
+\normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
+\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
+\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
+\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
+\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
+\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
+\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
+\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
+\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
+\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
+\numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+\numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
+\numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
+\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
+\oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+\oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+\onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
+\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
+\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
+\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
+\page tex-src/texinfo.tex /^ \\def\\page{%$/
+\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
+\pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
+\parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
+\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
+\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
+\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
+\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
+\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
+\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
+\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
+\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
+\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
+\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
+\printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
+\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
+\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
+\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
+\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
+\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
+\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
+\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
+\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
+\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
+\result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
+\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
+\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
+\secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
+\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
+\secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
+\secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
+\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
+\seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
+\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
+\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
+\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
+\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
+\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
+\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
+\settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
+\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
+\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
+\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
+\shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
+\shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
+\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
+\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
+\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
+\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
+\smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
+\smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
+\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
+\splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
+\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
+\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
+\subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
+\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
+\subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
+\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
+\subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
+\subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
+\subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+\subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
+\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
+\subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
+\subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
+\summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
+\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
+\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
+\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
+\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
+\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
+\table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
+\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
+\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
+\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
+\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
+\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
+\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
+\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
+\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
+\thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+\thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
+\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
+\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
+\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
+\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
+\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
+\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
+\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
+\titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
+\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
+\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
+\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
+\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
+\turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
+\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
+\unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+\unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+\unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
+\unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
+\unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+\unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
+\unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
+\unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
+\unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
+\unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+\unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
+\unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
+\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
+\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
+\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
+\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
+\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
+\vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
+\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
+\xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
+\xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
+\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
+\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
+\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
+\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
+\xrefX[ tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/
+_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_GETOPT_H c-src/getopt.h 19
+_GNU_SOURCE c-src/etags.c 94
+_REGEX_H c-src/emacs/src/regex.h 21
+_RE_SYNTAX_POSIX_COMMON c-src/emacs/src/regex.h 221
+_Restrict_ c-src/emacs/src/regex.h 540
+_Restrict_ c-src/emacs/src/regex.h 542
+_Restrict_ c-src/emacs/src/regex.h 544
+_Restrict_arr_ c-src/emacs/src/regex.h 555
+_Restrict_arr_ c-src/emacs/src/regex.h 557
+_UCHAR_T c-src/emacs/src/lisp.h 2423
+__COLORS cp-src/screen.hpp 9
+__default_morecore c-src/emacs/src/gmalloc.c /^__default_morecore (ptrdiff_t increment)$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self, Master, text, textvar, widt/
+__init__ pyt-src/server.py /^ def __init__(self, newlegend, list, editor, ma/
+__init__ pyt-src/server.py /^ def __init__(self, host, sitelist, master=None/
+__init__ pyt-src/server.py /^ def __init__(self, user, userlist, master=None/
+__init__ pyt-src/server.py /^ def __init__(self, master=None):$/
+__ip c.c 159
+__libc_atexit c-src/exit.c 30
+__libc_atexit c-src/exit.strange_suffix 30
+__malloc_extra_blocks c-src/emacs/src/gmalloc.c 381
+__malloc_initialize c-src/emacs/src/gmalloc.c /^__malloc_initialize (void)$/
+__malloc_initialized c-src/emacs/src/gmalloc.c 379
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__sbrk c-src/emacs/src/gmalloc.c 1513
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__up c.c 160
+_aligned_blocks c-src/emacs/src/gmalloc.c 1004
+_aligned_blocks_mutex c-src/emacs/src/gmalloc.c 518
+_bar? ruby-src/test1.ru /^ def self._bar?(abc)$/
+_bytes_free c-src/emacs/src/gmalloc.c 376
+_bytes_used c-src/emacs/src/gmalloc.c 374
+_chunks_free c-src/emacs/src/gmalloc.c 375
+_chunks_used c-src/emacs/src/gmalloc.c 373
+_fraghead c-src/emacs/src/gmalloc.c 370
+_free c-src/emacs/src/gmalloc.c /^_free (void *ptr)$/
+_free_internal c-src/emacs/src/gmalloc.c /^_free_internal (void *ptr)$/
+_free_internal_nolock c-src/emacs/src/gmalloc.c /^_free_internal_nolock (void *ptr)$/
+_heapbase c-src/emacs/src/gmalloc.c 355
+_heapindex c-src/emacs/src/gmalloc.c 364
+_heapinfo c-src/emacs/src/gmalloc.c 358
+_heaplimit c-src/emacs/src/gmalloc.c 367
+_malloc c-src/emacs/src/gmalloc.c /^_malloc (size_t size)$/
+_malloc_internal c-src/emacs/src/gmalloc.c /^_malloc_internal (size_t size)$/
+_malloc_internal_nolock c-src/emacs/src/gmalloc.c /^_malloc_internal_nolock (size_t size)$/
+_malloc_mutex c-src/emacs/src/gmalloc.c 517
+_malloc_thread_enabled_p c-src/emacs/src/gmalloc.c 519
+_realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/
+_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/
+_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/
+` ruby-src/test.rb /^ def `(command)$/
+a c.c 152
+a c.c 180
+a c.c /^a()$/
+a c.c /^a ()$/
+a c-src/h.h 40
+a c-src/h.h 103
+a cp-src/c.C 132
+a ruby-src/test1.ru /^ def a()$/
+a-forth-constant! forth-src/test-forth.fth /^99 constant a-forth-constant!$/
+a-forth-value? forth-src/test-forth.fth /^55 value a-forth-value?$/
+a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c -- a*b+c ) + * ;$/
+a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c -- )$/
+a0 c-src/emacs/src/lisp.h /^ Lisp_Object (*a0) (void);$/
+a1 c-src/emacs/src/lisp.h /^ Lisp_Object (*a1) (Lisp_Object);$/
+a2 c-src/emacs/src/lisp.h /^ Lisp_Object (*a2) (Lisp_Object, Lisp_Object)/
+a3 c-src/emacs/src/lisp.h /^ Lisp_Object (*a3) (Lisp_Object, Lisp_Object,/
+a4 c-src/emacs/src/lisp.h /^ Lisp_Object (*a4) (Lisp_Object, Lisp_Object,/
+a5 c-src/emacs/src/lisp.h /^ Lisp_Object (*a5) (Lisp_Object, Lisp_Object,/
+a6 c-src/emacs/src/lisp.h /^ Lisp_Object (*a6) (Lisp_Object, Lisp_Object,/
+a7 c-src/emacs/src/lisp.h /^ Lisp_Object (*a7) (Lisp_Object, Lisp_Object,/
+a8 c-src/emacs/src/lisp.h /^ Lisp_Object (*a8) (Lisp_Object, Lisp_Object,/
+aMANY c-src/emacs/src/lisp.h /^ Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object/
+aUNEVALLED c-src/emacs/src/lisp.h /^ Lisp_Object (*aUNEVALLED) (Lisp_Object args)/
+aa c.c 269
+aa c.c 279
+aaa c.c 249
+aaa c.c 269
+aaaaaa c-src/h.h 111
+abbrev-expansion c-src/abbrev.c /^DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabb/
+abbrev-symbol c-src/abbrev.c /^DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_sy/
+abbrev_all_caps c-src/abbrev.c 58
+abbrevs_changed c-src/abbrev.c 56
+abc c-src/h.h 33
+abc c-src/h.h 37
+abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/
+abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex) return Real'/
+absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char *dir)$/
+absolute_filename c-src/etags.c /^absolute_filename (char *file, char *dir)$/
+abt cp-src/c.C 55
+accent_key_syms c-src/emacs/src/keyboard.c 4625
+access_keymap_keyremap c-src/emacs/src/keyboard.c /^access_keymap_keyremap (Lisp_Object map, Lisp_Obje/
+act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/
+action prol-src/natded.prolog /^action(KeyVals):-$/
+active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object first_event)$/
+actout prol-src/natded.prolog /^actout('Text',Trees):-$/
+addArchs objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/
+addPOReader php-src/lce_functions.php /^ function addPOReader($d_name, &$por)$/
+add_active prol-src/natded.prolog /^add_active([],Cat,Goal):-$/
+add_command_key c-src/emacs/src/keyboard.c /^add_command_key (Lisp_Object key)$/
+add_edge prol-src/natded.prolog /^add_edge(Left,Right,Cat):-$/
+add_node c-src/etags.c /^add_node (node *np, node **cur_node_p)$/
+add_regex c-src/etags.c /^add_regex (char *regexp_pattern, language *lang)$/
+add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int sig, const char *name)$/
+addnoise html-src/algrthms.html /^Adding Noise to the$/
+address cccp.y 114
+address y-src/cccp.y 113
+adjust_point_for_property c-src/emacs/src/keyboard.c /^adjust_point_for_property (ptrdiff_t last_pt, bool/
+agent cp-src/clheir.hpp 75
+algorithms html-src/algrthms.html /^Description$/
+alias c-src/emacs/src/lisp.h 688
+align c-src/emacs/src/gmalloc.c /^align (size_t size)$/
+alignas c-src/emacs/src/lisp.h /^# define alignas(alignment) \/* empty *\/$/
+aligned c-src/emacs/src/gmalloc.c 199
+aligned_alloc c-src/emacs/src/gmalloc.c 71
+aligned_alloc c-src/emacs/src/gmalloc.c /^aligned_alloc (size_t alignment, size_t size)$/
+aligned_alloc c-src/emacs/src/gmalloc.c 1718
+alignlist c-src/emacs/src/gmalloc.c 196
+alive cp-src/conway.hpp 7
+all_kboards c-src/emacs/src/keyboard.c 86
+allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard (Lisp_Object type)$/
+allocated c-src/emacs/src/regex.h 344
+an_extern_linkage c-src/h.h 44
+an_extern_linkage c-src/h.h 56
+an_extern_linkage_ptr c-src/h.h 43
+analyze_regex c-src/etags.c /^analyze_regex (char *regex_arg)$/
+andkeyvalseq prol-src/natded.prolog /^andkeyvalseq(KeyVals) --> ['&'], keyvalseq(KeyVals/
+animals c-src/h.h 81
+animals cp-src/c.C 126
+animals cp-src/c.C 130
+any_kboard_state c-src/emacs/src/keyboard.c /^any_kboard_state ()$/
+appDidInit objcpp-src/SimpleCalc.M /^- appDidInit:sender$/
+append prol-src/natded.prolog /^append([],Xs,Xs).$/
+appendToDisplay objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char *)theDigit$/
+append_list prol-src/natded.prolog /^append_list([],[]).$/
+append_string pas-src/common.pas /^procedure append_string;(*($/
+append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/
+appendix perl-src/htlmify-cystic 24
+appendix_name perl-src/htlmify-cystic 13
+appendix_toc perl-src/htlmify-cystic 16
+apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/
+apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/
+aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/
+arg c-src/h.h 13
+arg_type c-src/etags.c 250
+arglist cccp.y 41
+arglist y-src/cccp.y 41
+argno cccp.y 45
+argno y-src/cccp.y 45
+args c-src/h.h 30
+argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent \\defargsindent=50pt$/
+argsindent tex-src/texinfo.tex /^\\dimen1=\\hsize \\advance \\dimen1 by -\\defargsindent/
+argsindent tex-src/texinfo.tex /^\\parshape 2 0in \\dimen0 \\defargsindent \\dimen1 /
+argument c-src/etags.c 253
+argvals prol-src/natded.prolog /^argvals([]) --> [].$/
+array c.c 190
+ascii c-src/emacs/src/lisp.h 1598
+asort cp-src/functions.cpp /^void asort(int *a, int num){$/
+assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/
+assert c-src/etags.c 135
+assert c-src/etags.c /^# define assert(x) ((void) 0)$/
+assign_neighbor cp-src/clheir.hpp /^ void assign_neighbor(int direction, location */
+at_end c-src/etags.c 249
+at_filename c-src/etags.c 247
+at_language c-src/etags.c 245
+at_least_one_member prol-src/natded.prolog /^at_least_one_member(X,[X|_]):-!.$/
+at_regexp c-src/etags.c 246
+at_stdin c-src/etags.c 248
+atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/
+atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/
+aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/
+aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/
+aultparindent\hang\textindent tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+auto_help c-src/etags.c 699
+b c.c 180
+b c.c 259
+b c.c 260
+b c.c 262
+b c.c /^b ()$/
+b c-src/h.h 41
+b c-src/h.h 103
+b c-src/h.h 104
+b cp-src/c.C 132
+b ruby-src/test1.ru /^ def b()$/
+backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+bar c-src/c.c /^void bar() {while(0) {}}$/
+bar c.c 143
+bar c-src/h.h 19
+bar cp-src/x.cc /^XX::bar()$/
+bar1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/
+bar= ruby-src/test1.ru /^ attr_writer :bar,$/
+bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/
+base c-src/emacs/src/lisp.h 2188
+base cp-src/c.C /^double base (void) const { return rng_base; }$/
+base cp-src/Range.h /^ double base (void) const { return rng_base; }$/
+baz= ruby-src/test1.ru /^ :baz,$/
+bb c.c 275
+bbb c.c 251
+bbbbbb c-src/h.h 113
+been_warned c-src/etags.c 222
+before_command_echo_length c-src/emacs/src/keyboard.c 130
+before_command_key_count c-src/emacs/src/keyboard.c 129
+begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/
+behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/
+bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
+bind pyt-src/server.py /^ def bind(self, key, action):$/
+bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/
+bits_word c-src/emacs/src/lisp.h 123
+bits_word c-src/emacs/src/lisp.h 127
+bla c.c /^int bla ()$/
+blah tex-src/testenv.tex /^\\section{blah}$/
+bletch el-src/TAGTEST.EL /^(foo::defmumble bletch beuarghh)$/
+blv c-src/emacs/src/lisp.h 689
+blv_found c-src/emacs/src/lisp.h /^blv_found (struct Lisp_Buffer_Local_Value *blv)$/
+bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/
+bodyindent tex-src/texinfo.tex /^\\advance\\dimen2 by -\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\dimen3 by -\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bool c.c 222
+bool_header_size c-src/emacs/src/lisp.h 1472
+bool_vector_bitref c-src/emacs/src/lisp.h /^bool_vector_bitref (Lisp_Object a, EMACS_INT i)$/
+bool_vector_bytes c-src/emacs/src/lisp.h /^bool_vector_bytes (EMACS_INT size)$/
+bool_vector_data c-src/emacs/src/lisp.h /^bool_vector_data (Lisp_Object a)$/
+bool_vector_ref c-src/emacs/src/lisp.h /^bool_vector_ref (Lisp_Object a, EMACS_INT i)$/
+bool_vector_set c-src/emacs/src/lisp.h /^bool_vector_set (Lisp_Object a, EMACS_INT i, bool /
+bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/
+bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/
+bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/
+boolvar c-src/emacs/src/lisp.h 2287
+bracelev c-src/etags.c 2520
+bsp_DevId c-src/h.h 25
+btowc c-src/emacs/src/regex.h /^# define btowc(c) c$/
+buffer c-src/etags.c 238
+buffer c-src/emacs/src/regex.h 341
+buffer c-src/h.h 119
+build prol-src/natded.prolog /^build([],Left,Left).$/
+build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *str)$/
+build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/
+buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/
+builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/
+burst c-src/h.h 28
+busy c-src/emacs/src/gmalloc.c 158
+button_down_location c-src/emacs/src/keyboard.c 5210
+button_down_time c-src/emacs/src/keyboard.c 5218
+byte_stack c-src/emacs/src/lisp.h 3049
+bytecode_dest c-src/emacs/src/lisp.h 3037
+bytecode_top c-src/emacs/src/lisp.h 3036
+bytes_free c-src/emacs/src/gmalloc.c 314
+bytes_total c-src/emacs/src/gmalloc.c 310
+bytes_used c-src/emacs/src/gmalloc.c 312
+c c.c 180
+c c-src/h.h /^#define c() d$/
+c c-src/h.h 106
+c_ext c-src/etags.c 2271
+caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/
+cacheLRUEntry_s c.c 172
+cacheLRUEntry_t c.c 177
+calloc c-src/emacs/src/gmalloc.c 66
+calloc c-src/emacs/src/gmalloc.c 70
+calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/
+calloc c-src/emacs/src/gmalloc.c 1717
+can_be_null c-src/emacs/src/regex.h 370
+cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/
+canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/
+case_Lisp_Int c-src/emacs/src/lisp.h 438
+cat c-src/h.h 81
+cat cp-src/c.C 126
+cat cp-src/c.C 130
+cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/
+cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/
+cccccccccc c-src/h.h 115
+cdr c-src/emacs/src/lisp.h 1159
+cell y-src/parse.y 278
+cgrep html-src/software.html /^cgrep$/
+chain c-src/emacs/src/lisp.h 1162
+chain c-src/emacs/src/lisp.h 2396
+char_bits c-src/emacs/src/lisp.h 2443
+char_table_specials c-src/emacs/src/lisp.h 1692
+charset_unibyte c-src/emacs/src/regex.h 410
+chartonmstr pas-src/common.pas /^function chartonmstr; (*($/
+checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/
+check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_check_cons_list/
+checker make-src/Makefile /^checker:$/
+checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/
+checkiso html-src/software.html /^checkiso$/
+childDidExit objc-src/Subprocess.m /^- childDidExit$/
+chunks_free c-src/emacs/src/gmalloc.c 313
+chunks_used c-src/emacs/src/gmalloc.c 311
+cjava c-src/etags.c 2936
+class_method ruby-src/test.rb /^ def ClassExample.class_method$/
+classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/
+clean make-src/Makefile /^clean:$/
+clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
+clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, /
+clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/
+clearAllKey objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
+clearKey objcpp-src/SimpleCalc.M /^- clearKey:sender$/
+clear_event c-src/emacs/src/keyboard.c /^clear_event (struct input_event *event)$/
+clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending (void)$/
+clear_neighbors cp-src/clheir.cpp /^void discrete_location::clear_neighbors(void)$/
+clear_screen cp-src/screen.cpp /^void clear_screen(void)$/
+clear_waiting_for_input c-src/emacs/src/keyboard.c /^clear_waiting_for_input (void)$/
+cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/
+cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal (Lisp_Object data, const char */
+cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t, Lisp_O/
+cmt prol-src/natded.prolog /^cmt:-$/
+cname c-src/etags.c 2519
+cno c-src/etags.c 224
+colori cp-src/c.C 40
+commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/
+command c-src/etags.c 187
+command-error-default-function c-src/emacs/src/keyboard.c /^DEFUN ("command-error-default-function", Fcommand_/
+command_loop c-src/emacs/src/keyboard.c /^command_loop (void)$/
+command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/
+command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object ignore)$/
+command_loop_level c-src/emacs/src/keyboard.c 195
+comment php-src/lce_functions.php /^ function comment($line, $class)$/
+compile_empty prol-src/natded.prolog /^compile_empty:-$/
+compile_lex prol-src/natded.prolog /^compile_lex(File):-$/
+complete prol-src/natded.prolog /^complete(Cat):-$/
+complete-tag el-src/emacs/lisp/progmodes/etags.el /^(defun complete-tag ()$/
+compressor c-src/etags.c 188
+compressors c-src/etags.c 457
+compute_next_state cp-src/conway.hpp /^ void compute_next_state(void)$/
+compute_next_state cp-src/clheir.hpp /^ virtual void compute_next_state(void) { }$/
+conalgorithm html-src/algrthms.html /^Convolutionally$/
+concat c-src/etags.c /^concat (const char *s1, const char *s2, const char/
+concatenatenamestrings pas-src/common.pas /^function concatenatenamestrings; (*($/
+consider_token c-src/etags.c /^consider_token (char *str, int len, int c, int *c_/
+constant c-src/h.h 29
+constant cccp.y 113
+constant y-src/cccp.y 112
+constant_args c-src/h.h 27
+constype c-src/emacs/src/lisp.h 3739
+consult_lex prol-src/natded.prolog /^consult_lex:-$/
+contents c-src/emacs/src/lisp.h 1372
+contents c-src/emacs/src/lisp.h 1600
+contents c-src/emacs/src/lisp.h 1624
+count c-src/emacs/src/lisp.h 1863
+count_layers lua-src/allegro.lua /^local function count_layers (layer)$/
+count_words c-src/tab.c /^static int count_words(char *str, char delim)$/
+counter cp-src/c.C 33
+counter cp-src/c.C 36
+cow cp-src/c.C 127
+cow cp-src/c.C 131
+cplpl c-src/etags.c 2935
+createPOEntries php-src/lce_functions.php /^ function createPOEntries()$/
+createWidgets pyt-src/server.py /^ def createWidgets(self, host):$/
+createWidgets pyt-src/server.py /^ def createWidgets(self):$/
+cscInitTime cp-src/c.C 7
+cscSegmentationTime cp-src/c.C 8
+cstack c-src/etags.c 2523
+ctags make-src/Makefile /^ctags: etags.c ${OBJS}$/
+curlb c-src/etags.c 2929
+curlinepos c-src/etags.c 2931
+current-idle-time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/
+current-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("current-input-mode", Fcurrent_input_mode, /
+current_kboard c-src/emacs/src/keyboard.c 85
+current_lb_is_new c-src/etags.c 2926
+cursor_position cp-src/screen.cpp /^void cursor_position(void)$/
+cursor_x cp-src/screen.cpp 15
+cursor_y cp-src/screen.cpp 15
+d c.c 180
+d c-src/emacs/src/lisp.h 4673
+d c-src/emacs/src/lisp.h 4679
+data c-src/emacs/src/lisp.h 1395
+data c-src/emacs/src/lisp.h 2129
+data c-src/emacs/src/lisp.h 2395
+ddefineseen c-src/etags.c 2462
+debian-bug html-src/software.html /^debian-bug.el$/
+decimalKey objcpp-src/SimpleCalc.M /^- decimalKey:sender$/
+decode_timer c-src/emacs/src/keyboard.c /^decode_timer (Lisp_Object timer, struct timespec */
+def c-src/h.h 35
+def c-src/h.h 38
+defalt c-src/emacs/src/lisp.h 1585
+default-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar default-tags-table-function nil$/
+default_C_entries c-src/etags.c /^default_C_entries (FILE *inf)$/
+default_C_help c-src/etags.c 515
+default_C_help c-src/etags.c 523
+default_C_suffixes c-src/etags.c 512
+defcell c-src/emacs/src/lisp.h 2351
+define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/
+define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/
+define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/
+define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, /
+defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663
+defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665
+definedef c-src/etags.c 2464
+defun_func1 c.c /^defun_func1()$/
+delegate objc-src/Subprocess.m /^- delegate$/
+deleteItem pyt-src/server.py /^ def deleteItem(self):$/
+delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/
+deliver_input_available_signal c-src/emacs/src/keyboard.c /^deliver_input_available_signal (int sig)$/
+deliver_interrupt_signal c-src/emacs/src/keyboard.c /^deliver_interrupt_signal (int sig)$/
+deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal (int sig)$/
+depth c-src/emacs/src/lisp.h 1618
+derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/
+describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/
+detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending (void)$/
+detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c /^detect_input_pending_ignore_squeezables (void)$/
+detect_input_pending_run_timers c-src/emacs/src/keyboard.c /^detect_input_pending_run_timers (bool do_display)$/
+dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame, Extra, Args) ->/
+dignorerest c-src/etags.c 2463
+discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/
+discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/
+discrete_location cp-src/clheir.hpp 56
+discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/
+display cp-src/conway.cpp /^void display(void)$/
+disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/
+dnone c-src/etags.c 2460
+doc c-src/emacs/src/lisp.h 1689
+dog c-src/h.h 81
+dog cp-src/c.C 126
+dog cp-src/c.C 130
+dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/
+dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+double_click_count c-src/emacs/src/keyboard.c 5222
+drag_n_drop_syms c-src/emacs/src/keyboard.c 4629
+dribble c-src/emacs/src/keyboard.c 236
+dsharpseen c-src/etags.c 2461
+dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here, since \\bf, etc/
+dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here, since \\bf, etc/
+dummy1 cp-src/burton.cpp /^::dummy::dummy test::dummy1(void)$/
+dummy2 cp-src/burton.cpp /^::dummy::dummy test::dummy2(::CORBA::Long dummy)$/
+dummy3 cp-src/burton.cpp /^::dummy::dummy test::dummy3(char* name, ::CORBA::L/
+dummydots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
+dummyfont tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/
+dummytex tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/
+dump pyt-src/server.py /^ def dump(self, folded):$/
+eabs c-src/emacs/src/lisp.h /^#define eabs(x) ((x) < 0 ? -(x) : (x))$/
+eassert c-src/emacs/src/lisp.h /^# define eassert(cond) ((void) (false && (cond))) /
+eassert c-src/emacs/src/lisp.h /^# define eassert(cond) \\$/
+eassume c-src/emacs/src/lisp.h /^# define eassume(cond) assume (cond)$/
+eassume c-src/emacs/src/lisp.h /^# define eassume(cond) \\$/
+eax c-src/sysdep.h 31
+eax c-src/sysdep.h 33
+eax c-src/sysdep.h 33
+echo_add_key c-src/emacs/src/keyboard.c /^echo_add_key (Lisp_Object c)$/
+echo_char c-src/emacs/src/keyboard.c /^echo_char (Lisp_Object c)$/
+echo_dash c-src/emacs/src/keyboard.c /^echo_dash (void)$/
+echo_kboard c-src/emacs/src/keyboard.c 166
+echo_keystrokes_p c-src/emacs/src/keyboard.c /^echo_keystrokes_p (void)$/
+echo_length c-src/emacs/src/keyboard.c /^echo_length (void)$/
+echo_message_buffer c-src/emacs/src/keyboard.c 171
+echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/
+echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t nchars)$/
+echoing c-src/emacs/src/keyboard.c 154
+editItem pyt-src/server.py /^ def editItem(self):$/
+editsite pyt-src/server.py /^ def editsite(self, site):$/
+edituser pyt-src/server.py /^ def edituser(self, user):$/
+egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/
+emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/
+end c-src/emacs/src/regex.h 432
+end c-src/emacs/src/keyboard.c 8753
+endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/
+enter_critical_section c-src/h.h 116
+entry perl-src/htlmify-cystic 218
+entry perl-src/htlmify-cystic 234
+entry perl-src/htlmify-cystic 245
+entry perl-src/htlmify-cystic 252
+entry perl-src/htlmify-cystic 268
+entry perl-src/htlmify-cystic 276
+entry perl-src/htlmify-cystic 281
+entry perl-src/htlmify-cystic 296
+equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+erlang_atom c-src/etags.c /^erlang_atom (char *s)$/
+erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/
+erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/
+error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/
+error c-src/etags.c /^error (const char *format, ...)$/
+error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/
+error cccp.y /^error (msg)$/
+error y-src/cccp.y /^error (msg)$/
+error_signaled c-src/etags.c 264
+etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/
+etags html-src/software.html /^Etags$/
+etags make-src/Makefile /^etags: etags.c ${OBJS}$/
+etags--xref-find-definitions el-src/emacs/lisp/progmodes/etags.el /^(defun etags--xref-find-definitions (pattern &opti/
+etags--xref-limit el-src/emacs/lisp/progmodes/etags.el /^(defconst etags--xref-limit 1000)$/
+etags-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-file-of-tag (&optional relative) ; Do/
+etags-goto-tag-location el-src/emacs/lisp/progmodes/etags.el /^(defun etags-goto-tag-location (tag-info)$/
+etags-list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun etags-list-tags (file) ; Doc string?$/
+etags-recognize-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-recognize-tags-table ()$/
+etags-snarf-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-snarf-tag (&optional use-explicit) ; /
+etags-tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos (string) ; Doc string?$/
+etags-tags-apropos-additional el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos-additional (regexp)$/
+etags-tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-completion-table () ; Doc string/
+etags-tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-included-tables () ; Doc string?/
+etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-table-files () ; Doc string?$/
+etags-verify-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-verify-tags-table ()$/
+etags-xref-find el-src/emacs/lisp/progmodes/etags.el /^(defun etags-xref-find (action id)$/
+etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar etags-xref-find-definitions-tag-order '(ta/
+etags.1.man make-src/Makefile /^etags.1.man: etags.1$/
+etags_getcwd c-src/etags.c /^etags_getcwd (void)$/
+eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/
+event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, /
+event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/
+event_head c-src/emacs/src/keyboard.c 11021
+event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/
+exact c-src/emacs/src/gmalloc.c 200
+execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/
+exit c-src/exit.c /^DEFUN(exit, (status), int status)$/
+exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/
+exit-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("exit-recursive-edit", Fexit_recursive_edit/
+exit_critical_to_previous c-src/h.h 117
+exp y-src/parse.y 94
+exp y-src/atest.y 2
+exp y-src/cccp.y 156
+exp y-src/cccp.y 185
+exp1 y-src/cccp.y 148
+exp_list y-src/parse.y 262
+expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/
+expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/
+expandmng_tree prol-src/natded.prolog /^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
+expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/
+expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/
+explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/
+expression_value cccp.y 68
+expression_value y-src/cccp.y 68
+extras c-src/emacs/src/lisp.h 1603
+extvar c-src/h.h 109
+f c-src/c.c /^T f(){if(x){}$/
+f c.c 145
+f c.c 156
+f c.c 168
+f c.c /^int f$/
+f c-src/h.h 89
+f cp-src/c.C /^A<int>* f() {}$/
+f cp-src/c.C /^int f(A<int> x) {}$/
+f cp-src/c.C /^int A<int>::f(A<int>* x) {}$/
+f cp-src/c.C /^A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}$/
+f cp-src/c.C /^class B<int> { void f() {} };$/
+f cp-src/c.C /^ void f() {}$/
+f cp-src/c.C /^ int f(){return 0;}; \/\/ first comment$/
+f cp-src/c.C /^ void f() {}$/
+f cp-src/fail.C /^ int f() { return 5; }$/
+f cp-src/fail.C /^int A::B::f() { return 2; }$/
+f1 c.c /^ f1 () { \/* Do something. *\/; }$/
++f1 perl-src/kai-test.pl /^sub f1 {$/
+f2 c.c /^void f2 () { \/* Do something. *\/; }$/
++f2 perl-src/kai-test.pl /^sub main::f2 {$/
++f3 perl-src/kai-test.pl /^sub f3 {$/
++f4 perl-src/kai-test.pl /^sub Bar::f4 {$/
++f5 perl-src/kai-test.pl /^sub f5 {$/
++f6 perl-src/kai-test.pl /^sub f6 {$/
++f7 perl-src/kai-test.pl /^sub f7 {$/
+fast_string_match_ignore_case c-src/emacs/src/lisp.h /^fast_string_match_ignore_case (Lisp_Object regexp,/
+fastctags make-src/Makefile /^fastctags:$/
+fastetags make-src/Makefile /^fastetags:$/
+fastmap c-src/emacs/src/regex.h 355
+fastmap_accurate c-src/emacs/src/regex.h 383
+fatal c-src/etags.c /^fatal (const char *s1, const char *s2)$/
+fatala c.c /^void fatala () __attribute__ ((noreturn));$/
+fdHandler objc-src/Subprocess.m /^- fdHandler:(int)theFd$/
+fdHandler objc-src/Subprocess.m /^fdHandler (int theFd, id self)$/
+fdefunkey c-src/etags.c 2409
+fdefunname c-src/etags.c 2410
+fdesc c-src/etags.c 201
+fdesc c-src/etags.c 212
+fdp c-src/etags.c 217
+ff cp-src/c.C /^ int ff(){return 1;};$/
+field_of_play cp-src/conway.cpp 18
+fignore c-src/etags.c 2416
+file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/
+file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/
+fileJoin php-src/lce_functions.php /^ function fileJoin()$/
++file_end perl-src/htlmify-cystic /^sub file_end ()$/
+file_index perl-src/htlmify-cystic 33
+file_tocs perl-src/htlmify-cystic 30
+filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/
+filenames c-src/etags.c 196
+find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/
+find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/
+find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/
+find-tag-hook el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-hook nil$/
+find-tag-in-order el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-in-order (pattern$/
+find-tag-interactive el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-interactive (prompt &optional no-d/
+find-tag-marker-ring el-src/emacs/lisp/progmodes/etags.el /^(defvaralias 'find-tag-marker-ring 'xref--marker-r/
+find-tag-marker-ring-length el-src/emacs/lisp/progmodes/etags.el /^(define-obsolete-variable-alias 'find-tag-marker-r/
+find-tag-next-line-after-failure-p el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-next-line-after-failure-p nil$/
+find-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-noselect (tagname &optional next-p/
+find-tag-other-frame el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-other-frame (tagname &optional nex/
+find-tag-other-window el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-other-window (tagname &optional ne/
+find-tag-regexp el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-regexp (regexp &optional next-p ot/
+find-tag-regexp-next-line-after-failure-p el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-next-line-after-failure-p /
+find-tag-regexp-search-function el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-search-function nil$/
+find-tag-regexp-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-regexp-tag-order nil$/
+find-tag-search-function el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-search-function nil$/
+find-tag-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-tag (string)$/
+find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-order nil$/
+find_entries c-src/etags.c /^find_entries (FILE *inf)$/
+find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/
+findcats prol-src/natded.prolog /^findcats([],Left,Left).$/
++finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/
++finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
++finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/
++finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finlist c-src/etags.c 2414
+first c-src/emacs/src/gmalloc.c 151
+fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/
+fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/
+flag c-src/getopt.h 83
+flag2str pyt-src/server.py /^def flag2str(value, string):$/
+flistseen c-src/etags.c 2415
+fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/
+fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/
+fnin y-src/parse.y 67
+fnin parse.y 67
+focus_set pyt-src/server.py /^ def focus_set(self):$/
+follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/
+fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/
+fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/
+foo c.c 150
+foo c.c 166
+foo c.c 167
+foo c.c 178
+foo c.c 189
+foo c-src/h.h 18
+foo cp-src/c.C 68
+foo cp-src/c.C 79
+foo cp-src/c.C /^ foo() {$/
+foo cp-src/x.cc /^XX::foo()$/
+foo f-src/entry.for /^ character*(*) function foo()$/
+foo f-src/entry.strange_suffix /^ character*(*) function foo()$/
+foo f-src/entry.strange /^ character*(*) function foo()$/
+foo php-src/ptest.php /^foo()$/
+foo ruby-src/test1.ru /^ attr_reader :foo$/
+foo! ruby-src/test1.ru /^ def foo!$/
+foo1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/
+foo2 ruby-src/test1.ru /^ alias_method ( :foo2, #cmmt$/
+foobar c-src/c.c /^int foobar() {;}$/
+foobar c.c /^extern void foobar (void) __attribute__ ((section /
+foobar2 c-src/h.h 20
+foobar2_ c-src/h.h 16
+foperator c-src/etags.c 2411
+force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/
+force_explicit_name c-src/etags.c 265
+force_quit_count c-src/emacs/src/keyboard.c 10387
+formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/
+found c-src/emacs/src/lisp.h 2344
+fracas html-src/software.html /^Fracas$/
+frag c-src/emacs/src/gmalloc.c 152
+frame_local c-src/emacs/src/lisp.h 2341
+free c-src/emacs/src/gmalloc.c 67
+free c-src/emacs/src/gmalloc.c 72
+free c-src/emacs/src/gmalloc.c 166
+free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/
+free c-src/emacs/src/gmalloc.c 1719
+free_fdesc c-src/etags.c /^free_fdesc (register fdesc *fdp)$/
+free_for prol-src/natded.prolog /^free_for(var(_),_,_).$/
+free_regexps c-src/etags.c /^free_regexps (void)$/
+free_tree c-src/etags.c /^free_tree (register node *np)$/
+free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/
+freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/
+fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/
+fstartlist c-src/etags.c 2413
+func1 c.c /^int func1$/
+func2 c.c /^int func2 (a,b$/
+func_key_syms c-src/emacs/src/keyboard.c 4626
+funcboo c.c /^bool funcboo ()$/
+funcpointer c-src/emacs/src/lisp.h 2126
+funcptr c-src/h.h /^ fu int (*funcptr) (void *ptr);$/
+function c-src/etags.c 194
+function c-src/emacs/src/lisp.h 694
+function c-src/emacs/src/lisp.h 1685
+function c-src/emacs/src/lisp.h 2197
+functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/
+fvdef c-src/etags.c 2418
+fvextern c-src/etags.c 2420
+fvnameseen c-src/etags.c 2412
+fvnone c-src/etags.c 2408
+fwd c-src/emacs/src/lisp.h 690
+fwd c-src/emacs/src/lisp.h 2346
+g cp-src/c.C /^ int g(){return 2;};$/
+galileo html-src/software.html /^GaliLEO$/
+gather pyt-src/server.py /^ def gather(self):$/
+gather pyt-src/server.py /^ def gather(self):$/
+gc_aset c-src/emacs/src/lisp.h /^gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Ob/
+gcmarkbit c-src/emacs/src/lisp.h 656
+gcpro c-src/emacs/src/lisp.h 3042
+gcpro c-src/emacs/src/lisp.h 3132
+gen_help_event c-src/emacs/src/keyboard.c /^gen_help_event (Lisp_Object help, Lisp_Object fram/
+genalgorithm html-src/algrthms.html /^Generating the Data<\/font><\/i><\/b>$/
+generic_object cp-src/clheir.cpp /^generic_object::generic_object(void)$/
+generic_object cp-src/clheir.hpp 13
+getArchs objc-src/PackInsp.m /^-(void)getArchs$/
+getDomainNames php-src/lce_functions.php /^ function getDomainNames()$/
+getFoo lua-src/test.lua /^function Cube.data.getFoo ()$/
+getPOReader php-src/lce_functions.php /^ function &getPOReader($domain)$/
+getPath objc-src/PackInsp.m /^-(const char *)getPath:(char *)buf forType:(const /
+getPos lua-src/test.lua /^function Rectangle.getPos ()$/
+getPos lua-src/test.lua /^function Circle.getPos ()$/
+getTextDomains php-src/lce_functions.php /^ function getTextDomains($lines)$/
+get_compressor_from_suffix c-src/etags.c /^get_compressor_from_suffix (char *file, char **ext/
+get_contiguous_space c-src/emacs/src/gmalloc.c /^get_contiguous_space (ptrdiff_t size, void *positi/
+get_current_dir_name c-src/emacs/src/gmalloc.c 33
+get_input_pending c-src/emacs/src/keyboard.c /^get_input_pending (int flags)$/
+get_language_from_filename c-src/etags.c /^get_language_from_filename (char *file, int case_s/
+get_language_from_interpreter c-src/etags.c /^get_language_from_interpreter (char *interpreter)$/
+get_language_from_langname c-src/etags.c /^get_language_from_langname (const char *name)$/
+get_layer_by_name lua-src/allegro.lua /^local function get_layer_by_name (sprite, layer, n/
+get_tag c-src/etags.c /^get_tag (register char *bp, char **namepp)$/
+get_word c-src/tab.c /^static char *get_word(char **str, char delim)$/
+getcjmp c-src/emacs/src/keyboard.c 147
++getopt perl-src/yagrip.pl /^sub getopt {$/
+getopt.o make-src/Makefile /^getopt.o: emacs\/lib-src\/getopt.c$/
+getopt1.o make-src/Makefile /^getopt1.o: emacs\/lib-src\/getopt1.c$/
+getptys objc-src/Subprocess.m /^getptys (int *master, int *slave)$/
+gettext php-src/lce_functions.php /^ function gettext($msgid)$/
+ggg c-src/h.h 10
+ghi1 c-src/h.h 36
+ghi2 c-src/h.h 39
+giallo cp-src/c.C 40
+glider cp-src/conway.cpp /^void glider(int x, int y)$/
+gnu html-src/software.html /^Free software that I wrote for the GNU project or /
+gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/
+goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/
+goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/
+handleList pyt-src/server.py /^ def handleList(self, event):$/
+handleNew pyt-src/server.py /^ def handleNew(self, event):$/
+handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/
+handle_input_available_signal c-src/emacs/src/keyboard.c /^handle_input_available_signal (int sig)$/
+handle_interrupt c-src/emacs/src/keyboard.c /^handle_interrupt (bool in_signal_handler)$/
+handle_interrupt_signal c-src/emacs/src/keyboard.c /^handle_interrupt_signal (int sig)$/
+handle_user_signal c-src/emacs/src/keyboard.c /^handle_user_signal (int sig)$/
+handler c-src/emacs/src/lisp.h 3023
+handlertype c-src/emacs/src/lisp.h 3021
+has_arg c-src/getopt.h 82
+hash c-src/etags.c /^hash (const char *str, int len)$/
+hash c-src/emacs/src/lisp.h 1843
+hash_table_test c-src/emacs/src/lisp.h 1805
+hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/
+hdr c-src/emacs/src/gmalloc.c 1860
+head_table c-src/emacs/src/keyboard.c 11027
+header c-src/emacs/src/lisp.h 1371
+header c-src/emacs/src/lisp.h 1388
+header c-src/emacs/src/lisp.h 1581
+header c-src/emacs/src/lisp.h 1610
+header c-src/emacs/src/lisp.h 1672
+header c-src/emacs/src/lisp.h 1826
+header_size c-src/emacs/src/lisp.h 1471
+heapsize c-src/emacs/src/gmalloc.c 361
+help c-src/etags.c 193
+helpPanel objcpp-src/SimpleCalc.M /^- helpPanel:sender$/
+help_char_p c-src/emacs/src/keyboard.c /^help_char_p (Lisp_Object c)$/
+help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156
+helpwin pyt-src/server.py /^def helpwin(helpdict):$/
+hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/
+htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/
+hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/
+hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/
+hybrid_free c-src/emacs/src/gmalloc.c /^hybrid_free (void *ptr)$/
+hybrid_get_current_dir_name c-src/emacs/src/gmalloc.c /^hybrid_get_current_dir_name (void)$/
+hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/
+hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr, size_t size)$/
+hypothetical_mem prol-src/natded.prolog /^hypothetical_mem(fi(N),Ass,_):-$/
+i c-src/c.c 2
+i c.c 169
+i c-src/emacs/src/lisp.h 567
+i c-src/emacs/src/lisp.h 4673
+i c-src/emacs/src/lisp.h 4679
+i cp-src/c.C 132
+ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/
+ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/
+ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/
+ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/
+ialpage= tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
+idx c-src/emacs/src/lisp.h 3150
+ignore_case c-src/etags.c 266
+ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256
+ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/
+immediate_quit c-src/emacs/src/keyboard.c 174
+impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/
+in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/
+inattribute c-src/etags.c 2400
+inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/
+index c-src/emacs/src/lisp.h 1856
+infabsdir c-src/etags.c 206
+infabsname c-src/etags.c 205
+infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/
+infname c-src/etags.c 204
+info c-src/emacs/src/gmalloc.c 157
+infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+init c-src/etags.c /^init (void)$/
+init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/
+init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/
+init objcpp-src/SimpleCalc.M /^- init$/
+init_control c.c 239
+init_kboard c-src/emacs/src/keyboard.c /^init_kboard (KBOARD *kb, Lisp_Object type)$/
+init_keyboard c-src/emacs/src/keyboard.c /^init_keyboard (void)$/
+init_registry cp-src/clheir.cpp /^void init_registry(void)$/
+init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/
+inita c.c /^static void inita () {}$/
+initb c.c /^static void initb () {}$/
+initial_kboard c-src/emacs/src/keyboard.c 84
+initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/
+initialize_random_junk cccp.y /^initialize_random_junk ()$/
+initialize_random_junk y-src/cccp.y /^initialize_random_junk ()$/
+input-pending-p c-src/emacs/src/keyboard.c /^DEFUN ("input-pending-p", Finput_pending_p, Sinput/
+input_available_clear_time c-src/emacs/src/keyboard.c 324
+input_pending c-src/emacs/src/keyboard.c 239
+input_polling_used c-src/emacs/src/keyboard.c /^input_polling_used (void)$/
+input_was_pending c-src/emacs/src/keyboard.c 287
+insert-abbrev-table-description c-src/abbrev.c /^DEFUN ("insert-abbrev-table-description", Finsert_/
+insertname pas-src/common.pas /^function insertname;(*($/
+instance_method ruby-src/test.rb /^ def instance_method$/
+instance_method_equals= ruby-src/test.rb /^ def instance_method_equals=$/
+instance_method_exclamation! ruby-src/test.rb /^ def instance_method_exclamation!$/
+instance_method_question? ruby-src/test.rb /^ def instance_method_question?$/
+instr y-src/parse.y 80
+instr parse.y 80
+instruct c-src/etags.c 2527
+intNumber go-src/test1.go 13
+integer c-src/emacs/src/lisp.h 2127
+integer cccp.y 113
+integer y-src/cccp.y 112
+integer_overflow cccp.y /^integer_overflow ()$/
+integer_overflow y-src/cccp.y /^integer_overflow ()$/
+integertonmstr pas-src/common.pas /^function integertonmstr; (* (TheInteger : integer)/
+intensity1 f-src/entry.for /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1 f-src/entry.strange_suffix /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1 f-src/entry.strange /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+interface_locate c-src/c.c /^interface_locate(void)$/
+intern c-src/emacs/src/lisp.h /^intern (const char *str)$/
+intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/
+internal_last_event_frame c-src/emacs/src/keyboard.c 228
+interpreters c-src/etags.c 197
+interrupt_input c-src/emacs/src/keyboard.c 328
+interrupt_input_blocked c-src/emacs/src/keyboard.c 76
+interrupt_input_blocked c-src/emacs/src/lisp.h 3048
+interrupts_deferred c-src/emacs/src/keyboard.c 331
+intoken c-src/etags.c /^#define intoken(c) (_itk[CHAR (c)]) \/* c can be in/
+intspec c-src/emacs/src/lisp.h 1688
+intvar c-src/emacs/src/lisp.h 2277
+invalidate_nodes c-src/etags.c /^invalidate_nodes (fdesc *badfdp, node **npp)$/
+ipc3dCSC19 cp-src/c.C 6
+ipc3dChannelType cp-src/c.C 1
+ipc3dIslandHierarchy cp-src/c.C 1
+ipc3dLinkControl cp-src/c.C 1
+irregular_location cp-src/clheir.hpp 47
+irregular_location cp-src/clheir.hpp /^ irregular_location(double xi, double yi, doubl/
+isComment php-src/lce_functions.php /^ function isComment($class)$/
+isHoliday cp-src/functions.cpp /^bool isHoliday ( Date d ){$/
+isLeap cp-src/functions.cpp /^bool isLeap ( int year ){$/
+is_curly_brace_form c-src/h.h 54
+is_explicit c-src/h.h 49
+is_func c-src/etags.c 221
+is_hor_space cccp.y 953
+is_hor_space y-src/cccp.y 953
+is_idchar cccp.y 948
+is_idchar y-src/cccp.y 948
+is_idstart cccp.y 950
+is_idstart y-src/cccp.y 950
+is_muldiv_operation cp-src/c.C /^is_muldiv_operation(pc)$/
+is_ordset prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/
+iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151
+isoperator prol-src/natded.prolog /^isoperator(Char):-$/
+isoptab prol-src/natded.prolog /^isoptab('%').$/
+iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white /
+item_properties c-src/emacs/src/keyboard.c 7568
+jmp c-src/emacs/src/lisp.h 3044
+just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/
+kbd_buffer c-src/emacs/src/keyboard.c 291
+kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/
+kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/
+kbd_buffer_nr_stored c-src/emacs/src/keyboard.c /^kbd_buffer_nr_stored (void)$/
+kbd_buffer_store_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_event (register struct input_even/
+kbd_buffer_store_event_hold c-src/emacs/src/keyboard.c /^kbd_buffer_store_event_hold (register struct input/
+kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_event (Lisp_Object frame, Li/
+kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/
+kbd_fetch_ptr c-src/emacs/src/keyboard.c 297
+kbd_store_ptr c-src/emacs/src/keyboard.c 302
+kboard c-src/emacs/src/keyboard.c 860
+kboard_stack c-src/emacs/src/keyboard.c 858
+kboard_stack c-src/emacs/src/keyboard.c 864
+key_and_value c-src/emacs/src/lisp.h 1868
+keyremap c-src/emacs/src/keyboard.c 8742
+keyremap c-src/emacs/src/keyboard.c 8754
+keyremap_step c-src/emacs/src/keyboard.c /^keyremap_step (Lisp_Object *keybuf, int bufsize, v/
+keys_of_keyboard c-src/emacs/src/keyboard.c /^keys_of_keyboard (void)$/
+keyval prol-src/natded.prolog /^keyval(key(Key,Val)) --> [Key,'='], valseq(Val).$/
+keyvalcgi prol-src/natded.prolog /^keyvalcgi(Key,Val):-$/
+keyvalscgi prol-src/natded.prolog /^keyvalscgi(KeyVals),$/
+keyvalseq prol-src/natded.prolog /^keyvalseq([KeyVal|KeyVals]) --> $/
+keyword_parsing cccp.y 73
+keyword_parsing y-src/cccp.y 73
+keywords cccp.y 115
+keywords y-src/cccp.y 114
+keywords y-src/cccp.y 306
+kind c-src/emacs/src/keyboard.c 11024
+kind c-src/h.h 46
+kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string (struct kboard *kb, Lisp_Object v/
+kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard *kb, Lisp_Object val/
+kset_keyboard_translate_table c-src/emacs/src/keyboard.c /^kset_keyboard_translate_table (struct kboard *kb, /
+kset_last_prefix_arg c-src/emacs/src/keyboard.c /^kset_last_prefix_arg (struct kboard *kb, Lisp_Obje/
+kset_last_repeatable_command c-src/emacs/src/keyboard.c /^kset_last_repeatable_command (struct kboard *kb, L/
+kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key_map (struct kboard *kb, Li/
+kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard /
+kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/
+kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/
+lang c-src/etags.c 208
+lang c-src/etags.c 251
+lang c-src/etags.c 259
+lang_names c-src/etags.c 718
+language c-src/etags.c 199
+last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/
+last_abbrev_point c-src/abbrev.c 79
+last_auto_save c-src/emacs/src/keyboard.c 214
+last_heapinfo c-src/emacs/src/gmalloc.c 402
+last_mouse_button c-src/emacs/src/keyboard.c 5215
+last_mouse_x c-src/emacs/src/keyboard.c 5216
+last_mouse_y c-src/emacs/src/keyboard.c 5217
+last_non_minibuf_size c-src/emacs/src/keyboard.c 207
+last_point_position c-src/emacs/src/keyboard.c 217
+last_state_size c-src/emacs/src/gmalloc.c 401
+last_undo_boundary c-src/emacs/src/keyboard.c 1287
+lasta c.c 272
+lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/
+lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
+lastb c.c 278
+lb c-src/etags.c 2923
+lbs c-src/etags.c 2924
+lce php-src/lce_functions.php /^ function lce()$/
+lce php-src/lce_functions.php /^ function lce()$/
+lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($d_name, $d_path/
+lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($domain, $path)$/
+lce_dgettext php-src/lce_functions.php /^ function lce_dgettext($domain, $msgid)$/
+lce_dgettext php-src/lce_functions.php /^ function lce_dgettext($domain, $msgid)$/
+lce_geteditcode php-src/lce_functions.php /^ function lce_geteditcode($type, $name, $text, $r/
+lce_gettext php-src/lce_functions.php /^ function lce_gettext($msgid)$/
+lce_gettext php-src/lce_functions.php /^ function lce_gettext($msgid)$/
+lce_textdomain php-src/lce_functions.php /^ function lce_textdomain($domain)$/
+lce_textdomain php-src/lce_functions.php /^ function lce_textdomain($domain)$/
+leasqr html-src/software.html /^Leasqr$/
+left c-src/etags.c 216
+left_shift cccp.y /^left_shift (a, b)$/
+left_shift y-src/cccp.y /^left_shift (a, b)$/
+len c-src/etags.c 237
+length c-src/etags.c 2495
+length cccp.y 44
+length cccp.y 114
+length y-src/cccp.y 44
+length y-src/cccp.y 113
+letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
+letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/
+letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
+letter tex-src/texinfo.tex /^\\subsecheading {#1}{\\appendixletter}{\\the\\secno}{\\/
+letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
+letter tex-src/texinfo.tex /^ {\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
+letter tex-src/texinfo.tex /^ {\\appendixletter}$/
+letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/
+level c-src/emacs/src/lisp.h 3153
+lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/
+lexptr cccp.y 332
+lexptr y-src/cccp.y 332
+licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/
+limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/
+line c-src/etags.c 2493
+line perl-src/htlmify-cystic 37
+line y-src/parse.y 86
+lineCount php-src/lce_functions.php /^ function lineCount($entry)$/
+linebuffer c-src/etags.c 239
+linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/
+linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/
+lineno c-src/etags.c 2506
+lineno c-src/emacs/src/lisp.h 3147
+linepos c-src/etags.c 2507
+linepos c-src/etags.c 2922
+links html-src/software.html /^Links to interesting software$/
+lisp_eval_depth c-src/emacs/src/lisp.h 3045
+lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
+lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
+lisp_h_CHECK_SYMBOL c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/
+lisp_h_CHECK_TYPE c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_TYPE(ok, predicate, x) \\$/
+lisp_h_CONSP c-src/emacs/src/lisp.h /^#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)$/
+lisp_h_EQ c-src/emacs/src/lisp.h /^#define lisp_h_EQ(x, y) (XLI (x) == XLI (y))$/
+lisp_h_FLOATP c-src/emacs/src/lisp.h /^#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)/
+lisp_h_INTEGERP c-src/emacs/src/lisp.h /^#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int/
+lisp_h_MARKERP c-src/emacs/src/lisp.h /^#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE /
+lisp_h_MISCP c-src/emacs/src/lisp.h /^#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)$/
+lisp_h_NILP c-src/emacs/src/lisp.h /^#define lisp_h_NILP(x) EQ (x, Qnil)$/
+lisp_h_SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SET_SYMBOL_VAL(sym, v) \\$/
+lisp_h_SYMBOLP c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbo/
+lisp_h_SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/
+lisp_h_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_VAL(sym) \\$/
+lisp_h_VECTORLIKEP c-src/emacs/src/lisp.h /^#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_V/
+lisp_h_XCAR c-src/emacs/src/lisp.h /^#define lisp_h_XCAR(c) XCONS (c)->car$/
+lisp_h_XCDR c-src/emacs/src/lisp.h /^#define lisp_h_XCDR(c) XCONS (c)->u.cdr$/
+lisp_h_XCONS c-src/emacs/src/lisp.h /^#define lisp_h_XCONS(a) \\$/
+lisp_h_XFASTINT c-src/emacs/src/lisp.h /^# define lisp_h_XFASTINT(a) XINT (a)$/
+lisp_h_XHASH c-src/emacs/src/lisp.h /^#define lisp_h_XHASH(a) XUINT (a)$/
+lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) ((Lisp_Object) { i })$/
+lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) (i)$/
+lisp_h_XINT c-src/emacs/src/lisp.h /^# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)$/
+lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) ((o).i)$/
+lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) (o)$/
+lisp_h_XPNTR c-src/emacs/src/lisp.h /^#define lisp_h_XPNTR(a) \\$/
+lisp_h_XSYMBOL c-src/emacs/src/lisp.h /^# define lisp_h_XSYMBOL(a) \\$/
+lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a/
+lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/
+lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/
+lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/
+lispy_accent_codes c-src/emacs/src/keyboard.c 4634
+lispy_accent_keys c-src/emacs/src/keyboard.c 4741
+lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181
+lispy_function_keys c-src/emacs/src/keyboard.c 4768
+lispy_function_keys c-src/emacs/src/keyboard.c 5065
+lispy_kana_keys c-src/emacs/src/keyboard.c 5026
+lispy_modifier_list c-src/emacs/src/keyboard.c /^lispy_modifier_list (int modifiers)$/
+lispy_multimedia_keys c-src/emacs/src/keyboard.c 4962
+lispy_wheel_names c-src/emacs/src/keyboard.c 5174
+list c-src/emacs/src/gmalloc.c 186
+list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun list-tags (file &optional _next-match)$/
+list-tags-function el-src/emacs/lisp/progmodes/etags.el /^(defvar list-tags-function nil$/
+list2i c-src/emacs/src/lisp.h /^list2i (EMACS_INT x, EMACS_INT y)$/
+list3i c-src/emacs/src/lisp.h /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)$/
+list4i c-src/emacs/src/lisp.h /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMA/
+list_to_ord_set prol-src/ordsets.prolog /^list_to_ord_set(List, Set) :-$/
+lno c-src/etags.c 223
+load objc-src/PackInsp.m /^-load$/
+loadContentsOf objc-src/PackInsp.m /^-loadContentsOf:(const char *)type inTable:(HashTa/
+loadImage objc-src/PackInsp.m /^-loadImage$/
+loadKeyValuesFrom objc-src/PackInsp.m /^-loadKeyValuesFrom:(const char *)type inTable:(Has/
+loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/
+local_if_set c-src/emacs/src/lisp.h 2338
+location cp-src/clheir.hpp 33
+location cp-src/clheir.hpp /^ location() { }$/
+lookup cccp.y /^lookup (name, len, hash)$/
+lookup y-src/cccp.y /^lookup (name, len, hash)$/
+lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/
+lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/
+mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/
+mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/
+mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/
+mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/
+mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/
+mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/
+magic c-src/emacs/src/gmalloc.c 1863
+maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/
+make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/
+make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/
+make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
+make_ctrl_char c-src/emacs/src/keyboard.c /^make_ctrl_char (int c)$/
+make_fixnum_or_float c-src/emacs/src/lisp.h /^#define make_fixnum_or_float(val) \\$/
+make_formatted_string c-src/emacs/src/lisp.h /^extern Lisp_Object make_formatted_string (char *, /
+make_lisp_ptr c-src/emacs/src/lisp.h /^make_lisp_ptr (void *ptr, enum Lisp_Type type)$/
+make_lisp_symbol c-src/emacs/src/lisp.h /^make_lisp_symbol (struct Lisp_Symbol *sym)$/
+make_lispy_event c-src/emacs/src/keyboard.c /^make_lispy_event (struct input_event *event)$/
+make_lispy_focus_in c-src/emacs/src/keyboard.c /^make_lispy_focus_in (Lisp_Object frame)$/
+make_lispy_focus_out c-src/emacs/src/keyboard.c /^make_lispy_focus_out (Lisp_Object frame)$/
+make_lispy_movement c-src/emacs/src/keyboard.c /^make_lispy_movement (struct frame *frame, Lisp_Obj/
+make_lispy_position c-src/emacs/src/keyboard.c /^make_lispy_position (struct frame *f, Lisp_Object /
+make_lispy_switch_frame c-src/emacs/src/keyboard.c /^make_lispy_switch_frame (Lisp_Object frame)$/
+make_number c-src/emacs/src/lisp.h /^# define make_number(n) lisp_h_make_number (n)$/
+make_pointer_integer c-src/emacs/src/lisp.h /^make_pointer_integer (void *p)$/
+make_scroll_bar_position c-src/emacs/src/keyboard.c /^make_scroll_bar_position (struct input_event *ev, /
+make_tag c-src/etags.c /^make_tag (const char *name, \/* tag name, or NULL /
+make_uninit_sub_char_table c-src/emacs/src/lisp.h /^make_uninit_sub_char_table (int depth, int min_cha/
+make_uninit_vector c-src/emacs/src/lisp.h /^make_uninit_vector (ptrdiff_t size)$/
+malloc c-src/emacs/src/gmalloc.c 64
+malloc c-src/emacs/src/gmalloc.c 68
+malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size) ATTRIBUTE_MALLOC/
+malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/
+malloc c-src/emacs/src/gmalloc.c 1715
+malloc_atfork_handler_child c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_child (void)$/
+malloc_atfork_handler_parent c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_parent (void)$/
+malloc_atfork_handler_prepare c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_prepare (void)$/
+malloc_enable_thread c-src/emacs/src/gmalloc.c /^malloc_enable_thread (void)$/
+malloc_info c-src/emacs/src/gmalloc.c 167
+malloc_initialize_1 c-src/emacs/src/gmalloc.c /^malloc_initialize_1 (void)$/
+mallochook c-src/emacs/src/gmalloc.c /^mallochook (size_t size)$/
+man manpage make-src/Makefile /^man manpage: etags.1.man$/
+mao c-src/h.h 101
+map c-src/emacs/src/keyboard.c 8748
+map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/
+mapping html-src/algrthms.html /^Mapping the Channel Symbols$/
+mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/
+mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/
+max c.c /^max (int a, int b)$/
+max c.c /^__attribute__ ((always_inline)) max (int a, int b)/
+max c-src/emacs/src/lisp.h 58
+max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
+max cp-src/conway.cpp /^#define max(x,y) ((x > y) ? x : y)$/
+max_args c-src/emacs/src/lisp.h 1686
+max_num_directions cp-src/clheir.hpp 31
+max_num_generic_objects cp-src/clheir.cpp 9
+maxargs c-src/emacs/src/lisp.h 2831
+maybe_gc c-src/emacs/src/lisp.h /^maybe_gc (void)$/
+mcCSC cp-src/c.C 6
+mcheck c-src/emacs/src/gmalloc.c /^mcheck (void (*func) (enum mcheck_status))$/
+mcheck_status c-src/emacs/src/gmalloc.c 283
+mcheck_used c-src/emacs/src/gmalloc.c 2012
+me22b lua-src/test.lua /^ local function test.me22b (one)$/
+me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/
+memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/
+member prol-src/natded.prolog /^member(X,[X|_]).$/
+memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/
+menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, /
+menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/
+menu_bar_items_index c-src/emacs/src/keyboard.c 7369
+menu_bar_items_vector c-src/emacs/src/keyboard.c 7368
+menu_bar_one_keymap_changed_items c-src/emacs/src/keyboard.c 7363
+menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Lisp_Object sexpr)$/
+menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/
+menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/
+metasource c-src/etags.c 198
+min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+min c-src/emacs/src/lisp.h 57
+min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/
+min_args c-src/emacs/src/lisp.h 1686
+min_char c-src/emacs/src/lisp.h 1621
+minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/
+miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
+modifier_names c-src/emacs/src/keyboard.c 6319
+modifier_symbols c-src/emacs/src/keyboard.c 6327
+modify_event_symbol c-src/emacs/src/keyboard.c /^modify_event_symbol (ptrdiff_t symbol_num, int mod/
+module_class_method ruby-src/test.rb /^ def ModuleExample.module_class_method$/
+module_instance_method ruby-src/test.rb /^ def module_instance_method$/
+more= ruby-src/test1.ru /^ :more$/
+more_aligned_int c.c 165
+morecore_nolock c-src/emacs/src/gmalloc.c /^morecore_nolock (size_t size)$/
+morecore_recursing c-src/emacs/src/gmalloc.c 604
+mouse_syms c-src/emacs/src/keyboard.c 4627
+move cp-src/clheir.cpp /^void agent::move(int direction)$/
+mprobe c-src/emacs/src/gmalloc.c /^mprobe (void *ptr)$/
+msgid php-src/lce_functions.php /^ function msgid($line, $class)$/
+msgstr php-src/lce_functions.php /^ function msgstr($line, $class)$/
+mstats c-src/emacs/src/gmalloc.c 308
+mt prol-src/natded.prolog /^mt:-$/
+mtg html-src/software.html /^MTG$/
+multi_line c-src/etags.c 267
+multibyte c-src/emacs/src/regex.h 403
+my_printf c.c /^my_printf (void *my_object, const char *my_format,/
+my_struct c.c 226
+my_struct c-src/h.h 91
+my_typedef c.c 228
+my_typedef c-src/h.h 93
+n c-src/exit.c 28
+n c-src/exit.strange_suffix 28
+name c-src/getopt.h 76
+name c-src/getopt.h 78
+name c-src/etags.c 192
+name c-src/etags.c 218
+name c-src/etags.c 261
+name c-src/etags.c 2271
+name c-src/emacs/src/keyboard.c 7241
+name c-src/emacs/src/lisp.h 1808
+name c-src/emacs/src/lisp.h 3144
+name perl-src/htlmify-cystic 357
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Function}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Macro}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Special Form}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Method on #1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Instance Variable of #1}%/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Variable}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{User Option}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Variable}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/
+name cccp.y 43
+name cccp.y 114
+name cccp.y 114
+name y-src/cccp.y 43
+name y-src/cccp.y 113
+name y-src/cccp.y 113
+named c-src/etags.c 2505
+namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/
+neighbors cp-src/clheir.hpp 59
+nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/
+nestlev c-src/etags.c 2525
+new objc-src/PackInsp.m /^+new$/
+new perl-src/htlmify-cystic 163
+new_tag perl-src/htlmify-cystic 18
+newlb c-src/etags.c 2930
+newlinepos c-src/etags.c 2932
+newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/
+next c.c 174
+next c-src/etags.c 203
+next c-src/emacs/src/gmalloc.c 164
+next c-src/emacs/src/gmalloc.c 188
+next c-src/emacs/src/gmalloc.c 198
+next c-src/emacs/src/keyboard.c 861
+next c-src/emacs/src/keyboard.c 7246
+next c-src/emacs/src/lisp.h 700
+next c-src/emacs/src/lisp.h 1848
+next c-src/emacs/src/lisp.h 2192
+next c-src/emacs/src/lisp.h 3028
+next c-src/emacs/src/lisp.h 3134
+next cccp.y 42
+next y-src/cccp.y 42
+next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/
+next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/
+next_alive cp-src/conway.hpp 7
+next_almost_prime c-src/emacs/src/lisp.h /^extern EMACS_INT next_almost_prime (EMACS_INT) ATT/
+next_free c-src/emacs/src/lisp.h 1851
+next_weak c-src/emacs/src/lisp.h 1875
+nextfree c-src/emacs/src/lisp.h 3029
+nfree c-src/emacs/src/gmalloc.c 150
+nl c-src/etags.c 2521
+no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/
+no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
+no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/
+no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
+no.\the\secno.\the\subsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no_argument c-src/getopt.h 89
+no_lang_help c-src/etags.c 707
+no_sub c-src/emacs/src/regex.h 387
+nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/
+node c-src/etags.c 225
+node_st c-src/etags.c 214
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
+nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+none_help c-src/etags.c 703
+normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/
+normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/
+normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
+normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+not_bol c-src/emacs/src/regex.h 391
+not_eol c-src/emacs/src/regex.h 394
+not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/
+notag2 c-src/torture.c 26
+notag2 c-src/dostorture.c 26
+notag4 c-src/torture.c 45
+notag4 c-src/dostorture.c 45
+notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not /
+npending c-src/emacs/src/keyboard.c 7244
+ntool_bar_items c-src/emacs/src/keyboard.c 7974
+numOfChannels cp-src/c.C 1
+num_columns cp-src/conway.cpp 16
+num_input_events c-src/emacs/src/keyboard.c 210
+num_regs c-src/emacs/src/regex.h 430
+num_rows cp-src/conway.cpp 15
+numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
+number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/
+numbervars prol-src/natded.prolog /^numbervars(X):-$/
+nvars c-src/emacs/src/lisp.h 3140
+objdef c-src/etags.c 2484
+object c-src/emacs/src/lisp.h 2128
+object_registry cp-src/clheir.cpp 10
+objtag c-src/etags.c 2453
+objvar c-src/emacs/src/lisp.h 2297
+obstack_chunk_alloc y-src/parse.y 46
+obstack_chunk_alloc parse.y 46
+obstack_chunk_free y-src/parse.y 47
+obstack_chunk_free parse.y 47
+ocatseen c-src/etags.c 2477
+octave_MDiagArray2_h cp-src/MDiagArray2.h 29
+octave_Range_h cp-src/Range.h 24
+oediff make-src/Makefile /^oediff: OTAGS ETAGS ${infiles}$/
+offset c-src/etags.c 2494
+offset c-src/emacs/src/lisp.h 2305
+offset c-src/emacs/src/lisp.h 2365
+oignore c-src/etags.c 2483
+oimplementation c-src/etags.c 2474
+oinbody c-src/etags.c 2478
+ok objc-src/PackInsp.m /^-ok:sender$/
+ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159
+omethodcolon c-src/etags.c 2481
+omethodparm c-src/etags.c 2482
+omethodsign c-src/etags.c 2479
+omethodtag c-src/etags.c 2480
+onone c-src/etags.c 2472
+oparenseen c-src/etags.c 2476
+open objc-src/PackInsp.m /^-open:sender$/
+open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/
+openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/
+operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
+operator cccp.y 438
+operator y-src/cccp.y 438
+operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/
+operator += cp-src/functions.cpp /^Date & Date::operator += ( int days ){$/
+operator - cp-src/c.C /^void operator -(int, int) {}$/
+operator - cp-src/functions.cpp /^int Date::operator - ( Date d ){$/
+operator -- cp-src/functions.cpp /^Date & Date::operator -- ( void ){$/
+operator -= cp-src/functions.cpp /^Date & Date::operator -= ( int days ){$/
+operator < cp-src/functions.cpp /^int Date::operator < ( Date d ) {$/
+operator << cp-src/functions.cpp /^ostream& operator << ( ostream &c, Date d ) {$/
+operator = cp-src/functions.cpp /^Date & Date::operator = ( Date d ){$/
+operator = cp-src/MDiagArray2.h /^ MDiagArray2<T>& operator = (const MDiagArray2<T>/
+operator == cp-src/functions.cpp /^int Date::operator == ( Date d ) {$/
+operator > cp-src/functions.cpp /^int Date::operator > ( Date d ) {$/
+operator >> cp-src/functions.cpp /^istream& operator >> ( istream &i, Date & dd ){$/
+operator MArray2<T> cp-src/MDiagArray2.h /^ operator MArray2<T> () const$/
+operator int cp-src/c.C /^void operator int(int, int) {}$/
+operator int cp-src/fail.C /^ operator int() const {return x;}$/
+operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/
+operator+ cp-src/c.C /^void operator+(int, int) {}$/
+operator+ cp-src/c.C /^ A operator+(A& a) {};$/
+opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprotocol c-src/etags.c 2473
+option c-src/getopt.h 73
+optional_argument c-src/getopt.h 91
+opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/
+ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
+ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
+ord_intersect prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], [Head2|Tail2]) :-$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection([], _, []).$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection([], Set2, [], Set2).$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection(Sets, Intersection) :- $/
+ord_intersection2 prol-src/ordsets.prolog /^ord_intersection2(1, [Set|Sets], Set0, Sets0) :- !/
+ord_intersection3 prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1, Head2, Tail2, Inters/
+ord_intersection4 prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1, Head2, Tail2, Inters/
+ord_member prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/
+ord_seteq prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/
+ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/
+ord_subset prol-src/ordsets.prolog /^ord_subset([], _).$/
+ord_subtract prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/
+ord_symdiff prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/
+ord_union prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/
+ord_union prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = [].$/
+ord_union4 prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2, Tail2, [Head|Unio/
+ord_union_all prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set, Sets) :- !.$/
+oss html-src/softwarelibero.html /^Il movimento open source$/
+otagseen c-src/etags.c 2475
+outputTime cp-src/c.C 9
+output_file perl-src/htlmify-cystic 35
+output_files perl-src/htlmify-cystic 32
+outputtable html-src/algrthms.html /^Output$/
+outsyn prol-src/natded.prolog /^outsyn(['Any'],_).$/
+p c-src/emacs/src/lisp.h 4673
+p c-src/emacs/src/lisp.h 4679
+p/f ada-src/etags-test-for.ada /^ function p pragma Import (C,$/
+p/f ada-src/etags-test-for.ada /^function p ("p");$/
+pD c-src/emacs/src/lisp.h 165
+pD c-src/emacs/src/lisp.h 167
+pD c-src/emacs/src/lisp.h 169
+pD c-src/emacs/src/lisp.h 171
+pI c-src/emacs/src/lisp.h 94
+pI c-src/emacs/src/lisp.h 99
+pI c-src/emacs/src/lisp.h 106
+pMd c-src/emacs/src/lisp.h 150
+pMd c-src/emacs/src/lisp.h 155
+pMu c-src/emacs/src/lisp.h 151
+pMu c-src/emacs/src/lisp.h 156
+p_next c-src/etags.c 258
+pagesize c-src/emacs/src/gmalloc.c 1703
+parent c-src/emacs/src/keyboard.c 8745
+parent c-src/emacs/src/lisp.h 1590
+parse prol-src/natded.prolog /^parse(Ws,Cat):-$/
+parseFromVars php-src/lce_functions.php /^ function parseFromVars($prefix)$/
+parse_c_expression cccp.y /^parse_c_expression (string)$/
+parse_c_expression y-src/cccp.y /^parse_c_expression (string)$/
+parse_cgi prol-src/natded.prolog /^parse_cgi(TokenList,KeyVals):-$/
+parse_error y-src/parse.y 81
+parse_error parse.y 81
+parse_escape cccp.y /^parse_escape (string_ptr)$/
+parse_escape y-src/cccp.y /^parse_escape (string_ptr)$/
+parse_hash y-src/parse.y 63
+parse_hash parse.y 63
+parse_menu_item c-src/emacs/src/keyboard.c /^parse_menu_item (Lisp_Object item, int inmenubar)$/
+parse_modifiers c-src/emacs/src/keyboard.c /^parse_modifiers (Lisp_Object symbol)$/
+parse_modifiers_uncached c-src/emacs/src/keyboard.c /^parse_modifiers_uncached (Lisp_Object symbol, ptrd/
+parse_number cccp.y /^parse_number (olen)$/
+parse_number y-src/cccp.y /^parse_number (olen)$/
+parse_return y-src/parse.y 73
+parse_return parse.y 73
+parse_return_error cccp.y 70
+parse_return_error y-src/cccp.y 70
+parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/
+parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object /
+pat c-src/etags.c 262
+pattern c-src/etags.c 260
+pdlcount c-src/emacs/src/lisp.h 3046
+pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/
+pending_funcalls c-src/emacs/src/keyboard.c 4377
+pending_signals c-src/emacs/src/keyboard.c 80
+pfatal c-src/etags.c /^pfatal (const char *s1)$/
+pfdset c-src/h.h 57
+pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/
+plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/
+plain_C_suffixes c-src/etags.c 643
+plainc c-src/etags.c 2934
+plist c-src/emacs/src/lisp.h 697
+plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year /
+plus go-src/test1.go 5
+plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
+pointer c-src/emacs/src/lisp.h 2125
+poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/
+poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/
+poll_suppress_count c-src/emacs/src/keyboard.c 1908
+poll_suppress_count c-src/emacs/src/lisp.h 3047
+poll_timer c-src/emacs/src/keyboard.c 1915
+pop-tag-mark el-src/emacs/lisp/progmodes/etags.el /^(defalias 'pop-tag-mark 'xref-pop-marker-stack)$/
+pop_kboard c-src/emacs/src/keyboard.c /^pop_kboard (void)$/
+popclass_above c-src/etags.c /^popclass_above (int bracelev)$/
+position_to_Time c-src/emacs/src/keyboard.c /^position_to_Time (ptrdiff_t pos)$/
+posix_memalign c-src/emacs/src/gmalloc.c /^posix_memalign (void **memptr, size_t alignment, s/
+posn-at-point c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_p/
+posn-at-x-y c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, /
+possible_sum_sign cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^ (b))/
+possible_sum_sign y-src/cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^ (b))/
+post pyt-src/server.py /^ def post(self):$/
+post pyt-src/server.py /^ def post(self):$/
+pot_etags_version c-src/etags.c 81
+pp1 c-src/torture.c /^int pp1($/
+pp1 c-src/dostorture.c /^int pp1($/
+pp2 c-src/torture.c /^pp2$/
+pp2 c-src/dostorture.c /^pp2$/
+pp3 c-src/torture.c /^pp3(int bar)$/
+pp3 c-src/dostorture.c /^pp3(int bar)$/
+pp_bas_cat prol-src/natded.prolog /^pp_bas_cat(Cat):-$/
+pp_cat prol-src/natded.prolog /^pp_cat(Syn:Sem):-$/
+pp_exp prol-src/natded.prolog /^pp_exp('NIL'):-$/
+pp_exps prol-src/natded.prolog /^pp_exps([]).$/
+pp_html_fitch_tree prol-src/natded.prolog /^pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,/
+pp_html_table_fitch_tree prol-src/natded.prolog /^pp_html_table_fitch_tree(T):-$/
+pp_html_table_tree prol-src/natded.prolog /^pp_html_table_tree(T):-$/
+pp_html_tree prol-src/natded.prolog /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/
+pp_html_trees prol-src/natded.prolog /^pp_html_trees([T|Ts],N,M):-$/
+pp_lam prol-src/natded.prolog /^pp_lam(Var^Alpha):-$/
+pp_lam_bracket prol-src/natded.prolog /^pp_lam_bracket(A^B):-$/
+pp_lam_paren prol-src/natded.prolog /^pp_lam_paren(Var^Alpha):-$/
+pp_paren prol-src/natded.prolog /^pp_paren(C):-$/
+pp_rule prol-src/natded.prolog /^pp_rule(fe):-write('\/E').$/
+pp_syn prol-src/natded.prolog /^pp_syn(A\/B):-$/
+pp_syn_back prol-src/natded.prolog /^pp_syn_back(A\/B):-$/
+pp_syn_paren prol-src/natded.prolog /^pp_syn_paren(A\/B):-$/
+pp_tree prol-src/natded.prolog /^pp_tree(T):-$/
+pp_trees prol-src/natded.prolog /^pp_trees([T|Ts],Column):-$/
+pp_word prol-src/natded.prolog /^pp_word(W):-$/
+pp_word_list prol-src/natded.prolog /^pp_word_list([]).$/
+pp_word_list_rest prol-src/natded.prolog /^pp_word_list_rest([]).$/
+predicate c-src/emacs/src/lisp.h 2307
+prev c.c 175
+prev c-src/emacs/src/gmalloc.c 165
+prev c-src/emacs/src/gmalloc.c 189
+prev c-src/emacs/src/lisp.h 2191
+printClassification php-src/lce_functions.php /^ function printClassification()$/
+print_help c-src/etags.c /^print_help (argument *argbuffer)$/
+print_language_names c-src/etags.c /^print_language_names (void)$/
+print_version c-src/etags.c /^print_version (void)$/
+printmax_t c-src/emacs/src/lisp.h 148
+printmax_t c-src/emacs/src/lisp.h 153
+proc c-src/h.h 87
+process_file c-src/etags.c /^process_file (FILE *fh, char *fn, language *lang)$/
+process_file_name c-src/etags.c /^process_file_name (char *file, language *lang)$/
+process_pending_signals c-src/emacs/src/keyboard.c /^process_pending_signals (void)$/
+process_special_events c-src/emacs/src/keyboard.c /^process_special_events (void)$/
+process_tool_bar_item c-src/emacs/src/keyboard.c /^process_tool_bar_item (Lisp_Object key, Lisp_Objec/
+prof make-src/Makefile /^prof: ETAGS$/
+prolog_atom c-src/etags.c /^prolog_atom (char *s, size_t pos)$/
+prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/
+prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/
+prop c-src/etags.c 209
+protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/
+pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/
+pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/
+purpose c-src/emacs/src/lisp.h 1594
+push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/
+pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/
+put_entries c-src/etags.c /^put_entries (register node *np)$/
+pvec_type c-src/emacs/src/lisp.h 780
+quantizing html-src/algrthms.html /^Quantizing the Received$/
+questo ../c/c.web 34
+quiettest make-src/Makefile /^quiettest:$/
+quit_char c-src/emacs/src/keyboard.c 192
+quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/
+qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/
+qux1 ruby-src/test1.ru /^ :qux1)$/
+qux= ruby-src/test1.ru /^ def qux=(tee)$/
+r0 c-src/sysdep.h 54
+r1 c-src/sysdep.h 55
+r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/
+range_exp y-src/parse.y 268
+range_exp_list y-src/parse.y 272
+raw_keybuf c-src/emacs/src/keyboard.c 116
+raw_keybuf_count c-src/emacs/src/keyboard.c 117
+rbtp c.c 240
+re_iswctype c-src/emacs/src/regex.h 602
+re_nsub c-src/emacs/src/regex.h 364
+re_pattern_buffer c-src/emacs/src/regex.h 335
+re_pattern_buffer c-src/h.h 119
+re_registers c-src/emacs/src/regex.h 428
+re_wchar_t c-src/emacs/src/regex.h 600
+re_wchar_t c-src/emacs/src/regex.h 623
+re_wctype c-src/emacs/src/regex.h 601
+re_wctype_t c-src/emacs/src/regex.h 599
+re_wctype_t c-src/emacs/src/regex.h 618
+re_wctype_to_bit c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 0$/
+read cp-src/conway.hpp /^ char read() { return alive; }$/
+read php-src/lce_functions.php /^ function read()$/
+read-key-sequence c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence", Fread_key_sequence, Sr/
+read-key-sequence-vector c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence-vector", Fread_key_seque/
+read1 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/
+read2 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/
+read_char c-src/emacs/src/keyboard.c /^read_char (int commandflag, Lisp_Object map,$/
+read_char_help_form_unwind c-src/emacs/src/keyboard.c /^read_char_help_form_unwind (void)$/
+read_char_minibuf_menu_prompt c-src/emacs/src/keyboard.c /^read_char_minibuf_menu_prompt (int commandflag,$/
+read_char_x_menu_prompt c-src/emacs/src/keyboard.c /^read_char_x_menu_prompt (Lisp_Object map,$/
+read_decoded_event_from_main_queue c-src/emacs/src/keyboard.c /^read_decoded_event_from_main_queue (struct timespe/
+read_event_from_main_queue c-src/emacs/src/keyboard.c /^read_event_from_main_queue (struct timespec *end_t/
+read_key_sequence c-src/emacs/src/keyboard.c /^read_key_sequence (Lisp_Object *keybuf, int bufsiz/
+read_key_sequence_cmd c-src/emacs/src/keyboard.c 232
+read_key_sequence_remapped c-src/emacs/src/keyboard.c 233
+read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Object prompt, Lisp_Obj/
+read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/
++read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
+readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/
+readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/
+readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE /
+realloc c-src/emacs/src/gmalloc.c 65
+realloc c-src/emacs/src/gmalloc.c 69
+realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/
+realloc c-src/emacs/src/gmalloc.c 1716
+reallochook c-src/emacs/src/gmalloc.c /^reallochook (void *ptr, size_t size)$/
+recent-keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys", Frecent_keys, Srecent_keys, /
+recent_keys c-src/emacs/src/keyboard.c 100
+recent_keys_index c-src/emacs/src/keyboard.c 94
+record_asynch_buffer_change c-src/emacs/src/keyboard.c /^record_asynch_buffer_change (void)$/
+record_auto_save c-src/emacs/src/keyboard.c /^record_auto_save (void)$/
+record_char c-src/emacs/src/keyboard.c /^record_char (Lisp_Object c)$/
+record_menu_key c-src/emacs/src/keyboard.c /^record_menu_key (Lisp_Object c)$/
+record_single_kboard_state c-src/emacs/src/keyboard.c /^record_single_kboard_state ()$/
+record_xmalloc c-src/emacs/src/lisp.h /^extern void *record_xmalloc (size_t) ATTRIBUTE_ALL/
+recover_top_level_message c-src/emacs/src/keyboard.c 138
+recursion-depth c-src/emacs/src/keyboard.c /^DEFUN ("recursion-depth", Frecursion_depth, Srecur/
+recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit", Frecursive_edit, Srecursi/
+recursive_edit_1 c-src/emacs/src/keyboard.c /^recursive_edit_1 (void)$/
+recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_Object buffer)$/
+reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/
+reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/
+refreshPort pyt-src/server.py /^ def refreshPort(self):$/
+reg_errcode_t c.c 279
+reg_errcode_t c-src/emacs/src/regex.h 323
+reg_syntax_t c-src/emacs/src/regex.h 43
+regex c-src/etags.c 219
+regex.o make-src/Makefile /^regex.o: emacs\/src\/regex.c$/
+regex_t c-src/emacs/src/regex.h 416
+regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/
+regexfile make-src/Makefile /^regexfile: Makefile$/
+regexp c-src/etags.c 256
+regexp c-src/etags.c 268
+registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/
+register_heapinfo c-src/emacs/src/gmalloc.c /^register_heapinfo (void)$/
+regmatch_t c-src/emacs/src/regex.h 451
+regoff_t c-src/emacs/src/regex.h 423
+regs c-src/etags.c 263
+regs cp-src/screen.cpp 16
+regs_allocated c-src/emacs/src/regex.h 379
+regset c-src/h.h 31
+regular_top_level_message c-src/emacs/src/keyboard.c 143
+rehash_size c-src/emacs/src/lisp.h 1835
+rehash_threshold c-src/emacs/src/lisp.h 1839
+relative_filename c-src/etags.c /^relative_filename (char *file, char *dir)$/
+release distrib make-src/Makefile /^release distrib: web$/
+removeexp prol-src/natded.prolog /^removeexp(E,E,'NIL'):-!.$/
+reorder_modifiers c-src/emacs/src/keyboard.c /^reorder_modifiers (Lisp_Object symbol)$/
+request c.c /^request request (a, b)$/
+requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p (void)$/
+required_argument c-src/getopt.h 90
+reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/
+restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/
+restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/
+return_to_command_loop c-src/emacs/src/keyboard.c 135
+reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/
+revert objc-src/PackInsp.m /^-revert:sender$/
+right c-src/etags.c 216
+right_shift cccp.y /^right_shift (a, b)$/
+right_shift y-src/cccp.y /^right_shift (a, b)$/
+ring1 c.c 241
+ring2 c.c 242
+rm_eo c-src/emacs/src/regex.h 450
+rm_so c-src/emacs/src/regex.h 449
+rng_base cp-src/Range.h 79
+rng_inc cp-src/Range.h 81
+rng_limit cp-src/Range.h 80
+rng_nelem cp-src/Range.h 83
+rosso cp-src/c.C 40
+rsyncfromfly make-src/Makefile /^rsyncfromfly:$/
+rsynctofly make-src/Makefile /^rsynctofly:$/
+rtint c-src/h.h 60
+rtint c-src/h.h 68
+rtstr c-src/h.h 61
+rtstr c-src/h.h 69
+rtunion_def c-src/h.h 58
+rtunion_def c-src/h.h 64
+rtx c-src/h.h 62
+rtxnp c-src/h.h 71
+rtxp c-src/h.h 70
+s c-src/emacs/src/lisp.h 4672
+s c-src/emacs/src/lisp.h 4678
+s1 cp-src/c.C 32
+s2 cp-src/c.C 35
+safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Objec/
+safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/
+safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/
+safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/
+save pyt-src/server.py /^ def save(self):$/
+save pyt-src/server.py /^ def save(self):$/
+save pyt-src/server.py /^ def save(self):$/
+save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/
+save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/
+savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
+savestr c-src/etags.c /^savestr (const char *cp)$/
+say go-src/test.go /^func say(msg string) {$/
+scan_separators c-src/etags.c /^scan_separators (char *name)$/
+scolonseen c-src/etags.c 2447
+scratch c-src/sysdep.h 56
+scroll_bar_parts c-src/emacs/src/keyboard.c 5189
+sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+section perl-src/htlmify-cystic 25
+section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
++section_href perl-src/htlmify-cystic /^sub section_href ($)$/
+section_name perl-src/htlmify-cystic 12
++section_name perl-src/htlmify-cystic /^sub section_name ($)$/
+section_toc perl-src/htlmify-cystic 15
++section_url perl-src/htlmify-cystic /^sub section_url ()$/
++section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
++section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/
+select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/
+select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/
+select-tags-table-mode-map el-src/emacs/lisp/progmodes/etags.el /^(defvar select-tags-table-mode-map ; Doc string?$/
+select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-quit ()$/
+select-tags-table-select el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-select (button)$/
+select_last prol-src/natded.prolog /^select_last([X],X,[]).$/
+send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/
+send objc-src/Subprocess.m /^- send:(const char *)string$/
+separator_names c-src/emacs/src/keyboard.c 7372
+serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
+serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
+set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/
+set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/
+set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/
+set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/
+set-output-flow-control c-src/emacs/src/keyboard.c /^DEFUN ("set-output-flow-control", Fset_output_flow/
+set-quit-char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_/
+setDate cp-src/functions.cpp /^void Date::setDate ( int d , int m , int y ){$/
+setDelegate objc-src/Subprocess.m /^- setDelegate:anObject$/
+setRevertButtonTitle objc-src/PackInsp.m /^-setRevertButtonTitle$/
+set_base cp-src/Range.h /^ void set_base (double b) { rng_base = b; }$/
+set_char_table_contents c-src/emacs/src/lisp.h /^set_char_table_contents (Lisp_Object table, ptrdif/
+set_char_table_defalt c-src/emacs/src/lisp.h /^set_char_table_defalt (Lisp_Object table, Lisp_Obj/
+set_char_table_extras c-src/emacs/src/lisp.h /^set_char_table_extras (Lisp_Object table, ptrdiff_/
+set_char_table_purpose c-src/emacs/src/lisp.h /^set_char_table_purpose (Lisp_Object table, Lisp_Ob/
+set_hash_key_slot c-src/emacs/src/lisp.h /^set_hash_key_slot (struct Lisp_Hash_Table *h, ptrd/
+set_hash_value_slot c-src/emacs/src/lisp.h /^set_hash_value_slot (struct Lisp_Hash_Table *h, pt/
+set_inc cp-src/Range.h /^ void set_inc (double i) { rng_inc = i; }$/
+set_limit cp-src/Range.h /^ void set_limit (double l) { rng_limit = l; }$/
+set_overlay_plist c-src/emacs/src/lisp.h /^set_overlay_plist (Lisp_Object overlay, Lisp_Objec/
+set_poll_suppress_count c-src/emacs/src/keyboard.c /^set_poll_suppress_count (int count)$/
+set_prop c-src/emacs/src/keyboard.c /^set_prop (ptrdiff_t idx, Lisp_Object val)$/
+set_save_integer c-src/emacs/src/lisp.h /^set_save_integer (Lisp_Object obj, int n, ptrdiff_/
+set_save_pointer c-src/emacs/src/lisp.h /^set_save_pointer (Lisp_Object obj, int n, void *va/
+set_string_intervals c-src/emacs/src/lisp.h /^set_string_intervals (Lisp_Object s, INTERVAL i)$/
+set_sub_char_table_contents c-src/emacs/src/lisp.h /^set_sub_char_table_contents (Lisp_Object table, pt/
+set_symbol_function c-src/emacs/src/lisp.h /^set_symbol_function (Lisp_Object sym, Lisp_Object /
+set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struct Lisp_Symb/
+set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/
+set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/
+setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+setup cp-src/c.C 5
+shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/
+shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/
+should_see_this_array_type cp-src/c.C 156
+should_see_this_function_pointer cp-src/c.C 153
+should_see_this_one_enclosed_in_extern_C cp-src/c.C 149
+show erl-src/gs_dialog.erl /^show(Module, Title, Message, Args) ->$/
+showError objc-src/Subprocess.m /^showError (const char *errorString, id theDelegate/
+showInfo objc-src/PackInsp.m /^-showInfo:sender$/
+show_help_echo c-src/emacs/src/keyboard.c /^show_help_echo (Lisp_Object help, Lisp_Object wind/
+sig c-src/emacs/src/keyboard.c 7238
+signal_handler c-src/h.h 82
+signal_handler1 c-src/h.h 83
+signal_handler_t c-src/h.h 94
+simulation html-src/software.html /^Software that I wrote for supporting my research a/
+single_kboard c-src/emacs/src/keyboard.c 89
+single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/
+site cp-src/conway.hpp 5
+site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/
+size c-src/etags.c 236
+size c-src/etags.c 2522
+size c-src/emacs/src/gmalloc.c 156
+size c-src/emacs/src/gmalloc.c 163
+size c-src/emacs/src/gmalloc.c 1862
+size c-src/emacs/src/lisp.h 1364
+size c-src/emacs/src/lisp.h 1390
+skeyseen c-src/etags.c 2445
+skip_name c-src/etags.c /^skip_name (char *cp)$/
+skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/
+skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/
+snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-function nil$/
+snone c-src/etags.c 2443
+some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/
+space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/
+space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+specbind_tag c-src/emacs/src/lisp.h 2943
+specbinding c-src/emacs/src/lisp.h 2955
+specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/
+splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/
+srclist make-src/Makefile /^srclist: Makefile$/
+ss3 c.c 255
+sss1 c.c 252
+sss2 c.c 253
+sstab prol-src/natded.prolog /^sstab(2,'C',',').$/
+st_C_attribute c-src/etags.c 2209
+st_C_class c-src/etags.c 2212
+st_C_define c-src/etags.c 2213
+st_C_enum c-src/etags.c 2213
+st_C_extern c-src/etags.c 2213
+st_C_gnumacro c-src/etags.c 2208
+st_C_ignore c-src/etags.c 2209
+st_C_javastruct c-src/etags.c 2210
+st_C_objend c-src/etags.c 2207
+st_C_objimpl c-src/etags.c 2207
+st_C_objprot c-src/etags.c 2207
+st_C_operator c-src/etags.c 2211
+st_C_struct c-src/etags.c 2213
+st_C_template c-src/etags.c 2212
+st_C_typedef c-src/etags.c 2213
+st_none c-src/etags.c 2206
+stack c.c 155
+stagseen c-src/etags.c 2446
+standalone make-src/Makefile /^standalone:$/
+start c-src/emacs/src/regex.h 431
+start c-src/emacs/src/keyboard.c 8753
+start php-src/lce_functions.php /^ function start($line, $class)$/
+start y-src/cccp.y 143
+start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/
+start_up prol-src/natded.prolog /^start_up:-$/
+state_protected_p c-src/emacs/src/gmalloc.c 400
+statetable html-src/algrthms.html /^Next$/
+staticetags make-src/Makefile /^staticetags:$/
+step cp-src/conway.hpp /^ void step(void) { alive = next_alive; }$/
+step cp-src/clheir.hpp /^ virtual void step(void) { }$/
+step_everybody cp-src/clheir.cpp /^void step_everybody(void)$/
+stop_polling c-src/emacs/src/keyboard.c /^stop_polling (void)$/
+store_user_signal_events c-src/emacs/src/keyboard.c /^store_user_signal_events (void)$/
+str go-src/test1.go 9
+strcaseeq c-src/etags.c /^#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=/
+streq c-src/etags.c /^#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL/
+string_intervals c-src/emacs/src/lisp.h /^string_intervals (Lisp_Object s)$/
+stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/
+stripname pas-src/common.pas /^function stripname; (* ($/
+strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/
+strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+structdef c-src/etags.c 2448
+stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/
+subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/
+subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/
+subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+subsection perl-src/htlmify-cystic 26
+subsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+subsection_marker perl-src/htlmify-cystic 161
+subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/
+substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/
+subsubsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+subsubsection perl-src/htlmify-cystic 27
+subsubsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/
+subtree prol-src/natded.prolog /^subtree(T,T).$/
+suffix c-src/etags.c 186
+suffixes c-src/etags.c 195
+suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help (void)$/
+suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/
+sval cccp.y 117
+sval y-src/cccp.y 116
+swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/
+switch_line_buffers c-src/etags.c /^#define switch_line_buffers() (curndx = 1 - curndx/
+sxhash_combine c-src/emacs/src/lisp.h /^sxhash_combine (EMACS_UINT x, EMACS_UINT y)$/
+sym_type c-src/etags.c 2204
+symbol_interned c-src/emacs/src/lisp.h 639
+symbol_name c-src/emacs/src/lisp.h 1687
+symbol_redirect c-src/emacs/src/lisp.h 646
+syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/
+syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/
+synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/
+synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) /
+syntax c-src/emacs/src/regex.h 350
+sys_jmp_buf c-src/emacs/src/lisp.h 2906
+sys_jmp_buf c-src/emacs/src/lisp.h 2910
+sys_jmp_buf c-src/emacs/src/lisp.h 2916
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) _longjmp (j, v)$/
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) siglongjmp (j, v)$/
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) longjmp (j, v)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) _setjmp (j)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/
+syscall_error c-src/sysdep.h 34
+t cp-src/c.C 52
+t1 cp-src/c.C 34
+t2 cp-src/c.C 38
+tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/
+tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/
+tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/
+tab_free c-src/tab.c /^void tab_free(char **tab)$/
+tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/
+tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/
+tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/
+tag-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-file-name-match-p (tag)$/
+tag-find-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag (file) ; Doc string?$/
+tag-find-file-of-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag-noselect (file)$/
+tag-implicit-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-implicit-name-match-p (tag)$/
+tag-lines-already-matched el-src/emacs/lisp/progmodes/etags.el /^(defvar tag-lines-already-matched nil$/
+tag-partial-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-partial-file-name-match-p (_tag)$/
+tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p (re)$/
+tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/
+tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/
+tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/
+tag1 c-src/dostorture.c /^(*tag1 (sig, handler)) ()$/
+tag1 c-src/h.h 110
+tag2 c-src/torture.c /^(*tag2 (sig, handler)) ()$/
+tag2 c-src/dostorture.c /^(*tag2 (sig, handler)) ()$/
+tag3 c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag3 c-src/dostorture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag4 c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag4 c-src/dostorture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag5 c-src/torture.c /^tag5 (handler, arg)$/
+tag5 c-src/dostorture.c /^tag5 (handler, arg)$/
+tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag6 c-src/dostorture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag_or_ch c-src/emacs/src/lisp.h 3026
+taggedfname c-src/etags.c 207
+tags make-src/Makefile /^tags: TAGS$/
+tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-add-tables 'ask-user$/
+tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun tags-apropos (regexp)$/
+tags-apropos-additional-actions el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-additional-actions nil$/
+tags-apropos-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-apropos-function nil$/
+tags-apropos-verbose el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-verbose nil$/
+tags-case-fold-search el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-case-fold-search 'default$/
+tags-complete-tags-table-file el-src/emacs/lisp/progmodes/etags.el /^(defun tags-complete-tags-table-file (string predi/
+tags-completion-at-point-function el-src/emacs/lisp/progmodes/etags.el /^(defun tags-completion-at-point-function ()$/
+tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-completion-table nil$/
+tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-completion-table ()$/
+tags-completion-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-completion-table-function nil$/
+tags-compression-info-list el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-compression-info-list$/
+tags-expand-table-name el-src/emacs/lisp/progmodes/etags.el /^(defun tags-expand-table-name (file)$/
+tags-file-name el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-file-name nil$/
+tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-included-tables nil$/
+tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun tags-included-tables ()$/
+tags-included-tables-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-included-tables-function nil$/
+tags-lazy-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-lazy-completion-table ()$/
+tags-location-ring el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-location-ring (make-ring xref-marker-/
+tags-loop-continue el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-continue (&optional first-time)$/
+tags-loop-eval el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-eval (form)$/
+tags-loop-operate el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-operate nil$/
+tags-loop-revert-buffers el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-loop-revert-buffers nil$/
+tags-loop-scan el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-scan$/
+tags-next-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-next-table ()$/
+tags-query-replace el-src/emacs/lisp/progmodes/etags.el /^(defun tags-query-replace (from to &optional delim/
+tags-recognize-empty-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-recognize-empty-tags-table ()$/
+tags-reset-tags-tables el-src/emacs/lisp/progmodes/etags.el /^(defun tags-reset-tags-tables ()$/
+tags-revert-without-query el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-revert-without-query nil$/
+tags-search el-src/emacs/lisp/progmodes/etags.el /^(defun tags-search (regexp &optional file-list-for/
+tags-select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(define-button-type 'tags-select-tags-table$/
+tags-table-check-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-check-computed-list ()$/
+tags-table-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-computed-list nil$/
+tags-table-computed-list-for el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-computed-list-for nil$/
+tags-table-extend-computed-list el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-extend-computed-list ()$/
+tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-files nil$/
+tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-files ()$/
+tags-table-files-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-files-function nil$/
+tags-table-format-functions el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-format-functions '(etags-recogn/
+tags-table-including el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-including (this-file core-only)$/
+tags-table-list el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-table-list nil$/
+tags-table-list-member el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-list-member (file list)$/
+tags-table-list-pointer el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-list-pointer nil$/
+tags-table-list-started-at el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-list-started-at nil$/
+tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(defun tags-table-mode ()$/
+tags-table-set-list el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-set-list nil$/
+tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'default$/
+tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/
+tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/
+target_multibyte c-src/emacs/src/regex.h 407
+tcpdump html-src/software.html /^tcpdump$/
+teats cp-src/c.C 127
+tee ruby-src/test1.ru /^ attr_accessor :tee$/
+tee= ruby-src/test1.ru /^ attr_accessor :tee$/
+temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame /
+tend c-src/etags.c 2432
+terminate objc-src/Subprocess.m /^- terminate:sender$/
+terminateInput objc-src/Subprocess.m /^- terminateInput$/
+test c-src/emacs/src/lisp.h 1871
+test cp-src/c.C 86
+test erl-src/gs_dialog.erl /^test() ->$/
+test go-src/test1.go /^func test(p plus) {$/
+test make-src/Makefile /^test:$/
+test php-src/ptest.php /^test $/
+test.me22b lua-src/test.lua /^ local function test.me22b (one)$/
+test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/
+test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/
+texttreelist prol-src/natded.prolog /^texttreelist([]).$/
+this c-src/a/b/b.c 1
+this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/
+this-command-keys-vector c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys-vector", Fthis_command_k/
+this-single-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-keys", Fthis_single_co/
+this-single-command-raw-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-raw-keys", Fthis_singl/
+this_command_key_count c-src/emacs/src/keyboard.c 108
+this_command_key_count_reset c-src/emacs/src/keyboard.c 112
+this_command_keys c-src/emacs/src/keyboard.c 107
+this_file_toc perl-src/htlmify-cystic 29
+this_single_command_key_start c-src/emacs/src/keyboard.c 125
+tignore c-src/etags.c 2433
+timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/
+timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/
+timer_idleness_start_time c-src/emacs/src/keyboard.c 335
+timer_last_idleness_start_time c-src/emacs/src/keyboard.c 340
+timer_resume_idle c-src/emacs/src/keyboard.c /^timer_resume_idle (void)$/
+timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/
+timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/
+timers_run c-src/emacs/src/keyboard.c 320
+tinbody c-src/etags.c 2431
+tkeyseen c-src/etags.c 2429
+tnone c-src/etags.c 2428
++toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+toggleDescription objc-src/PackInsp.m /^-toggleDescription$/
+tok c-src/etags.c 2491
+token c-src/etags.c 2508
+token cccp.y 437
+token cccp.y 439
+token y-src/cccp.y 437
+token y-src/cccp.y 439
+tokenize prol-src/natded.prolog /^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % spe/
+tokenizeatom prol-src/natded.prolog /^tokenizeatom(Atom,Ws):-$/
+tokentab2 cccp.y 442
+tokentab2 y-src/cccp.y 442
+tool_bar_item_properties c-src/emacs/src/keyboard.c 7970
+tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/
+tool_bar_items_vector c-src/emacs/src/keyboard.c 7965
+toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/
+top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, /
+top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/
+top_level_2 c-src/emacs/src/keyboard.c /^top_level_2 (void)$/
+total_keys c-src/emacs/src/keyboard.c 97
+total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/
+total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/
+totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/
+tpcmd c-src/h.h 8
+tpcmd c-src/h.h 15
+track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/
+tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/
+traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/
+translate c-src/emacs/src/regex.h 361
+treats cp-src/c.C 131
+tt prol-src/natded.prolog /^tt:-$/
+tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/
+ttypeseen c-src/etags.c 2430
+typdef c-src/etags.c 2434
+type c-src/etags.c 2271
+type c-src/emacs/src/gmalloc.c 145
+type c-src/emacs/src/lisp.h 2276
+type c-src/emacs/src/lisp.h 2286
+type c-src/emacs/src/lisp.h 2296
+type c-src/emacs/src/lisp.h 2304
+type c-src/emacs/src/lisp.h 2364
+type c-src/emacs/src/lisp.h 3025
+typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/
+typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/
+typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/
+typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/
+u c-src/emacs/src/lisp.h 2397
+u_any c-src/emacs/src/lisp.h 2214
+u_boolfwd c-src/emacs/src/lisp.h 2371
+u_buffer_objfwd c-src/emacs/src/lisp.h 2373
+u_finalizer c-src/emacs/src/lisp.h 2219
+u_free c-src/emacs/src/lisp.h 2215
+u_intfwd c-src/emacs/src/lisp.h 2370
+u_kboard_objfwd c-src/emacs/src/lisp.h 2374
+u_marker c-src/emacs/src/lisp.h 2216
+u_objfwd c-src/emacs/src/lisp.h 2372
+u_overlay c-src/emacs/src/lisp.h 2217
+u_save_value c-src/emacs/src/lisp.h 2218
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
+unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/
+unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/
+unchar c-src/h.h 99
+unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/
+unread_switch_frame c-src/emacs/src/keyboard.c 204
+unsignedp cccp.y 113
+unsignedp y-src/cccp.y 112
+uprintmax_t c-src/emacs/src/lisp.h 149
+uprintmax_t c-src/emacs/src/lisp.h 154
++usage perl-src/yagrip.pl /^sub usage {$/
+usecharno c-src/etags.c 210
+used c-src/emacs/src/regex.h 347
+used_syntax c-src/emacs/src/regex.h 398
+user_cmp_function c-src/emacs/src/lisp.h 1814
+user_error c-src/emacs/src/keyboard.c /^user_error (const char *msg)$/
+user_hash_function c-src/emacs/src/lisp.h 1811
+user_signal_info c-src/emacs/src/keyboard.c 7235
+user_signals c-src/emacs/src/keyboard.c 7250
+usfreelock_ptr/t ada-src/etags-test-for.ada /^ type usfreelock_ptr is access$/
+val c-src/getopt.h 84
+val c-src/emacs/src/lisp.h 691
+val c-src/emacs/src/lisp.h 3027
+val prol-src/natded.prolog /^val(X) --> ['['], valseq(X), [']'].$/
+valcell c-src/emacs/src/lisp.h 2357
+valid c-src/etags.c 220
+valid c-src/etags.c 2502
+validate php-src/lce_functions.php /^ function validate($value)$/
+validate php-src/lce_functions.php /^ function validate($value)$/
+valloc c-src/emacs/src/gmalloc.c /^valloc (size_t size)$/
+valseq prol-src/natded.prolog /^valseq([Val|Vals]) --> val(Val), plusvalseq(Vals)./
+value c-src/emacs/src/lisp.h 687
+value cccp.y 113
+value y-src/cccp.y 112
+var c-src/emacs/src/keyboard.c 11023
+var c-src/emacs/src/lisp.h 3137
+varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
+vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/
+vectorlike_header c-src/emacs/src/lisp.h 1343
+verde cp-src/c.C 40
+verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/
+verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/
+vignore c-src/etags.c 2417
+visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/
+visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/
+void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/
+voidfuncptr c-src/emacs/src/lisp.h 2108
+voidval cccp.y 116
+voidval y-src/cccp.y 115
+wait_status_ptr_t c.c 161
+waiting_for_input c-src/emacs/src/keyboard.c 150
+warning cccp.y /^warning (msg)$/
+warning y-src/cccp.y /^warning (msg)$/
+weak c-src/emacs/src/lisp.h 1830
+weak_alias c-src/emacs/src/gmalloc.c /^weak_alias (free, cfree)$/
+web ftp publish make-src/Makefile /^web ftp publish:$/
+what c-src/etags.c 252
+wheel_syms c-src/emacs/src/keyboard.c 4628
+where c-src/emacs/src/lisp.h 2348
+where cp-src/clheir.hpp 77
+where_in_registry cp-src/clheir.hpp 15
+windowWillClose objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/
+wipe_kboard c-src/emacs/src/keyboard.c /^wipe_kboard (KBOARD *kb)$/
+womboid c-src/h.h 63
+womboid c-src/h.h 75
+word_size c-src/emacs/src/lisp.h 1473
+write php-src/lce_functions.php /^ function write()$/
+write php-src/lce_functions.php /^ function write($save="yes")$/
+write1= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/
+write2= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/
+write_abbrev c-src/abbrev.c /^write_abbrev (sym, stream)$/
+write_classname c-src/etags.c /^write_classname (linebuffer *cn, const char *quali/
+write_lex prol-src/natded.prolog /^write_lex(File):-$/
+write_lex_cat prol-src/natded.prolog /^write_lex_cat(File):-$/
+write_xyc cp-src/screen.cpp /^void write_xyc(int x, int y, char c)$/
+writebreak prol-src/natded.prolog /^writebreak([]).$/
+writebreaklex prol-src/natded.prolog /^writebreaklex([]).$/
+writecat prol-src/natded.prolog /^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/
+writelist prol-src/natded.prolog /^writelist([der(Ws)|Ws2]):-$/
+writelistsubs prol-src/natded.prolog /^writelistsubs([],X):-$/
+writenamestring pas-src/common.pas /^procedure writenamestring;(*($/
+writesubs prol-src/natded.prolog /^writesubs([]).$/
+writesups prol-src/natded.prolog /^writesups([]).$/
+written c-src/etags.c 211
+x c.c 153
+x c.c 179
+x c.c 188
+x c.c 189
+x cp-src/c.C 53
+x cp-src/c.C 80
+x cp-src/conway.hpp 7
+x cp-src/clheir.hpp 49
+x cp-src/clheir.hpp 58
+x cp-src/fail.C 10
+x cp-src/fail.C 44
+x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/
+x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/
+x-get-selection-internal c.c /^ Fx_get_selection_internal, Sx_get_selection/
+xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/
+xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/
+xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/
+xmalloc c-src/etags.c /^xmalloc (size_t size)$/
+xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) /
+xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/
+xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/
+xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/
+xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/
+xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/
+xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
+xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/
+xyz ruby-src/test1.ru /^ alias_method :xyz,$/
+y cp-src/conway.hpp 7
+y cp-src/clheir.hpp 49
+y cp-src/clheir.hpp 58
+y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/
+yyalloc /usr/share/bison/bison.simple 83
+yyalloc /usr/share/bison/bison.simple 84
+yycheck parse.y 330
+yycheck cccp.y 301
+yyclearin /usr/share/bison/bison.simple 149
+yyclearin /usr/share/bison/bison.simple 150
+yydebug /usr/share/bison/bison.simple 237
+yydebug /usr/share/bison/bison.simple 238
+yydefact parse.y 219
+yydefact cccp.y 239
+yydefgoto parse.y 237
+yydefgoto cccp.y 251
+yyerrhandle /usr/share/bison/bison.simple 848
+yyerrhandle /usr/share/bison/bison.simple 848
+yyerrlab1 /usr/share/bison/bison.simple 823
+yyerrlab1 /usr/share/bison/bison.simple 823
+yyerrok /usr/share/bison/bison.simple 148
+yyerrok /usr/share/bison/bison.simple 149
+yyerror cccp.y /^yyerror (s)$/
+yyerror y-src/cccp.y /^yyerror (s)$/
+yyerrstatus /usr/share/bison/bison.simple 846
+yyerrstatus /usr/share/bison/bison.simple 846
+yylex cccp.y /^yylex ()$/
+yylex y-src/cccp.y /^yylex ()$/
+yyls /usr/share/bison/bison.simple 88
+yyls /usr/share/bison/bison.simple 89
+yylsp /usr/share/bison/bison.simple 748
+yylsp /usr/share/bison/bison.simple 921
+yylsp /usr/share/bison/bison.simple 748
+yylsp /usr/share/bison/bison.simple 921
+yymemcpy /usr/share/bison/bison.simple 264
+yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/
+yymemcpy /usr/share/bison/bison.simple 265
+yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/
+yyn /usr/share/bison/bison.simple 755
+yyn /usr/share/bison/bison.simple 861
+yyn /usr/share/bison/bison.simple 895
+yyn /usr/share/bison/bison.simple 903
+yyn /usr/share/bison/bison.simple 755
+yyn /usr/share/bison/bison.simple 861
+yyn /usr/share/bison/bison.simple 895
+yyn /usr/share/bison/bison.simple 903
+yynewstate /usr/share/bison/bison.simple 763
+yynewstate /usr/share/bison/bison.simple 925
+yynewstate /usr/share/bison/bison.simple 763
+yynewstate /usr/share/bison/bison.simple 925
+yypact parse.y 242
+yypact cccp.y 256
+yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/
+yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/
+yypgoto parse.y 260
+yypgoto cccp.y 268
+yyprhs parse.y 134
+yyprhs cccp.y 167
+yyr1 parse.y 197
+yyr1 cccp.y 219
+yyr2 parse.y 207
+yyr2 cccp.y 228
+yyresult /usr/share/bison/bison.simple 932
+yyresult /usr/share/bison/bison.simple 939
+yyresult /usr/share/bison/bison.simple 947
+yyresult /usr/share/bison/bison.simple 932
+yyresult /usr/share/bison/bison.simple 939
+yyresult /usr/share/bison/bison.simple 947
+yyreturn /usr/share/bison/bison.simple 933
+yyreturn /usr/share/bison/bison.simple 940
+yyreturn /usr/share/bison/bison.simple 933
+yyreturn /usr/share/bison/bison.simple 940
+yyrhs parse.y 142
+yyrhs cccp.y 174
+yyrline parse.y 171
+yyrline cccp.y 195
+yyss /usr/share/bison/bison.simple 85
+yyss /usr/share/bison/bison.simple 86
+yystate /usr/share/bison/bison.simple 757
+yystate /usr/share/bison/bison.simple 761
+yystate /usr/share/bison/bison.simple 875
+yystate /usr/share/bison/bison.simple 924
+yystate /usr/share/bison/bison.simple 757
+yystate /usr/share/bison/bison.simple 761
+yystate /usr/share/bison/bison.simple 875
+yystate /usr/share/bison/bison.simple 924
+yystpcpy /usr/share/bison/bison.simple 316
+yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/
+yystpcpy /usr/share/bison/bison.simple 317
+yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/
+yystrlen /usr/share/bison/bison.simple 293
+yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
+yystrlen /usr/share/bison/bison.simple 294
+yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
+yystype cccp.y 118
+yytable parse.y 269
+yytable cccp.y 277
+yytname parse.y 185
+yytname cccp.y 208
+yytranslate parse.y 101
+yytranslate cccp.y 135
+yyvs /usr/share/bison/bison.simple 86
+yyvs /usr/share/bison/bison.simple 87
+yyvsp /usr/share/bison/bison.simple 746
+yyvsp /usr/share/bison/bison.simple 919
+yyvsp /usr/share/bison/bison.simple 746
+yyvsp /usr/share/bison/bison.simple 919
+z c.c 144
+z c.c 164
+z cp-src/clheir.hpp 49
+z cp-src/clheir.hpp 58
+| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/
+~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/
+~A cp-src/c.C /^A::~A() {}$/
+~B cp-src/c.C /^ ~B() {};$/
+~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/
+~generic_object cp-src/clheir.cpp /^generic_object::~generic_object(void)$/
--- /dev/null
- perl-src/htlmify-cystic,1443
+\f
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 11,0
+ function Body_Required\7fBody_Required/f\ 13,78
+ type Type_Specific_Data \7fType_Specific_Data/t\ 111,280
+ function "abs"\7fabs/f\ 119,504
+ type Barrier_Function_Pointer \7fBarrier_Function_Pointer/t\ 121,577
+ function "="\7f=/f\ 127,722
+ type usfreelock_ptr \7fusfreelock_ptr/t\ 130,803
+ function p \7fp/f\ 133,891
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 137,1054
+function p \7fp/f\ 139,1094
+package Pkg1 \7fPkg1/s\ 144,1203
+ type Private_T \7fPrivate_T/t\ 146,1220
+ package Inner1 \7fInner1/s\ 148,1250
+ procedure Private_T;\7fPrivate_T/p\ 149,1270
+ package Inner2 \7fInner2/s\ 152,1310
+ task Private_T;\7fPrivate_T/k\ 153,1330
+ type Public_T \7fPublic_T/t\ 156,1365
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 162,1450
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 164,1475
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 166,1514
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 168,1553
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 171,1622
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 172,1645
+ task type Task_Type \7fTask_Type/k\ 175,1694
+ type Private_T \7fPrivate_T/t\ 182,1786
+package body Pkg1 \7fPkg1/b\ 189,1882
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 191,1904
+ package body Inner1 \7fInner1/b\ 196,1956
+ procedure Private_T \7fPrivate_T/p\ 197,1981
+ package body Inner2 \7fInner2/b\ 1103,2054
+ task body Private_T \7fPrivate_T/b\ 1104,2079
+ task body Task_Type \7fTask_Type/b\ 1112,2181
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 1126,2367
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 1132,2445
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 1134,2496
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1140,2596
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1146,2663
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1147,2689
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1155,2778
+package Truc \7fTruc/s\ 1162,2887
+package Truc.Bidule \7fTruc.Bidule/s\ 1166,2929
+ protected Bidule \7fBidule/t\ 1168,2953
+ protected type Machin_T \7fMachin_T/t\ 1172,3007
+package body Truc.Bidule \7fTruc.Bidule/b\ 1178,3087
+ protected body Bidule \7fBidule/b\ 1179,3115
+ protected Machin_T \7fMachin_T/t\ 1186,3207
+\f
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives \7fSystem.Task_Primitives/b\ 164,2603
+ package RTE \7fRTE/s\ 169,2712
+ package TSL \7fTSL/s\ 170,2759
+ function To_void_ptr \7fTo_void_ptr/f\ 186,3287
+ function To_TCB_Ptr \7fTo_TCB_Ptr/f\ 189,3366
+ function pthread_mutexattr_setprotocol\7fpthread_mutexattr_setprotocol/f\ 192,3444
+ function pthread_mutexattr_setprio_ceiling\7fpthread_mutexattr_setprio_ceiling/f\ 199,3728
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1115,4302
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1122,4526
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 1131,4830
+ function Self \7fSelf/f\ 1160,5586
+ procedure Initialize_Lock\7fInitialize_Lock/p\ 1174,5958
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1210,6927
+ procedure Write_Lock \7fWrite_Lock/p\ 1226,7338
+ procedure Read_Lock \7fRead_Lock/p\ 1239,7700
+ procedure Unlock \7fUnlock/p\ 1246,7850
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1258,8160
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1286,8979
+ procedure Cond_Wait \7fCond_Wait/p\ 1300,9303
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1312,9661
+ procedure Cond_Signal \7fCond_Signal/p\ 1343,10510
+ procedure Set_Priority\7fSet_Priority/p\ 1355,10836
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1372,11243
+ function Get_Priority \7fGet_Priority/f\ 1385,11598
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1398,12023
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1412,12438
+ function To_Start_Addr \7fTo_Start_Addr/f\ 1426,12873
+ procedure Exit_LL_Task \7fExit_LL_Task/p\ 1491,14995
+ procedure Abort_Task \7fAbort_Task/p\ 1500,15158
+ procedure Test_Abort \7fTest_Abort/p\ 1518,15716
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1527,15878
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1557,16939
+ function Address_To_Call_State \7fAddress_To_Call_State/f\ 1562,17062
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1573,17351
+ procedure LL_Assert \7fLL_Assert/p\ 1599,18146
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1608,18299
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1630,19010
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1635,19129
+ procedure Clear \7fClear/p\ 1640,19236
+ procedure Test_And_Set \7fTest_And_Set/p\ 1645,19330
+ function Is_Set \7fIs_Set/f\ 1659,19676
+\f
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives \7fSystem.Task_Primitives/s\ 158,3169
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 162,3253
+ type Pre_Call_State \7fPre_Call_State/t\ 164,3331
+ type Task_Storage_Size \7fTask_Storage_Size/t\ 166,3378
+ type Machine_Exceptions \7fMachine_Exceptions/t\ 168,3433
+ type Error_Information \7fError_Information/t\ 170,3499
+ type Lock \7fLock/t\ 172,3569
+ type Condition_Variable \7fCondition_Variable/t\ 173,3594
+ type Task_Control_Block \7fTask_Control_Block/t\ 181,3955
+ type TCB_Ptr \7fTCB_Ptr/t\ 189,4241
+ function Address_To_TCB_Ptr \7fAddress_To_TCB_Ptr/f\ 193,4333
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 196,4425
+ function Self \7fSelf/f\ 1100,4602
+ procedure Initialize_Lock \7fInitialize_Lock/p\ 1103,4707
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1107,4879
+ procedure Write_Lock \7fWrite_Lock/p\ 1111,5034
+ procedure Read_Lock \7fRead_Lock/p\ 1118,5428
+ procedure Unlock \7fUnlock/p\ 1128,5995
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1135,6300
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1138,6413
+ procedure Cond_Wait \7fCond_Wait/p\ 1142,6591
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1155,7396
+ procedure Cond_Signal \7fCond_Signal/p\ 1164,7812
+ procedure Set_Priority \7fSet_Priority/p\ 1169,8040
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1173,8200
+ function Get_Priority \7fGet_Priority/f\ 1177,8348
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1181,8504
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1185,8647
+ procedure Exit_LL_Task;\7fExit_LL_Task/p\ 1198,9282
+ procedure Abort_Task \7fAbort_Task/p\ 1203,9516
+ procedure Test_Abort;\7fTest_Abort/p\ 1210,9878
+ type Abort_Handler_Pointer \7fAbort_Handler_Pointer/t\ 1217,10233
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1219,10312
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1226,10741
+ procedure LL_Assert \7fLL_Assert/p\ 1231,10983
+ type Proc \7fProc/t\ 1238,11240
+ type TAS_Cell \7fTAS_Cell/t\ 1242,11328
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1249,11670
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1255,11941
+ procedure Clear \7fClear/p\ 1260,12157
+ procedure Test_And_Set \7fTest_And_Set/p\ 1267,12462
+ function Is_Set \7fIs_Set/f\ 1275,12877
+ type Lock \7fLock/t\ 1283,13155
+ type Condition_Variable \7fCondition_Variable/t\ 1288,13267
+ type TAS_Cell \7fTAS_Cell/t\ 1293,13389
+\f
+ada-src/waroquiers.ada,1503
+package Pkg1 \7fPkg1/s\ 13,89
+ type Private_T \7fPrivate_T/t\ 15,106
+ package Inner1 \7fInner1/s\ 17,136
+ procedure Private_T;\7fPrivate_T/p\ 18,156
+ package Inner2 \7fInner2/s\ 111,196
+ task Private_T;\7fPrivate_T/k\ 112,216
+ type Public_T \7fPublic_T/t\ 115,251
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 121,336
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 123,361
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 125,400
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 127,439
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 130,508
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 131,531
+ task type Task_Type \7fTask_Type/k\ 134,580
+ type Private_T \7fPrivate_T/t\ 140,671
+package body Pkg1 \7fPkg1/b\ 146,766
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 148,788
+ package body Inner1 \7fInner1/b\ 153,840
+ procedure Private_T \7fPrivate_T/p\ 154,865
+ package body Inner2 \7fInner2/b\ 160,938
+ task body Private_T \7fPrivate_T/b\ 161,963
+ task body Task_Type \7fTask_Type/b\ 168,1064
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 182,1250
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 188,1328
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 190,1379
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 196,1479
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1100,1544
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1101,1570
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1107,1657
+package Truc \7fTruc/s\ 1112,1764
+package Truc.Bidule \7fTruc.Bidule/s\ 1116,1816
+ protected Bidule \7fBidule/t\ 1125,1964
+ protected type Machin_T \7fMachin_T/t\ 1131,2046
+package body Truc.Bidule \7fTruc.Bidule/b\ 1138,2153
+ protected body Bidule \7fBidule/b\ 1139,2181
+ protected body Machin_T \7fMachin_T/b\ 1146,2281
+\f
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;\7f43,1424
+Lisp_Object Vglobal_abbrev_table;\7f48,1569
+Lisp_Object Vfundamental_mode_abbrev_table;\7f52,1680
+int abbrevs_changed;\7f56,1781
+int abbrev_all_caps;\7f58,1803
+Lisp_Object Vabbrev_start_location;\7f63,1952
+Lisp_Object Vabbrev_start_location_buffer;\7f66,2041
+Lisp_Object Vlast_abbrev;\7f70,2150
+Lisp_Object Vlast_abbrev_text;\7f75,2319
+int last_abbrev_point;\7f79,2409
+Lisp_Object Vpre_abbrev_expand_hook,\7f83,2482
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;\7f83,2482
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,\7fmake-abbrev-table\ 185,2546
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,\7fclear-abbrev-table\ 192,2738
+DEFUN ("define-abbrev", Fdefine_abbrev,\7fdefine-abbrev\ 1107,3119
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,\7fdefine-global-abbrev\ 1149,4438
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,\7fdefine-mode-abbrev\ 1160,4809
+DEFUN ("abbrev-symbol", Fabbrev_symbol,\7fabbrev-symbol\ 1174,5277
+DEFUN ("abbrev-expansion", Fabbrev_expansion,\7fabbrev-expansion\ 1202,6241
+DEFUN ("expand-abbrev", Fexpand_abbrev,\7fexpand-abbrev\ 1218,6756
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,\7funexpand-abbrev\ 1389,11677
+write_abbrev \7f426,12884
+describe_abbrev \7f445,13319
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,\7finsert-abbrev-table-description\ 1466,13834
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,\7fdefine-abbrev-table\ 1506,14990
+syms_of_abbrev \7f540,16067
+\f
+c-src/torture.c,197
+(*tag1 \7ftag1\ 118,452
+#define notag2 \7f26,553
+(*tag2 \7ftag2\ 129,630
+(*tag3 \7ftag3\ 139,772
+#define notag4 \7f45,861
+(*tag4 \7ftag4\ 148,955
+tag5 \7f57,1081
+tag6 \7f66,1208
+int pp1(\7f74,1317
+pp2\7f87,1419
+pp3(\7f100,1518
+\f
+c-src/getopt.h,147
+#define _GETOPT_H \7f19,794
+struct option\7f73,2790
+#define no_argument \7f89,3117
+#define required_argument \7f90,3140
+#define optional_argument \7f91,3168
+\f
+c-src/etags.c,10045
+char pot_etags_version[\7fpot_etags_version\ 181,3470
+# undef DEBUG\7f84,3552
+# define DEBUG \7f85,3567
+# define DEBUG \7f87,3594
+# define NDEBUG \7f88,3617
+# define _GNU_SOURCE \7f94,3705
+# undef MSDOS\7f100,3876
+# undef WINDOWSNT\7f101,3890
+# define WINDOWSNT\7f102,3909
+# undef MSDOS\7f106,3968
+# define MSDOS \7f107,3982
+# define MSDOS \7f110,4032
+# define MAXPATHLEN \7f115,4111
+# undef HAVE_NTGUI\7f116,4141
+# undef DOS_NT\7f117,4160
+# define DOS_NT\7f118,4176
+# undef assert \7f135,4482
+# define assert(\7f136,4541
+# undef CTAGS\7f146,4857
+# define CTAGS \7f147,4872
+# define CTAGS \7f149,4898
+#define streq(\7f152,4927
+#define strcaseeq(\7f153,4996
+#define strneq(\7f154,5075
+#define strncaseeq(\7f155,5151
+#define CHARS \7f157,5238
+#define CHAR(\7f158,5278
+#define iswhite(\7f159,5329
+#define notinname(\7f160,5394
+#define begtoken(\7f161,5469
+#define intoken(\7f162,5542
+#define endtoken(\7f163,5614
+#define ISALNUM(\7f165,5684
+#define ISALPHA(\7f166,5722
+#define ISDIGIT(\7f167,5760
+#define ISLOWER(\7f168,5798
+#define lowcase(\7f170,5837
+#define xnew(\7f179,6015
+#define xrnew(\7f180,6083
+typedef void Lang_function \7f182,6164
+} compressor;\7f188,6365
+} language;\7f199,6835
+typedef struct fdesc\7f201,6848
+} fdesc;\7f212,7366
+typedef struct node_st\7f214,7376
+} node;\7f225,7894
+} linebuffer;\7f239,8248
+ at_language,\7f245,8344
+ at_regexp,\7f246,8393
+ at_filename,\7f247,8437
+ at_stdin,\7f248,8473
+ at_end \7f249,8516
+} argument;\7f253,8698
+typedef struct regexp\7f256,8758
+} regexp;\7f268,9325
+static void error \7f311,10780
+# undef STDIN\7f408,15073
+#define STDIN \7f411,15095
+static compressor compressors[\7fcompressors\ 1457,17664
+static const char *Ada_suffixes \7fAda_suffixes\ 1473,17907
+static const char Ada_help \7f475,17977
+static const char *Asm_suffixes \7fAsm_suffixes\ 1493,18580
+static const char Asm_help \7f504,18976
+static const char *default_C_suffixes \7fdefault_C_suffixes\ 1512,19312
+static const char default_C_help \7f515,19413
+static const char default_C_help \7f523,19850
+static const char *Cplusplus_suffixes \7fCplusplus_suffixes\ 1535,20460
+static const char Cplusplus_help \7f540,20658
+static const char *Cjava_suffixes \7fCjava_suffixes\ 1549,21113
+static char Cjava_help \7f551,21172
+static const char *Cobol_suffixes \7fCobol_suffixes\ 1556,21337
+static char Cobol_help \7f558,21402
+static const char *Cstar_suffixes \7fCstar_suffixes\ 1562,21543
+static const char *Erlang_suffixes \7fErlang_suffixes\ 1565,21607
+static const char Erlang_help \7f567,21673
+const char *Forth_suffixes \7fForth_suffixes\ 1571,21799
+static const char Forth_help \7f573,21857
+static const char *Fortran_suffixes \7fFortran_suffixes\ 1577,22008
+static const char Fortran_help \7f579,22085
+static const char *HTML_suffixes \7fHTML_suffixes\ 1582,22190
+static const char HTML_help \7f584,22264
+static const char *Lisp_suffixes \7fLisp_suffixes\ 1589,22452
+static const char Lisp_help \7f591,22556
+static const char *Lua_suffixes \7fLua_suffixes\ 1598,22871
+static const char Lua_help \7f600,22934
+static const char *Makefile_filenames \7fMakefile_filenames\ 1603,23010
+static const char Makefile_help \7f605,23133
+static const char *Objc_suffixes \7fObjc_suffixes\ 1609,23277
+static const char Objc_help \7f613,23399
+static const char *Pascal_suffixes \7fPascal_suffixes\ 1619,23714
+static const char Pascal_help \7f621,23778
+static const char *Perl_suffixes \7fPerl_suffixes\ 1626,23966
+static const char *Perl_interpreters \7fPerl_interpreters\ 1628,24028
+static const char Perl_help \7f630,24100
+static const char *PHP_suffixes \7fPHP_suffixes\ 1637,24451
+static const char PHP_help \7f639,24523
+static const char *plain_C_suffixes \7fplain_C_suffixes\ 1643,24678
+static const char *PS_suffixes \7fPS_suffixes\ 1647,24762
+static const char PS_help \7f649,24848
+static const char *Prolog_suffixes \7fProlog_suffixes\ 1652,24931
+static const char Prolog_help \7f654,24993
+static const char *Python_suffixes \7fPython_suffixes\ 1658,25107
+static const char Python_help \7f660,25165
+static const char *Scheme_suffixes \7fScheme_suffixes\ 1665,25347
+static const char Scheme_help \7f667,25460
+static const char *TeX_suffixes \7fTeX_suffixes\ 1672,25683
+static const char TeX_help \7f674,25781
+static const char *Texinfo_suffixes \7fTexinfo_suffixes\ 1686,26316
+static const char Texinfo_help \7f688,26395
+static const char *Yacc_suffixes \7fYacc_suffixes\ 1691,26492
+static const char Yacc_help \7f693,26606
+static const char auto_help \7f699,26856
+static const char none_help \7f703,27020
+static const char no_lang_help \7f707,27143
+static language lang_names \7f718,27355
+print_language_names \7f753,29532
+# define EMACS_NAME \7f786,30755
+# define VERSION \7f789,30811
+print_version \7f792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP \7f804,31173
+print_help \7f808,31250
+main \7f981,37438
+get_compressor_from_suffix \7f1319,46217
+get_language_from_langname \7f1355,47158
+get_language_from_interpreter \7f1377,47545
+get_language_from_filename \7f1399,47976
+process_file_name \7f1433,48834
+process_file \7f1555,51665
+init \7f1632,54150
+find_entries \7f1656,54901
+make_tag \7f1814,59707
+pfnote \7f1856,60942
+free_tree \7f1917,62744
+free_fdesc \7f1935,63029
+add_node \7f1955,63472
+invalidate_nodes \7f2035,65537
+static int number_len \7f2068,66193
+total_size_of_entries \7f2087,66694
+put_entries \7f2107,67154
+#define C_EXT \7f2193,68995
+#define C_PLAIN \7f2194,69037
+#define C_PLPL \7f2195,69070
+#define C_STAR \7f2196,69104
+#define C_JAVA \7f2197,69137
+#define C_AUTO \7f2198,69172
+#define YACC \7f2199,69242
+enum sym_type\7f2204,69312
+ st_none,\7f2206,69328
+ st_C_objprot,\7f2207,69339
+ st_C_objprot, st_C_objimpl,\7f2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,\7f2207,69339
+ st_C_gnumacro,\7f2208,69382
+ st_C_ignore,\7f2209,69399
+ st_C_ignore, st_C_attribute,\7f2209,69399
+ st_C_javastruct,\7f2210,69430
+ st_C_operator,\7f2211,69449
+ st_C_class,\7f2212,69466
+ st_C_class, st_C_template,\7f2212,69466
+ st_C_struct,\7f2213,69495
+ st_C_struct, st_C_extern,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef\7f2213,69495
+struct C_stab_entry \7f2271,71278
+hash \7f2275,71409
+in_word_set \7f2321,72937
+ TOTAL_KEYWORDS \7f2325,73018
+ MIN_WORD_LENGTH \7f2326,73045
+ MAX_WORD_LENGTH \7f2327,73072
+ MIN_HASH_VALUE \7f2328,73100
+ MAX_HASH_VALUE \7f2329,73126
+C_symtype \7f2387,74985
+static bool inattribute;\7f2400,75234
+ fvnone,\7f2408,75435
+ fdefunkey,\7f2409,75466
+ fdefunname,\7f2410,75512
+ foperator,\7f2411,75556
+ fvnameseen,\7f2412,75613
+ fstartlist,\7f2413,75666
+ finlist,\7f2414,75722
+ flistseen,\7f2415,75765
+ fignore,\7f2416,75813
+ vignore \7f2417,75856
+} fvdef;\7f2418,75901
+static bool fvextern;\7f2420,75911
+ tnone,\7f2428,76089
+ tkeyseen,\7f2429,76119
+ ttypeseen,\7f2430,76160
+ tinbody,\7f2431,76199
+ tend,\7f2432,76238
+ tignore \7f2433,76279
+} typdef;\7f2434,76320
+ snone,\7f2443,76499
+ skeyseen,\7f2445,76575
+ stagseen,\7f2446,76620
+ scolonseen \7f2447,76661
+} structdef;\7f2448,76715
+static const char *objtag \7fobjtag\ 12453,76809
+ dnone,\7f2460,76942
+ dsharpseen,\7f2461,76972
+ ddefineseen,\7f2462,77025
+ dignorerest \7f2463,77070
+} definedef;\7f2464,77112
+ onone,\7f2472,77267
+ oprotocol,\7f2473,77297
+ oimplementation,\7f2474,77347
+ otagseen,\7f2475,77395
+ oparenseen,\7f2476,77431
+ ocatseen,\7f2477,77486
+ oinbody,\7f2478,77525
+ omethodsign,\7f2479,77568
+ omethodtag,\7f2480,77626
+ omethodcolon,\7f2481,77666
+ omethodparm,\7f2482,77709
+ oignore \7f2483,77755
+} objdef;\7f2484,77787
+static struct tok\7f2491,77944
+} token;\7f2508,78626
+} cstack;\7f2523,79136
+#define nestlev \7f2525,79264
+#define instruct \7f2527,79369
+pushclass_above \7f2531,79489
+popclass_above \7f2550,79948
+write_classname \7f2564,80162
+consider_token \7f2613,81341
+} lbs[\7flbs\ 12924,88532
+#define current_lb_is_new \7f2926,88543
+#define switch_line_buffers(\7f2927,88588
+#define curlb \7f2929,88641
+#define newlb \7f2930,88672
+#define curlinepos \7f2931,88703
+#define newlinepos \7f2932,88744
+#define plainc \7f2934,88786
+#define cplpl \7f2935,88830
+#define cjava \7f2936,88861
+#define CNL_SAVE_DEFINEDEF(\7f2938,88905
+#define CNL(\7f2947,89117
+make_C_tag \7f2960,89375
+C_entries \7f2986,90194
+default_C_entries \7f3833,110156
+plain_C_entries \7f3840,110276
+Cplusplus_entries \7f3847,110364
+Cjava_entries \7f3854,110460
+Cstar_entries \7f3861,110550
+Yacc_entries \7f3868,110642
+#define LOOP_ON_INPUT_LINES(\7f3875,110720
+#define LOOKING_AT(\7f3884,111056
+#define LOOKING_AT_NOCASE(\7f3891,111461
+just_read_file \7f3901,111861
+F_takeprec \7f3914,112039
+F_getit \7f3937,112366
+Fortran_functions \7f3961,112840
+Ada_getit \7f4052,114669
+Ada_funcs \7f4115,116044
+Asm_labels \7f4228,118582
+Perl_functions \7f4261,119549
+Python_functions \7f4357,122057
+PHP_functions \7f4387,122684
+Cobol_paragraphs \7f4466,124471
+Makefile_targets \7f4494,125029
+Pascal_functions \7f4529,125950
+L_getit \7f4709,130318
+Lisp_functions \7f4725,130664
+Lua_functions \7f4785,131850
+PS_functions \7f4811,132385
+Forth_words \7f4841,133053
+Scheme_functions \7f4877,134092
+static linebuffer *TEX_toktab \7fTEX_toktab\ 14908,134781
+static const char *TEX_defenv \7fTEX_defenv\ 14912,134974
+static char TEX_esc \7f4920,135261
+static char TEX_opgrp \7f4921,135289
+static char TEX_clgrp \7f4922,135318
+TeX_commands \7f4928,135395
+#define TEX_LESC \7f4986,136652
+#define TEX_SESC \7f4987,136674
+TEX_mode \7f4992,136804
+TEX_decode_env \7f5026,137509
+Texinfo_nodes \7f5071,138554
+HTML_labels \7f5094,139013
+Prolog_functions \7f5219,142347
+prolog_skip_comment \7f5255,143128
+prolog_pr \7f5281,143736
+prolog_atom \7f5319,144628
+Erlang_functions \7f5379,145666
+erlang_func \7f5438,146965
+erlang_attribute \7f5476,147642
+erlang_atom \7f5496,148061
+scan_separators \7f5534,149080
+analyze_regex \7f5586,150460
+add_regex \7f5654,152050
+substitute \7f5767,154797
+free_regexps \7f5814,155837
+regex_tag_multiline \7f5836,156291
+nocase_tail \7f5913,158263
+get_tag \7f5928,158519
+readline_internal \7f5959,159455
+readline \7f6037,161296
+savestr \7f6230,167243
+savenstr \7f6240,167473
+skip_spaces \7f6249,167679
+skip_non_spaces \7f6258,167833
+skip_name \7f6267,167983
+fatal \7f6277,168156
+pfatal \7f6284,168253
+suggest_asking_for_help \7f6291,168332
+error \7f6300,168554
+concat \7f6313,168846
+etags_getcwd \7f6329,169259
+relative_filename \7f6350,169725
+absolute_filename \7f6389,170751
+absolute_dirname \7f6453,172416
+filename_is_absolute \7f6472,172845
+canonicalize_filename \7f6484,173096
+# define ISUPPER(\7f6491,173235
+linebuffer_init \7f6514,173656
+linebuffer_setlen \7f6524,173887
+xmalloc \7f6536,174148
+xrealloc \7f6545,174314
+\f
+c-src/exit.c,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/exit.strange_suffix,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/sysdep.h,491
+#define ENTRY(\7f21,870
+#define PSEUDO(\7f26,977
+ movl $SYS_##syscall_nam\7f$SYS_##syscall_na\ 131,1137
+ movl $SYS_##syscall_name, %eax;\7feax\ 131,1137
+ int $0x80;\7f32,1185
+ test %eax,\7feax\ 133,1215
+ test %eax, %eax;\7feax\ 133,1215
+ jl syscall_error;\7f34,1250
+#define XCHG_0 \7f47,1567
+#define XCHG_1 \7f48,1611
+#define XCHG_2 \7f49,1653
+#define XCHG_3 \7f50,1696
+#define XCHG_4 \7f51,1739
+#define XCHG_5 \7f52,1782
+#define r0 \7f54,1826
+#define r1 \7f55,1880
+#define scratch \7f56,1937
+#define MOVE(\7f57,2006
+\f
+c-src/tab.c,196
+static int count_words(\7f15,263
+static char *get_word(\7fget_word\ 135,553
+void tab_free(\7f59,966
+char **tab_fill(\7ftab_fill\ 170,1129
+int tab_delete_first(\7f91,1638
+int tab_count_words(\7f103,1820
+\f
+c-src/dostorture.c,198
+(*tag1 \7ftag1\ 118,468
+#define notag2 \7f26,577
+(*tag2 \7ftag2\ 129,657
+(*tag3 \7ftag3\ 139,809
+#define notag4 \7f45,904
+(*tag4 \7ftag4\ 148,1001
+tag5 \7f57,1136
+tag6 \7f66,1272
+int pp1(\7f74,1389
+pp2\7f87,1504
+pp3(\7f100,1616
+\f
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD\7f25,1002
+#undef get_current_dir_name\7f33,1126
+#undef malloc\7f64,2110
+#undef realloc\7f65,2124
+#undef calloc\7f66,2139
+#undef free\7f67,2153
+#define malloc \7f68,2165
+#define realloc \7f69,2188
+#define calloc \7f70,2213
+#define aligned_alloc \7f71,2236
+#define free \7f72,2273
+#define DUMPED \7f80,2472
+#define ALLOCATED_BEFORE_DUMPING(\7f81,2507
+extern void *malloc \7fmalloc\ 194,2718
+#define INT_BIT \7f124,3934
+#define BLOCKLOG \7f125,3977
+#define BLOCKSIZE \7f126,4018
+#define BLOCKIFY(\7f127,4052
+#define HEAP \7f131,4215
+#define FINAL_FREE_BLOCKS \7f135,4391
+ } malloc_info;\7f167,5388
+#define BLOCK(\7f176,5620
+#define ADDRESS(\7f177,5682
+struct list\7f186,5939
+struct alignlist\7f196,6153
+#define LOCK(\7f223,7064
+#define UNLOCK(\7f228,7195
+#define LOCK_ALIGNED_BLOCKS(\7f233,7329
+#define UNLOCK_ALIGNED_BLOCKS(\7f238,7484
+#define LOCK(\7f244,7649
+#define UNLOCK(\7f245,7664
+#define LOCK_ALIGNED_BLOCKS(\7f246,7681
+#define UNLOCK_ALIGNED_BLOCKS(\7f247,7711
+enum mcheck_status\7f283,9092
+ MCHECK_DISABLED \7f285,9115
+ MCHECK_OK,\7f286,9187
+ MCHECK_FREE,\7f287,9226
+ MCHECK_HEAD,\7f288,9270
+ MCHECK_TAIL \7f289,9334
+struct mstats\7f308,10153
+char *_heapbase;\7f_heapbase\ 1355,11829
+malloc_info *_heapinfo;\7f_heapinfo\ 1358,11927
+static size_t heapsize;\7f361,11983
+size_t _heapindex;\7f364,12047
+size_t _heaplimit;\7f367,12109
+struct list _fraghead[\7f_fraghead\ 1370,12171
+size_t _chunks_used;\7f373,12229
+size_t _bytes_used;\7f374,12250
+size_t _chunks_free;\7f375,12270
+size_t _bytes_free;\7f376,12291
+int __malloc_initialized;\7f379,12340
+size_t __malloc_extra_blocks;\7f381,12367
+static int state_protected_p;\7f400,12912
+static size_t last_state_size;\7f401,12942
+static malloc_info *last_heapinfo;\7flast_heapinfo\ 1402,12973
+protect_malloc_state \7f405,13014
+#define PROTECT_MALLOC_STATE(\7f426,13627
+#define PROTECT_MALLOC_STATE(\7f429,13697
+align \7f435,13794
+get_contiguous_space \7f466,14616
+register_heapinfo \7f497,15325
+pthread_mutex_t _malloc_mutex \7f517,15879
+pthread_mutex_t _aligned_blocks_mutex \7f518,15938
+int _malloc_thread_enabled_p;\7f519,16005
+malloc_atfork_handler_prepare \7f522,16048
+malloc_atfork_handler_parent \7f529,16139
+malloc_atfork_handler_child \7f536,16233
+malloc_enable_thread \7f544,16375
+malloc_initialize_1 \7f563,16961
+__malloc_initialize \7f594,17793
+static int morecore_recursing;\7f604,17926
+morecore_nolock \7f609,18066
+_malloc_internal_nolock \7f722,21584
+_malloc_internal \7f920,28102
+malloc \7f932,28247
+_malloc \7f961,29140
+_free \7f967,29196
+_realloc \7f973,29240
+struct alignlist *_aligned_blocks \7f_aligned_blocks\ 11004,30345
+_free_internal_nolock \7f1009,30474
+_free_internal \7f1255,38476
+free \7f1265,38603
+weak_alias \7f1277,38799
+#define min(\7f1306,39813
+_realloc_internal_nolock \7f1319,40309
+_realloc_internal \7f1435,43563
+realloc \7f1447,43726
+calloc \7f1478,44894
+#define __sbrk \7f1513,46042
+__default_morecore \7f1525,46511
+aligned_alloc \7f1557,47522
+memalign \7f1647,49704
+posix_memalign \7f1656,49909
+static size_t pagesize;\7f1703,51317
+valloc \7f1706,51349
+#undef malloc\7f1715,51490
+#undef realloc\7f1716,51504
+#undef calloc\7f1717,51519
+#undef aligned_alloc\7f1718,51533
+#undef free\7f1719,51554
+hybrid_malloc \7f1736,52083
+hybrid_calloc \7f1744,52188
+hybrid_free \7f1752,52319
+hybrid_aligned_alloc \7f1765,52626
+hybrid_realloc \7f1780,52984
+hybrid_get_current_dir_name \7f1811,53797
+#define MAGICWORD \7f1854,55206
+#define MAGICFREE \7f1855,55261
+#define MAGICBYTE \7f1856,55316
+#define MALLOCFLOOD \7f1857,55348
+#define FREEFLOOD \7f1858,55382
+struct hdr\7f1860,55415
+checkhdr \7f1867,55581
+freehook \7f1891,56022
+mallochook \7f1927,56804
+reallochook \7f1944,57143
+mabort \7f1978,57901
+static int mcheck_used \7f2012,58586
+mcheck \7f2015,58619
+mprobe \7f2035,59138
+\f
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H \7f21,836
+typedef unsigned long reg_syntax_t;\7f43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS \7f47,1749
+#define RE_BK_PLUS_QM \7f52,1969
+#define RE_CHAR_CLASSES \7f58,2298
+#define RE_CONTEXT_INDEP_ANCHORS \7f72,3032
+#define RE_CONTEXT_INDEP_OPS \7f80,3458
+#define RE_CONTEXT_INVALID_OPS \7f84,3658
+#define RE_DOT_NEWLINE \7f88,3801
+#define RE_DOT_NOT_NULL \7f92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE \7f96,4082
+#define RE_INTERVALS \7f101,4292
+#define RE_LIMITED_OPS \7f105,4441
+#define RE_NEWLINE_ALT \7f109,4583
+#define RE_NO_BK_BRACES \7f114,4773
+#define RE_NO_BK_PARENS \7f118,4964
+#define RE_NO_BK_REFS \7f122,5120
+#define RE_NO_BK_VBAR \7f126,5316
+#define RE_NO_EMPTY_RANGES \7f132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD \7f136,5766
+#define RE_NO_POSIX_BACKTRACKING \7f140,5937
+#define RE_NO_GNU_OPS \7f144,6133
+#define RE_FRUGAL \7f147,6253
+#define RE_SHY_GROUPS \7f150,6360
+#define RE_NO_NEWLINE_ANCHOR \7f153,6468
+#define RE_DEBUG \7f161,6884
+#define RE_SYNTAX_EMACS \7f183,7684
+#define RE_SYNTAX_AWK \7f186,7780
+#define RE_SYNTAX_GNU_AWK \7f193,8084
+#define RE_SYNTAX_POSIX_AWK \7f197,8255
+#define RE_SYNTAX_GREP \7f201,8393
+#define RE_SYNTAX_EGREP \7f206,8549
+#define RE_SYNTAX_POSIX_EGREP \7f212,8765
+#define RE_SYNTAX_ED \7f216,8910
+#define RE_SYNTAX_SED \7f218,8954
+#define _RE_SYNTAX_POSIX_COMMON \7f221,9072
+#define RE_SYNTAX_POSIX_BASIC \7f225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \7f231,9508
+#define RE_SYNTAX_POSIX_EXTENDED \7f234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \7f242,9967
+# undef RE_DUP_MAX\7f253,10454
+#define RE_DUP_MAX \7f256,10540
+#define REG_EXTENDED \7f263,10762
+#define REG_ICASE \7f267,10886
+#define REG_NEWLINE \7f272,11070
+#define REG_NOSUB \7f276,11248
+#define REG_NOTBOL \7f286,11614
+#define REG_NOTEOL \7f289,11688
+ REG_ENOSYS \7f297,11859
+ REG_NOERROR \7f300,11941
+ REG_NOMATCH,\7f301,11976
+ REG_BADPAT,\7f305,12123
+ REG_ECOLLATE,\7f306,12162
+ REG_ECTYPE,\7f307,12203
+ REG_EESCAPE,\7f308,12255
+ REG_ESUBREG,\7f309,12298
+ REG_EBRACK,\7f310,12345
+ REG_EPAREN,\7f311,12391
+ REG_EBRACE,\7f312,12436
+ REG_BADBR,\7f313,12472
+ REG_ERANGE,\7f314,12519
+ REG_ESPACE,\7f315,12560
+ REG_BADRPT,\7f316,12601
+ REG_EEND,\7f319,12693
+ REG_ESIZE,\7f320,12728
+ REG_ERPAREN,\7f321,12790
+ REG_ERANGEX \7f322,12859
+} reg_errcode_t;\7f323,12911
+# define RE_TRANSLATE_TYPE \7f332,13273
+struct re_pattern_buffer\7f335,13315
+#define REGS_UNALLOCATED \7f376,14889
+#define REGS_REALLOCATE \7f377,14916
+#define REGS_FIXED \7f378,14942
+typedef struct re_pattern_buffer regex_t;\7f416,16098
+typedef ssize_t regoff_t;\7f423,16492
+struct re_registers\7f428,16652
+# define RE_NREGS \7f440,16942
+} regmatch_t;\7f451,17317
+# define _Restrict_ \7f540,20886
+# define _Restrict_ \7f542,20979
+# define _Restrict_\7f544,21018
+# define _Restrict_arr_ \7f555,21418
+# define _Restrict_arr_\7f557,21461
+# define CHAR_CLASS_MAX_LENGTH \7f593,22470
+# define CHAR_CLASS_MAX_LENGTH \7f597,22648
+typedef wctype_t re_wctype_t;\7f599,22692
+typedef wchar_t re_wchar_t;\7f600,22722
+# define re_wctype \7f601,22750
+# define re_iswctype \7f602,22776
+# define re_wctype_to_bit(\7f603,22806
+# define CHAR_CLASS_MAX_LENGTH \7f605,22844
+# define btowc(\7f606,22906
+typedef enum { RECC_ERROR \7f609,22953
+ RECC_ALNUM,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,\7f610,22984
+ RECC_GRAPH,\7f611,23027
+ RECC_GRAPH, RECC_PRINT,\7f611,23027
+ RECC_LOWER,\7f612,23059
+ RECC_LOWER, RECC_UPPER,\7f612,23059
+ RECC_PUNCT,\7f613,23091
+ RECC_PUNCT, RECC_CNTRL,\7f613,23091
+ RECC_DIGIT,\7f614,23123
+ RECC_DIGIT, RECC_XDIGIT,\7f614,23123
+ RECC_BLANK,\7f615,23156
+ RECC_BLANK, RECC_SPACE,\7f615,23156
+ RECC_MULTIBYTE,\7f616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,\7f616,23188
+ RECC_ASCII,\7f617,23227
+ RECC_ASCII, RECC_UNIBYTE\7f617,23227
+} re_wctype_t;\7f618,23260
+typedef int re_wchar_t;\7f623,23387
+\f
+c-src/emacs/src/keyboard.c,13565
+volatile int interrupt_input_blocked;\7f76,1808
+volatile bool pending_signals;\7f80,1944
+#define KBD_BUFFER_SIZE \7f82,1976
+KBOARD *initial_kboard;\7finitial_kboard\ 184,2006
+KBOARD *current_kboard;\7fcurrent_kboard\ 185,2030
+static KBOARD *all_kboards;\7fall_kboards\ 186,2054
+static bool single_kboard;\7f89,2154
+#define NUM_RECENT_KEYS \7f91,2182
+static int recent_keys_index;\7f94,2269
+static int total_keys;\7f97,2357
+static Lisp_Object recent_keys;\7f100,2443
+Lisp_Object this_command_keys;\7f107,2777
+ptrdiff_t this_command_key_count;\7f108,2808
+static bool this_command_key_count_reset;\7f112,2922
+static Lisp_Object raw_keybuf;\7f116,3074
+static int raw_keybuf_count;\7f117,3105
+#define GROW_RAW_KEYBUF \7f119,3135
+static ptrdiff_t this_single_command_key_start;\7f125,3350
+static ptrdiff_t before_command_key_count;\7f129,3498
+static ptrdiff_t before_command_echo_length;\7f130,3541
+sigjmp_buf return_to_command_loop;\7f135,3677
+static Lisp_Object recover_top_level_message;\7f138,3791
+static Lisp_Object regular_top_level_message;\7f143,3930
+static sys_jmp_buf getcjmp;\7f147,4031
+bool waiting_for_input;\7f150,4095
+static bool echoing;\7f154,4186
+static struct kboard *ok_to_echo_at_next_pause;\7fok_to_echo_at_next_pause\ 1159,4328
+struct kboard *echo_kboard;\7fecho_kboard\ 1166,4632
+Lisp_Object echo_message_buffer;\7f171,4744
+bool immediate_quit;\7f174,4837
+int quit_char;\7f192,5623
+EMACS_INT command_loop_level;\7f195,5680
+Lisp_Object unread_switch_frame;\7f204,6108
+static ptrdiff_t last_non_minibuf_size;\7f207,6216
+uintmax_t num_input_events;\7f210,6334
+static EMACS_INT last_auto_save;\7f214,6428
+static ptrdiff_t last_point_position;\7f217,6523
+Lisp_Object internal_last_event_frame;\7f228,7028
+static Lisp_Object read_key_sequence_cmd;\7f232,7168
+static Lisp_Object read_key_sequence_remapped;\7f233,7210
+static FILE *dribble;\7fdribble\ 1236,7310
+bool input_pending;\7f239,7368
+static bool input_was_pending;\7f287,10022
+static struct input_event kbd_buffer[\7fkbd_buffer\ 1291,10107
+static struct input_event *kbd_fetch_ptr;\7fkbd_fetch_ptr\ 1297,10386
+static struct input_event * volatile kbd_store_ptr;\7f302,10601
+unsigned timers_run;\7f320,11296
+struct timespec *input_available_clear_time;\7finput_available_clear_time\ 1324,11408
+bool interrupt_input;\7f328,11573
+bool interrupts_deferred;\7f331,11671
+static struct timespec timer_idleness_start_time;\7f335,11746
+static struct timespec timer_last_idleness_start_time;\7f340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW \7f346,12046
+#define READABLE_EVENTS_FILTER_EVENTS \7f347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES \7f348,12142
+kset_echo_string \7f392,14088
+kset_kbd_queue \7f397,14184
+kset_keyboard_translate_table \7f402,14276
+kset_last_prefix_arg \7f407,14399
+kset_last_repeatable_command \7f412,14504
+kset_local_function_key_map \7f417,14625
+kset_overriding_terminal_local_map \7f422,14744
+kset_real_last_command \7f427,14877
+kset_system_key_syms \7f432,14986
+echo_add_key \7f443,15249
+echo_char \7f527,17527
+echo_dash \7f541,17813
+echo_now \7f586,19140
+cancel_echoing \7f635,20614
+echo_length \7f648,20922
+echo_truncate \7f660,21253
+add_command_key \7f672,21582
+recursive_edit_1 \7f697,22406
+record_auto_save \7f742,23848
+force_auto_save_soon \7f751,24016
+DEFUN ("recursive-edit", Frecursive_edit,\7frecursive-edit\ 1759,24137
+recursive_edit_unwind \7f804,25747
+any_kboard_state \7f817,26013
+single_kboard_state \7f838,26665
+not_single_kboard_state \7f848,26803
+struct kboard_stack\7f858,27065
+static struct kboard_stack *kboard_stack;\7fkboard_stack\ 1864,27138
+push_kboard \7f867,27186
+pop_kboard \7f879,27375
+temporarily_switch_to_single_kboard \7f914,28263
+record_single_kboard_state \7f943,29437
+restore_kboard_configuration \7f952,29621
+cmd_error \7f970,30077
+cmd_error_internal \7f1024,31510
+DEFUN ("command-error-default-function", Fcommand_error_default_function,\7fcommand-error-default-function\ 11043,32030
+command_loop \7f1094,33916
+command_loop_2 \7f1134,35135
+top_level_2 \7f1146,35339
+top_level_1 \7f1152,35417
+DEFUN ("top-level", Ftop_level,\7ftop-level\ 11164,35787
+user_error \7f1183,36288
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit,\7fexit-recursive-edit\ 11189,36429
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit,\7fabort-recursive-edit\ 11201,36819
+tracking_off \7f1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,\7ftrack-mouse\ 11234,37816
+bool ignore_mouse_drag_p;\7f1256,38392
+some_mouse_moved \7f1259,38441
+Lisp_Object last_undo_boundary;\7f1287,39032
+command_loop_1 \7f1294,39273
+read_menu_command \7f1649,50889
+adjust_point_for_property \7f1678,51617
+safe_run_hooks_1 \7f1831,57339
+safe_run_hooks_error \7f1841,57569
+safe_run_hook_funcall \7f1878,58576
+safe_run_hooks \7f1893,59058
+int poll_suppress_count;\7f1908,59397
+static struct atimer *poll_timer;\7fpoll_timer\ 11915,59487
+poll_for_input_1 \7f1919,59589
+poll_for_input \7f1930,59789
+start_polling \7f1942,60053
+input_polling_used \7f1979,61091
+stop_polling \7f1994,61390
+set_poll_suppress_count \7f2009,61759
+bind_polling_period \7f2029,62141
+make_ctrl_char \7f2048,62492
+show_help_echo \7f2113,64455
+static Lisp_Object help_form_saved_window_configs;\7f2156,65638
+read_char_help_form_unwind \7f2158,65701
+#define STOP_POLLING \7f2166,65959
+#define RESUME_POLLING \7f2170,66084
+read_event_from_main_queue \7f2175,66229
+read_decoded_event_from_main_queue \7f2249,68417
+#define MAX_ENCODED_BYTES \7f2254,68664
+echo_keystrokes_p \7f2342,71556
+read_char \7f2376,72848
+record_menu_key \7f3225,98949
+help_char_p \7f3258,99674
+record_char \7f3273,99953
+save_getcjmp \7f3412,104235
+restore_getcjmp \7f3418,104326
+readable_events \7f3430,104697
+int stop_character EXTERNALLY_VISIBLE;\7f3497,106437
+event_to_kboard \7f3500,106493
+kbd_buffer_nr_stored \7f3522,107142
+kbd_buffer_store_event \7f3534,107483
+kbd_buffer_store_event_hold \7f3550,108025
+kbd_buffer_unget_event \7f3684,111617
+#define INPUT_EVENT_POS_MAX \7f3698,112018
+#define INPUT_EVENT_POS_MIN \7f3701,112147
+position_to_Time \7f3706,112287
+Time_to_position \7f3716,112514
+gen_help_event \7f3738,113171
+kbd_buffer_store_help_event \7f3756,113611
+discard_mouse_events \7f3773,113976
+kbd_buffer_events_waiting \7f3803,114711
+clear_event \7f3823,115068
+kbd_buffer_get_event \7f3836,115408
+process_special_events \7f4258,127881
+swallow_events \7f4322,129705
+timer_start_idle \7f4339,130098
+timer_stop_idle \7f4355,130576
+timer_resume_idle \7f4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;\7f4372,130912
+Lisp_Object pending_funcalls;\7f4377,131172
+decode_timer \7f4381,131293
+timer_check_2 \7f4414,132246
+timer_check \7f4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,\7fcurrent-idle-time\ 14607,137662
+static Lisp_Object accent_key_syms;\7f4625,138239
+static Lisp_Object func_key_syms;\7f4626,138275
+static Lisp_Object mouse_syms;\7f4627,138309
+static Lisp_Object wheel_syms;\7f4628,138340
+static Lisp_Object drag_n_drop_syms;\7f4629,138371
+static const int lispy_accent_codes[\7flispy_accent_codes\ 14634,138516
+static const char *const lispy_accent_keys[\7flispy_accent_keys\ 14741,139878
+#define FUNCTION_KEY_OFFSET \7f4766,140314
+const char *const lispy_function_keys[\7flispy_function_keys\ 14768,140347
+static const char *const lispy_multimedia_keys[\7flispy_multimedia_keys\ 14962,148901
+static const char *const lispy_kana_keys[\7flispy_kana_keys\ 15026,150135
+#define FUNCTION_KEY_OFFSET \7f5061,151751
+static const char *const lispy_function_keys[\7flispy_function_keys\ 15065,151894
+#define ISO_FUNCTION_KEY_OFFSET \7f5149,154429
+static const char *const iso_lispy_function_keys[\7fiso_lispy_function_keys\ 15151,154469
+static Lisp_Object Vlispy_mouse_stem;\7f5172,155328
+static const char *const lispy_wheel_names[\7flispy_wheel_names\ 15174,155367
+static const char *const lispy_drag_n_drop_names[\7flispy_drag_n_drop_names\ 15181,155619
+static short const scroll_bar_parts[\7fscroll_bar_parts\ 15189,155885
+static Lisp_Object button_down_location;\7f5210,156910
+static int last_mouse_button;\7f5215,157065
+static int last_mouse_x;\7f5216,157095
+static int last_mouse_y;\7f5217,157120
+static Time button_down_time;\7f5218,157145
+static int double_click_count;\7f5222,157229
+make_lispy_position \7f5228,157390
+toolkit_menubar_in_use \7f5456,163953
+make_scroll_bar_position \7f5469,164321
+make_lispy_event \7f5485,164967
+make_lispy_movement \7f6104,183531
+make_lispy_switch_frame \7f6131,184262
+make_lispy_focus_in \7f6137,184369
+make_lispy_focus_out \7f6145,184495
+parse_modifiers_uncached \7f6163,184945
+#define SINGLE_LETTER_MOD(\7f6185,185465
+#undef SINGLE_LETTER_MOD\7f6212,185906
+#define MULTI_LETTER_MOD(\7f6214,185932
+#undef MULTI_LETTER_MOD\7f6231,186400
+apply_modifiers_uncached \7f6273,187574
+static const char *const modifier_names[\7fmodifier_names\ 16319,189193
+#define NUM_MOD_NAMES \7f6325,189399
+static Lisp_Object modifier_symbols;\7f6327,189449
+lispy_modifier_list \7f6331,189586
+#define KEY_TO_CHAR(\7f6353,190252
+parse_modifiers \7f6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,\7fevent-symbol-parse-modifiers\ 16399,191517
+apply_modifiers \7f6422,192391
+reorder_modifiers \7f6491,194720
+modify_event_symbol \7f6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,\7fevent-convert-list\ 16628,199244
+parse_solitary_modifier \7f6695,201135
+#define SINGLE_LETTER_MOD(\7f6701,201258
+#define MULTI_LETTER_MOD(\7f6705,201343
+#undef SINGLE_LETTER_MOD\7f6763,202641
+#undef MULTI_LETTER_MOD\7f6764,202666
+lucid_event_type_list_p \7f6775,202889
+get_input_pending \7f6814,203960
+record_asynch_buffer_change \7f6834,204579
+gobble_input \7f6872,205702
+tty_read_avail_input \7f6967,208310
+handle_async_input \7f7149,214039
+process_pending_signals \7f7165,214359
+unblock_input_to \7f7177,214645
+unblock_input \7f7200,215277
+totally_unblock_input \7f7209,215445
+handle_input_available_signal \7f7217,215529
+deliver_input_available_signal \7f7226,215700
+struct user_signal_info\7f7235,215865
+static struct user_signal_info *user_signals \7fuser_signals\ 17250,216090
+add_user_signal \7f7253,216149
+handle_user_signal \7f7275,216598
+deliver_user_signal \7f7316,217558
+find_user_signal_name \7f7322,217659
+store_user_signal_events \7f7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;\7f7363,218416
+static Lisp_Object menu_bar_items_vector;\7f7368,218630
+static int menu_bar_items_index;\7f7369,218672
+static const char *separator_names[\7fseparator_names\ 17372,218707
+menu_separator_name_p \7f7393,219148
+menu_bar_items \7f7426,219852
+Lisp_Object item_properties;\7f7568,224603
+menu_bar_item \7f7571,224645
+menu_item_eval_property_1 \7f7647,227175
+eval_dyn \7f7658,227465
+menu_item_eval_property \7f7666,227675
+parse_menu_item \7f7686,228341
+static Lisp_Object tool_bar_items_vector;\7f7965,236336
+static Lisp_Object tool_bar_item_properties;\7f7970,236510
+static int ntool_bar_items;\7f7974,236606
+tool_bar_items \7f7990,237083
+process_tool_bar_item \7f8075,239892
+#define PROP(\7f8112,240969
+set_prop \7f8114,241038
+parse_tool_bar_item \7f8167,242453
+#undef PROP\7f8379,248844
+init_tool_bar_items \7f8387,248969
+append_tool_bar_item \7f8401,249261
+read_char_x_menu_prompt \7f8443,250771
+read_char_minibuf_menu_prompt \7f8503,252445
+#define PUSH_C_STR(\7f8527,253014
+follow_key \7f8726,258553
+active_maps \7f8733,258695
+typedef struct keyremap\7f8742,259021
+} keyremap;\7f8754,259464
+access_keymap_keyremap \7f8764,259808
+keyremap_step \7f8811,261450
+test_undefined \7f8867,262934
+read_key_sequence \7f8916,264861
+read_key_sequence_vs \7f9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,\7fread-key-sequence\ 19885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,\7fread-key-sequence-vector\ 19938,299982
+detect_input_pending \7f9950,300488
+detect_input_pending_ignore_squeezables \7f9959,300654
+detect_input_pending_run_timers \7f9967,300870
+clear_input_pending \7f9985,301362
+requeued_events_pending_p \7f9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,\7finput-pending-p\ 110002,301813
+DEFUN ("recent-keys", Frecent_keys,\7frecent-keys\ 110024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,\7fthis-command-keys\ 110055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,\7fthis-command-keys-vector\ 110068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,\7fthis-single-command-keys\ 110080,304380
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,\7fthis-single-command-raw-keys\ 110096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,\7freset-this-command-lengths\ 110109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,\7fclear-this-command-keys\ 110136,306510
+DEFUN ("recursion-depth", Frecursion_depth,\7frecursion-depth\ 110158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,\7fopen-dribble-file\ 110169,307406
+DEFUN ("discard-input", Fdiscard_input,\7fdiscard-input\ 110203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,\7fsuspend-emacs\ 110225,308949
+stuff_buffered_input \7f10285,311045
+set_waiting_for_input \7f10323,312016
+clear_waiting_for_input \7f10337,312390
+handle_interrupt_signal \7f10351,312754
+deliver_interrupt_signal \7f10378,313642
+static int volatile force_quit_count;\7f10387,313932
+handle_interrupt \7f10401,314414
+quit_throw_to_read_char \7f10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,\7fset-input-interrupt-mode\ 110562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,\7fset-output-flow-control\ 110609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,\7fset-input-meta-mode\ 110643,321432
+DEFUN ("set-quit-char", Fset_quit_char,\7fset-quit-char\ 110694,322706
+DEFUN ("set-input-mode", Fset_input_mode,\7fset-input-mode\ 110729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,\7fcurrent-input-mode\ 110750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,\7fposn-at-x-y\ 110787,325837
+DEFUN ("posn-at-point", Fposn_at_point,\7fposn-at-point\ 110824,327060
+init_kboard \7f10861,328214
+allocate_kboard \7f10893,329284
+wipe_kboard \7f10909,329637
+delete_kboard \7f10917,329751
+init_keyboard \7f10942,330281
+struct event_head\7f11021,332696
+static const struct event_head head_table[\7fhead_table\ 111027,332747
+syms_of_keyboard \7f11045,333577
+keys_of_keyboard \7f11841,367115
+mark_kboards \7f11916,370434
+\f
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H\7f22,800
+#define DECLARE_GDB_SYM(\7f47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f49,1508
+# define DEFINE_GDB_SYMBOL_END(\7f50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f52,1625
+# define DEFINE_GDB_SYMBOL_END(\7f53,1702
+#undef min\7f57,1790
+#undef max\7f58,1801
+#define max(\7f59,1812
+#define min(\7f60,1854
+#define ARRAYELTS(\7f63,1936
+#define GCTYPEBITS \7f67,2079
+DEFINE_GDB_SYMBOL_BEGIN \7fGCTYPEBITS\ 166,2037
+# define NONPOINTER_BITS \7f78,2567
+# define NONPOINTER_BITS \7f80,2600
+typedef int EMACS_INT;\7f91,3023
+typedef unsigned int EMACS_UINT;\7f92,3046
+# define EMACS_INT_MAX \7f93,3079
+# define pI \7f94,3111
+typedef long int EMACS_INT;\7f96,3203
+typedef unsigned long EMACS_UINT;\7f97,3231
+# define EMACS_INT_MAX \7f98,3265
+# define pI \7f99,3298
+typedef long long int EMACS_INT;\7f103,3477
+typedef unsigned long long int EMACS_UINT;\7f104,3510
+# define EMACS_INT_MAX \7f105,3553
+# define pI \7f106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR \7f114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR \7f115,3840
+typedef size_t bits_word;\7f123,4165
+# define BITS_WORD_MAX \7f124,4191
+enum { BITS_PER_BITS_WORD \7f125,4223
+typedef unsigned char bits_word;\7f127,4290
+# define BITS_WORD_MAX \7f128,4323
+enum { BITS_PER_BITS_WORD \7f129,4386
+ BITS_PER_CHAR \7f136,4570
+ BITS_PER_SHORT \7f137,4605
+ BITS_PER_LONG \7f138,4657
+ BITS_PER_EMACS_INT \7f139,4712
+typedef intmax_t printmax_t;\7f148,5089
+typedef uintmax_t uprintmax_t;\7f149,5118
+# define pMd \7f150,5149
+# define pMu \7f151,5170
+typedef EMACS_INT printmax_t;\7f153,5197
+typedef EMACS_UINT uprintmax_t;\7f154,5227
+# define pMd \7f155,5259
+# define pMu \7f156,5278
+# define pD \7f165,5664
+# define pD \7f167,5709
+# define pD \7f169,5756
+# define pD \7f171,5779
+# define eassert(\7f200,7062
+# define eassume(\7f201,7140
+# define eassert(\7f208,7319
+# define eassume(\7f212,7450
+enum Lisp_Bits\7f239,8519
+#define GCALIGNMENT \7f243,8647
+ VALBITS \7f246,8742
+ INTTYPEBITS \7f249,8838
+ FIXNUM_BITS \7f252,8945
+#define VAL_MAX \7f263,9327
+#define USE_LSB_TAG \7f271,9777
+DEFINE_GDB_SYMBOL_BEGIN \7fUSE_LSB_TAG\ 1270,9733
+# define alignas(\7f281,10077
+# define GCALIGNED \7f288,10227
+# define GCALIGNED \7f290,10292
+# define lisp_h_XLI(\7f327,11642
+# define lisp_h_XIL(\7f328,11673
+# define lisp_h_XLI(\7f330,11724
+# define lisp_h_XIL(\7f331,11751
+#define lisp_h_CHECK_LIST_CONS(\7f333,11785
+#define lisp_h_CHECK_NUMBER(\7f334,11856
+#define lisp_h_CHECK_SYMBOL(\7f335,11927
+#define lisp_h_CHECK_TYPE(\7f336,11996
+#define lisp_h_CONSP(\7f338,12107
+#define lisp_h_EQ(\7f339,12156
+#define lisp_h_FLOATP(\7f340,12201
+#define lisp_h_INTEGERP(\7f341,12252
+#define lisp_h_MARKERP(\7f342,12333
+#define lisp_h_MISCP(\7f343,12408
+#define lisp_h_NILP(\7f344,12457
+#define lisp_h_SET_SYMBOL_VAL(\7f345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(\7f347,12607
+#define lisp_h_SYMBOL_VAL(\7f348,12671
+#define lisp_h_SYMBOLP(\7f350,12772
+#define lisp_h_VECTORLIKEP(\7f351,12825
+#define lisp_h_XCAR(\7f352,12886
+#define lisp_h_XCDR(\7f353,12924
+#define lisp_h_XCONS(\7f354,12964
+#define lisp_h_XHASH(\7f356,13059
+#define lisp_h_XPNTR(\7f357,13093
+# define lisp_h_check_cons_list(\7f360,13221
+# define lisp_h_make_number(\7f363,13289
+# define lisp_h_XFASTINT(\7f365,13392
+# define lisp_h_XINT(\7f366,13429
+# define lisp_h_XSYMBOL(\7f367,13478
+# define lisp_h_XTYPE(\7f371,13631
+# define lisp_h_XUNTAG(\7f372,13696
+# define XLI(\7f381,14086
+# define XIL(\7f382,14117
+# define CHECK_LIST_CONS(\7f383,14148
+# define CHECK_NUMBER(\7f384,14209
+# define CHECK_SYMBOL(\7f385,14258
+# define CHECK_TYPE(\7f386,14307
+# define CONSP(\7f387,14382
+# define EQ(\7f388,14417
+# define FLOATP(\7f389,14452
+# define INTEGERP(\7f390,14489
+# define MARKERP(\7f391,14530
+# define MISCP(\7f392,14569
+# define NILP(\7f393,14604
+# define SET_SYMBOL_VAL(\7f394,14637
+# define SYMBOL_CONSTANT_P(\7f395,14700
+# define SYMBOL_VAL(\7f396,14763
+# define SYMBOLP(\7f397,14812
+# define VECTORLIKEP(\7f398,14851
+# define XCAR(\7f399,14898
+# define XCDR(\7f400,14931
+# define XCONS(\7f401,14964
+# define XHASH(\7f402,14999
+# define XPNTR(\7f403,15034
+# define check_cons_list(\7f405,15097
+# define make_number(\7f408,15176
+# define XFASTINT(\7f409,15224
+# define XINT(\7f410,15266
+# define XSYMBOL(\7f411,15300
+# define XTYPE(\7f412,15340
+# define XUNTAG(\7f413,15376
+#define LISP_MACRO_DEFUN(\7f421,15672
+#define LISP_MACRO_DEFUN_VOID(\7f425,15845
+#define INTMASK \7f437,16289
+#define case_Lisp_Int \7f438,16342
+#define ENUM_BF(\7f445,16681
+#define ENUM_BF(\7f447,16722
+enum Lisp_Type\7f451,16763
+ Lisp_Symbol \7f454,16851
+ Lisp_Misc \7f458,16993
+ Lisp_Int0 \7f461,17067
+ Lisp_Int1 \7f462,17086
+ Lisp_String \7f466,17264
+ Lisp_Vectorlike \7f472,17543
+ Lisp_Cons \7f475,17632
+ Lisp_Float \7f477,17670
+enum Lisp_Misc_Type\7f485,18016
+ Lisp_Misc_Free \7f487,18040
+ Lisp_Misc_Marker,\7f488,18069
+ Lisp_Misc_Overlay,\7f489,18091
+ Lisp_Misc_Save_Value,\7f490,18114
+ Lisp_Misc_Finalizer,\7f491,18140
+ Lisp_Misc_Float,\7f494,18275
+ Lisp_Misc_Limit\7f496,18359
+enum Lisp_Fwd_Type\7f502,18543
+ Lisp_Fwd_Int,\7f504,18566
+ Lisp_Fwd_Bool,\7f505,18619
+ Lisp_Fwd_Obj,\7f506,18670
+ Lisp_Fwd_Buffer_Obj,\7f507,18729
+ Lisp_Fwd_Kboard_Obj \7f508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;\7f567,21781
+#define LISP_INITIALLY(\7f569,21827
+#undef CHECK_LISP_OBJECT_TYPE\7f571,21858
+enum CHECK_LISP_OBJECT_TYPE \7f572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f572,21888
+typedef EMACS_INT Lisp_Object;\7f577,22064
+#define LISP_INITIALLY(\7f578,22095
+enum CHECK_LISP_OBJECT_TYPE \7f579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f579,22125
+#define LISP_INITIALLY_ZERO \7f582,22226
+enum symbol_interned\7f639,24199
+ SYMBOL_UNINTERNED \7f641,24222
+ SYMBOL_INTERNED \7f642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY \7f643,24270
+enum symbol_redirect\7f646,24315
+ SYMBOL_PLAINVAL \7f648,24338
+ SYMBOL_VARALIAS \7f649,24362
+ SYMBOL_LOCALIZED \7f650,24386
+ SYMBOL_FORWARDED \7f651,24410
+struct Lisp_Symbol\7f654,24437
+ ENUM_BF \7f663,24793
+#define EXFUN(\7f707,26252
+#define DEFUN_ARGS_MANY \7f712,26446
+#define DEFUN_ARGS_UNEVALLED \7f713,26498
+#define DEFUN_ARGS_0 \7f714,26541
+#define DEFUN_ARGS_1 \7f715,26569
+#define DEFUN_ARGS_2 \7f716,26604
+#define DEFUN_ARGS_3 \7f717,26652
+#define DEFUN_ARGS_4 \7f718,26713
+#define DEFUN_ARGS_5 \7f719,26787
+#define DEFUN_ARGS_6 \7f721,26880
+#define DEFUN_ARGS_7 \7f723,26986
+#define DEFUN_ARGS_8 \7f725,27105
+#define TAG_PTR(\7f729,27296
+#define TAG_SYMOFFSET(\7f734,27543
+#define XLI_BUILTIN_LISPSYM(\7f741,27842
+#define DEFINE_LISP_SYMBOL(\7f746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS \7f755,28572
+LISP_MACRO_DEFUN \7f762,28777
+# define ARRAY_MARK_FLAG \7f768,29024
+# define PSEUDOVECTOR_FLAG \7f774,29267
+enum pvec_type\7f780,29568
+ PVEC_NORMAL_VECTOR,\7f782,29585
+ PVEC_FREE,\7f783,29607
+ PVEC_PROCESS,\7f784,29620
+ PVEC_FRAME,\7f785,29636
+ PVEC_WINDOW,\7f786,29650
+ PVEC_BOOL_VECTOR,\7f787,29665
+ PVEC_BUFFER,\7f788,29685
+ PVEC_HASH_TABLE,\7f789,29700
+ PVEC_TERMINAL,\7f790,29719
+ PVEC_WINDOW_CONFIGURATION,\7f791,29736
+ PVEC_SUBR,\7f792,29765
+ PVEC_OTHER,\7f793,29778
+ PVEC_COMPILED,\7f795,29856
+ PVEC_CHAR_TABLE,\7f796,29873
+ PVEC_SUB_CHAR_TABLE,\7f797,29892
+ PVEC_FONT \7f798,29915
+enum More_Lisp_Bits\7f801,29991
+ PSEUDOVECTOR_SIZE_BITS \7f808,30382
+ PSEUDOVECTOR_SIZE_MASK \7f809,30415
+ PSEUDOVECTOR_REST_BITS \7f813,30625
+ PSEUDOVECTOR_REST_MASK \7f814,30658
+ PSEUDOVECTOR_AREA_BITS \7f818,30823
+ PVEC_TYPE_MASK \7f819,30901
+# define VALMASK \7f829,31302
+DEFINE_GDB_SYMBOL_BEGIN \7fVALMASK\ 1828,31257
+#define MOST_POSITIVE_FIXNUM \7f834,31532
+#define MOST_NEGATIVE_FIXNUM \7f835,31592
+XINT \7f874,32684
+XFASTINT \7f889,33035
+XSYMBOL \7f899,33263
+XTYPE \7f910,33481
+XUNTAG \7f918,33661
+LISP_MACRO_DEFUN \7f927,33857
+LISP_MACRO_DEFUN \7f940,34242
+#define FIXNUM_OVERFLOW_P(\7f958,34855
+LISP_MACRO_DEFUN \7fFIXNUM_OVERFLOW_P\ 1952,34632
+LISP_MACRO_DEFUN \7f970,35171
+XSTRING \7f980,35391
+#define SYMBOL_INDEX(\7f988,35575
+XFLOAT \7f991,35636
+XPROCESS \7f1000,35778
+XWINDOW \7f1007,35895
+XTERMINAL \7f1014,36012
+XSUBR \7f1021,36134
+XBUFFER \7f1028,36245
+XCHAR_TABLE \7f1035,36369
+XSUB_CHAR_TABLE \7f1042,36506
+XBOOL_VECTOR \7f1049,36648
+make_lisp_ptr \7f1058,36827
+make_lisp_symbol \7f1066,37013
+builtin_lisp_symbol \7f1074,37197
+#define XSETINT(\7f1079,37279
+#define XSETFASTINT(\7f1080,37325
+#define XSETCONS(\7f1081,37375
+#define XSETVECTOR(\7f1082,37435
+#define XSETSTRING(\7f1083,37503
+#define XSETSYMBOL(\7f1084,37567
+#define XSETFLOAT(\7f1085,37621
+#define XSETMISC(\7f1086,37683
+#define XSETPVECTYPE(\7f1090,37772
+#define XSETPVECTYPESIZE(\7f1092,37888
+#define XSETPSEUDOVECTOR(\7f1099,38185
+#define XSETTYPED_PSEUDOVECTOR(\7f1105,38369
+#define XSETWINDOW_CONFIGURATION(\7f1110,38579
+#define XSETPROCESS(\7f1112,38675
+#define XSETWINDOW(\7f1113,38741
+#define XSETTERMINAL(\7f1114,38805
+#define XSETSUBR(\7f1115,38873
+#define XSETCOMPILED(\7f1116,38933
+#define XSETBUFFER(\7f1117,39001
+#define XSETCHAR_TABLE(\7f1118,39065
+#define XSETBOOL_VECTOR(\7f1119,39137
+#define XSETSUB_CHAR_TABLE(\7f1120,39211
+XINTPTR \7f1128,39581
+make_pointer_integer \7f1134,39661
+LISP_MACRO_DEFUN_VOID \7f1143,39826
+typedef struct interval *INTERVAL;\7fINTERVAL\ 11149,39987
+xcar_addr \7f1174,40760
+xcdr_addr \7f1179,40837
+LISP_MACRO_DEFUN \7f1185,40931
+XSETCDR \7f1198,41307
+CAR \7f1205,41457
+CDR \7f1212,41591
+CAR_SAFE \7f1221,41791
+CDR_SAFE \7f1226,41877
+STRING_MULTIBYTE \7f1243,42250
+#define STRING_BYTES_BOUND \7f1261,43057
+#define STRING_SET_UNIBYTE(\7f1265,43201
+#define STRING_SET_MULTIBYTE(\7f1275,43516
+SDATA \7f1286,43830
+SSDATA \7f1291,43908
+SREF \7f1297,44037
+SSET \7f1302,44128
+SCHARS \7f1307,44242
+STRING_BYTES \7f1316,44415
+SBYTES \7f1326,44595
+STRING_SET_CHARS \7f1331,44681
+struct vectorlike_header\7f1343,45232
+struct Lisp_Vector\7f1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR\7f1378,46681
+struct Lisp_Bool_Vector\7f1384,46864
+bool_vector_size \7f1399,47385
+bool_vector_data \7f1407,47523
+bool_vector_uchar_data \7f1413,47617
+bool_vector_words \7f1421,47803
+bool_vector_bytes \7f1428,47998
+bool_vector_bitref \7f1437,48238
+bool_vector_ref \7f1445,48478
+bool_vector_set \7f1453,48618
+ header_size \7f1471,49047
+ bool_header_size \7f1472,49106
+ word_size \7f1473,49171
+AREF \7f1479,49284
+aref_addr \7f1485,49391
+ASIZE \7f1491,49501
+ASET \7f1497,49583
+gc_aset \7f1504,49742
+enum { NIL_IS_ZERO \7f1515,50269
+memclear \7f1520,50464
+#define VECSIZE(\7f1531,50762
+#define PSEUDOVECSIZE(\7f1538,51047
+#define UNSIGNED_CMP(\7f1546,51480
+#define ASCII_CHAR_P(\7f1552,51734
+enum CHARTAB_SIZE_BITS\7f1565,52489
+ CHARTAB_SIZE_BITS_0 \7f1567,52516
+ CHARTAB_SIZE_BITS_1 \7f1568,52545
+ CHARTAB_SIZE_BITS_2 \7f1569,52574
+ CHARTAB_SIZE_BITS_3 \7f1570,52603
+struct Lisp_Char_Table\7f1575,52672
+struct Lisp_Sub_Char_Table\7f1606,53752
+CHAR_TABLE_REF_ASCII \7f1628,54566
+CHAR_TABLE_REF \7f1648,55113
+CHAR_TABLE_SET \7f1658,55402
+struct Lisp_Subr\7f1670,55786
+enum char_table_specials\7f1692,56798
+ CHAR_TABLE_STANDARD_SLOTS \7f1697,56993
+ SUB_CHAR_TABLE_OFFSET \7f1701,57214
+CHAR_TABLE_EXTRA_SLOTS \7f1707,57377
+LISP_MACRO_DEFUN \7f1723,57921
+SYMBOL_BLV \7f1732,58181
+SYMBOL_FWD \7f1738,58316
+LISP_MACRO_DEFUN_VOID \7f1744,58428
+SET_SYMBOL_BLV \7f1754,58691
+SET_SYMBOL_FWD \7f1760,58850
+SYMBOL_NAME \7f1767,59001
+SYMBOL_INTERNED_P \7f1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P \7f1783,59299
+#define DEFSYM(\7f1796,59809
+LISP_MACRO_DEFUN \7fDEFSYM\ 11792,59630
+struct hash_table_test\7f1805,60062
+struct Lisp_Hash_Table\7f1823,60555
+XHASH_TABLE \7f1880,62531
+#define XSET_HASH_TABLE(\7f1885,62602
+HASH_TABLE_P \7f1889,62703
+HASH_KEY \7f1896,62860
+HASH_VALUE \7f1903,63040
+HASH_NEXT \7f1911,63254
+HASH_HASH \7f1918,63431
+HASH_INDEX \7f1926,63677
+HASH_TABLE_SIZE \7f1933,63826
+enum DEFAULT_HASH_SIZE \7f1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE \7f1940,63956
+static double const DEFAULT_REHASH_THRESHOLD \7f1946,64176
+static double const DEFAULT_REHASH_SIZE \7f1950,64299
+sxhash_combine \7f1956,64465
+SXHASH_REDUCE \7f1964,64648
+struct Lisp_Misc_Any \7f1971,64806
+ ENUM_BF \7f1973,64866
+struct Lisp_Marker\7f1978,64980
+ ENUM_BF \7f1980,65001
+struct Lisp_Overlay\7f2021,66841
+ ENUM_BF \7f2034,67349
+ SAVE_UNUSED,\7f2047,67644
+ SAVE_INTEGER,\7f2048,67661
+ SAVE_FUNCPOINTER,\7f2049,67679
+ SAVE_POINTER,\7f2050,67701
+ SAVE_OBJECT\7f2051,67719
+enum { SAVE_SLOT_BITS \7f2055,67804
+enum { SAVE_VALUE_SLOTS \7f2058,67901
+enum { SAVE_TYPE_BITS \7f2062,68009
+enum Lisp_Save_Type\7f2064,68075
+ SAVE_TYPE_INT_INT \7f2066,68099
+ SAVE_TYPE_INT_INT_INT\7f2067,68172
+ SAVE_TYPE_OBJ_OBJ \7f2069,68262
+ SAVE_TYPE_OBJ_OBJ_OBJ \7f2070,68333
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ\7f2071,68414
+ SAVE_TYPE_PTR_INT \7f2073,68509
+ SAVE_TYPE_PTR_OBJ \7f2074,68582
+ SAVE_TYPE_PTR_PTR \7f2075,68654
+ SAVE_TYPE_FUNCPTR_PTR_OBJ\7f2076,68727
+ SAVE_TYPE_MEMORY \7f2080,68885
+typedef void (*voidfuncptr)\7fvoidfuncptr\ 12108,69839
+struct Lisp_Save_Value\7f2110,69876
+ ENUM_BF \7f2112,69903
+save_type \7f2134,70755
+XSAVE_POINTER \7f2143,70985
+set_save_pointer \7f2149,71147
+XSAVE_FUNCPOINTER \7f2155,71329
+XSAVE_INTEGER \7f2164,71549
+set_save_integer \7f2170,71711
+XSAVE_OBJECT \7f2179,71932
+struct Lisp_Finalizer\7f2186,72109
+struct Lisp_Free\7f2201,72584
+ ENUM_BF \7f2203,72605
+union Lisp_Misc\7f2212,72885
+XMISC \7f2223,73184
+XMISCANY \7f2229,73273
+XMISCTYPE \7f2236,73382
+XMARKER \7f2242,73470
+XOVERLAY \7f2249,73585
+XSAVE_VALUE \7f2256,73706
+XFINALIZER \7f2263,73835
+struct Lisp_Intfwd\7f2274,74120
+struct Lisp_Boolfwd\7f2284,74414
+struct Lisp_Objfwd\7f2294,74705
+struct Lisp_Buffer_Objfwd\7f2302,74937
+struct Lisp_Buffer_Local_Value\7f2334,76473
+struct Lisp_Kboard_Objfwd\7f2362,77732
+union Lisp_Fwd\7f2368,77841
+XFWDTYPE \7f2378,78087
+XBUFFER_OBJFWD \7f2384,78183
+struct Lisp_Float\7f2391,78319
+XFLOAT_DATA \7f2401,78437
+ IEEE_FLOATING_POINT\7f2415,78946
+#define _UCHAR_T\7f2423,79269
+typedef unsigned char UCHAR;\7f2424,79286
+enum Lisp_Compiled\7f2429,79369
+ COMPILED_ARGLIST \7f2431,79392
+ COMPILED_BYTECODE \7f2432,79418
+ COMPILED_CONSTANTS \7f2433,79445
+ COMPILED_STACK_DEPTH \7f2434,79473
+ COMPILED_DOC_STRING \7f2435,79503
+ COMPILED_INTERACTIVE \7f2436,79532
+enum char_bits\7f2443,79834
+ CHAR_ALT \7f2445,79853
+ CHAR_SUPER \7f2446,79879
+ CHAR_HYPER \7f2447,79907
+ CHAR_SHIFT \7f2448,79935
+ CHAR_CTL \7f2449,79963
+ CHAR_META \7f2450,79989
+ CHAR_MODIFIER_MASK \7f2452,80017
+ CHARACTERBITS \7f2457,80212
+LISP_MACRO_DEFUN \7f2462,80270
+NATNUMP \7f2470,80412
+RANGED_INTEGERP \7f2476,80493
+#define TYPE_RANGED_INTEGERP(\7f2481,80615
+LISP_MACRO_DEFUN \7f2486,80800
+VECTORP \7f2500,81273
+OVERLAYP \7f2505,81376
+SAVE_VALUEP \7f2510,81475
+FINALIZERP \7f2516,81581
+AUTOLOADP \7f2522,81685
+BUFFER_OBJFWDP \7f2528,81776
+PSEUDOVECTOR_TYPEP \7f2534,81874
+PSEUDOVECTORP \7f2542,82127
+WINDOW_CONFIGURATIONP \7f2558,82479
+PROCESSP \7f2564,82589
+WINDOWP \7f2570,82673
+TERMINALP \7f2576,82755
+SUBRP \7f2582,82841
+COMPILEDP \7f2588,82919
+BUFFERP \7f2594,83005
+CHAR_TABLE_P \7f2600,83087
+SUB_CHAR_TABLE_P \7f2606,83178
+BOOL_VECTOR_P \7f2612,83277
+FRAMEP \7f2618,83370
+IMAGEP \7f2625,83487
+ARRAYP \7f2632,83592
+CHECK_LIST \7f2638,83711
+LISP_MACRO_DEFUN_VOID \7f2643,83792
+CHECK_STRING_CAR \7f2653,84089
+CHECK_CONS \7f2658,84193
+CHECK_VECTOR \7f2663,84273
+CHECK_BOOL_VECTOR \7f2668,84359
+CHECK_VECTOR_OR_STRING \7f2674,84536
+CHECK_ARRAY \7f2683,84710
+CHECK_BUFFER \7f2688,84818
+CHECK_WINDOW \7f2693,84904
+CHECK_PROCESS \7f2699,85010
+CHECK_NATNUM \7f2705,85106
+#define CHECK_RANGED_INTEGER(\7f2710,85183
+#define CHECK_TYPE_RANGED_INTEGER(\7f2721,85566
+#define CHECK_NUMBER_COERCE_MARKER(\7f2729,85836
+XFLOATINT \7f2738,86089
+CHECK_NUMBER_OR_FLOAT \7f2744,86160
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(\7f2749,86259
+CHECK_NUMBER_CAR \7f2760,86669
+CHECK_NUMBER_CDR \7f2768,86791
+#define DEFUN(\7f2803,88386
+#define DEFUN(\7f2812,88854
+FUNCTIONP \7f2822,89209
+enum maxargs\7f2831,89404
+ MANY \7f2833,89421
+ UNEVALLED \7f2834,89436
+#define CALLMANY(\7f2838,89539
+#define CALLN(\7f2844,89892
+#define DEFVAR_LISP(\7f2869,91097
+#define DEFVAR_LISP_NOPRO(\7f2874,91269
+#define DEFVAR_BOOL(\7f2879,91451
+#define DEFVAR_INT(\7f2884,91624
+#define DEFVAR_BUFFER_DEFAULTS(\7f2890,91795
+#define DEFVAR_KBOARD(\7f2896,91999
+typedef jmp_buf sys_jmp_buf;\7f2906,92323
+# define sys_setjmp(\7f2907,92352
+# define sys_longjmp(\7f2908,92387
+typedef sigjmp_buf sys_jmp_buf;\7f2910,92459
+# define sys_setjmp(\7f2911,92491
+# define sys_longjmp(\7f2912,92531
+typedef jmp_buf sys_jmp_buf;\7f2916,92690
+# define sys_setjmp(\7f2917,92719
+# define sys_longjmp(\7f2918,92753
+enum specbind_tag \7f2943,93805
+ SPECPDL_UNWIND,\7f2944,93825
+ SPECPDL_UNWIND_PTR,\7f2945,93894
+ SPECPDL_UNWIND_INT,\7f2946,93945
+ SPECPDL_UNWIND_VOID,\7f2947,93993
+ SPECPDL_BACKTRACE,\7f2948,94047
+ SPECPDL_LET,\7f2949,94105
+ SPECPDL_LET_LOCAL,\7f2951,94235
+ SPECPDL_LET_DEFAULT \7f2952,94292
+union specbinding\7f2955,94364
+ ENUM_BF \7f2957,94386
+ ENUM_BF \7f2959,94443
+ ENUM_BF \7f2964,94573
+ ENUM_BF \7f2969,94696
+ ENUM_BF \7f2974,94814
+ ENUM_BF \7f2978,94919
+ ENUM_BF \7f2983,95094
+enum handlertype \7f3021,96410
+enum handlertype { CATCHER,\7f3021,96410
+enum handlertype { CATCHER, CONDITION_CASE \7f3021,96410
+struct handler\7f3023,96457
+#define PUSH_HANDLER(\7f3053,97446
+#define QUIT \7f3101,99223
+#define QUITP \7f3112,99473
+struct gcpro\7f3132,100316
+#define GC_USE_GCPROS_AS_BEFORE \7f3171,101297
+#define GC_MAKE_GCPROS_NOOPS \7f3172,101332
+#define GC_MARK_STACK_CHECK_GCPROS \7f3173,101364
+#define GC_USE_GCPROS_CHECK_ZOMBIES \7f3174,101401
+#define GC_MARK_STACK \7f3177,101462
+#define BYTE_MARK_STACK \7f3181,101562
+#define GCPRO1(\7f3190,101833
+#define GCPRO2(\7f3191,101873
+#define GCPRO3(\7f3192,101939
+#define GCPRO4(\7f3194,102034
+#define GCPRO5(\7f3196,102154
+#define GCPRO6(\7f3198,102299
+#define GCPRO7(\7f3201,102474
+#define UNGCPRO \7f3202,102553
+#define GCPRO1(\7f3208,102653
+#define GCPRO2(\7f3212,102775
+#define GCPRO3(\7f3217,102967
+#define GCPRO4(\7f3223,103229
+#define GCPRO5(\7f3230,103560
+#define GCPRO6(\7f3238,103961
+#define GCPRO7(\7f3247,104431
+#define UNGCPRO \7f3257,104971
+#define GCPRO1(\7f3263,105065
+#define GCPRO2(\7f3269,105299
+#define GCPRO3(\7f3278,105717
+#define GCPRO4(\7f3289,106274
+#define GCPRO5(\7f3302,106972
+#define GCPRO6(\7f3317,107812
+#define GCPRO7(\7f3334,108793
+#define UNGCPRO \7f3353,109916
+#define RETURN_UNGCPRO(\7f3363,110183
+vcopy \7f3384,110657
+set_hash_key_slot \7f3393,110932
+set_hash_value_slot \7f3399,111071
+set_symbol_function \7f3408,111306
+set_symbol_plist \7f3414,111421
+set_symbol_next \7f3420,111524
+blv_found \7f3428,111697
+set_overlay_plist \7f3437,111880
+string_intervals \7f3445,112031
+set_string_intervals \7f3453,112153
+set_char_table_defalt \7f3462,112355
+set_char_table_purpose \7f3467,112467
+set_char_table_extras \7f3475,112636
+set_char_table_contents \7f3482,112845
+set_sub_char_table_contents \7f3489,113040
+enum Arith_Comparison \7f3497,113303
+ ARITH_EQUAL,\7f3498,113327
+ ARITH_NOTEQUAL,\7f3499,113342
+ ARITH_LESS,\7f3500,113360
+ ARITH_GRTR,\7f3501,113374
+ ARITH_LESS_OR_EQUAL,\7f3502,113388
+ ARITH_GRTR_OR_EQUAL\7f3503,113411
+#define INTEGER_TO_CONS(\7f3511,113762
+#define CONS_TO_INTEGER(\7f3529,114625
+enum { NEXT_ALMOST_PRIME_LIMIT \7f3573,116329
+extern EMACS_INT next_almost_prime \7f3574,116368
+enum constype \7f3739,123820
+enum constype {CONSTYPE_HEAP,\7fCONSTYPE_HEAP\ 13739,123820
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}\7fCONSTYPE_PURE\ 13739,123820
+list2i \7f3745,124010
+list3i \7f3751,124119
+list4i \7f3757,124258
+extern Lisp_Object make_formatted_string \7f3767,124634
+build_pure_c_string \7f3792,125662
+build_string \7f3801,125867
+make_uninit_vector \7f3820,126438
+make_uninit_sub_char_table \7f3833,126657
+#define ALLOCATE_PSEUDOVECTOR(\7f3850,127201
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(\7f3858,127537
+INLINE void \7f3890,128943
+extern void *r_alloc \7fr_alloc\ 13895,129064
+#define FLOAT_TO_STRING_BUFSIZE \7f3927,130527
+intern \7f3968,132134
+intern_c_string \7f3974,132222
+extern _Noreturn void error \7f4034,135601
+fast_string_match_ignore_case \7f4136,140089
+INLINE void fixup_locale \7f4241,143854
+INLINE void synchronize_system_messages_locale \7f4242,143889
+INLINE void synchronize_system_time_locale \7f4243,143946
+#define IS_DAEMON \7f4257,144419
+#define DAEMON_RUNNING \7f4258,144459
+#define IS_DAEMON \7f4261,144558
+#define DAEMON_RUNNING \7f4262,144603
+# define WAIT_READING_MAX \7f4281,145422
+# define WAIT_READING_MAX \7f4283,145494
+extern _Noreturn void emacs_abort \7f4374,148386
+egetenv \7f4532,152809
+#define eabs(\7f4545,153305
+#define make_fixnum_or_float(\7f4550,153438
+enum MAX_ALLOCA \7f4556,153689
+enum MAX_ALLOCA { MAX_ALLOCA \7f4556,153689
+extern void *record_xmalloc \7frecord_xmalloc\ 14558,153734
+#define USE_SAFE_ALLOCA \7f4560,153800
+#define AVAIL_ALLOCA(\7f4564,153933
+#define SAFE_ALLOCA(\7f4568,154044
+#define SAFE_NALLOCA(\7f4576,154385
+#define SAFE_ALLOCA_STRING(\7f4590,154861
+#define SAFE_FREE(\7f4598,155113
+#define SAFE_ALLOCA_LISP(\7f4625,155691
+# define USE_STACK_LISP_OBJECTS \7f4652,156813
+# undef USE_STACK_LISP_OBJECTS\7f4658,156979
+# define USE_STACK_LISP_OBJECTS \7f4659,157010
+enum { defined_GC_CHECK_STRING_BYTES \7f4663,157085
+enum { defined_GC_CHECK_STRING_BYTES \7f4665,157138
+union Aligned_Cons\7f4670,157272
+union Aligned_String\7f4676,157352
+ USE_STACK_CONS \7f4689,157707
+ USE_STACK_STRING \7f4691,157813
+#define STACK_CONS(\7f4699,158150
+#define AUTO_CONS_EXPR(\7f4701,158247
+#define AUTO_CONS(\7f4709,158610
+#define AUTO_LIST1(\7f4710,158681
+#define AUTO_LIST2(\7f4712,158789
+#define AUTO_LIST3(\7f4716,158944
+#define AUTO_LIST4(\7f4720,159119
+# define verify_ascii(\7f4732,159510
+#define AUTO_STRING(\7f4740,159818
+#define FOR_EACH_TAIL(\7f4752,160282
+#define FOR_EACH_ALIST_VALUE(\7f4766,160773
+maybe_gc \7f4774,161060
+functionp \7f4784,161299
+\f
+c-src/machsyscalls.c,23
+#define SYSCALL(\7f6,113
+\f
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,\7f1,0
+SYSCALL (mach_reply_port,\7f13,314
+SYSCALL (mach_thread_self,\7f18,377
+SYSCALL (mach_task_self,\7f23,441
+SYSCALL (mach_host_self,\7f28,503
+\f
+c-src/h.h,1850
+ ELEM_I/\7fELEM_I\ 13,15
+} Fails_t;\7f5,85
+typedef void Lang_function \7f6,96
+typedef struct tpcmd\7f8,147
+#define ggg \7f10,170
+tpcmd;\7f15,209
+typedef struct foobar2_ \7f16,216
+} foobar2;\7f20,307
+ DEVICE_SWP,\7f23,333
+ DEVICE_LAST\7f24,349
+} bsp_DevId;\7f25,365
+ struct constant_args \7f27,394
+} args;\7f30,457
+typedef int *regset;\7fregset\ 131,465
+typedef int INT;\7f32,486
+typedef union abc\7f33,503
+} ghi1;\7f36,534
+typedef union abc \7f37,542
+} ghi2;\7f39,573
+typedef struct a \7f40,581
+} b;\7f41,600
+#define c(\7f42,605
+typedef struct an_extern_linkage *an_extern_linkage_ptr;\7fan_extern_linkage_ptr\ 143,619
+typedef struct an_extern_linkage \7f44,676
+} an_extern_linkage;\7f56,1054
+typedef struct pollfd pfdset[\7fpfdset\ 157,1075
+typedef union rtunion_def\7f58,1119
+ } womboid \7f63,1206
+typedef union rtunion_def\7f64,1220
+womboid\7f75,1330
+enum {dog,\7fdog\ 181,1416
+enum {dog, cat}\7fcat\ 181,1416
+enum {dog, cat} animals;\7f81,1416
+typedef void (_CALLBACK_ *signal_handler)\7fsignal_handler\ 182,1441
+typedef void (_CALLBACK_ *signal_handler1)\7fsignal_handler1\ 183,1489
+/* comment */ #define ANSIC\7f84,1538
+ #define ANSIC\7f85,1566
+typedef void (proc)\7f87,1588
+typedef void OperatorFun(\7f88,1612
+typedef int f(\7f89,1648
+struct my_struct \7f91,1691
+typedef struct my_struct my_typedef;\7f93,1713
+typedef RETSIGTYPE (*signal_handler_t)\7fsignal_handler_t\ 194,1750
+ Date 04 May 87 235311 PDT \7f96,1802
+typedef unsigned char unchar;\7f99,1880
+typedef int X,\7f100,1910
+typedef int X, Y,\7f100,1910
+typedef int X, Y, Z;\7f100,1910
+typedef mio mao;\7f101,1931
+typedef struct a \7f103,1966
+typedef struct a { } b;\7f103,1966
+typedef struct b\7f104,1990
+} c;\7f106,2009
+int extvar;\7f109,2053
+#define tag1\7f110,2065
+#define aaaaaa \7f111,2078
+#define bbbbbb\\7fbbbbbb\ 1113,2102
+#define cccccccccc\7f115,2125
+#define enter_critical_section \7f116,2144
+#define exit_critical_to_previous \7f117,2199
+#define UNDEFINED\7f118,2259
+struct re_pattern_buffer \7f119,2277
+\f
+cp-src/c.C,2094
+template <typename ipc3dIslandHierarchy,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,\7f1,0
+class CMultiChannelCSC19_3D\7f2,151
+ void execute(\7f11,493
+int main \7f25,1026
+double base \7f26,1088
+typedef struct s1 \7f32,1251
+} t1;\7f34,1287
+struct s2 \7f35,1293
+typedef struct s2 t2;\7f38,1324
+class A \7f39,1346
+ enum { rosso,\7f40,1356
+ enum { rosso, giallo,\7f40,1356
+ enum { rosso, giallo, verde \7f40,1356
+const A& A::operator+(\7foperator+\ 143,1431
+void operator+(\7f44,1467
+void operator -(\7foperator -\ 145,1495
+void operator int(\7foperator int\ 146,1524
+A<int>* f(\7f48,1556
+int f(\7f49,1571
+int A<int>::f(\7ff\ 150,1590
+A<float,B<int> > A<B<float>,int>::f(\7ff\ 151,1618
+template <class C, int n> class AT \7f52,1668
+class AU \7f53,1716
+class B<\7fB\ 154,1735
+class B<int> { void f(\7f54,1735
+const A::B::T& abt \7f55,1766
+class A \7f56,1792
+class A { class B \7f56,1792
+class A \7f57,1827
+ A operator+(\7f59,1861
+is_muldiv_operation(\7f61,1888
+domain foo \7f68,1956
+ void f(\7f69,1969
+void A::A(\7fA\ 172,1990
+struct A \7f73,2005
+struct B \7f74,2023
+void B::B(\7fB\ 175,2042
+void BE_Node::BE_Node(\7fBE_Node\ 176,2057
+class BE_Node \7f77,2084
+struct foo \7f79,2103
+class test \7f86,2157
+ int f(\7f87,2170
+ int ff(\7f89,2232
+ int g(\7f90,2255
+class AST_Root \7f92,2279
+AST_ConcreteType::AST_ConcreteType(\7f99,2394
+AST_Array::AST_Array(\7f107,2533
+ void f(\7f115,2734
+struct A \7f117,2754
+A::~A(\7f~A\ 1120,2778
+struct B \7f122,2790
+ ~B(\7f123,2801
+enum {dog,\7fdog\ 1126,2818
+enum {dog, cat}\7fcat\ 1126,2818
+enum {dog, cat} animals;\7f126,2818
+struct {int teats;} cow;\7f127,2843
+class Boo \7f129,2869
+ enum {dog,\7fdog\ 1130,2881
+ enum {dog, cat}\7fcat\ 1130,2881
+ foo(\7f133,2955
+ Boo(\7f137,2996
+Boo::Boo(\7f141,3071
+typedef int should_see_this_one_enclosed_in_extern_C;\7f149,3156
+typedef int (*should_see_this_function_pointer)\7fshould_see_this_function_pointer\ 1153,3229
+typedef int should_see_this_array_type[\7fshould_see_this_array_type\ 1156,3311
+\f
+cp-src/x.cc,63
+class XX\7f1,0
+XX::foo(\7ffoo\ 19,60
+XX::bar(\7fbar\ 115,95
+main(\7f21,126
+\f
+cp-src/burton.cpp,124
+::dummy::dummy test::dummy1(\7fdummy1\ 11,0
+::dummy::dummy test::dummy2(\7fdummy2\ 16,64
+::dummy::dummy test::dummy3(\7fdummy3\ 111,143
+\f
+cp-src/functions.cpp,778
+void Date::setDate \7fsetDate\ 15,148
+void Date::plus \7fplus\ 132,939
+void Date::minus \7fminus\ 142,1229
+void Date::shift \7fshift\ 152,1407
+Date & Date::operator = \7foperator =\ 162,1628
+Date & Date::operator += \7foperator +=\ 169,1789
+Date & Date::operator -= \7foperator -=\ 178,1939
+Date & Date::operator ++ \7foperator ++\ 187,2080
+Date & Date::operator -- \7foperator --\ 196,2216
+int Date::operator - \7foperator -\ 1104,2331
+int Date::operator < \7foperator <\ 1112,2483
+int Date::operator > \7foperator >\ 1116,2557
+int Date::operator == \7foperator ==\ 1120,2631
+ostream& operator << \7foperator <<\ 1124,2707
+istream& operator >> \7foperator >>\ 1133,2943
+bool isLeap \7f159,3543
+bool isHoliday \7f163,3629
+void asort(\7f173,3865
+void ReadVacation \7f186,4064
+void Debug \7f201,4523
+int WorkingDays(\7f211,4867
+Date StartDay(\7f226,5129
+\f
+cp-src/MDiagArray2.h,482
+#define octave_MDiagArray2_h \7f29,870
+#undef LTGT\7f35,967
+#define LTGT\7f39,1031
+#define LTGT \7f42,1051
+class MDiagArray2 \7f78,2022
+ MDiagArray2 \7f82,2077
+ MDiagArray2 \7f86,2154
+ MDiagArray2 \7f87,2198
+ MDiagArray2 \7f88,2254
+ MDiagArray2 \7f89,2329
+ MDiagArray2 \7f90,2387
+ MDiagArray2 \7f91,2450
+ ~MDiagArray2 \7f93,2515
+ MDiagArray2<T>& operator = \7foperator =\ 195,2542
+ operator MArray2<T> \7foperator MArray2<T>\ 1101,2667
+#undef LTGT\7f144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(\7f146,3887
+\f
+cp-src/Range.h,275
+#define octave_Range_h \7f24,765
+Range\7f35,891
+ Range \7f39,909
+ Range \7f42,995
+ Range \7f46,1130
+ Range \7f50,1248
+ double base \7f54,1376
+ double limit \7f55,1425
+ double inc \7f56,1475
+ int nelem \7f57,1523
+ void set_base \7f68,1728
+ void set_limit \7f69,1774
+ void set_inc \7f70,1821
+\f
+cp-src/screen.cpp,228
+unsigned char cursor_x,\7f15,548
+unsigned char cursor_x, cursor_y;\7f15,548
+static union REGS regs;\7f16,582
+void goto_xy(\7f18,607
+void hide_cursor(\7f27,774
+void cursor_position(\7f32,836
+void clear_screen(\7f41,997
+void write_xyc(\7f55,1247
+\f
+cp-src/screen.hpp,414
+#define __COLORS\7f9,401
+enum COLORS \7f11,419
+ BLACK,\7f12,433
+ BLUE,\7f13,471
+ GREEN,\7f14,481
+ CYAN,\7f15,492
+ RED,\7f16,502
+ MAGENTA,\7f17,511
+ BROWN,\7f18,524
+ LIGHTGRAY,\7f19,535
+ DARKGRAY,\7f20,550
+ LIGHTBLUE,\7f21,589
+ LIGHTGREEN,\7f22,604
+ LIGHTCYAN,\7f23,620
+ LIGHTRED,\7f24,635
+ LIGHTMAGENTA,\7f25,649
+ YELLOW,\7f26,667
+ WHITE\7f27,679
+#define SCREEN_FP(\7f31,700
+#define SCREEN_START \7f33,795
+\f
+cp-src/conway.cpp,288
+#define max(\7f12,357
+#define min(\7f13,393
+const int num_rows \7f15,430
+const int num_columns \7f16,470
+class site *field_of_play[\7ffield_of_play\ 118,499
+int site::total_surrounding(\7ftotal_surrounding\ 120,550
+void display(\7f37,958
+void glider(\7f50,1239
+void traffic_light(\7f59,1478
+void main(\7f67,1633
+\f
+cp-src/conway.hpp,164
+class site:\7fsite\ 15,235
+ site(\7f10,344
+ char read(\7f12,410
+ void set(\7f13,444
+ void clear(\7f14,478
+ void compute_next_state(\7f15,514
+ void step(\7f22,717
+\f
+cp-src/clheir.cpp,359
+const int max_num_generic_objects \7f9,298
+generic_object * object_registry[\7fobject_registry\ 110,340
+void init_registry(\7f12,400
+void step_everybody(\7f19,527
+void discrete_location::clear_neighbors(\7fclear_neighbors\ 131,852
+generic_object::generic_object(\7fgeneric_object\ 136,981
+generic_object::~generic_object(\7f~generic_object\ 148,1255
+void agent::move(\7fmove\ 153,1353
+\f
+cp-src/clheir.hpp,423
+class generic_object\7f13,520
+ virtual void compute_next_state(\7f21,843
+ virtual void step(\7f22,889
+const int max_num_directions \7f31,1220
+class location:\7flocation\ 133,1290
+ location(\7f43,1643
+class irregular_location:\7firregular_location\ 147,1687
+ irregular_location(\7f51,1763
+class discrete_location:\7fdiscrete_location\ 156,1890
+ discrete_location(\7f62,2045
+ void assign_neighbor(\7f66,2185
+class agent:\7fagent\ 175,2509
+\f
+cp-src/fail.C,294
+struct A \7f7,263
+ struct B \7f8,274
+ struct C \7f9,289
+ C(\7f11,318
+ operator int(\7foperator int\ 112,342
+ typedef C T;\7f14,389
+ typedef B T2;\7f16,414
+class A \7f23,453
+ class B \7f24,463
+ class C \7f25,474
+ int f(\7f26,488
+int A::B::f(\7ff\ 131,521
+main(\7f37,571
+ class D \7f41,622
+ D(\7f43,659
+\f
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch \7f1,0
+(defalias 'pending-delete-mode \7fpending-delete-mode\ 15,102
+(defalias (quote explicitly-quoted-pending-delete-mode)\7f8,175
+\f
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name \7f34,1034
+(defgroup etags \7f43,1498
+(defcustom tags-case-fold-search \7f47,1566
+(defcustom tags-table-list \7f59,2051
+(defcustom tags-compression-info-list\7f69,2449
+(defcustom tags-add-tables \7f88,3231
+(defcustom tags-revert-without-query \7f98,3627
+(defvar tags-table-computed-list \7f103,3778
+(defvar tags-table-computed-list-for \7f112,4262
+(defvar tags-table-list-pointer \7f117,4510
+(defvar tags-table-list-started-at \7f121,4701
+(defvar tags-table-set-list \7f124,4821
+(defcustom find-tag-hook \7f129,5000
+(defcustom find-tag-default-function \7f137,5263
+(define-obsolete-variable-alias 'find-tag-marker-ring-length\7ffind-tag-marker-ring-length\ 1145,5602
+(defcustom tags-tag-face \7f148,5699
+(defcustom tags-apropos-verbose \7f154,5834
+(defcustom tags-apropos-additional-actions \7f160,5998
+(defvaralias 'find-tag-marker-ring \7ffind-tag-marker-ring\ 1183,6917
+(defvar default-tags-table-function \7f189,7097
+(defvar tags-location-ring \7f194,7323
+(defvar tags-table-files \7f201,7599
+(defvar tags-completion-table \7f206,7766
+(defvar tags-included-tables \7f209,7858
+(defvar next-file-list \7f212,7953
+(defvar tags-table-format-functions \7f217,8059
+(defvar file-of-tag-function \7f224,8440
+(defvar tags-table-files-function \7f228,8634
+(defvar tags-completion-table-function \7f230,8745
+(defvar snarf-tag-function \7f232,8840
+(defvar goto-tag-location-function \7f236,9049
+(defvar find-tag-regexp-search-function \7f239,9222
+(defvar find-tag-regexp-tag-order \7f241,9343
+(defvar find-tag-regexp-next-line-after-failure-p \7f243,9452
+(defvar find-tag-search-function \7f245,9572
+(defvar find-tag-tag-order \7f247,9679
+(defvar find-tag-next-line-after-failure-p \7f249,9774
+(defvar list-tags-function \7f251,9880
+(defvar tags-apropos-function \7f253,9968
+(defvar tags-included-tables-function \7f255,10062
+(defvar verify-tags-table-function \7f257,10181
+(defun initialize-new-tags-table \7f260,10292
+(defun tags-table-mode \7f276,10980
+(defun visit-tags-table \7f285,11245
+(defun tags-table-check-computed-list \7f321,12783
+(defun tags-table-extend-computed-list \7f360,14654
+(defun tags-expand-table-name \7f400,16367
+(defun tags-table-list-member \7f409,16710
+(defun tags-verify-table \7f421,17182
+(defun tags-table-including \7f470,19302
+(defun tags-next-table \7f522,21346
+(defun visit-tags-table-buffer \7f543,22203
+(defun tags-reset-tags-tables \7f712,28513
+(defun file-of-tag \7f731,29170
+(defun tags-table-files \7f740,29519
+(defun tags-included-tables \7f749,29869
+(defun tags-completion-table \7f755,30115
+(defun tags-lazy-completion-table \7f783,31309
+(defun tags-completion-at-point-function \7f799,31944
+(defun find-tag-tag \7f818,32694
+(defvar last-tag \7f837,33367
+(defun find-tag-interactive \7f840,33426
+(defvar find-tag-history \7f852,33841
+(defun find-tag-noselect \7f860,34011
+(defun find-tag \7f932,37125
+(defun find-tag-other-window \7f959,38341
+(defun find-tag-other-frame \7f1000,40269
+(defun find-tag-regexp \7f1025,41443
+(defalias 'pop-tag-mark \7fpop-tag-mark\ 11049,42605
+(defvar tag-lines-already-matched \7f1052,42656
+(defun find-tag-in-order \7f1055,42763
+(defun tag-find-file-of-tag-noselect \7f1167,47109
+(defun tag-find-file-of-tag \7f1200,48955
+(defun etags-recognize-tags-table \7f1208,49181
+(defun etags-verify-tags-table \7f1241,50812
+(defun etags-file-of-tag \7f1246,51010
+(defun etags-tags-completion-table \7f1256,51345
+(defun etags-snarf-tag \7f1286,52551
+(defun etags-goto-tag-location \7f1324,54120
+(defun etags-list-tags \7f1388,56563
+(defmacro tags-with-face \7f1423,57838
+(defun etags-tags-apropos-additional \7f1431,58171
+(defun etags-tags-apropos \7f1465,59408
+(defun etags-tags-table-files \7f1527,61617
+(defun etags-tags-included-tables \7f1542,62053
+(defun tags-recognize-empty-tags-table \7f1559,62593
+(defun tag-exact-file-name-match-p \7f1587,63739
+(defun tag-file-name-match-p \7f1596,64132
+(defun tag-exact-match-p \7f1609,64688
+(defun tag-implicit-name-match-p \7f1620,65256
+(defun tag-symbol-match-p \7f1633,65856
+(defun tag-word-match-p \7f1643,66292
+(defun tag-partial-file-name-match-p \7f1652,66690
+(defun tag-any-match-p \7f1662,67134
+(defun tag-re-match-p \7f1667,67318
+(defcustom tags-loop-revert-buffers \7f1675,67567
+(defun next-file \7f1685,67976
+(defvar tags-loop-operate \7f1760,70890
+(defvar tags-loop-scan\7f1763,70984
+(defun tags-loop-eval \7f1771,71313
+(defun tags-loop-continue \7f1782,71642
+(defun tags-search \7f1850,73948
+(defun tags-query-replace \7f1871,74774
+(defun tags-complete-tags-table-file \7f1896,75998
+(defun list-tags \7f1906,76377
+(defun tags-apropos \7f1934,77330
+(define-button-type 'tags-select-tags-table\7ftags-select-tags-table\ 11957,78156
+(defun select-tags-table \7f1964,78395
+(defvar select-tags-table-mode-map \7f2019,80522
+(define-derived-mode select-tags-table-mode \7f2030,80905
+(defun select-tags-table-select \7f2034,81089
+(defun select-tags-table-quit \7f2043,81455
+(defun complete-tag \7f2049,81610
+(defconst etags--xref-limit \7f2074,82551
+(defvar etags-xref-find-definitions-tag-order \7f2076,82586
+(defun etags-xref-find \7f2082,82876
+(defun etags--xref-find-definitions \7f2096,83405
+(defclass xref-etags-location \7f2129,85119
+(defun xref-make-etags-location \7f2135,85342
+(cl-defmethod xref-location-marker \7f2139,85497
+(cl-defmethod xref-location-line \7f2146,85741
+\f
+erl-src/gs_dialog.erl,98
+-define(VERSION\7f2,32
+behaviour_info(\7f51,2177
+show(\7f124,5458
+dialog_loop(\7f219,9529
+test(\7f252,10806
+\f
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+forth-src/test-forth.fth,408
+: a-forth-word \7f20,301
+99 constant a-forth-constant!\7f22,343
+55 value a-forth-value?\7f23,373
+create :a-forth-dictionary-entry\7f24,397
+defer #a-defer-word\7f27,460
+: (another-forth-word)\7f(another-forth-word\ 129,481
+ 9 field >field1\7f36,582
+ 5 field >field2\7f37,605
+constant (a-forth-constant\7f(a-forth-constant\ 138,628
+2000 buffer: #some-storage\7f41,657
+code assemby-code-word \7f43,685
+: a-forth-word \7f50,870
+\f
+go-src/test.go,48
+package main\7f1,0
+func say(\7f5,28
+func main(\7f9,72
+\f
+go-src/test1.go,119
+package main\7f1,0
+func (s str) PrintAdd(\7f17,136
+func (n intNumber) PrintAdd(\7f21,189
+func test(\7f25,248
+func main(\7f29,285
+\f
+html-src/softwarelibero.html,200
+Cos'è il software libero?\7f4,38
+Licenze d'uso di un programma\7flicenze\ 165,2500
+Sfatiamo alcuni miti\7f138,6118
+Il movimento open source\7foss\ 1191,8037
+Impatto pratico del software libero\7fimpatto\ 1231,10066
+\f
+html-src/index.shtml,104
+ \7f8,281
+In evidenza\7f15,447
+Comunicati e iniziative\7f32,976
+Ultime notizie dall'associazione\7f63,2030
+\f
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms\7f7,277
+Description\7falgorithms\ 110,481
+Generating the Data\7fgenalgorithm\ 148,1995
+Convolutionally\7fconalgorithm\ 155,2512
+Next\7fstatetable\ 1262,11587
+Output\7foutputtable\ 1350,13915
+Mapping the Channel Symbols\7fmapping\ 1433,16213
+Adding Noise to the\7faddnoise\ 1439,16607
+Quantizing the Received\7fquantizing\ 1469,19100
+\f
+html-src/software.html,439
+Francesco Potortì Software Page\7f9,280
+Software that I wrote for supporting my research activity\7fsimulation\ 136,1398
+MTG\7fmtg\ 141,1482
+Fracas\7ffracas\ 165,2624
+GaliLEO\7fgalileo\ 1101,4232
+Leasqr\7fleasqr\ 1114,4677
+Free software that I wrote for the GNU project or for my personal or work\7fgnu\ 1142,6065
+Etags\7fetags\ 1148,6180
+checkiso\7f161,6729
+cgrep\7f178,7547
+debian-bug.el\7fdebian-bug\ 1190,7979
+tcpdump\7f205,8564
+Links to interesting software\7flinks\ 1216,8891
+\f
+lua-src/allegro.lua,400
+local function get_layer_by_name \7f7,175
+local function count_layers \7f33,621
+function GetLayerByName \7f54,980
+function GetUniqueLayerName \7f65,1204
+function SelectLayer \7f76,1415
+function NewLayer \7f86,1773
+function NewLayerSet \7f144,3226
+function RemoveLayer \7f170,3750
+function MoveLayerTop \7f211,4767
+function MoveLayerBottom \7f223,5079
+function MoveLayerBefore \7f236,5457
+function MoveLayerAfter \7f258,6090
+\f
+lua-src/test.lua,442
+function Rectangle.getPos \7f2,15
+function Rectangle.getPos \7fgetPos\ 12,15
+function Circle.getPos \7f6,61
+function Circle.getPos \7fgetPos\ 16,61
+function Cube.data.getFoo \7f10,102
+function Cube.data.getFoo \7fgetFoo\ 110,102
+function Square.something:Bar \7f14,148
+function Square.something:Bar \7fBar\ 114,148
+ function test.me_22a(\7f22,241
+ function test.me_22a(\7fme_22a\ 122,241
+ local function test.me22b \7f25,297
+ local function test.me22b \7fme22b\ 125,297
+\f
+make-src/Makefile,2175
+LATEST=\7f1,0
+RELEASELIST=\7f2,10
+ADASRC=\7f4,104
+ASRC=\7f5,171
+CSRC=\7f6,197
+CPSRC=\7f10,423
+ELSRC=\7f13,614
+ERLSRC=\7f14,661
+FORTHSRC=\7f15,702
+FSRC=\7f16,726
+HTMLSRC=\7f17,776
+JAVASRC=\7f18,844
+LUASRC=\7f19,907
+MAKESRC=\7f20,926
+OBJCSRC=\7f21,943
+OBJCPPSRC=\7f22,999
+PASSRC=\7f23,1035
+PERLSRC=\7f24,1053
+PHPSRC=\7f25,1108
+PSSRC=\7f26,1156
+PROLSRC=\7f27,1173
+PYTSRC=\7f28,1210
+TEXSRC=\7f29,1227
+YSRC=\7f30,1282
+SRCS=\7f31,1325
+NONSRCS=\7f35,1577
+VHDLFLAGS=\7f37,1624
+COBOLFLAGS=\7f38,1827
+POSTSCRIPTFLAGS=\7f39,1889
+TCLFLAGS=\7f40,1943
+GETOPTOBJS=\7f42,2002
+RXINCLUDE=\7f43,2034
+REGEXOBJS=\7f44,2056
+CHECKOBJS=\7f46,2075
+CHECKFLAGS=\7f47,2105
+OBJS=\7f48,2145
+CPPFLAGS=\7f49,2190
+LDFLAGS=\7f50,2259
+WARNINGS=\7f51,2282
+CFLAGS=\7f52,2466
+FASTCFLAGS=\7f55,2530
+FASTCFLAGSWARN=\7f56,2591
+FILTER=\7f58,2641
+REGEX=\7f59,2695
+xx=\7f60,2741
+MAKE:\7fMAKE\ 162,2790
+RUN=\7f63,2825
+RUN=\7f64,2865
+OPTIONS=\7f65,2870
+ARGS=\7f66,2922
+infiles \7f68,2940
+quiettest:\7fquiettest\ 170,3002
+test:\7ftest\ 179,3409
+${CHECKOBJS}:\7f${CHECKOBJS}\ 188,3805
+checker:\7fchecker\ 190,3849
+standalone:\7fstandalone\ 196,4062
+prof:\7fprof\ 1101,4168
+fastetags:\7ffastetags\ 1104,4198
+fastctags:\7ffastctags\ 1108,4322
+staticetags:\7fstaticetags\ 1112,4446
+rsynctofly:\7frsynctofly\ 1116,4608
+rsyncfromfly:\7frsyncfromfly\ 1119,4698
+web ftp publish:\7fweb ftp publish\ 1122,4794
+release distrib:\7frelease distrib\ 1129,5115
+tags:\7ftags\ 1134,5255
+clean:\7fclean\ 1136,5267
+srclist:\7fsrclist\ 1139,5302
+regexfile:\7fregexfile\ 1143,5391
+/home/www/pub/etags.c.gz:\7f/home/www/pub/etags.c.gz\ 1149,5566
+/home/www/pub/software/unix/etags.tar.gz:\7f/home/www/pub/software/unix/etags.tar.gz\ 1156,5825
+regex.o:\7fregex.o\ 1159,6031
+getopt.o:\7fgetopt.o\ 1162,6086
+getopt1.o:\7fgetopt1.o\ 1165,6147
+etags:\7fetags\ 1168,6210
+ctags:\7fctags\ 1171,6299
+man manpage:\7fman manpage\ 1174,6396
+etags.1.man:\7fetags.1.man\ 1176,6422
+maintaining.info:\7fmaintaining.info\ 1179,6475
+TAGS:\7fTAGS\ 1182,6557
+%ediff:\7f%ediff\ 1185,6587
+oediff:\7foediff\ 1188,6677
+%cdiff:\7f%cdiff\ 1191,6764
+xdiff:\7fxdiff\ 1194,6854
+ETAGS:\7fETAGS\ 1197,6942
+ETAGS%:\7fETAGS%\ 1200,7012
+ETAGS13 ETAGS14 ETAGS15:\7fETAGS13 ETAGS14 ETAGS15\ 1203,7084
+ETAGS12:\7fETAGS12\ 1206,7216
+OTAGS:\7fOTAGS\ 1209,7304
+CTAGS:\7fCTAGS\ 1212,7369
+CTAGS%:\7fCTAGS%\ 1215,7443
+CTAGS13 CTAGS14 CTAGS15:\7fCTAGS13 CTAGS14 CTAGS15\ 1218,7545
+EXTAGS:\7fEXTAGS\ 1221,7680
+.PRECIOUS:\7f.PRECIOUS\ 1224,7838
+FRC:\7fFRC\ 1226,7894
+\f
+objc-src/Subprocess.h,98
+#define Subprocess \7f41,1217
+#define BUFFERSIZE \7f43,1267
+@interface Subprocess:\7fSubprocess\ 145,1292
+\f
+objc-src/Subprocess.m,446
+#define PTY_TEMPLATE \7f20,494
+#define PTY_LENGTH \7f21,528
+@interface Subprocess(Private)\7f32,737
+- childDidExit\7f39,851
+- fdHandler:\7ffdHandler\ 167,1589
+showError \7f98,2360
+fdHandler \7f112,2785
+getptys \7f119,2907
+- init:\7finit\ 1183,4815
+ andStdErr:\7finit\ 1197,5147
+- send:(const char *)string withNewline:\7fsend\ 1300,7436
+- send:\7fsend\ 1308,7599
+- terminateInput\7f314,7689
+- terminate:\7fterminate\ 1321,7810
+- setDelegate:\7fsetDelegate\ 1332,7961
+- delegate\7f338,8031
+\f
+objc-src/PackInsp.h,109
+#define NUMSTATS \7f36,1101
+#define TYPESTOSTAT \7f37,1120
+@interface PackageInspector:\7fPackageInspector\ 139,1172
+\f
+objc-src/PackInsp.m,1322
+static const char RCSid[\7fRCSid\ 130,1032
+#define VERSION \7f34,1116
+# define DEBUG \7f37,1155
+#define LISTCONTENTS \7f39,1181
+#define OPENBUTTON \7f47,1352
+#define LISTCONTENTSBUTTON \7f48,1449
+#define LISTDESCRIPTIONBUTTON \7f49,1562
+#define STATE_UNINSTALLED \7f52,1687
+#define STATE_INSTALLED \7f53,1807
+#define STATE_COMPRESSD \7f54,1948
+#define SIZEFORMAT \7f57,2152
+#define KBYTES \7f58,2362
+#define MBYTES \7f59,2473
+#define LOCALIZE(\7f61,2585
+#define LOCALIZE_ARCH(\7f62,2668
++new\7fnew\ 167,2802
+-showInfo:\7fshowInfo\ 193,3417
+-revert:\7frevert\ 1107,3737
+-ok:\7fok\ 1136,4297
+-load\7fload\ 1143,4424
+#define LOOKUP(\7f156,4826
+#undef LOOKUP\7f176,5694
+-loadKeyValuesFrom:(const char *)type inTable:\7floadKeyValuesFrom\ 1186,5852
+-loadContentsOf:(const char *)type inTable:\7floadContentsOf\ 1238,7079
+-loadImage\7floadImage\ 1257,7552
+#define STAT_EQ(\7f275,7940
+-(BOOL)shouldLoad\7f280,8116
+-toggleDescription\7ftoggleDescription\ 1301,8626
+-(const char *)getPath:(char *)buf forType:\7fgetPath\ 1317,8899
+-setRevertButtonTitle\7fsetRevertButtonTitle\ 1333,9320
+-(const char *)formatSize:(const char *)size inBuf:\7fformatSize\ 1344,9525
+#define WORKING \7f368,10045
+-(void)getArchs\7f370,10100
+-(void)addArchs:\7faddArchs\ 1385,10520
+-subprocess:(Subprocess *)sender output:\7fsubprocess\ 1428,11351
+-subprocessDone:\7fsubprocessDone\ 1436,11484
+static void openInWorkspace(\7f446,11634
+-open:\7fopen\ 1464,12063
+\f
+objcpp-src/SimpleCalc.H,41
+@interface SimpleCalc:\7fSimpleCalc\ 114,400
+\f
+objcpp-src/SimpleCalc.M,445
+- init\7f52,1747
+- appendToDisplay:\7fappendToDisplay\ 160,1933
+- registerAction:\7fregisterAction\ 170,2210
+- decimalKey:\7fdecimalKey\ 177,2348
+- numberKeys:\7fnumberKeys\ 191,2661
+- equalsKey:\7fequalsKey\ 1112,3192
+- operationKeys:\7foperationKeys\ 1131,3680
+- clearKey:\7fclearKey\ 1153,4301
+- clearAllKey:\7fclearAllKey\ 1160,4410
+- appDidInit:\7fappDidInit\ 1168,4591
+- windowWillClose:\7fwindowWillClose\ 1178,4882
+- infoPanel:\7finfoPanel\ 1186,5132
+- helpPanel:\7fhelpPanel\ 1198,5482
+\f
+pas-src/common.pas,1875
+procedure InitializeStringPackage;\7f26,527
+function newtextstring;\7f34,874
+procedure disposetextstring;\7f52,1404
+function ConcatT;\7f78,2066
+function AppendTextString;\7f112,3238
+function CopyTextString;\7f132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;\7f151,4505
+procedure append_string;\7f172,5166
+function To_Upper;\7f186,5462
+function To_Lower;\7f194,5617
+function EmptyNmStr(\7f209,6213
+function chartonmstr;\7f219,6436
+function LowerCaseNmStr;\7f230,6682
+function concatenatenamestrings;\7f242,7007
+procedure writenamestring;\7f263,7517
+function IsControlChar;\7f277,7928
+function namestringequal;\7f283,8079
+function NameStringLess;\7f302,8539
+function IsControlCharName(\7f343,9710
+function SubString;\7f358,10208
+function SkipChars;\7f379,10791
+function RemoveUnderlineControl;\7f397,11311
+procedure First100Chars;\7f427,12162
+procedure SkipSpaces;\7f462,13298
+function SkipBlanks;\7f477,13782
+function stripname;\7f505,14595
+function Locate;\7f522,15039
+function NameHasChar;\7f543,15581
+function integertonmstr;\7f561,16134
+function NmStrToInteger;\7f585,16901
+function AddNullToNmStr;\7f600,17317
+function ValToNmStr;\7f611,17585
+function ChangeFileType;\7f625,18037
+function StripPath;\7f647,18734
+function ReprOfChar;\7f675,19343
+procedure ExtractCommentInfo;\7f702,20749
+procedure INSERT_TREE_NODE;\7f784,24053
+function GetNameList;\7f920,27926
+procedure DisposeANameList(\7f925,28010
+procedure DisposeNameList;\7f938,28340
+function GetNewNameListNode;\7f943,28409
+function insertname;\7f972,29051
+procedure InitNameList;\7f988,29471
+procedure InitNameStringPool;\7f998,29767
+procedure NewNameString;\7f1004,29867
+procedure ReleaseNameString;\7f1022,30232
+procedure SDTrefStringToRec \7f1045,30741
+procedure SDTrefSkipSpaces;\7f1059,31092
+function SDTrefIsEnd \7f1070,31323
+function SDTrefGetInteger \7f1082,31529
+procedure SDTrefRecToString \7f1303,37546
+function NmStrToErrStr;\7f1497,42305
+function ErrStrToNmStr;\7f1509,42557
+function GetTextRef;\7f1529,43112
+\f
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"\7fLCE_FUNCTIONS\ 14,38
+ define("LCE_UNKNOWN"\7fLCE_UNKNOWN\ 19,145
+ define("LCE_WS"\7fLCE_WS\ 111,194
+ define("LCE_COMMENT"\7fLCE_COMMENT\ 113,244
+ define("LCE_COMMENT_USER"\7fLCE_COMMENT_USER\ 115,303
+ define("LCE_COMMENT_TOOL"\7fLCE_COMMENT_TOOL\ 117,366
+ define("LCE_MSGID"\7fLCE_MSGID\ 119,430
+ define("LCE_MSGSTR"\7fLCE_MSGSTR\ 121,488
+ define("LCE_TEXT"\7fLCE_TEXT\ 123,541
+ define("STATE_ABORT"\7fSTATE_ABORT\ 125,567
+ define("STATE_OK"\7fSTATE_OK\ 126,595
+ define("STATE_LOOP"\7fSTATE_LOOP\ 127,620
+ class POEntryAD \7f29,648
+ function validate(\7f31,683
+ function checkQuotation(\7f59,1384
+ class CommentAD \7f70,1639
+ function CommentAD(\7f73,1693
+ function validate(\7f83,1944
+ class POEntry \7f105,2410
+ function POEntry(\7f119,2711
+ function lineCount(\7f135,3255
+ function serializeToVars(\7f141,3365
+ function write(\7f151,3800
+ class POReader \7f163,4178
+ function gettext(\7f177,4457
+ function parseFromVars(\7f189,4705
+ function serializeToVars(\7f215,5331
+ function POReader(\7f229,5613
+ function read(\7f243,5983
+ function write(\7f259,6307
+ function isComment(\7f277,6645
+ function comment(\7f284,6822
+ function msgid(\7f304,7247
+ function msgstr(\7f320,7574
+ function start(\7f340,8232
+ function createPOEntries(\7f360,8644
+ function stripLine(\7f394,9472
+ function printClassification(\7f421,10056
+ function classifyLine(\7f432,10301
+ function getTextDomains(\7f471,11094
+ class PORManager \7f498,11756
+ function PORManager(\7f502,11822
+ function addPOReader(\7f507,11896
+ function &getPOReader(\7fgetPOReader\ 1512,11992
+ function getDomainNames(\7f517,12081
+ function &loadPORManager(\7floadPORManager\ 1523,12174
+ function fileJoin(\7f536,12436
+ function lce_bindtextdomain(\7f557,12839
+ function lce_textdomain(\7f614,14530
+ function lce_gettext(\7f620,14641
+ function lce_dgettext(\7f626,14767
+ function lce(\7f634,14966
+ function lce_bindtextdomain(\7f651,15488
+ function lce_textdomain(\7f656,15592
+ function lce_gettext(\7f661,15674
+ function lce_dgettext(\7f666,15755
+ function lce(\7f670,15855
+ function lce_geteditcode(\7f676,15898
+\f
+php-src/ptest.php,46
+define("TEST"\7fTEST\ 11,0
+test \7f4,26
+foo(\7f16,200
+\f
- sub read_toc \7fmain::read_toc\ 1165,3917
++perl-src/htlmify-cystic,1197
+my @section_name;\7fsection_name\ 112,236
+my @appendix_name;\7fappendix_name\ 113,254
+my @section_toc;\7fsection_toc\ 115,274
+my @appendix_toc;\7fappendix_toc\ 116,291
+my $new_tag \7fnew_tag\ 118,310
+my $appendix;\7fappendix\ 124,409
+my $section;\7fsection\ 125,423
+my $subsection;\7fsubsection\ 126,436
+my $subsubsection;\7fsubsubsection\ 127,452
+my $this_file_toc \7fthis_file_toc\ 129,472
+my %file_tocs;\7ffile_tocs\ 130,496
+my @output_files \7foutput_files\ 132,512
+my $file_index \7ffile_index\ 133,535
+my $output_file;\7foutput_file\ 135,556
+my $line;\7fline\ 137,574
+my $subsection_marker;\7fsubsection_marker\ 1161,3883
+my $new;\7fnew\ 1163,3907
- sub finish_subsubsections \7fmain::finish_subsubsections\ 1302,7805
- sub finish_subsections \7fmain::finish_subsections\ 1309,7987
- sub finish_sections \7fmain::finish_sections\ 1320,8310
- sub finish_appendices \7fmain::finish_appendices\ 1331,8599
- sub section_url_base \7fmain::section_url_base\ 1337,8724
- sub section_url_name \7fmain::section_url_name\ 1342,8922
- sub section_url \7fmain::section_url\ 1355,9284
++sub read_toc \7f165,3917
+ my $entry \7fentry\ 1218,5621
+ my $entry \7fentry\ 1234,6077
+ my $entry \7fentry\ 1245,6351
+ my $entry \7fentry\ 1252,6536
+ my $entry \7fentry\ 1268,7010
+ my $entry \7fentry\ 1276,7204
+ my $entry \7fentry\ 1281,7328
+ my $entry \7fentry\ 1296,7698
- sub section_href \7fmain::section_href\ 1364,9452
- sub section_name \7fmain::section_name\ 1368,9551
- sub toc_line \7fmain::toc_line\ 1372,9655
- sub file_end \7fmain::file_end\ 1375,9750
++sub finish_subsubsections \7f302,7805
++sub finish_subsections \7f309,7987
++sub finish_sections \7f320,8310
++sub finish_appendices \7f331,8599
++sub section_url_base \7f337,8724
++sub section_url_name \7f342,8922
++sub section_url \7f355,9284
+ my $name \7fname\ 1357,9336
- perl-src/yagrip.pl,258
- sub getopt \7fmain::getopt\ 17,156
++sub section_href \7f364,9452
++sub section_name \7f368,9551
++sub toc_line \7f372,9655
++sub file_end \7f375,9750
+\f
- sub usage \7fmain::usage\ 138,856
++perl-src/yagrip.pl,233
++sub getopt \7f7,156
+ local($_,$flag,$opt,$f,$r,@temp)\7f($_,$flag,$opt,$f,$r,@temp\ 18,169
- perl-src/kai-test.pl,244
- sub f1 \7fmain::f1\ 12,16
- sub main::f2 \7f6,50
++sub usage \7f38,856
+ local($prog,$_,@list)\7f($prog,$_,@list\ 139,868
+ local($string,$flag,@string,@temp,@last)\7f($string,$flag,@string,@temp,@last\ 140,897
+\f
- sub f3 \7fFoo::f3\ 112,104
- sub Bar::f4 \7f16,138
++perl-src/kai-test.pl,203
++sub f1 \7f2,16
++sub main::f2 \7ff2\ 16,50
+package Foo;\7f10,90
- sub f5 \7fBar::f5\ 122,191
++sub f3 \7f12,104
++sub Bar::f4 \7ff4\ 116,138
+package Bar;\7f20,177
- sub f6 \7fFoo::Bar::f6\ 128,244
++sub f5 \7f22,191
+package Foo::Bar;\7f26,225
- sub f7 \7fmain::f7\ 134,293
++sub f6 \7f28,244
+package main;\7f32,278
++sub f7 \7f34,293
+\f
+ps-src/rfc1245.ps,2478
+/FMversion \7f12,311
+/FrameDict \7f17,500
+/FMVERSION \7f47,1307
+/FMLOCAL \7f56,1494
+/FMDOCUMENT \7f73,1766
+/FMBEGINPAGE \7f95,2279
+/FMENDPAGE \7f109,2516
+/FMDEFINEFONT \7f115,2582
+/FMNORMALIZEGRAPHICS \7f126,2725
+/FMBEGINEPSF \7f142,2955
+/FMENDEPSF \7f153,3207
+/setmanualfeed \7f158,3283
+/max \7f163,3386
+/min \7f164,3426
+/inch \7f165,3466
+/pagedimen \7f166,3485
+/setpapername \7f172,3629
+/papersize \7f190,4214
+/manualpapersize \7f211,4789
+/desperatepapersize \7f230,5211
+/savematrix \7f239,5370
+/restorematrix \7f242,5425
+/dmatrix \7f245,5475
+/dpi \7f246,5495
+/freq \7f248,5583
+/sangle \7f249,5658
+/DiacriticEncoding \7f250,5717
+/.notdef \7f251,5738
+/.notdef \7f252,5801
+/.notdef \7f253,5864
+/.notdef \7f254,5927
+/.notdef \7f255,5990
+/numbersign \7f256,6051
+/parenright \7f257,6115
+/two \7f258,6184
+/less \7f259,6251
+/L \7f260,6320
+/bracketright \7f261,6389
+/i \7f262,6459
+/braceright \7f263,6529
+/Ntilde \7f264,6598
+/atilde \7f265,6668
+/iacute \7f266,6733
+/ocircumflex \7f267,6797
+/udieresis \7f268,6858
+/paragraph \7f269,6919
+/dieresis \7f270,6983
+/yen \7f271,7050
+/ordfeminine \7f272,7109
+/exclamdown \7f273,7171
+/guillemotleft \7f274,7230
+/Otilde \7f275,7296
+/quoteleft \7f276,7357
+/fraction \7f277,7420
+/periodcentered \7f278,7490
+/Acircumflex \7f279,7549
+/Icircumflex \7f280,7610
+/Uacute \7f281,7680
+/breve \7f282,7746
+/ReEncode \7f284,7814
+/graymode \7f300,8020
+/setpattern \7f310,8184
+/grayness \7f331,8725
+/normalize \7f394,9873
+/dnormalize \7f397,9942
+/lnormalize \7f400,10014
+/H \7f403,10104
+/Z \7f406,10147
+/X \7f409,10176
+/V \7f412,10219
+/N \7f415,10260
+/M \7f418,10286
+/E \7f419,10315
+/D \7f420,10336
+/O \7f421,10358
+/L \7f423,10394
+/Y \7f430,10489
+/R \7f439,10588
+/RR \7f450,10696
+/C \7f467,10959
+/U \7f473,11004
+/F \7f477,11039
+/T \7f481,11084
+/RF \7f484,11115
+/TF \7f488,11164
+/P \7f495,11219
+/PF \7f499,11270
+/S \7f506,11344
+/SF \7f510,11384
+/B \7f517,11446
+/BF \7f521,11505
+/W \7f538,11714
+/G \7f573,12382
+/A \7f582,12525
+/BEGINPRINTCODE \7f606,12918
+/ENDPRINTCODE \7f615,13131
+/gn \7f620,13259
+/cfs \7f631,13384
+/ic \7f636,13473
+/ms \7f658,14285
+/ip \7f668,14395
+/wh \7f678,14492
+/bl \7f684,14607
+/s1 \7f690,14722
+/fl \7f691,14739
+/hx \7f698,14887
+/wbytes \7f709,15055
+/BEGINBITMAPBWc \7f713,15147
+/BEGINBITMAPGRAYc \7f716,15198
+/BEGINBITMAP2BITc \7f719,15251
+/COMMONBITMAPc \7f722,15304
+/BEGINBITMAPBW \7f739,15660
+/BEGINBITMAPGRAY \7f742,15709
+/BEGINBITMAP2BIT \7f745,15760
+/COMMONBITMAP \7f748,15811
+/Fmcc \7f765,16156
+/ngrayt \7f773,16371
+/nredt \7f774,16393
+/nbluet \7f775,16414
+/ngreent \7f776,16436
+/colorsetup \7f787,16603
+/fakecolorsetup \7f814,17370
+/BITMAPCOLOR \7f826,17636
+/BITMAPCOLORc \7f839,17926
+/BITMAPGRAY \7f855,18275
+/BITMAPGRAYc \7f858,18335
+/ENDBITMAP \7f861,18397
+/fillprocs \7f868,18497
+\f
+prol-src/ordsets.prolog,525
+is_ordset(\7f47,1310
+list_to_ord_set(\7f63,1688
+ord_add_element(\7f71,1867
+ord_del_element(\7f85,2344
+ord_disjoint(\7f100,2783
+ord_intersect(\7f108,2953
+ord_intersection(\7f126,3552
+ord_intersection3(\7f130,3691
+ord_intersection(\7f150,4531
+ord_intersection4(\7f154,4703
+ord_intersection(\7f176,5664
+ord_intersection2(\7f181,5812
+ord_member(\7f200,6318
+ord_seteq(\7f216,6683
+ord_setproduct(\7f225,6971
+ord_subset(\7f240,7377
+ord_subtract(\7f257,7861
+ord_symdiff(\7f265,8054
+ord_union(\7f288,8887
+ord_union4(\7f303,9352
+ord_union(\7f324,10171
+ord_union_all(\7f329,10313
+\f
+prol-src/natded.prolog,2319
+expandmng(\7f100,2879
+normalize(\7f116,3359
+fresh_vars(\7f125,3716
+subst(\7f138,4134
+normalize_fresh(\7f159,4660
+reduce_subterm(\7f171,5112
+reduce(\7f185,5559
+free_var(\7f196,5903
+free_for(\7f209,6246
+compile_lex(\7f231,6875
+consult_lex:-\7fconsult_lex\ 1248,7384
+lex(\7f259,7754
+expandsyn(\7f267,8068
+bas_syn(\7f292,8897
+compile_empty:-\7fcompile_empty\ 1310,9376
+complete(\7f328,10055
+add_active(\7f340,10527
+parse(\7f353,10949
+derived_analyses(\7f364,11341
+build(\7f378,11965
+buildact(\7f392,12521
+mapsyn(\7f412,13542
+add_edge(\7f434,14278
+findcats(\7f447,14758
+normalize_tree(\7f465,15478
+normalize_trees(\7f475,15856
+expandmng_tree(\7f486,16248
+expandmng_trees(\7f496,16614
+cat(\7f511,17013
+subtree(\7f644,21266
+hypothetical_mem(\7f653,21565
+make_coor(\7f667,22130
+start_up:-\7fstart_up\ 1688,23013
+tokenizeatom(\7f710,23921
+tokenize(\7f720,24348
+isoperator(\7f752,25377
+isoptab(\7f756,25431
+specialsymbol(\7f765,25756
+sstab(\7f771,25861
+parse_cgi(\7f787,26347
+keyvalseq(\7f792,26510
+andkeyvalseq(\7f796,26609
+keyval(\7f799,26688
+valseq(\7f807,26920
+plusvalseq(\7f810,27007
+val(\7f816,27109
+argvals(\7f824,27426
+commaargvals(\7f828,27503
+atomval(\7f833,27578
+atom(\7f836,27640
+action(\7f846,28004
+keyvalcgi(\7f864,28649
+keyvalscgi(\7f865,28670
+outsyn(\7f868,28726
+act(\7f876,29060
+actout(\7f901,29906
+texttreelist(\7f912,30089
+htmltreelist(\7f918,30190
+fitchtreelist(\7f924,30304
+pp_html_table_tree(\7f938,30759
+pp_html_tree(\7f949,31113
+pp_html_trees(\7f988,32381
+pp_html_table_fitch_tree(\7f999,32769
+pp_html_fitch_tree(\7f1017,33672
+removeexp(\7f1129,39002
+splitexp(\7f1142,39490
+pp_exp(\7f1155,39990
+map_word(\7f1168,40249
+pp_exps(\7f1180,40474
+pp_tree(\7f1188,40777
+pp_trees(\7f1216,41807
+pp_word_list(\7f1225,42128
+pp_word(\7f1231,42262
+pp_word_list_rest(\7f1238,42569
+pp_cat(\7f1248,42929
+pp_syn(\7f1255,43196
+pp_syn_paren(\7f1276,43899
+pp_paren(\7f1293,44377
+pp_syn_back(\7f1300,44661
+pp_bas_cat(\7f1311,45001
+writecat(\7f1322,45409
+writesubs(\7f1351,46455
+writesups(\7f1361,46757
+writelistsubs(\7f1371,47090
+pp_lam(\7f1380,47408
+pp_lam_bracket(\7f1398,48022
+pp_lam_paren(\7f1407,48338
+pp_rule(\7f1429,49238
+member(\7f1447,49866
+append_list(\7f1451,49919
+append(\7f1456,50010
+at_least_one_member(\7f1460,50076
+numbervars(\7f1464,50171
+reverse(\7f1467,50209
+select(\7f1471,50290
+select_last(\7f1475,50357
+cat_atoms(\7f1479,50436
+writelist(\7f1485,50524
+write_lex_cat(\7f1492,50676
+writebreaklex(\7f1500,50988
+write_lex(\7f1513,51265
+writebreak(\7f1521,51541
+tt:-\7ftt\ 11531,51713
+mt:-\7fmt\ 11534,51784
+cmt:-\7fcmt\ 11537,51878
+\f
+pyt-src/server.py,1438
+class Controls:\7fControls\ 117,358
+ def __init__(\7f18,374
+ def __repr__(\7f24,590
+ def __str__(\7f34,871
+class Server:\7fServer\ 137,934
+ def __init__(\7f38,948
+ def dump(\7f73,2198
+ def __repr__(\7f125,3896
+ def __str__(\7f128,3945
+class User:\7fUser\ 1131,4014
+ def __init__(\7f132,4026
+ def __repr__(\7f172,5445
+ def __str__(\7f206,6883
+def flag2str(\7f223,7212
+class LabeledEntry(\7f232,7442
+ def bind(\7f234,7525
+ def focus_set(\7f236,7584
+ def __init__(\7f238,7629
+def ButtonBar(\7f245,7909
+def helpwin(\7f255,8280
+class ListEdit(\7f267,8707
+ def __init__(\7f269,8808
+ def handleList(\7f303,10042
+ def handleNew(\7f306,10094
+ def editItem(\7f314,10426
+ def deleteItem(\7f320,10596
+def ConfirmQuit(\7f326,10760
+class ControlEdit(\7f375,12377
+ def PostControls(\7f376,12403
+ def GatherControls(\7f421,13530
+class ServerEdit(\7f512,16264
+ def __init__(\7f513,16289
+ def post(\7f525,16629
+ def gather(\7f543,17191
+ def nosave(\7f547,17304
+ def save(\7f551,17408
+ def refreshPort(\7f556,17509
+ def createWidgets(\7f561,17663
+ def edituser(\7f631,20708
+class UserEdit(\7f645,20921
+ def __init__(\7f646,20944
+ def post(\7f658,21283
+ def gather(\7f676,21841
+ def nosave(\7f680,21950
+ def save(\7f684,22052
+ def createWidgets(\7f689,22151
+class Configure(\7f760,24879
+ def __init__(\7f761,24916
+ def MakeDispose(\7f772,25211
+ def MakeSitelist(\7f786,25706
+ def editsite(\7f794,25949
+ def save(\7f797,26022
+ def nosave(\7f807,26310
+\f
+ruby-src/test.rb,637
+module ModuleExample\7f1,0
+ class ClassExample\7f2,21
+ def instance_method\7f3,44
+ def ClassExample.class_method\7fclass_method\ 16,121
+ def instance_method_exclamation!\7f9,206
+ def instance_method_question?\7f12,310
+ def instance_method_equals=\7finstance_method_equals=\ 115,408
+ def `(\7f18,502
+ def +(\7f21,592
+ def [](\7f24,640
+ def []=(\7f[]=\ 127,690
+ def <<(\7f30,752
+ def ==(\7f==\ 133,802
+ def <=(\7f<=\ 136,872
+ def <=>(\7f<=>\ 139,943
+ def ===(\7f===\ 142,990
+ def module_instance_method\7f46,1051
+ def ModuleExample.module_class_method\7fmodule_class_method\ 149,1131
+\f
+ruby-src/test1.ru,935
+class A\7f1,0
+ def a(\7f2,8
+ def b(\7f5,38
+module A\7f9,57
+ class B\7f10,66
+ ABC \7f11,76
+ Def_ \7f12,88
+ Xyzzy \7f13,106
+ def foo!\7f15,121
+ def self._bar?(\7f_bar?\ 118,143
+ def qux=(\7fqux=\ 122,194
+ attr_reader :foo\7ffoo\ 126,233
+ attr_reader :read1 \7fread1\ 127,254
+ attr_reader :read1 , :read2;\7fread2\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1,\7fwrite1=\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1, :write2\7fwrite2=\ 127,254
+ attr_writer :bar,\7fbar=\ 128,316
+ :baz,\7fbaz=\ 129,338
+ :more\7fmore=\ 130,360
+ attr_accessor :tee\7ftee\ 131,382
+ attr_accessor :tee\7ftee=\ 131,382
+ alias_method :qux,\7fqux\ 132,405
+ alias_method :xyz,\7fxyz\ 133,456
+ :tee ; attr_reader :subtle\7fsubtle\ 134,479
+ attr_reader(:foo1,\7ffoo1\ 135,523
+ attr_reader(:foo1, :bar1,\7fbar1\ 135,523
+ :qux1)\7fqux1\ 136,563
+ alias_method ( :foo2,\7ffoo2\ 137,586
+A::Constant \7fConstant\ 142,655
+\f
+tex-src/testenv.tex,52
+\newcommand{\nm}\7f\nm\ 14,77
+\section{blah}\7fblah\ 18,139
+\f
+tex-src/gzip.texi,303
+@node Top,\7f62,2139
+@node Copying,\7f80,2652
+@node Overview,\7f83,2705
+@node Sample,\7f166,7272
+@node Invoking gzip,\7fInvoking gzip\ 1210,8828
+@node Advanced usage,\7fAdvanced usage\ 1357,13495
+@node Environment,\7f420,15207
+@node Tapes,\7f437,15768
+@node Problems,\7f460,16767
+@node Concept Index,\7fConcept Index\ 1473,17287
+\f
+tex-src/texinfo.tex,30627
+\def\texinfoversion{\7f\texinfoversion\ 126,1027
+\def\tie{\7f\tie\ 149,1518
+\def\gloggingall{\7f\gloggingall\ 172,2268
+\def\loggingall{\7f\loggingall\ 173,2337
+\def\onepageout#1{\7f\onepageout\ 199,3274
+\def\croppageout#1{\7f\croppageout\ 1115,4024
+\def\cropmarks{\7f\cropmarks\ 1142,5084
+\def\pagebody#1{\7f\pagebody\ 1144,5131
+\def\ewtop{\7f\ewtop\ 1157,5586
+\def\nstop{\7f\nstop\ 1158,5650
+\def\ewbot{\7f\ewbot\ 1160,5733
+\def\nsbot{\7f\nsbot\ 1161,5797
+\def\parsearg #1{\7f\parsearg\ 1170,6096
+\def\parseargx{\7f\parseargx\ 1172,6174
+\def\parseargline{\7f\parseargline\ 1182,6414
+\def\flushcr{\7f\flushcr\ 1186,6535
+\newif\ifENV \ENVfalse \def\inENV{\7f\inENV\ 1190,6734
+\def\ENVcheck{\7f\ENVcheck\ 1191,6798
+\outer\def\begin{\7f\begin\ 1198,7045
+\def\beginxxx #1{\7f\beginxxx\ 1200,7083
+\def\end{\7f\end\ 1208,7338
+\def\endxxx #1{\7f\endxxx\ 1210,7366
+\def\errorE#1{\7f\errorE\ 1216,7555
+\def\singlespace{\7f\singlespace\ 1222,7749
+\def\@{\7f\@\ 1232,7972
+\def\`{\7f\`\ 1236,8072
+\def\'{\7f\'\ 1237,8084
+\def\mylbrace {\7f\mylbrace\ 1241,8132
+\def\myrbrace {\7f\myrbrace\ 1242,8165
+\def\:{\7f\:\ 1247,8279
+\def\*{\7f\*\ 1250,8333
+\def\.{\7f\.\ 1253,8409
+\def\w#1{\7f\w\ 1258,8640
+\def\group{\7f\group\ 1268,9123
+ \def\Egroup{\7f\Egroup\ 1273,9287
+\def\need{\7f\need\ 1289,9729
+\def\needx#1{\7f\needx\ 1300,10006
+\def\dots{\7f\dots\ 1339,11392
+\def\page{\7f\page\ 1343,11456
+\def\exdent{\7f\exdent\ 1353,11783
+\def\exdentyyy #1{\7f\exdentyyy\ 1354,11816
+\def\nofillexdent{\7f\nofillexdent\ 1357,11960
+\def\nofillexdentyyy #1{\7f\nofillexdentyyy\ 1358,12005
+\def\include{\7f\include\ 1365,12189
+\def\includezzz #1{\7f\includezzz\ 1366,12224
+\def\thisfile{\7f\thisfile\ 1369,12275
+\def\center{\7f\center\ 1373,12338
+\def\centerzzz #1{\7f\centerzzz\ 1374,12371
+\def\sp{\7f\sp\ 1380,12513
+\def\spxxx #1{\7f\spxxx\ 1381,12538
+\def\comment{\7f\comment\ 1387,12712
+\def\commentxxx #1{\7f\commentxxx\ 1390,12809
+\def\ignoresections{\7f\ignoresections\ 1396,12978
+\let\chapter=\relax\7f=\relax\ 1397,13000
+\let\section=\relax\7f=\relax\ 1406,13245
+\let\subsection=\relax\7f=\relax\ 1409,13306
+\let\subsubsection=\relax\7f=\relax\ 1410,13329
+\let\appendix=\relax\7f=\relax\ 1411,13355
+\let\appendixsec=\relax\7fsec=\relax\ 1412,13376
+\let\appendixsection=\relax\7fsection=\relax\ 1413,13400
+\let\appendixsubsec=\relax\7fsubsec=\relax\ 1414,13428
+\let\appendixsubsection=\relax\7fsubsection=\relax\ 1415,13455
+\let\appendixsubsubsec=\relax\7fsubsubsec=\relax\ 1416,13486
+\let\appendixsubsubsection=\relax\7fsubsubsection=\relax\ 1417,13516
+\def\ignore{\7f\ignore\ 1423,13618
+\long\def\ignorexxx #1\end ignore{\7f\ignorexxx\ 1427,13758
+\def\direntry{\7f\direntry\ 1429,13817
+\long\def\direntryxxx #1\end direntry{\7f\direntryxxx\ 1430,13856
+\def\ifset{\7f\ifset\ 1434,13966
+\def\ifsetxxx #1{\7f\ifsetxxx\ 1436,14024
+\def\Eifset{\7f\Eifset\ 1440,14151
+\def\ifsetfail{\7f\ifsetfail\ 1441,14165
+\long\def\ifsetfailxxx #1\end ifset{\7f\ifsetfailxxx\ 1442,14221
+\def\ifclear{\7f\ifclear\ 1444,14282
+\def\ifclearxxx #1{\7f\ifclearxxx\ 1446,14344
+\def\Eifclear{\7f\Eifclear\ 1450,14475
+\def\ifclearfail{\7f\ifclearfail\ 1451,14491
+\long\def\ifclearfailxxx #1\end ifclear{\7f\ifclearfailxxx\ 1452,14551
+\def\set{\7f\set\ 1456,14702
+\def\setxxx #1{\7f\setxxx\ 1457,14729
+\def\clear{\7f\clear\ 1460,14791
+\def\clearxxx #1{\7f\clearxxx\ 1461,14822
+\def\iftex{\7f\iftex\ 1466,14939
+\def\Eiftex{\7f\Eiftex\ 1467,14952
+\def\ifinfo{\7f\ifinfo\ 1468,14966
+\long\def\ifinfoxxx #1\end ifinfo{\7f\ifinfoxxx\ 1469,15016
+\long\def\menu #1\end menu{\7f\menu\ 1471,15075
+\def\asis#1{\7f\asis\ 1472,15104
+\def\math#1{\7f\math\ 1485,15647
+\def\node{\7f\node\ 1487,15691
+\def\nodezzz#1{\7f\nodezzz\ 1488,15729
+\def\nodexxx[#1,#2]{\7f\nodexxx[\ 1489,15760
+\def\donoderef{\7f\donoderef\ 1492,15822
+\def\unnumbnoderef{\7f\unnumbnoderef\ 1496,15943
+\def\appendixnoderef{\7f\appendixnoderef\ 1500,16074
+\expandafter\expandafter\expandafter\appendixsetref{\7fsetref\ 1501,16120
+\let\refill=\relax\7fill=\relax\ 1504,16209
+\def\setfilename{\7f\setfilename\ 1509,16423
+\outer\def\bye{\7f\bye\ 1518,16669
+\def\inforef #1{\7f\inforef\ 1520,16725
+\def\inforefzzz #1,#2,#3,#4**{\7f\inforefzzz\ 1521,16763
+\def\losespace #1{\7f\losespace\ 1523,16860
+\def\sf{\7f\sf\ 1532,17064
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\7fbf=cmbx10\ 1558,17859
+\font\deftt=cmtt10 scaled \magstep1\7ftt=cmtt10\ 1559,17905
+\def\df{\7f\df\ 1560,17941
+\def\resetmathfonts{\7f\resetmathfonts\ 1635,20535
+\def\textfonts{\7f\textfonts\ 1648,21124
+\def\chapfonts{\7f\chapfonts\ 1653,21339
+\def\secfonts{\7f\secfonts\ 1658,21555
+\def\subsecfonts{\7f\subsecfonts\ 1663,21760
+\def\indexfonts{\7f\indexfonts\ 1668,21977
+\def\smartitalicx{\7f\smartitalicx\ 1691,22709
+\def\smartitalic#1{\7f\smartitalic\ 1692,22785
+\let\cite=\smartitalic\7f=\smartitalic\ 1698,22930
+\def\b#1{\7f\b\ 1700,22954
+\def\t#1{\7f\t\ 1703,22989
+\def\samp #1{\7f\samp\ 1706,23141
+\def\key #1{\7f\key\ 1707,23174
+\def\ctrl #1{\7f\ctrl\ 1708,23235
+\def\tclose#1{\7f\tclose\ 1716,23437
+\def\ {\7f\\ 1720,23603
+\def\xkey{\7f\xkey\ 1728,23872
+\def\kbdfoo#1#2#3\par{\7f\kbdfoo\ 1729,23888
+\def\dmn#1{\7f\dmn\ 1738,24189
+\def\kbd#1{\7f\kbd\ 1740,24216
+\def\l#1{\7f\l\ 1742,24273
+\def\r#1{\7f\r\ 1744,24302
+\def\sc#1{\7f\sc\ 1746,24370
+\def\ii#1{\7f\ii\ 1747,24413
+\def\titlefont#1{\7f\titlefont\ 1755,24646
+\def\titlepage{\7f\titlepage\ 1761,24749
+ \def\subtitlefont{\7f\subtitlefont\ 1766,24976
+ \def\authorfont{\7f\authorfont\ 1768,25060
+ \def\title{\7f\title\ 1774,25270
+ \def\titlezzz##1{\7f\titlezzz\ 1775,25305
+ \def\subtitle{\7f\subtitle\ 1783,25620
+ \def\subtitlezzz##1{\7f\subtitlezzz\ 1784,25661
+ \def\author{\7f\author\ 1787,25779
+ \def\authorzzz##1{\7f\authorzzz\ 1788,25816
+ \def\page{\7f\page\ 1794,26107
+\def\Etitlepage{\7f\Etitlepage\ 1804,26276
+\def\finishtitlepage{\7f\finishtitlepage\ 1817,26664
+\def\evenheading{\7f\evenheading\ 1846,27672
+\def\oddheading{\7f\oddheading\ 1847,27715
+\def\everyheading{\7f\everyheading\ 1848,27756
+\def\evenfooting{\7f\evenfooting\ 1850,27802
+\def\oddfooting{\7f\oddfooting\ 1851,27845
+\def\everyfooting{\7f\everyfooting\ 1852,27886
+\def\headings #1 {\7f\headings\ 1893,29578
+\def\HEADINGSoff{\7f\HEADINGSoff\ 1895,29627
+\def\HEADINGSdouble{\7f\HEADINGSdouble\ 1904,30054
+\def\HEADINGSsingle{\7f\HEADINGSsingle\ 1914,30374
+\def\HEADINGSon{\7f\HEADINGSon\ 1922,30595
+\def\HEADINGSafter{\7f\HEADINGSafter\ 1924,30629
+\def\HEADINGSdoublex{\7f\HEADINGSdoublex\ 1926,30724
+\def\HEADINGSsingleafter{\7f\HEADINGSsingleafter\ 1933,30912
+\def\HEADINGSsinglex{\7f\HEADINGSsinglex\ 1934,30973
+\def\today{\7f\today\ 1943,31248
+\def\thistitle{\7f\thistitle\ 1958,31793
+\def\settitle{\7f\settitle\ 1959,31818
+\def\settitlezzz #1{\7f\settitlezzz\ 1960,31855
+\def\internalBitem{\7f\internalBitem\ 1992,32785
+\def\internalBitemx{\7f\internalBitemx\ 1993,32835
+\def\internalBxitem "#1"{\7f\internalBxitem\ 1995,32880
+\def\internalBxitemx "#1"{\7f\internalBxitemx\ 1996,32960
+\def\internalBkitem{\7f\internalBkitem\ 1998,33035
+\def\internalBkitemx{\7f\internalBkitemx\ 1999,33087
+\def\kitemzzz #1{\7f\kitemzzz\ 11001,33134
+\def\xitemzzz #1{\7f\xitemzzz\ 11004,33236
+\def\itemzzz #1{\7f\itemzzz\ 11007,33339
+\def\item{\7f\item\ 11037,34410
+\def\itemx{\7f\itemx\ 11038,34461
+\def\kitem{\7f\kitem\ 11039,34514
+\def\kitemx{\7f\kitemx\ 11040,34567
+\def\xitem{\7f\xitem\ 11041,34622
+\def\xitemx{\7f\xitemx\ 11042,34675
+\def\description{\7f\description\ 11045,34785
+\def\table{\7f\table\ 11047,34835
+\def\ftable{\7f\ftable\ 11052,34979
+\def\Eftable{\7f\Eftable\ 11056,35125
+\def\vtable{\7f\vtable\ 11059,35194
+\def\Evtable{\7f\Evtable\ 11063,35340
+\def\dontindex #1{\7f\dontindex\ 11066,35409
+\def\fnitemindex #1{\7f\fnitemindex\ 11067,35429
+\def\vritemindex #1{\7f\vritemindex\ 11068,35474
+\def\tablez #1#2#3#4#5#6{\7f\tablez\ 11074,35623
+\def\Edescription{\7f\Edescription\ 11077,35681
+\def\itemfont{\7f\itemfont\ 11082,35883
+\def\Etable{\7f\Etable\ 11090,36109
+\def\itemize{\7f\itemize\ 11103,36433
+\def\itemizezzz #1{\7f\itemizezzz\ 11105,36469
+\def\itemizey #1#2{\7f\itemizey\ 11110,36564
+\def#2{\7f1119,36810
+\def\itemcontents{\7f\itemcontents\ 11120,36851
+\def\bullet{\7f\bullet\ 11123,36899
+\def\minus{\7f\minus\ 11124,36926
+\def\frenchspacing{\7f\frenchspacing\ 11128,37034
+\def\splitoff#1#2\endmark{\7f\splitoff\ 11134,37259
+\def\enumerate{\7f\enumerate\ 11140,37489
+\def\enumeratezzz #1{\7f\enumeratezzz\ 11141,37528
+\def\enumeratey #1 #2\endenumeratey{\7f\enumeratey\ 11142,37581
+ \def\thearg{\7f\thearg\ 11146,37728
+ \ifx\thearg\empty \def\thearg{\7f\thearg\ 11147,37747
+\def\numericenumerate{\7f\numericenumerate\ 11184,39081
+\def\lowercaseenumerate{\7f\lowercaseenumerate\ 11190,39211
+\def\uppercaseenumerate{\7f\uppercaseenumerate\ 11203,39558
+\def\startenumeration#1{\7f\startenumeration\ 11219,40048
+\def\alphaenumerate{\7f\alphaenumerate\ 11227,40230
+\def\capsenumerate{\7f\capsenumerate\ 11228,40265
+\def\Ealphaenumerate{\7f\Ealphaenumerate\ 11229,40299
+\def\Ecapsenumerate{\7f\Ecapsenumerate\ 11230,40333
+\def\itemizeitem{\7f\itemizeitem\ 11234,40413
+\def\newindex #1{\7f\newindex\ 11259,41270
+\def\defindex{\7f\defindex\ 11268,41559
+\def\newcodeindex #1{\7f\newcodeindex\ 11272,41667
+\def\defcodeindex{\7f\defcodeindex\ 11279,41927
+\def\synindex #1 #2 {\7f\synindex\ 11283,42107
+\def\syncodeindex #1 #2 {\7f\syncodeindex\ 11292,42447
+\def\doindex#1{\7f\doindex\ 11309,43126
+\def\singleindexer #1{\7f\singleindexer\ 11310,43185
+\def\docodeindex#1{\7f\docodeindex\ 11313,43297
+\def\singlecodeindexer #1{\7f\singlecodeindexer\ 11314,43364
+\def\indexdummies{\7f\indexdummies\ 11316,43422
+\def\_{\7f\_\ 11317,43442
+\def\w{\7f\w\ 11318,43470
+\def\bf{\7f\bf\ 11319,43497
+\def\rm{\7f\rm\ 11320,43526
+\def\sl{\7f\sl\ 11321,43555
+\def\sf{\7f\sf\ 11322,43584
+\def\tt{\7f\tt\ 11323,43612
+\def\gtr{\7f\gtr\ 11324,43640
+\def\less{\7f\less\ 11325,43670
+\def\hat{\7f\hat\ 11326,43702
+\def\char{\7f\char\ 11327,43732
+\def\TeX{\7f\TeX\ 11328,43764
+\def\dots{\7f\dots\ 11329,43794
+\def\copyright{\7f\copyright\ 11330,43827
+\def\tclose##1{\7f\tclose\ 11331,43870
+\def\code##1{\7f\code\ 11332,43915
+\def\samp##1{\7f\samp\ 11333,43956
+\def\t##1{\7f\t\ 11334,43997
+\def\r##1{\7f\r\ 11335,44032
+\def\i##1{\7f\i\ 11336,44067
+\def\b##1{\7f\b\ 11337,44102
+\def\cite##1{\7f\cite\ 11338,44137
+\def\key##1{\7f\key\ 11339,44178
+\def\file##1{\7f\file\ 11340,44217
+\def\var##1{\7f\var\ 11341,44258
+\def\kbd##1{\7f\kbd\ 11342,44297
+\def\indexdummyfont#1{\7f\indexdummyfont\ 11347,44453
+\def\indexdummytex{\7f\indexdummytex\ 11348,44479
+\def\indexdummydots{\7f\indexdummydots\ 11349,44503
+\def\indexnofonts{\7f\indexnofonts\ 11351,44529
+\let\w=\indexdummyfont\7fdummyfont\ 11352,44549
+\let\t=\indexdummyfont\7fdummyfont\ 11353,44572
+\let\r=\indexdummyfont\7fdummyfont\ 11354,44595
+\let\i=\indexdummyfont\7fdummyfont\ 11355,44618
+\let\b=\indexdummyfont\7fdummyfont\ 11356,44641
+\let\emph=\indexdummyfont\7fdummyfont\ 11357,44664
+\let\strong=\indexdummyfont\7fdummyfont\ 11358,44690
+\let\cite=\indexdummyfont\7f=\indexdummyfont\ 11359,44718
+\let\sc=\indexdummyfont\7fdummyfont\ 11360,44744
+\let\tclose=\indexdummyfont\7fdummyfont\ 11364,44916
+\let\code=\indexdummyfont\7fdummyfont\ 11365,44944
+\let\file=\indexdummyfont\7fdummyfont\ 11366,44970
+\let\samp=\indexdummyfont\7fdummyfont\ 11367,44996
+\let\kbd=\indexdummyfont\7fdummyfont\ 11368,45022
+\let\key=\indexdummyfont\7fdummyfont\ 11369,45047
+\let\var=\indexdummyfont\7fdummyfont\ 11370,45072
+\let\TeX=\indexdummytex\7fdummytex\ 11371,45097
+\let\dots=\indexdummydots\7fdummydots\ 11372,45121
+\let\indexbackslash=0 %overridden during \printindex.\7fbackslash=0\ 11382,45373
+\def\doind #1#2{\7f\doind\ 11384,45429
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11386,45472
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11389,45612
+{\indexnofonts\7fnofonts\ 11394,45874
+\def\dosubind #1#2#3{\7f\dosubind\ 11405,46185
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11407,46233
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11410,46337
+{\indexnofonts\7fnofonts\ 11414,46491
+\def\findex {\7f\findex\ 11443,47422
+\def\kindex {\7f\kindex\ 11444,47445
+\def\cindex {\7f\cindex\ 11445,47468
+\def\vindex {\7f\vindex\ 11446,47491
+\def\tindex {\7f\tindex\ 11447,47514
+\def\pindex {\7f\pindex\ 11448,47537
+\def\cindexsub {\7f\cindexsub\ 11450,47561
+\def\printindex{\7f\printindex\ 11462,47888
+\def\doprintindex#1{\7f\doprintindex\ 11464,47929
+ \def\indexbackslash{\7f\indexbackslash\ 11481,48414
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\7ffonts\rm\ 11482,48453
+\def\initial #1{\7f\initial\ 11517,49525
+\def\entry #1#2{\7f\entry\ 11523,49732
+ \null\nobreak\indexdotfill % Have leaders before the page number.\7fdotfill\ 11540,50379
+\def\indexdotfill{\7f\indexdotfill\ 11549,50707
+\def\primary #1{\7f\primary\ 11552,50813
+\def\secondary #1#2{\7f\secondary\ 11556,50895
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\7fdotfill\ 11559,50977
+\newbox\partialpage\7fialpage\ 11566,51150
+\def\begindoublecolumns{\7f\begindoublecolumns\ 11572,51308
+ \output={\global\setbox\partialpage=\7fialpage=\ 11573,51344
+\def\enddoublecolumns{\7f\enddoublecolumns\ 11577,51532
+\def\doublecolumnout{\7f\doublecolumnout\ 11580,51617
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11581,51686
+\def\pagesofar{\7f\pagesofar\ 11584,51864
+\def\balancecolumns{\7f\balancecolumns\ 11588,52101
+ \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\7fialpage\ 11594,52272
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11600,52533
+\newcount \appendixno \appendixno = `\@\7fno\ 11627,53438
+\def\appendixletter{\7f\appendixletter\ 11628,53479
+\def\opencontents{\7f\opencontents\ 11632,53582
+\def\thischapter{\7f\thischapter\ 11637,53763
+\def\seccheck#1{\7f\seccheck\ 11638,53801
+\def\chapternofonts{\7f\chapternofonts\ 11643,53905
+\def\result{\7f\result\ 11646,53980
+\def\equiv{\7f\equiv\ 11647,54015
+\def\expansion{\7f\expansion\ 11648,54048
+\def\print{\7f\print\ 11649,54089
+\def\TeX{\7f\TeX\ 11650,54122
+\def\dots{\7f\dots\ 11651,54151
+\def\copyright{\7f\copyright\ 11652,54182
+\def\tt{\7f\tt\ 11653,54223
+\def\bf{\7f\bf\ 11654,54250
+\def\w{\7f\w\ 11655,54278
+\def\less{\7f\less\ 11656,54303
+\def\gtr{\7f\gtr\ 11657,54334
+\def\hat{\7f\hat\ 11658,54363
+\def\char{\7f\char\ 11659,54392
+\def\tclose##1{\7f\tclose\ 11660,54423
+\def\code##1{\7f\code\ 11661,54467
+\def\samp##1{\7f\samp\ 11662,54507
+\def\r##1{\7f\r\ 11663,54547
+\def\b##1{\7f\b\ 11664,54581
+\def\key##1{\7f\key\ 11665,54615
+\def\file##1{\7f\file\ 11666,54653
+\def\kbd##1{\7f\kbd\ 11667,54693
+\def\i##1{\7f\i\ 11669,54801
+\def\cite##1{\7f\cite\ 11670,54835
+\def\var##1{\7f\var\ 11671,54875
+\def\emph##1{\7f\emph\ 11672,54913
+\def\dfn##1{\7f\dfn\ 11673,54953
+\def\thischaptername{\7f\thischaptername\ 11676,54994
+\outer\def\chapter{\7f\chapter\ 11677,55033
+\def\chapterzzz #1{\7f\chapterzzz\ 11678,55074
+{\chapternofonts%\7fnofonts%\ 11687,55470
+\global\let\section = \numberedsec\7f=\ 11692,55623
+\global\let\subsection = \numberedsubsec\7f=\ 11693,55658
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11694,55699
+\outer\def\appendix{\7f\appendix\ 11697,55750
+\def\appendixzzz #1{\7f\appendixzzz\ 11698,55793
+\global\advance \appendixno by 1 \message{\7fno\ 11700,55870
+\chapmacro {#1}{Appendix \appendixletter}\7fletter\ 11701,55939
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\7fletter:\ 11704,56032
+{\chapternofonts%\7fnofonts%\ 11705,56104
+ {#1}{Appendix \appendixletter}\7fletter\ 11707,56160
+\appendixnoderef %\7fnoderef\ 11710,56260
+\global\let\section = \appendixsec\7f=\ 11711,56279
+\global\let\subsection = \appendixsubsec\7f=\ 11712,56314
+\global\let\subsubsection = \appendixsubsubsec\7f=\ 11713,56355
+\outer\def\top{\7f\top\ 11716,56406
+\outer\def\unnumbered{\7f\unnumbered\ 11717,56446
+\def\unnumberedzzz #1{\7f\unnumberedzzz\ 11718,56493
+{\chapternofonts%\7fnofonts%\ 11722,56656
+\global\let\section = \unnumberedsec\7f=\ 11727,56806
+\global\let\subsection = \unnumberedsubsec\7f=\ 11728,56843
+\global\let\subsubsection = \unnumberedsubsubsec\7f=\ 11729,56886
+\outer\def\numberedsec{\7f\numberedsec\ 11732,56939
+\def\seczzz #1{\7f\seczzz\ 11733,56980
+{\chapternofonts%\7fnofonts%\ 11736,57136
+\outer\def\appendixsection{\7f\appendixsection\ 11745,57322
+\outer\def\appendixsec{\7f\appendixsec\ 11746,57379
+\def\appendixsectionzzz #1{\7f\appendixsectionzzz\ 11747,57432
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}\7fletter\ 11749,57544
+{\chapternofonts%\7fnofonts%\ 11750,57612
+{#1}{\appendixletter}\7fletter\ 11752,57668
+\appendixnoderef %\7fnoderef\ 11755,57768
+\outer\def\unnumberedsec{\7f\unnumberedsec\ 11759,57808
+\def\unnumberedseczzz #1{\7f\unnumberedseczzz\ 11760,57861
+{\chapternofonts%\7fnofonts%\ 11762,57956
+\outer\def\numberedsubsec{\7f\numberedsubsec\ 11770,58124
+\def\numberedsubseczzz #1{\7f\numberedsubseczzz\ 11771,58179
+{\chapternofonts%\7fnofonts%\ 11774,58358
+\outer\def\appendixsubsec{\7f\appendixsubsec\ 11783,58562
+\def\appendixsubseczzz #1{\7f\appendixsubseczzz\ 11784,58617
+\subsecheading {#1}{\appendixletter}\7fletter\ 11786,58739
+{\chapternofonts%\7fnofonts%\ 11787,58804
+{#1}{\appendixletter}\7fletter\ 11789,58863
+\appendixnoderef %\7fnoderef\ 11792,58978
+\outer\def\unnumberedsubsec{\7f\unnumberedsubsec\ 11796,59018
+\def\unnumberedsubseczzz #1{\7f\unnumberedsubseczzz\ 11797,59077
+{\chapternofonts%\7fnofonts%\ 11799,59178
+\outer\def\numberedsubsubsec{\7f\numberedsubsubsec\ 11807,59349
+\def\numberedsubsubseczzz #1{\7f\numberedsubsubseczzz\ 11808,59410
+{\chapternofonts%\7fnofonts%\ 11812,59607
+\outer\def\appendixsubsubsec{\7f\appendixsubsubsec\ 11823,59840
+\def\appendixsubsubseczzz #1{\7f\appendixsubsubseczzz\ 11824,59901
+ {\appendixletter}\7fletter\ 11827,60040
+{\chapternofonts%\7fnofonts%\ 11828,60106
+ {\appendixletter}\7fletter\ 11830,60171
+\appendixnoderef %\7fnoderef\ 11834,60305
+\outer\def\unnumberedsubsubsec{\7f\unnumberedsubsubsec\ 11838,60345
+\def\unnumberedsubsubseczzz #1{\7f\unnumberedsubsubseczzz\ 11839,60410
+{\chapternofonts%\7fnofonts%\ 11841,60517
+\def\infotop{\7f\infotop\ 11851,60846
+\def\infounnumbered{\7f\infounnumbered\ 11852,60884
+\def\infounnumberedsec{\7f\infounnumberedsec\ 11853,60929
+\def\infounnumberedsubsec{\7f\infounnumberedsubsec\ 11854,60980
+\def\infounnumberedsubsubsec{\7f\infounnumberedsubsubsec\ 11855,61037
+\def\infoappendix{\7f\infoappendix\ 11857,61101
+\def\infoappendixsec{\7f\infoappendixsec\ 11858,61142
+\def\infoappendixsubsec{\7f\infoappendixsubsec\ 11859,61189
+\def\infoappendixsubsubsec{\7f\infoappendixsubsubsec\ 11860,61242
+\def\infochapter{\7f\infochapter\ 11862,61302
+\def\infosection{\7f\infosection\ 11863,61341
+\def\infosubsection{\7f\infosubsection\ 11864,61380
+\def\infosubsubsection{\7f\infosubsubsection\ 11865,61425
+\global\let\section = \numberedsec\7f=\ 11870,61662
+\global\let\subsection = \numberedsubsec\7f=\ 11871,61697
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11872,61738
+\def\majorheading{\7f\majorheading\ 11886,62245
+\def\majorheadingzzz #1{\7f\majorheadingzzz\ 11887,62290
+\def\chapheading{\7f\chapheading\ 11893,62523
+\def\chapheadingzzz #1{\7f\chapheadingzzz\ 11894,62566
+\def\heading{\7f\heading\ 11899,62761
+\def\subheading{\7f\subheading\ 11901,62798
+\def\subsubheading{\7f\subsubheading\ 11903,62841
+\def\dobreak#1#2{\7f\dobreak\ 11910,63118
+\def\setchapterstyle #1 {\7f\setchapterstyle\ 11912,63196
+\def\chapbreak{\7f\chapbreak\ 11919,63451
+\def\chappager{\7f\chappager\ 11920,63501
+\def\chapoddpage{\7f\chapoddpage\ 11921,63539
+\def\setchapternewpage #1 {\7f\setchapternewpage\ 11923,63618
+\def\CHAPPAGoff{\7f\CHAPPAGoff\ 11925,63675
+\def\CHAPPAGon{\7f\CHAPPAGon\ 11929,63769
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11932,63860
+\def\CHAPPAGodd{\7f\CHAPPAGodd\ 11934,63902
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11937,63998
+\def\CHAPFplain{\7f\CHAPFplain\ 11941,64052
+\def\chfplain #1#2{\7f\chfplain\ 11945,64144
+\def\unnchfplain #1{\7f\unnchfplain\ 11956,64367
+\def\unnchfopen #1{\7f\unnchfopen\ 11964,64596
+\def\chfopen #1#2{\7f\chfopen\ 11970,64804
+\def\CHAPFopen{\7f\CHAPFopen\ 11975,64948
+\def\subsecheadingbreak{\7f\subsecheadingbreak\ 11982,65166
+\def\secheadingbreak{\7f\secheadingbreak\ 11985,65295
+\def\secheading #1#2#3{\7f\secheading\ 11993,65577
+\def\plainsecheading #1{\7f\plainsecheading\ 11994,65633
+\def\secheadingi #1{\7f\secheadingi\ 11995,65676
+\def\subsecheading #1#2#3#4{\7f\subsecheading\ 12006,66044
+\def\subsecheadingi #1{\7f\subsecheadingi\ 12007,66111
+\def\subsubsecfonts{\7f\subsubsecfonts\ 12014,66408
+\def\subsubsecheading #1#2#3#4#5{\7f\subsubsecheading\ 12017,66531
+\def\subsubsecheadingi #1{\7f\subsubsecheadingi\ 12018,66609
+\def\startcontents#1{\7f\startcontents\ 12032,67081
+ \unnumbchapmacro{#1}\def\thischapter{\7f\thischapter\ 12040,67354
+\outer\def\contents{\7f\contents\ 12049,67713
+\outer\def\summarycontents{\7f\summarycontents\ 12057,67857
+ \def\secentry ##1##2##3##4{\7f\secentry\ 12067,68228
+ \def\unnumbsecentry ##1##2{\7f\unnumbsecentry\ 12068,68263
+ \def\subsecentry ##1##2##3##4##5{\7f\subsecentry\ 12069,68298
+ \def\unnumbsubsecentry ##1##2{\7f\unnumbsubsecentry\ 12070,68339
+ \def\subsubsecentry ##1##2##3##4##5##6{\7f\subsubsecentry\ 12071,68377
+ \def\unnumbsubsubsecentry ##1##2{\7f\unnumbsubsubsecentry\ 12072,68424
+\def\chapentry#1#2#3{\7f\chapentry\ 12085,68858
+\def\shortchapentry#1#2#3{\7f\shortchapentry\ 12088,68975
+ {#2\labelspace #1}\7fspace\ 12091,69085
+\def\unnumbchapentry#1#2{\7f\unnumbchapentry\ 12094,69139
+\def\shortunnumberedentry#1#2{\7f\shortunnumberedentry\ 12095,69186
+\def\secentry#1#2#3#4{\7f\secentry\ 12102,69350
+\def\unnumbsecentry#1#2{\7f\unnumbsecentry\ 12103,69409
+\def\subsecentry#1#2#3#4#5{\7f\subsecentry\ 12106,69470
+\def\unnumbsubsecentry#1#2{\7f\unnumbsubsecentry\ 12107,69540
+\def\subsubsecentry#1#2#3#4#5#6{\7f\subsubsecentry\ 12110,69614
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\7fspace\ 12111,69648
+\def\unnumbsubsubsecentry#1#2{\7f\unnumbsubsubsecentry\ 12112,69699
+\def\dochapentry#1#2{\7f\dochapentry\ 12123,70073
+\def\dosecentry#1#2{\7f\dosecentry\ 12138,70678
+\def\dosubsecentry#1#2{\7f\dosubsecentry\ 12145,70856
+\def\dosubsubsecentry#1#2{\7f\dosubsubsecentry\ 12152,71041
+\def\labelspace{\7f\labelspace\ 12160,71292
+\def\dopageno#1{\7f\dopageno\ 12162,71327
+\def\doshortpageno#1{\7f\doshortpageno\ 12163,71353
+\def\chapentryfonts{\7f\chapentryfonts\ 12165,71385
+\def\secentryfonts{\7f\secentryfonts\ 12166,71420
+\def\point{\7f\point\ 12192,72379
+\def\result{\7f\result\ 12194,72400
+\def\expansion{\7f\expansion\ 12195,72473
+\def\print{\7f\print\ 12196,72544
+\def\equiv{\7f\equiv\ 12198,72611
+\def\error{\7f\error\ 12218,73384
+\def\tex{\7f\tex\ 12224,73613
+\def\@{\7f\@\ 12242,73996
+\gdef\sepspaces{\def {\ }}}\7f\\ 12265,74728
+\def\aboveenvbreak{\7f\aboveenvbreak\ 12268,74810
+\def\afterenvbreak{\7f\afterenvbreak\ 12272,74976
+\def\ctl{\7f\ctl\ 12286,75487
+\def\ctr{\7f\ctr\ 12287,75559
+\def\cbl{\7f\cbl\ 12288,75598
+\def\cbr{\7f\cbr\ 12289,75638
+\def\carttop{\7f\carttop\ 12290,75677
+\def\cartbot{\7f\cartbot\ 12293,75785
+\long\def\cartouche{\7f\cartouche\ 12299,75925
+\def\Ecartouche{\7f\Ecartouche\ 12326,76713
+\def\lisp{\7f\lisp\ 12338,76848
+\def\Elisp{\7f\Elisp\ 12348,77195
+\def\next##1{\7f\next\ 12360,77521
+\def\Eexample{\7f\Eexample\ 12364,77563
+\def\Esmallexample{\7f\Esmallexample\ 12367,77610
+\def\smalllispx{\7f\smalllispx\ 12373,77788
+\def\Esmalllisp{\7f\Esmalllisp\ 12383,78142
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\7ffonts\ 12396,78498
+\def\next##1{\7f\next\ 12397,78555
+\def\display{\7f\display\ 12401,78635
+\def\Edisplay{\7f\Edisplay\ 12410,78954
+\def\next##1{\7f\next\ 12422,79265
+\def\format{\7f\format\ 12426,79368
+\def\Eformat{\7f\Eformat\ 12434,79664
+\def\next##1{\7f\next\ 12437,79753
+\def\flushleft{\7f\flushleft\ 12441,79805
+\def\Eflushleft{\7f\Eflushleft\ 12451,80176
+\def\next##1{\7f\next\ 12454,80269
+\def\flushright{\7f\flushright\ 12456,80291
+\def\Eflushright{\7f\Eflushright\ 12466,80663
+\def\next##1{\7f\next\ 12470,80794
+\def\quotation{\7f\quotation\ 12474,80852
+\def\Equotation{\7f\Equotation\ 12480,81044
+\def\setdeffont #1 {\7f\setdeffont\ 12493,81442
+\newskip\defbodyindent \defbodyindent=.4in\7fbodyindent\ 12495,81488
+\newskip\defargsindent \defargsindent=50pt\7fargsindent\ 12496,81531
+\newskip\deftypemargin \deftypemargin=12pt\7ftypemargin\ 12497,81574
+\newskip\deflastargmargin \deflastargmargin=18pt\7flastargmargin\ 12498,81617
+\def\activeparens{\7f\activeparens\ 12503,81815
+\def\opnr{\7f\opnr\ 12529,83027
+\def\lbrb{\7f\lbrb\ 12530,83092
+\def\defname #1#2{\7f\defname\ 12536,83293
+\advance\dimen2 by -\defbodyindent\7fbodyindent\ 12540,83411
+\advance\dimen3 by -\defbodyindent\7fbodyindent\ 12542,83465
+\setbox0=\hbox{\hskip \deflastargmargin{\7flastargmargin\ 12544,83519
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\7fargsindent\ 12546,83661
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %\7fargsindent\ 12547,83736
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\7ftypemargin\ 12554,84105
+\advance\leftskip by -\defbodyindent\7fbodyindent\ 12557,84239
+\exdentamount=\defbodyindent\7fbodyindent\ 12558,84276
+\def\defparsebody #1#2#3{\7f\defparsebody\ 12568,84635
+\def#1{\7f2572,84819
+\def#2{\7f2573,84855
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12575,84927
+\exdentamount=\defbodyindent\7fbodyindent\ 12576,85001
+\def\defmethparsebody #1#2#3#4 {\7f\defmethparsebody\ 12581,85105
+\def#1{\7f2585,85266
+\def#2##1 {\7f2586,85302
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12588,85385
+\exdentamount=\defbodyindent\7fbodyindent\ 12589,85459
+\def\defopparsebody #1#2#3#4#5 {\7f\defopparsebody\ 12592,85544
+\def#1{\7f2596,85705
+\def#2##1 ##2 {\7f2597,85741
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12600,85841
+\exdentamount=\defbodyindent\7fbodyindent\ 12601,85915
+\def\defvarparsebody #1#2#3{\7f\defvarparsebody\ 12608,86186
+\def#1{\7f2612,86373
+\def#2{\7f2613,86409
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12615,86468
+\exdentamount=\defbodyindent\7fbodyindent\ 12616,86542
+\def\defvrparsebody #1#2#3#4 {\7f\defvrparsebody\ 12621,86633
+\def#1{\7f2625,86792
+\def#2##1 {\7f2626,86828
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12628,86898
+\exdentamount=\defbodyindent\7fbodyindent\ 12629,86972
+\def\defopvarparsebody #1#2#3#4#5 {\7f\defopvarparsebody\ 12632,87044
+\def#1{\7f2636,87208
+\def#2##1 ##2 {\7f2637,87244
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12640,87331
+\exdentamount=\defbodyindent\7fbodyindent\ 12641,87405
+\def\defunargs #1{\7f\defunargs\ 12664,88165
+\def\deftypefunargs #1{\7f\deftypefunargs\ 12676,88547
+\def\deffn{\7f\deffn\ 12690,88929
+\def\deffnheader #1#2#3{\7f\deffnheader\ 12692,88986
+\begingroup\defname {\7fname\ 12693,89034
+\def\defun{\7f\defun\ 12699,89179
+\def\defunheader #1#2{\7f\defunheader\ 12701,89232
+\begingroup\defname {\7fname\ 12702,89307
+\defunargs {\7funargs\ 12703,89343
+\def\deftypefun{\7f\deftypefun\ 12709,89491
+\def\deftypefunheader #1#2{\7f\deftypefunheader\ 12712,89613
+\def\deftypefunheaderx #1#2 #3\relax{\7f\deftypefunheaderx\ 12714,89722
+\begingroup\defname {\7fname\ 12716,89814
+\deftypefunargs {\7ftypefunargs\ 12717,89860
+\def\deftypefn{\7f\deftypefn\ 12723,90031
+\def\deftypefnheader #1#2#3{\7f\deftypefnheader\ 12726,90180
+\def\deftypefnheaderx #1#2#3 #4\relax{\7f\deftypefnheaderx\ 12728,90316
+\begingroup\defname {\7fname\ 12730,90409
+\deftypefunargs {\7ftypefunargs\ 12731,90449
+\def\defmac{\7f\defmac\ 12737,90570
+\def\defmacheader #1#2{\7f\defmacheader\ 12739,90627
+\begingroup\defname {\7fname\ 12740,90703
+\defunargs {\7funargs\ 12741,90736
+\def\defspec{\7f\defspec\ 12747,90860
+\def\defspecheader #1#2{\7f\defspecheader\ 12749,90921
+\begingroup\defname {\7fname\ 12750,90998
+\defunargs {\7funargs\ 12751,91038
+\def\deffnx #1 {\7f\deffnx\ 12758,91233
+\def\defunx #1 {\7f\defunx\ 12759,91290
+\def\defmacx #1 {\7f\defmacx\ 12760,91347
+\def\defspecx #1 {\7f\defspecx\ 12761,91406
+\def\deftypefnx #1 {\7f\deftypefnx\ 12762,91467
+\def\deftypeunx #1 {\7f\deftypeunx\ 12763,91532
+\def\defop #1 {\7f\defop\ 12769,91678
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\7fopparsebody\Edefop\defopx\defopheader\defoptype\ 12770,91713
+\def\defopheader #1#2#3{\7f\defopheader\ 12772,91767
+\begingroup\defname {\7fname\ 12774,91856
+\defunargs {\7funargs\ 12775,91902
+\def\defmethod{\7f\defmethod\ 12780,91963
+\def\defmethodheader #1#2#3{\7f\defmethodheader\ 12782,92036
+\begingroup\defname {\7fname\ 12784,92124
+\defunargs {\7funargs\ 12785,92164
+\def\defcv #1 {\7f\defcv\ 12790,92238
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\ 12791,92273
+\def\defcvarheader #1#2#3{\7f\defcvarheader\ 12793,92332
+\begingroup\defname {\7fname\ 12795,92418
+\defvarargs {\7fvarargs\ 12796,92464
+\def\defivar{\7f\defivar\ 12801,92537
+\def\defivarheader #1#2#3{\7f\defivarheader\ 12803,92600
+\begingroup\defname {\7fname\ 12805,92686
+\defvarargs {\7fvarargs\ 12806,92737
+\def\defopx #1 {\7f\defopx\ 12812,92886
+\def\defmethodx #1 {\7f\defmethodx\ 12813,92943
+\def\defcvx #1 {\7f\defcvx\ 12814,93008
+\def\defivarx #1 {\7f\defivarx\ 12815,93065
+\def\defvarargs #1{\7f\defvarargs\ 12822,93336
+\def\defvr{\7f\defvr\ 12828,93480
+\def\defvrheader #1#2#3{\7f\defvrheader\ 12830,93535
+\begingroup\defname {\7fname\ 12831,93583
+\def\defvar{\7f\defvar\ 12835,93668
+\def\defvarheader #1#2{\7f\defvarheader\ 12837,93728
+\begingroup\defname {\7fname\ 12838,93799
+\defvarargs {\7fvarargs\ 12839,93835
+\def\defopt{\7f\defopt\ 12844,93901
+\def\defoptheader #1#2{\7f\defoptheader\ 12846,93961
+\begingroup\defname {\7fname\ 12847,94032
+\defvarargs {\7fvarargs\ 12848,94071
+\def\deftypevar{\7f\deftypevar\ 12853,94128
+\def\deftypevarheader #1#2{\7f\deftypevarheader\ 12856,94244
+\begingroup\defname {\7fname\ 12858,94327
+\def\deftypevr{\7f\deftypevr\ 12865,94501
+\def\deftypevrheader #1#2#3{\7f\deftypevrheader\ 12867,94572
+\begingroup\defname {\7fname\ 12868,94624
+\def\defvrx #1 {\7f\defvrx\ 12876,94861
+\def\defvarx #1 {\7f\defvarx\ 12877,94918
+\def\defoptx #1 {\7f\defoptx\ 12878,94977
+\def\deftypevarx #1 {\7f\deftypevarx\ 12879,95036
+\def\deftypevrx #1 {\7f\deftypevrx\ 12880,95103
+\def\deftpargs #1{\7f\deftpargs\ 12885,95252
+\def\deftp{\7f\deftp\ 12889,95332
+\def\deftpheader #1#2#3{\7f\deftpheader\ 12891,95387
+\begingroup\defname {\7fname\ 12892,95435
+\def\deftpx #1 {\7f\deftpx\ 12897,95594
+\def\setref#1{\7f\setref\ 12908,95915
+\def\unnumbsetref#1{\7f\unnumbsetref\ 12913,96029
+\def\appendixsetref#1{\7f\appendixsetref\ 12918,96136
+\def\pxref#1{\7f\pxref\ 12929,96547
+\def\xref#1{\7f\xref\ 12930,96583
+\def\ref#1{\7f\ref\ 12931,96618
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\7f\xrefX[\ 12932,96648
+\def\printedmanual{\7f\printedmanual\ 12933,96691
+\def\printednodename{\7f\printednodename\ 12934,96729
+\def\printednodename{\7f\printednodename\ 12939,96854
+section ``\printednodename'' in \cite{\printedmanual}\7f\printedmanual\ 12954,97487
+\refx{\7fx\ 12957,97565
+\def\dosetq #1#2{\7f\dosetq\ 12965,97785
+\def\internalsetq #1#2{\7f\internalsetq\ 12973,98043
+\def\Ypagenumber{\7f\Ypagenumber\ 12977,98144
+\def\Ytitle{\7f\Ytitle\ 12979,98170
+\def\Ynothing{\7f\Ynothing\ 12981,98197
+\def\Ysectionnumberandtype{\7f\Ysectionnumberandtype\ 12983,98214
+\def\Yappendixletterandtype{\7f\Yappendixletterandtype\ 12992,98530
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\7fno\ 12993,98560
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\7fno.\the\secno\ 12994,98615
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\7fno.\the\secno.\the\subsecno\ 12996,98719
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\7fno.\the\secno.\the\subsecno.\the\subsubsecno\ 12998,98790
+ \def\linenumber{\7f\linenumber\ 13009,99129
+\def\refx#1#2{\7f\refx\ 13015,99313
+\def\xrdef #1#2{\7f\xrdef\ 13037,99939
+\def\readauxfile{\7f\readauxfile\ 13040,100024
+\def\supereject{\7f\supereject\ 13110,101805
+\footstrut\parindent=\defaultparindent\hang\textindent{\7faultparindent\hang\textindent\ 13131,102490
+\def\openindices{\7f\openindices\ 13139,102676
+\newdimen\defaultparindent \defaultparindent = 15pt\7faultparindent\ 13151,102901
+\parindent = \defaultparindent\7faultparindent\ 13152,102953
+\def\smallbook{\7f\smallbook\ 13175,103677
+\global\def\Esmallexample{\7f\Esmallexample\ 13192,104104
+\def\afourpaper{\7f\afourpaper\ 13196,104195
+\def\finalout{\7f\finalout\ 13224,105003
+\def\normaldoublequote{\7f\normaldoublequote\ 13235,105264
+\def\normaltilde{\7f\normaltilde\ 13236,105290
+\def\normalcaret{\7f\normalcaret\ 13237,105310
+\def\normalunderscore{\7f\normalunderscore\ 13238,105330
+\def\normalverticalbar{\7f\normalverticalbar\ 13239,105355
+\def\normalless{\7f\normalless\ 13240,105381
+\def\normalgreater{\7f\normalgreater\ 13241,105400
+\def\normalplus{\7f\normalplus\ 13242,105422
+\def\ifusingtt#1#2{\7f\ifusingtt\ 13253,105914
+\def\activedoublequote{\7f\activedoublequote\ 13261,106242
+\def~{\7f~\ 13264,106328
+\def^{\7f^\ 13267,106389
+\def_{\7f_\ 13270,106428
+\def\_{\7f\_\ 13272,106502
+\def\lvvmode{\7f\lvvmode\ 13279,106839
+\def|{\7f|\ 13282,106889
+\def<{\7f<\ 13285,106952
+\def>{\7f>\ 13288,107009
+\def+{\7f+\ 13290,107047
+\def\turnoffactive{\7f\turnoffactive\ 13296,107208
+\global\def={\7f=\ 13307,107494
+\def\normalbackslash{\7f\normalbackslash\ 13321,107876
+\f
+c-src/c.c,76
+T f(\7f1,0
+}T i;\7f2,14
+void bar(\7f5,69
+int foobar(\7f6,94
+interface_locate(\7f9,131
+\f
+c.c,1663
+my_printf \7f135,
+void fatala \7f138,
+max \7f141,
+struct bar \7f143,
+__attribute__ ((always_inline)) max \7f147,
+struct foo\7f150,
+char stack[\7fstack\ 1155,
+struct S \7f156,
+} wait_status_ptr_t \7f161,
+Some_Class A \7f162,
+typedef T1 T3 \7f163,
+T3 z \7f164,
+typedef int more_aligned_int \7f165,
+struct S __attribute__ ((vector_size (16))) foo;\7f166,
+int foo \7f167,
+char *__attribute__((aligned(8))) *f;\7ff\ 1168,
+int i \7f169,
+extern void foobar \7f170,
+typedef struct cacheLRUEntry_s\7f172,
+__attribute__ ((packed)) cacheLRUEntry_t;\7f177,
+struct foo \7f178,
+ f1 \7f183,
+void f2 \7f184,
+int x \7f188,
+struct foo \7f189,
+short array[\7farray\ 1190,
+int f\7f193,
+DEAFUN \7f196,
+XDEFUN \7f203,
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,\7fx-get-selection-internal\ 1206,
+ Fx_get_selection_internal,\7fx-get-selection-internal\ 1212,
+ Fy_get_selection_internal,\7fy-get-selection-internal\ 1216,
+defun_func1(\7f218,
+DEFUN_func2(\7f220,
+typedef int bool;\7f222,
+bool funcboo \7f223,
+struct my_struct \7f226,
+typedef struct my_struct my_typedef;\7f228,
+int bla \7f229,
+a(\7f234,
+int func1\7f237,
+static struct cca_control init_control \7f239,
+static tpcmd rbtp \7f240,
+static byte ring1 \7f241,
+static byte ring2 \7f242,
+request request \7f243,
+int func2 \7f246,
+ aaa;\7f249,
+ bbb;\7f251,
+struct sss1 \7f252,
+struct sss2\7f253,
+ struct ss3\7f255,
+struct a b;\7f259,
+struct aa *b;\7fb\ 1260,
+ **b;\7fb\ 1262,
+caccacacca \7f263,
+a \7f267,
+ typedef struct aa \7f269,
+ typedef struct aa {} aaa;\7f269,
+static void inita \7f271,
+node *lasta \7flasta\ 1272,
+b \7f273,
+ typedef int bb;\7f275,
+static void initb \7f277,
+node *lastb \7flastb\ 1278,
+typedef enum { REG_ENOSYS \7f279,
+typedef enum { REG_ENOSYS = -1, aa \7f279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;\7f279,
+\f
+c-src/a/b/b.c,18
+#define this \7f1,0
+\f
+../c/c.web,20
+#define questo \7f34,
+\f
+y-src/parse.y,738
+#define obstack_chunk_alloc \7f46,1116
+#define obstack_chunk_free \7f47,1154
+VOIDSTAR parse_hash;\7f63,1405
+unsigned char fnin[\7ffnin\ 167,1524
+#define YYSTYPE \7f71,1622
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,1653
+YYSTYPE parse_return;\7f73,1683
+char *instr;\7finstr\ 180,1795
+int parse_error \7f81,1808
+line:\7fline\ 186,1867
+exp:\7fexp\ 194,1980
+exp_list:\7fexp_list\ 1262,5647
+range_exp:\7frange_exp\ 1268,5745
+range_exp_list:\7frange_exp_list\ 1272,5775
+cell:\7fcell\ 1278,5893
+yyerror FUN1(\7f285,5940
+make_list FUN2(\7f292,6020
+#define ERROR \7f303,6220
+yylex FUN0(\7f314,6397
+parse_cell_or_range FUN2(\7f586,11763
+#define CK_ABS_R(\7f670,13205
+#define CK_REL_R(\7f674,13284
+#define CK_ABS_C(\7f679,13413
+#define CK_REL_C(\7f683,13492
+#define MAYBEREL(\7f688,13621
+str_to_col FUN1(\7f846,16822
+\f
+y-src/parse.c,520
+#define YYBISON \7f4,64
+# define NE \7f6,114
+# define LE \7f7,130
+# define GE \7f8,146
+# define NEG \7f9,162
+# define L_CELL \7f10,179
+# define L_RANGE \7f11,199
+# define L_VAR \7f12,220
+# define L_CONST \7f13,239
+# define L_FN0 \7f14,260
+# define L_FN1 \7f15,279
+# define L_FN2 \7f16,298
+# define L_FN3 \7f17,317
+# define L_FN4 \7f18,336
+# define L_FNN \7f19,355
+# define L_FN1R \7f20,374
+# define L_FN2R \7f21,394
+# define L_FN3R \7f22,414
+# define L_FN4R \7f23,434
+# define L_FNNR \7f24,454
+# define L_LE \7f25,474
+# define L_NE \7f26,492
+# define L_GE \7f27,510
+\f
+parse.y,1181
+#define obstack_chunk_alloc \7f46,
+#define obstack_chunk_free \7f47,
+VOIDSTAR parse_hash;\7f63,
+unsigned char fnin[\7ffnin\ 167,
+#define YYSTYPE \7f71,
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,
+YYSTYPE parse_return;\7f73,
+char *instr;\7finstr\ 180,
+int parse_error \7f81,
+#define YYSTYPE \7f85,
+# define YYDEBUG \7f88,
+#define YYFINAL \7f93,
+#define YYFLAG \7f94,
+#define YYNTBASE \7f95,
+#define YYTRANSLATE(\7f98,
+static const char yytranslate[\7fyytranslate\ 1101,
+static const short yyprhs[\7fyyprhs\ 1134,
+static const short yyrhs[\7fyyrhs\ 1142,
+static const short yyrline[\7fyyrline\ 1171,
+static const char *const yytname[\7fyytname\ 1185,
+static const short yyr1[\7fyyr1\ 1197,
+static const short yyr2[\7fyyr2\ 1207,
+static const short yydefact[\7fyydefact\ 1219,
+static const short yydefgoto[\7fyydefgoto\ 1237,
+static const short yypact[\7fyypact\ 1242,
+static const short yypgoto[\7fyypgoto\ 1260,
+#define YYLAST \7f266,
+static const short yytable[\7fyytable\ 1269,
+static const short yycheck[\7fyycheck\ 1330,
+yyerror FUN1(\7f285,
+make_list FUN2(\7f292,
+#define ERROR \7f303,
+yylex FUN0(\7f314,
+parse_cell_or_range FUN2(\7f586,
+#define CK_ABS_R(\7f670,
+#define CK_REL_R(\7f674,
+#define CK_ABS_C(\7f679,
+#define CK_REL_C(\7f683,
+#define MAYBEREL(\7f688,
+str_to_col FUN1(\7f846,
+\f
+/usr/share/bison/bison.simple,2110
+# define YYSTD(\7f40,
+# define YYSTD(\7f42,
+# define YYSTACK_ALLOC \7f50,
+# define YYSIZE_T \7f51,
+# define YYSTACK_ALLOC \7f55,
+# define YYSIZE_T \7f56,
+# define YYSTACK_ALLOC \7f59,
+# define YYSTACK_FREE(\7f67,
+# define YYSIZE_T \7f71,
+# define YYSIZE_T \7f75,
+# define YYSTACK_ALLOC \7f78,
+# define YYSTACK_FREE \7f79,
+union yyalloc\7f83,
+# define YYSTACK_GAP_MAX \7f93,
+# define YYSTACK_BYTES(\7f98,
+# define YYSTACK_BYTES(\7f102,
+# define YYSTACK_RELOCATE(\7f112,
+# define YYSIZE_T \7f128,
+# define YYSIZE_T \7f131,
+# define YYSIZE_T \7f136,
+# define YYSIZE_T \7f140,
+# define YYSIZE_T \7f145,
+#define yyerrok \7f148,
+#define yyclearin \7f149,
+#define YYEMPTY \7f150,
+#define YYEOF \7f151,
+#define YYACCEPT \7f152,
+#define YYABORT \7f153,
+#define YYERROR \7f154,
+#define YYFAIL \7f158,
+#define YYRECOVERING(\7f159,
+#define YYBACKUP(\7f160,
+#define YYTERROR \7f177,
+#define YYERRCODE \7f178,
+# define YYLLOC_DEFAULT(\7f189,
+# define YYLEX \7f200,
+# define YYLEX \7f202,
+# define YYLEX \7f206,
+# define YYLEX \7f208,
+# define YYLEX \7f212,
+# define YYFPRINTF \7f225,
+# define YYDPRINTF(\7f228,
+int yydebug;\7f237,
+# define YYDPRINTF(\7f239,
+# define YYINITDEPTH \7f244,
+# undef YYMAXDEPTH\7f255,
+# define YYMAXDEPTH \7f259,
+# define yymemcpy \7f264,
+yymemcpy \7f271,
+# define yystrlen \7f293,
+yystrlen \7f298,
+# define yystpcpy \7f316,
+yystpcpy \7f322,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/atest.y,9
+exp \7f2,3
+\f
+y-src/cccp.c,303
+#define YYBISON \7f4,63
+# define INT \7f6,113
+# define CHAR \7f7,130
+# define NAME \7f8,148
+# define ERROR \7f9,166
+# define OR \7f10,185
+# define AND \7f11,201
+# define EQUAL \7f12,218
+# define NOTEQUAL \7f13,237
+# define LEQ \7f14,259
+# define GEQ \7f15,276
+# define LSH \7f16,293
+# define RSH \7f17,310
+# define UNARY \7f18,327
+\f
+cccp.y,1579
+typedef unsigned char U_CHAR;\7f38,
+struct arglist \7f41,
+#define NULL \7f51,
+#define GENERIC_PTR \7f56,
+#define GENERIC_PTR \7f58,
+#define NULL_PTR \7f63,
+int expression_value;\7f68,
+static jmp_buf parse_return_error;\7f70,
+static int keyword_parsing \7f73,
+#define CHAR_TYPE_SIZE \7f87,
+#define INT_TYPE_SIZE \7f91,
+#define LONG_TYPE_SIZE \7f95,
+#define WCHAR_TYPE_SIZE \7f99,
+#define possible_sum_sign(\7f104,
+ struct constant \7f113,
+ struct name \7f114,
+} yystype;\7f118,
+# define YYSTYPE \7f119,
+# define YYDEBUG \7f122,
+#define YYFINAL \7f127,
+#define YYFLAG \7f128,
+#define YYNTBASE \7f129,
+#define YYTRANSLATE(\7f132,
+static const char yytranslate[\7fyytranslate\ 1135,
+static const short yyprhs[\7fyyprhs\ 1167,
+static const short yyrhs[\7fyyrhs\ 1174,
+static const short yyrline[\7fyyrline\ 1195,
+static const char *const yytname[\7fyytname\ 1208,
+static const short yyr1[\7fyyr1\ 1219,
+static const short yyr2[\7fyyr2\ 1228,
+static const short yydefact[\7fyydefact\ 1239,
+static const short yydefgoto[\7fyydefgoto\ 1251,
+static const short yypact[\7fyypact\ 1256,
+static const short yypgoto[\7fyypgoto\ 1268,
+#define YYLAST \7f274,
+static const short yytable[\7fyytable\ 1277,
+static const short yycheck[\7fyycheck\ 1301,
+static char *lexptr;\7flexptr\ 1332,
+parse_number \7f341,
+struct token \7f437,
+static struct token tokentab2[\7ftokentab2\ 1442,
+yylex \7f459,
+parse_escape \7f740,
+yyerror \7f836,
+integer_overflow \7f844,
+left_shift \7f851,
+right_shift \7f873,
+parse_c_expression \7f893,
+main \7f923,
+unsigned char is_idchar[\7fis_idchar\ 1948,
+unsigned char is_idstart[\7fis_idstart\ 1950,
+char is_hor_space[\7fis_hor_space\ 1953,
+initialize_random_junk \7f958,
+error \7f988,
+warning \7f993,
+lookup \7f999,
+\f
+/usr/share/bison/bison.simple,2110
+# define YYSTD(\7f41,
+# define YYSTD(\7f43,
+# define YYSTACK_ALLOC \7f51,
+# define YYSIZE_T \7f52,
+# define YYSTACK_ALLOC \7f56,
+# define YYSIZE_T \7f57,
+# define YYSTACK_ALLOC \7f60,
+# define YYSTACK_FREE(\7f68,
+# define YYSIZE_T \7f72,
+# define YYSIZE_T \7f76,
+# define YYSTACK_ALLOC \7f79,
+# define YYSTACK_FREE \7f80,
+union yyalloc\7f84,
+# define YYSTACK_GAP_MAX \7f94,
+# define YYSTACK_BYTES(\7f99,
+# define YYSTACK_BYTES(\7f103,
+# define YYSTACK_RELOCATE(\7f113,
+# define YYSIZE_T \7f129,
+# define YYSIZE_T \7f132,
+# define YYSIZE_T \7f137,
+# define YYSIZE_T \7f141,
+# define YYSIZE_T \7f146,
+#define yyerrok \7f149,
+#define yyclearin \7f150,
+#define YYEMPTY \7f151,
+#define YYEOF \7f152,
+#define YYACCEPT \7f153,
+#define YYABORT \7f154,
+#define YYERROR \7f155,
+#define YYFAIL \7f159,
+#define YYRECOVERING(\7f160,
+#define YYBACKUP(\7f161,
+#define YYTERROR \7f178,
+#define YYERRCODE \7f179,
+# define YYLLOC_DEFAULT(\7f190,
+# define YYLEX \7f201,
+# define YYLEX \7f203,
+# define YYLEX \7f207,
+# define YYLEX \7f209,
+# define YYLEX \7f213,
+# define YYFPRINTF \7f226,
+# define YYDPRINTF(\7f229,
+int yydebug;\7f238,
+# define YYDPRINTF(\7f240,
+# define YYINITDEPTH \7f245,
+# undef YYMAXDEPTH\7f256,
+# define YYMAXDEPTH \7f260,
+# define yymemcpy \7f265,
+yymemcpy \7f272,
+# define yystrlen \7f294,
+yystrlen \7f299,
+# define yystpcpy \7f317,
+yystpcpy \7f323,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;\7f38,1201
+struct arglist \7f41,1301
+#define NULL \7f51,1468
+#define GENERIC_PTR \7f56,1578
+#define GENERIC_PTR \7f58,1611
+#define NULL_PTR \7f63,1670
+int expression_value;\7f68,1743
+static jmp_buf parse_return_error;\7f70,1766
+static int keyword_parsing \7f73,1865
+#define CHAR_TYPE_SIZE \7f87,2162
+#define INT_TYPE_SIZE \7f91,2229
+#define LONG_TYPE_SIZE \7f95,2296
+#define WCHAR_TYPE_SIZE \7f99,2365
+#define possible_sum_sign(\7f104,2556
+ struct constant \7f112,2733
+ struct name \7f113,2789
+start \7f143,3226
+exp1 \7f148,3330
+exp \7f156,3505
+exp \7f185,4295
+keywords \7f306,7835
+static char *lexptr;\7flexptr\ 1332,8579
+parse_number \7f341,8842
+struct token \7f437,11038
+static struct token tokentab2[\7ftokentab2\ 1442,11088
+yylex \7f459,11367
+parse_escape \7f740,17718
+yyerror \7f836,19599
+integer_overflow \7f844,19690
+left_shift \7f851,19804
+right_shift \7f873,20194
+parse_c_expression \7f893,20732
+main \7f923,21483
+unsigned char is_idchar[\7fis_idchar\ 1948,21901
+unsigned char is_idstart[\7fis_idstart\ 1950,21996
+char is_hor_space[\7fis_hor_space\ 1953,22160
+initialize_random_junk \7f958,22259
+error \7f988,22915
+warning \7f993,22963
+lookup \7f999,23033
+\f
+tex-src/nonewline.tex,0
+\f
+php-src/sendmail.php,0
+\f
+c-src/fail.c,0
+\f
+a-src/empty.zz,0
--- /dev/null
- perl-src/htlmify-cystic,1443
+\f
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 11,0
+ function Body_Required\7fBody_Required/f\ 13,78
+ type Type_Specific_Data \7fType_Specific_Data/t\ 111,280
+ function "abs"\7fabs/f\ 119,504
+ type Barrier_Function_Pointer \7fBarrier_Function_Pointer/t\ 121,577
+ function "="\7f=/f\ 127,722
+ type usfreelock_ptr \7fusfreelock_ptr/t\ 130,803
+ function p \7fp/f\ 133,891
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 137,1054
+function p \7fp/f\ 139,1094
+package Pkg1 \7fPkg1/s\ 144,1203
+ type Private_T \7fPrivate_T/t\ 146,1220
+ package Inner1 \7fInner1/s\ 148,1250
+ procedure Private_T;\7fPrivate_T/p\ 149,1270
+ package Inner2 \7fInner2/s\ 152,1310
+ task Private_T;\7fPrivate_T/k\ 153,1330
+ type Public_T \7fPublic_T/t\ 156,1365
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 162,1450
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 164,1475
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 166,1514
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 168,1553
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 171,1622
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 172,1645
+ task type Task_Type \7fTask_Type/k\ 175,1694
+ type Private_T \7fPrivate_T/t\ 182,1786
+package body Pkg1 \7fPkg1/b\ 189,1882
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 191,1904
+ package body Inner1 \7fInner1/b\ 196,1956
+ procedure Private_T \7fPrivate_T/p\ 197,1981
+ package body Inner2 \7fInner2/b\ 1103,2054
+ task body Private_T \7fPrivate_T/b\ 1104,2079
+ task body Task_Type \7fTask_Type/b\ 1112,2181
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 1126,2367
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 1132,2445
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 1134,2496
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1140,2596
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1146,2663
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1147,2689
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1155,2778
+package Truc \7fTruc/s\ 1162,2887
+package Truc.Bidule \7fTruc.Bidule/s\ 1166,2929
+ protected Bidule \7fBidule/t\ 1168,2953
+ protected type Machin_T \7fMachin_T/t\ 1172,3007
+package body Truc.Bidule \7fTruc.Bidule/b\ 1178,3087
+ protected body Bidule \7fBidule/b\ 1179,3115
+ protected Machin_T \7fMachin_T/t\ 1186,3207
+\f
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives \7fSystem.Task_Primitives/b\ 164,2603
+ package RTE \7fRTE/s\ 169,2712
+ package TSL \7fTSL/s\ 170,2759
+ function To_void_ptr \7fTo_void_ptr/f\ 186,3287
+ function To_TCB_Ptr \7fTo_TCB_Ptr/f\ 189,3366
+ function pthread_mutexattr_setprotocol\7fpthread_mutexattr_setprotocol/f\ 192,3444
+ function pthread_mutexattr_setprio_ceiling\7fpthread_mutexattr_setprio_ceiling/f\ 199,3728
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1115,4302
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1122,4526
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 1131,4830
+ function Self \7fSelf/f\ 1160,5586
+ procedure Initialize_Lock\7fInitialize_Lock/p\ 1174,5958
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1210,6927
+ procedure Write_Lock \7fWrite_Lock/p\ 1226,7338
+ procedure Read_Lock \7fRead_Lock/p\ 1239,7700
+ procedure Unlock \7fUnlock/p\ 1246,7850
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1258,8160
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1286,8979
+ procedure Cond_Wait \7fCond_Wait/p\ 1300,9303
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1312,9661
+ procedure Cond_Signal \7fCond_Signal/p\ 1343,10510
+ procedure Set_Priority\7fSet_Priority/p\ 1355,10836
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1372,11243
+ function Get_Priority \7fGet_Priority/f\ 1385,11598
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1398,12023
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1412,12438
+ function To_Start_Addr \7fTo_Start_Addr/f\ 1426,12873
+ procedure Exit_LL_Task \7fExit_LL_Task/p\ 1491,14995
+ procedure Abort_Task \7fAbort_Task/p\ 1500,15158
+ procedure Test_Abort \7fTest_Abort/p\ 1518,15716
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1527,15878
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1557,16939
+ function Address_To_Call_State \7fAddress_To_Call_State/f\ 1562,17062
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1573,17351
+ procedure LL_Assert \7fLL_Assert/p\ 1599,18146
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1608,18299
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1630,19010
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1635,19129
+ procedure Clear \7fClear/p\ 1640,19236
+ procedure Test_And_Set \7fTest_And_Set/p\ 1645,19330
+ function Is_Set \7fIs_Set/f\ 1659,19676
+\f
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives \7fSystem.Task_Primitives/s\ 158,3169
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 162,3253
+ type Pre_Call_State \7fPre_Call_State/t\ 164,3331
+ type Task_Storage_Size \7fTask_Storage_Size/t\ 166,3378
+ type Machine_Exceptions \7fMachine_Exceptions/t\ 168,3433
+ type Error_Information \7fError_Information/t\ 170,3499
+ type Lock \7fLock/t\ 172,3569
+ type Condition_Variable \7fCondition_Variable/t\ 173,3594
+ type Task_Control_Block \7fTask_Control_Block/t\ 181,3955
+ type TCB_Ptr \7fTCB_Ptr/t\ 189,4241
+ function Address_To_TCB_Ptr \7fAddress_To_TCB_Ptr/f\ 193,4333
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 196,4425
+ function Self \7fSelf/f\ 1100,4602
+ procedure Initialize_Lock \7fInitialize_Lock/p\ 1103,4707
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1107,4879
+ procedure Write_Lock \7fWrite_Lock/p\ 1111,5034
+ procedure Read_Lock \7fRead_Lock/p\ 1118,5428
+ procedure Unlock \7fUnlock/p\ 1128,5995
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1135,6300
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1138,6413
+ procedure Cond_Wait \7fCond_Wait/p\ 1142,6591
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1155,7396
+ procedure Cond_Signal \7fCond_Signal/p\ 1164,7812
+ procedure Set_Priority \7fSet_Priority/p\ 1169,8040
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1173,8200
+ function Get_Priority \7fGet_Priority/f\ 1177,8348
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1181,8504
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1185,8647
+ procedure Exit_LL_Task;\7fExit_LL_Task/p\ 1198,9282
+ procedure Abort_Task \7fAbort_Task/p\ 1203,9516
+ procedure Test_Abort;\7fTest_Abort/p\ 1210,9878
+ type Abort_Handler_Pointer \7fAbort_Handler_Pointer/t\ 1217,10233
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1219,10312
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1226,10741
+ procedure LL_Assert \7fLL_Assert/p\ 1231,10983
+ type Proc \7fProc/t\ 1238,11240
+ type TAS_Cell \7fTAS_Cell/t\ 1242,11328
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1249,11670
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1255,11941
+ procedure Clear \7fClear/p\ 1260,12157
+ procedure Test_And_Set \7fTest_And_Set/p\ 1267,12462
+ function Is_Set \7fIs_Set/f\ 1275,12877
+ type Lock \7fLock/t\ 1283,13155
+ type Condition_Variable \7fCondition_Variable/t\ 1288,13267
+ type TAS_Cell \7fTAS_Cell/t\ 1293,13389
+\f
+ada-src/waroquiers.ada,1503
+package Pkg1 \7fPkg1/s\ 13,89
+ type Private_T \7fPrivate_T/t\ 15,106
+ package Inner1 \7fInner1/s\ 17,136
+ procedure Private_T;\7fPrivate_T/p\ 18,156
+ package Inner2 \7fInner2/s\ 111,196
+ task Private_T;\7fPrivate_T/k\ 112,216
+ type Public_T \7fPublic_T/t\ 115,251
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 121,336
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 123,361
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 125,400
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 127,439
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 130,508
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 131,531
+ task type Task_Type \7fTask_Type/k\ 134,580
+ type Private_T \7fPrivate_T/t\ 140,671
+package body Pkg1 \7fPkg1/b\ 146,766
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 148,788
+ package body Inner1 \7fInner1/b\ 153,840
+ procedure Private_T \7fPrivate_T/p\ 154,865
+ package body Inner2 \7fInner2/b\ 160,938
+ task body Private_T \7fPrivate_T/b\ 161,963
+ task body Task_Type \7fTask_Type/b\ 168,1064
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 182,1250
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 188,1328
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 190,1379
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 196,1479
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1100,1544
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1101,1570
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1107,1657
+package Truc \7fTruc/s\ 1112,1764
+package Truc.Bidule \7fTruc.Bidule/s\ 1116,1816
+ protected Bidule \7fBidule/t\ 1125,1964
+ protected type Machin_T \7fMachin_T/t\ 1131,2046
+package body Truc.Bidule \7fTruc.Bidule/b\ 1138,2153
+ protected body Bidule \7fBidule/b\ 1139,2181
+ protected body Machin_T \7fMachin_T/b\ 1146,2281
+\f
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;\7f43,1424
+Lisp_Object Vglobal_abbrev_table;\7f48,1569
+Lisp_Object Vfundamental_mode_abbrev_table;\7f52,1680
+int abbrevs_changed;\7f56,1781
+int abbrev_all_caps;\7f58,1803
+Lisp_Object Vabbrev_start_location;\7f63,1952
+Lisp_Object Vabbrev_start_location_buffer;\7f66,2041
+Lisp_Object Vlast_abbrev;\7f70,2150
+Lisp_Object Vlast_abbrev_text;\7f75,2319
+int last_abbrev_point;\7f79,2409
+Lisp_Object Vpre_abbrev_expand_hook,\7f83,2482
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;\7f83,2482
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,\7fmake-abbrev-table\ 185,2546
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,\7fclear-abbrev-table\ 192,2738
+DEFUN ("define-abbrev", Fdefine_abbrev,\7fdefine-abbrev\ 1107,3119
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,\7fdefine-global-abbrev\ 1149,4438
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,\7fdefine-mode-abbrev\ 1160,4809
+DEFUN ("abbrev-symbol", Fabbrev_symbol,\7fabbrev-symbol\ 1174,5277
+DEFUN ("abbrev-expansion", Fabbrev_expansion,\7fabbrev-expansion\ 1202,6241
+DEFUN ("expand-abbrev", Fexpand_abbrev,\7fexpand-abbrev\ 1218,6756
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,\7funexpand-abbrev\ 1389,11677
+write_abbrev \7f426,12884
+describe_abbrev \7f445,13319
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,\7finsert-abbrev-table-description\ 1466,13834
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,\7fdefine-abbrev-table\ 1506,14990
+syms_of_abbrev \7f540,16067
+\f
+c-src/torture.c,197
+(*tag1 \7ftag1\ 118,452
+#define notag2 \7f26,553
+(*tag2 \7ftag2\ 129,630
+(*tag3 \7ftag3\ 139,772
+#define notag4 \7f45,861
+(*tag4 \7ftag4\ 148,955
+tag5 \7f57,1081
+tag6 \7f66,1208
+int pp1(\7f74,1317
+pp2\7f87,1419
+pp3(\7f100,1518
+\f
+c-src/getopt.h,538
+#define _GETOPT_H \7f19,794
+extern char *optarg;\7foptarg\ 131,1102
+extern int optind;\7f45,1610
+extern int opterr;\7f50,1736
+struct option\7f73,2790
+#define no_argument \7f89,3117
+#define required_argument \7f90,3140
+#define optional_argument \7f91,3168
+extern int getopt \7f98,3433
+extern int getopt \7f100,3537
+extern int getopt_long \7f102,3592
+extern int getopt_long_only \7f104,3724
+extern int _getopt_internal \7f109,3935
+extern int getopt \7f114,4133
+extern int getopt_long \7f115,4155
+extern int getopt_long_only \7f116,4182
+extern int _getopt_internal \7f118,4215
+\f
+c-src/etags.c,12175
+char pot_etags_version[\7fpot_etags_version\ 181,3470
+# undef DEBUG\7f84,3552
+# define DEBUG \7f85,3567
+# define DEBUG \7f87,3594
+# define NDEBUG \7f88,3617
+# define _GNU_SOURCE \7f94,3705
+# undef MSDOS\7f100,3876
+# undef WINDOWSNT\7f101,3890
+# define WINDOWSNT\7f102,3909
+# undef MSDOS\7f106,3968
+# define MSDOS \7f107,3982
+# define MSDOS \7f110,4032
+# define MAXPATHLEN \7f115,4111
+# undef HAVE_NTGUI\7f116,4141
+# undef DOS_NT\7f117,4160
+# define DOS_NT\7f118,4176
+# undef assert \7f135,4482
+# define assert(\7f136,4541
+# undef CTAGS\7f146,4857
+# define CTAGS \7f147,4872
+# define CTAGS \7f149,4898
+#define streq(\7f152,4927
+#define strcaseeq(\7f153,4996
+#define strneq(\7f154,5075
+#define strncaseeq(\7f155,5151
+#define CHARS \7f157,5238
+#define CHAR(\7f158,5278
+#define iswhite(\7f159,5329
+#define notinname(\7f160,5394
+#define begtoken(\7f161,5469
+#define intoken(\7f162,5542
+#define endtoken(\7f163,5614
+#define ISALNUM(\7f165,5684
+#define ISALPHA(\7f166,5722
+#define ISDIGIT(\7f167,5760
+#define ISLOWER(\7f168,5798
+#define lowcase(\7f170,5837
+#define xnew(\7f179,6015
+#define xrnew(\7f180,6083
+typedef void Lang_function \7f182,6164
+} compressor;\7f188,6365
+} language;\7f199,6835
+typedef struct fdesc\7f201,6848
+} fdesc;\7f212,7366
+typedef struct node_st\7f214,7376
+} node;\7f225,7894
+} linebuffer;\7f239,8248
+ at_language,\7f245,8344
+ at_regexp,\7f246,8393
+ at_filename,\7f247,8437
+ at_stdin,\7f248,8473
+ at_end \7f249,8516
+} argument;\7f253,8698
+typedef struct regexp\7f256,8758
+} regexp;\7f268,9325
+static void Ada_funcs \7f274,9428
+static void Asm_labels \7f275,9460
+static void C_entries \7f276,9493
+static void default_C_entries \7f277,9536
+static void plain_C_entries \7f278,9576
+static void Cjava_entries \7f279,9614
+static void Cobol_paragraphs \7f280,9650
+static void Cplusplus_entries \7f281,9689
+static void Cstar_entries \7f282,9729
+static void Erlang_functions \7f283,9765
+static void Forth_words \7f284,9804
+static void Fortran_functions \7f285,9838
+static void HTML_labels \7f286,9878
+static void Lisp_functions \7f287,9912
+static void Lua_functions \7f288,9949
+static void Makefile_targets \7f289,9985
+static void Pascal_functions \7f290,10024
+static void Perl_functions \7f291,10063
+static void PHP_functions \7f292,10100
+static void PS_functions \7f293,10136
+static void Prolog_functions \7f294,10171
+static void Python_functions \7f295,10210
+static void Scheme_functions \7f296,10249
+static void TeX_commands \7f297,10288
+static void Texinfo_nodes \7f298,10323
+static void Yacc_entries \7f299,10359
+static void just_read_file \7f300,10394
+static language *get_language_from_langname \7fget_language_from_langname\ 1302,10432
+static void readline \7f303,10492
+static long readline_internal \7f304,10537
+static bool nocase_tail \7f305,10591
+static void get_tag \7f306,10631
+static void analyze_regex \7f308,10671
+static void free_regexps \7f309,10707
+static void regex_tag_multiline \7f310,10740
+static void error \7f311,10780
+# undef STDIN\7f408,15073
+#define STDIN \7f411,15095
+static compressor compressors[\7fcompressors\ 1457,17664
+static const char *Ada_suffixes \7fAda_suffixes\ 1473,17907
+static const char Ada_help \7f475,17977
+static const char *Asm_suffixes \7fAsm_suffixes\ 1493,18580
+static const char Asm_help \7f504,18976
+static const char *default_C_suffixes \7fdefault_C_suffixes\ 1512,19312
+static const char default_C_help \7f515,19413
+static const char default_C_help \7f523,19850
+static const char *Cplusplus_suffixes \7fCplusplus_suffixes\ 1535,20460
+static const char Cplusplus_help \7f540,20658
+static const char *Cjava_suffixes \7fCjava_suffixes\ 1549,21113
+static char Cjava_help \7f551,21172
+static const char *Cobol_suffixes \7fCobol_suffixes\ 1556,21337
+static char Cobol_help \7f558,21402
+static const char *Cstar_suffixes \7fCstar_suffixes\ 1562,21543
+static const char *Erlang_suffixes \7fErlang_suffixes\ 1565,21607
+static const char Erlang_help \7f567,21673
+const char *Forth_suffixes \7fForth_suffixes\ 1571,21799
+static const char Forth_help \7f573,21857
+static const char *Fortran_suffixes \7fFortran_suffixes\ 1577,22008
+static const char Fortran_help \7f579,22085
+static const char *HTML_suffixes \7fHTML_suffixes\ 1582,22190
+static const char HTML_help \7f584,22264
+static const char *Lisp_suffixes \7fLisp_suffixes\ 1589,22452
+static const char Lisp_help \7f591,22556
+static const char *Lua_suffixes \7fLua_suffixes\ 1598,22871
+static const char Lua_help \7f600,22934
+static const char *Makefile_filenames \7fMakefile_filenames\ 1603,23010
+static const char Makefile_help \7f605,23133
+static const char *Objc_suffixes \7fObjc_suffixes\ 1609,23277
+static const char Objc_help \7f613,23399
+static const char *Pascal_suffixes \7fPascal_suffixes\ 1619,23714
+static const char Pascal_help \7f621,23778
+static const char *Perl_suffixes \7fPerl_suffixes\ 1626,23966
+static const char *Perl_interpreters \7fPerl_interpreters\ 1628,24028
+static const char Perl_help \7f630,24100
+static const char *PHP_suffixes \7fPHP_suffixes\ 1637,24451
+static const char PHP_help \7f639,24523
+static const char *plain_C_suffixes \7fplain_C_suffixes\ 1643,24678
+static const char *PS_suffixes \7fPS_suffixes\ 1647,24762
+static const char PS_help \7f649,24848
+static const char *Prolog_suffixes \7fProlog_suffixes\ 1652,24931
+static const char Prolog_help \7f654,24993
+static const char *Python_suffixes \7fPython_suffixes\ 1658,25107
+static const char Python_help \7f660,25165
+static const char *Scheme_suffixes \7fScheme_suffixes\ 1665,25347
+static const char Scheme_help \7f667,25460
+static const char *TeX_suffixes \7fTeX_suffixes\ 1672,25683
+static const char TeX_help \7f674,25781
+static const char *Texinfo_suffixes \7fTexinfo_suffixes\ 1686,26316
+static const char Texinfo_help \7f688,26395
+static const char *Yacc_suffixes \7fYacc_suffixes\ 1691,26492
+static const char Yacc_help \7f693,26606
+static const char auto_help \7f699,26856
+static const char none_help \7f703,27020
+static const char no_lang_help \7f707,27143
+static language lang_names \7f718,27355
+print_language_names \7f753,29532
+# define EMACS_NAME \7f786,30755
+# define VERSION \7f789,30811
+print_version \7f792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP \7f804,31173
+print_help \7f808,31250
+main \7f981,37438
+get_compressor_from_suffix \7f1319,46217
+get_language_from_langname \7f1355,47158
+get_language_from_interpreter \7f1377,47545
+get_language_from_filename \7f1399,47976
+process_file_name \7f1433,48834
+process_file \7f1555,51665
+init \7f1632,54150
+find_entries \7f1656,54901
+make_tag \7f1814,59707
+pfnote \7f1856,60942
+free_tree \7f1917,62744
+free_fdesc \7f1935,63029
+add_node \7f1955,63472
+invalidate_nodes \7f2035,65537
+static int total_size_of_entries \7f2067,66150
+static int number_len \7f2068,66193
+total_size_of_entries \7f2087,66694
+put_entries \7f2107,67154
+#define C_EXT \7f2193,68995
+#define C_PLAIN \7f2194,69037
+#define C_PLPL \7f2195,69070
+#define C_STAR \7f2196,69104
+#define C_JAVA \7f2197,69137
+#define C_AUTO \7f2198,69172
+#define YACC \7f2199,69242
+enum sym_type\7f2204,69312
+ st_none,\7f2206,69328
+ st_C_objprot,\7f2207,69339
+ st_C_objprot, st_C_objimpl,\7f2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,\7f2207,69339
+ st_C_gnumacro,\7f2208,69382
+ st_C_ignore,\7f2209,69399
+ st_C_ignore, st_C_attribute,\7f2209,69399
+ st_C_javastruct,\7f2210,69430
+ st_C_operator,\7f2211,69449
+ st_C_class,\7f2212,69466
+ st_C_class, st_C_template,\7f2212,69466
+ st_C_struct,\7f2213,69495
+ st_C_struct, st_C_extern,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef\7f2213,69495
+struct C_stab_entry \7f2271,71278
+hash \7f2275,71409
+in_word_set \7f2321,72937
+ TOTAL_KEYWORDS \7f2325,73018
+ MIN_WORD_LENGTH \7f2326,73045
+ MAX_WORD_LENGTH \7f2327,73072
+ MIN_HASH_VALUE \7f2328,73100
+ MAX_HASH_VALUE \7f2329,73126
+C_symtype \7f2387,74985
+static bool inattribute;\7f2400,75234
+ fvnone,\7f2408,75435
+ fdefunkey,\7f2409,75466
+ fdefunname,\7f2410,75512
+ foperator,\7f2411,75556
+ fvnameseen,\7f2412,75613
+ fstartlist,\7f2413,75666
+ finlist,\7f2414,75722
+ flistseen,\7f2415,75765
+ fignore,\7f2416,75813
+ vignore \7f2417,75856
+} fvdef;\7f2418,75901
+static bool fvextern;\7f2420,75911
+ tnone,\7f2428,76089
+ tkeyseen,\7f2429,76119
+ ttypeseen,\7f2430,76160
+ tinbody,\7f2431,76199
+ tend,\7f2432,76238
+ tignore \7f2433,76279
+} typdef;\7f2434,76320
+ snone,\7f2443,76499
+ skeyseen,\7f2445,76575
+ stagseen,\7f2446,76620
+ scolonseen \7f2447,76661
+} structdef;\7f2448,76715
+static const char *objtag \7fobjtag\ 12453,76809
+ dnone,\7f2460,76942
+ dsharpseen,\7f2461,76972
+ ddefineseen,\7f2462,77025
+ dignorerest \7f2463,77070
+} definedef;\7f2464,77112
+ onone,\7f2472,77267
+ oprotocol,\7f2473,77297
+ oimplementation,\7f2474,77347
+ otagseen,\7f2475,77395
+ oparenseen,\7f2476,77431
+ ocatseen,\7f2477,77486
+ oinbody,\7f2478,77525
+ omethodsign,\7f2479,77568
+ omethodtag,\7f2480,77626
+ omethodcolon,\7f2481,77666
+ omethodparm,\7f2482,77709
+ oignore \7f2483,77755
+} objdef;\7f2484,77787
+static struct tok\7f2491,77944
+} token;\7f2508,78626
+static void pushclass_above \7f2514,78784
+static void popclass_above \7f2515,78832
+static void write_classname \7f2516,78866
+} cstack;\7f2523,79136
+#define nestlev \7f2525,79264
+#define instruct \7f2527,79369
+pushclass_above \7f2531,79489
+popclass_above \7f2550,79948
+write_classname \7f2564,80162
+static bool consider_token \7f2592,80761
+static void make_C_tag \7f2593,80833
+consider_token \7f2613,81341
+} lbs[\7flbs\ 12924,88532
+#define current_lb_is_new \7f2926,88543
+#define switch_line_buffers(\7f2927,88588
+#define curlb \7f2929,88641
+#define newlb \7f2930,88672
+#define curlinepos \7f2931,88703
+#define newlinepos \7f2932,88744
+#define plainc \7f2934,88786
+#define cplpl \7f2935,88830
+#define cjava \7f2936,88861
+#define CNL_SAVE_DEFINEDEF(\7f2938,88905
+#define CNL(\7f2947,89117
+make_C_tag \7f2960,89375
+C_entries \7f2986,90194
+default_C_entries \7f3833,110156
+plain_C_entries \7f3840,110276
+Cplusplus_entries \7f3847,110364
+Cjava_entries \7f3854,110460
+Cstar_entries \7f3861,110550
+Yacc_entries \7f3868,110642
+#define LOOP_ON_INPUT_LINES(\7f3875,110720
+#define LOOKING_AT(\7f3884,111056
+#define LOOKING_AT_NOCASE(\7f3891,111461
+just_read_file \7f3901,111861
+static void F_takeprec \7f3910,111965
+static void F_getit \7f3911,111996
+F_takeprec \7f3914,112039
+F_getit \7f3937,112366
+Fortran_functions \7f3961,112840
+Ada_getit \7f4052,114669
+Ada_funcs \7f4115,116044
+Asm_labels \7f4228,118582
+Perl_functions \7f4261,119549
+Python_functions \7f4357,122057
+PHP_functions \7f4387,122684
+Cobol_paragraphs \7f4466,124471
+Makefile_targets \7f4494,125029
+Pascal_functions \7f4529,125950
+static void L_getit \7f4706,130277
+L_getit \7f4709,130318
+Lisp_functions \7f4725,130664
+Lua_functions \7f4785,131850
+PS_functions \7f4811,132385
+Forth_words \7f4841,133053
+Scheme_functions \7f4877,134092
+static linebuffer *TEX_toktab \7fTEX_toktab\ 14908,134781
+static const char *TEX_defenv \7fTEX_defenv\ 14912,134974
+static void TEX_mode \7f4917,135172
+static void TEX_decode_env \7f4918,135203
+static char TEX_esc \7f4920,135261
+static char TEX_opgrp \7f4921,135289
+static char TEX_clgrp \7f4922,135318
+TeX_commands \7f4928,135395
+#define TEX_LESC \7f4986,136652
+#define TEX_SESC \7f4987,136674
+TEX_mode \7f4992,136804
+TEX_decode_env \7f5026,137509
+Texinfo_nodes \7f5071,138554
+HTML_labels \7f5094,139013
+static size_t prolog_pr \7f5214,142192
+static void prolog_skip_comment \7f5215,142234
+static size_t prolog_atom \7f5216,142290
+Prolog_functions \7f5219,142347
+prolog_skip_comment \7f5255,143128
+prolog_pr \7f5281,143736
+prolog_atom \7f5319,144628
+static int erlang_func \7f5374,145540
+static void erlang_attribute \7f5375,145581
+static int erlang_atom \7f5376,145620
+Erlang_functions \7f5379,145666
+erlang_func \7f5438,146965
+erlang_attribute \7f5476,147642
+erlang_atom \7f5496,148061
+static char *scan_separators \7fscan_separators\ 15520,148487
+static void add_regex \7f5521,148526
+static char *substitute \7fsubstitute\ 15522,148570
+scan_separators \7f5534,149080
+analyze_regex \7f5586,150460
+add_regex \7f5654,152050
+substitute \7f5767,154797
+free_regexps \7f5814,155837
+regex_tag_multiline \7f5836,156291
+nocase_tail \7f5913,158263
+get_tag \7f5928,158519
+readline_internal \7f5959,159455
+readline \7f6037,161296
+savestr \7f6230,167243
+savenstr \7f6240,167473
+skip_spaces \7f6249,167679
+skip_non_spaces \7f6258,167833
+skip_name \7f6267,167983
+fatal \7f6277,168156
+pfatal \7f6284,168253
+suggest_asking_for_help \7f6291,168332
+error \7f6300,168554
+concat \7f6313,168846
+etags_getcwd \7f6329,169259
+relative_filename \7f6350,169725
+absolute_filename \7f6389,170751
+absolute_dirname \7f6453,172416
+filename_is_absolute \7f6472,172845
+canonicalize_filename \7f6484,173096
+# define ISUPPER(\7f6491,173235
+linebuffer_init \7f6514,173656
+linebuffer_setlen \7f6524,173887
+xmalloc \7f6536,174148
+xrealloc \7f6545,174314
+\f
+c-src/exit.c,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/exit.strange_suffix,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/sysdep.h,491
+#define ENTRY(\7f21,870
+#define PSEUDO(\7f26,977
+ movl $SYS_##syscall_nam\7f$SYS_##syscall_na\ 131,1137
+ movl $SYS_##syscall_name, %eax;\7feax\ 131,1137
+ int $0x80;\7f32,1185
+ test %eax,\7feax\ 133,1215
+ test %eax, %eax;\7feax\ 133,1215
+ jl syscall_error;\7f34,1250
+#define XCHG_0 \7f47,1567
+#define XCHG_1 \7f48,1611
+#define XCHG_2 \7f49,1653
+#define XCHG_3 \7f50,1696
+#define XCHG_4 \7f51,1739
+#define XCHG_5 \7f52,1782
+#define r0 \7f54,1826
+#define r1 \7f55,1880
+#define scratch \7f56,1937
+#define MOVE(\7f57,2006
+\f
+c-src/tab.c,196
+static int count_words(\7f15,263
+static char *get_word(\7fget_word\ 135,553
+void tab_free(\7f59,966
+char **tab_fill(\7ftab_fill\ 170,1129
+int tab_delete_first(\7f91,1638
+int tab_count_words(\7f103,1820
+\f
+c-src/dostorture.c,198
+(*tag1 \7ftag1\ 118,468
+#define notag2 \7f26,577
+(*tag2 \7ftag2\ 129,657
+(*tag3 \7ftag3\ 139,809
+#define notag4 \7f45,904
+(*tag4 \7ftag4\ 148,1001
+tag5 \7f57,1136
+tag6 \7f66,1272
+int pp1(\7f74,1389
+pp2\7f87,1504
+pp3(\7f100,1616
+\f
+c-src/emacs/src/gmalloc.c,6643
+#define USE_PTHREAD\7f25,1002
+#undef get_current_dir_name\7f33,1126
+extern void emacs_abort \7f47,1305
+#undef malloc\7f64,2110
+#undef realloc\7f65,2124
+#undef calloc\7f66,2139
+#undef free\7f67,2153
+#define malloc \7f68,2165
+#define realloc \7f69,2188
+#define calloc \7f70,2213
+#define aligned_alloc \7f71,2236
+#define free \7f72,2273
+extern void *bss_sbrk \7fbss_sbrk\ 176,2335
+extern int bss_sbrk_did_unexec;\7f77,2375
+extern char bss_sbrk_buffer[\7fbss_sbrk_buffer\ 178,2407
+extern void *bss_sbrk_buffer_end;\7fbss_sbrk_buffer_end\ 179,2438
+#define DUMPED \7f80,2472
+#define ALLOCATED_BEFORE_DUMPING(\7f81,2507
+extern void *malloc \7fmalloc\ 194,2718
+#define INT_BIT \7f124,3934
+#define BLOCKLOG \7f125,3977
+#define BLOCKSIZE \7f126,4018
+#define BLOCKIFY(\7f127,4052
+#define HEAP \7f131,4215
+#define FINAL_FREE_BLOCKS \7f135,4391
+ } malloc_info;\7f167,5388
+extern char *_heapbase;\7f_heapbase\ 1170,5449
+extern malloc_info *_heapinfo;\7f_heapinfo\ 1173,5541
+#define BLOCK(\7f176,5620
+#define ADDRESS(\7f177,5682
+extern size_t _heapindex;\7f180,5797
+extern size_t _heaplimit;\7f183,5866
+struct list\7f186,5939
+extern struct list _fraghead[\7f_fraghead\ 1193,6056
+struct alignlist\7f196,6153
+extern struct alignlist *_aligned_blocks;\7f_aligned_blocks\ 1202,6334
+extern size_t _chunks_used;\7f205,6401
+extern size_t _bytes_used;\7f206,6429
+extern size_t _chunks_free;\7f207,6456
+extern size_t _bytes_free;\7f208,6484
+extern void *_malloc_internal \7f_malloc_internal\ 1213,6673
+extern void *_realloc_internal \7f_realloc_internal\ 1214,6713
+extern void _free_internal \7f215,6762
+extern void *_malloc_internal_nolock \7f_malloc_internal_nolock\ 1216,6799
+extern void *_realloc_internal_nolock \7f_realloc_internal_nolock\ 1217,6846
+extern void _free_internal_nolock \7f218,6902
+extern pthread_mutex_t _malloc_mutex,\7f221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;\7f221,6966
+extern int _malloc_thread_enabled_p;\7f222,7027
+#define LOCK(\7f223,7064
+#define UNLOCK(\7f228,7195
+#define LOCK_ALIGNED_BLOCKS(\7f233,7329
+#define UNLOCK_ALIGNED_BLOCKS(\7f238,7484
+#define LOCK(\7f244,7649
+#define UNLOCK(\7f245,7664
+#define LOCK_ALIGNED_BLOCKS(\7f246,7681
+#define UNLOCK_ALIGNED_BLOCKS(\7f247,7711
+extern void *malloc_find_object_address \7fmalloc_find_object_address\ 1252,7865
+extern void *(*__morecore)\7f__morecore\ 1256,8021
+extern void *__default_morecore \7f__default_morecore\ 1259,8105
+extern void (*__after_morecore_hook)\7f__after_morecore_hook\ 1263,8269
+extern size_t __malloc_extra_blocks;\7f267,8442
+extern int __malloc_initialized;\7f270,8552
+extern int __malloc_initialize \7f272,8646
+extern void (*__malloc_initialize_hook)\7f__malloc_initialize_hook\ 1275,8723
+extern void (*__free_hook)\7f__free_hook\ 1276,8771
+extern void *(*__malloc_hook)\7f__malloc_hook\ 1277,8811
+extern void *(*__realloc_hook)\7f__realloc_hook\ 1278,8856
+extern void *(*__memalign_hook)\7f__memalign_hook\ 1279,8913
+enum mcheck_status\7f283,9092
+ MCHECK_DISABLED \7f285,9115
+ MCHECK_OK,\7f286,9187
+ MCHECK_FREE,\7f287,9226
+ MCHECK_HEAD,\7f288,9270
+ MCHECK_TAIL \7f289,9334
+extern int mcheck \7f296,9701
+extern enum mcheck_status mprobe \7f301,9952
+extern void mtrace \7f304,10055
+extern void muntrace \7f305,10082
+struct mstats\7f308,10153
+extern struct mstats mstats \7f318,10518
+extern void memory_warnings \7f321,10625
+void *(*__malloc_hook)\7f__malloc_hook\ 1352,11743
+char *_heapbase;\7f_heapbase\ 1355,11829
+malloc_info *_heapinfo;\7f_heapinfo\ 1358,11927
+static size_t heapsize;\7f361,11983
+size_t _heapindex;\7f364,12047
+size_t _heaplimit;\7f367,12109
+struct list _fraghead[\7f_fraghead\ 1370,12171
+size_t _chunks_used;\7f373,12229
+size_t _bytes_used;\7f374,12250
+size_t _chunks_free;\7f375,12270
+size_t _bytes_free;\7f376,12291
+int __malloc_initialized;\7f379,12340
+size_t __malloc_extra_blocks;\7f381,12367
+void (*__malloc_initialize_hook)\7f__malloc_initialize_hook\ 1383,12398
+void (*__after_morecore_hook)\7f__after_morecore_hook\ 1384,12439
+static int state_protected_p;\7f400,12912
+static size_t last_state_size;\7f401,12942
+static malloc_info *last_heapinfo;\7flast_heapinfo\ 1402,12973
+protect_malloc_state \7f405,13014
+#define PROTECT_MALLOC_STATE(\7f426,13627
+#define PROTECT_MALLOC_STATE(\7f429,13697
+align \7f435,13794
+get_contiguous_space \7f466,14616
+register_heapinfo \7f497,15325
+pthread_mutex_t _malloc_mutex \7f517,15879
+pthread_mutex_t _aligned_blocks_mutex \7f518,15938
+int _malloc_thread_enabled_p;\7f519,16005
+malloc_atfork_handler_prepare \7f522,16048
+malloc_atfork_handler_parent \7f529,16139
+malloc_atfork_handler_child \7f536,16233
+malloc_enable_thread \7f544,16375
+malloc_initialize_1 \7f563,16961
+__malloc_initialize \7f594,17793
+static int morecore_recursing;\7f604,17926
+morecore_nolock \7f609,18066
+_malloc_internal_nolock \7f722,21584
+_malloc_internal \7f920,28102
+malloc \7f932,28247
+extern void *_malloc \7f_malloc\ 1956,29033
+extern void _free \7f957,29064
+extern void *_realloc \7f_realloc\ 1958,29092
+_malloc \7f961,29140
+_free \7f967,29196
+_realloc \7f973,29240
+void (*__free_hook)\7f__free_hook\ 11001,30259
+struct alignlist *_aligned_blocks \7f_aligned_blocks\ 11004,30345
+_free_internal_nolock \7f1009,30474
+_free_internal \7f1255,38476
+free \7f1265,38603
+weak_alias \7f1277,38799
+#define min(\7f1306,39813
+void *(*__realloc_hook)\7f__realloc_hook\ 11310,39898
+_realloc_internal_nolock \7f1319,40309
+_realloc_internal \7f1435,43563
+realloc \7f1447,43726
+calloc \7f1478,44894
+#define __sbrk \7f1513,46042
+extern void *__sbrk \7f__sbrk\ 11518,46247
+__default_morecore \7f1525,46511
+void *(*__memalign_hook)\7f__memalign_hook\ 11554,47456
+aligned_alloc \7f1557,47522
+memalign \7f1647,49704
+posix_memalign \7f1656,49909
+extern void *valloc \7fvalloc\ 11695,51140
+extern int getpagesize \7f1700,51278
+static size_t pagesize;\7f1703,51317
+valloc \7f1706,51349
+#undef malloc\7f1715,51490
+#undef realloc\7f1716,51504
+#undef calloc\7f1717,51519
+#undef aligned_alloc\7f1718,51533
+#undef free\7f1719,51554
+extern void *malloc \7fmalloc\ 11722,51609
+extern void *realloc \7frealloc\ 11723,51644
+extern void *calloc \7fcalloc\ 11724,51691
+extern void free \7f1725,51740
+extern void *aligned_alloc \7faligned_alloc\ 11727,51796
+extern int posix_memalign \7f1729,51890
+hybrid_malloc \7f1736,52083
+hybrid_calloc \7f1744,52188
+hybrid_free \7f1752,52319
+hybrid_aligned_alloc \7f1765,52626
+hybrid_realloc \7f1780,52984
+char *gget_current_dir_name \7fgget_current_dir_name\ 11808,53753
+hybrid_get_current_dir_name \7f1811,53797
+static void (*old_free_hook)\7fold_free_hook\ 11846,54921
+static void *(*old_malloc_hook)\7fold_malloc_hook\ 11847,54963
+static void *(*old_realloc_hook)\7fold_realloc_hook\ 11848,55010
+static void (*abortfunc)\7fabortfunc\ 11851,55124
+#define MAGICWORD \7f1854,55206
+#define MAGICFREE \7f1855,55261
+#define MAGICBYTE \7f1856,55316
+#define MALLOCFLOOD \7f1857,55348
+#define FREEFLOOD \7f1858,55382
+struct hdr\7f1860,55415
+checkhdr \7f1867,55581
+freehook \7f1891,56022
+mallochook \7f1927,56804
+reallochook \7f1944,57143
+mabort \7f1978,57901
+static int mcheck_used \7f2012,58586
+mcheck \7f2015,58619
+mprobe \7f2035,59138
+\f
+c-src/emacs/src/regex.h,4576
+#define _REGEX_H \7f21,836
+typedef unsigned long reg_syntax_t;\7f43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS \7f47,1749
+#define RE_BK_PLUS_QM \7f52,1969
+#define RE_CHAR_CLASSES \7f58,2298
+#define RE_CONTEXT_INDEP_ANCHORS \7f72,3032
+#define RE_CONTEXT_INDEP_OPS \7f80,3458
+#define RE_CONTEXT_INVALID_OPS \7f84,3658
+#define RE_DOT_NEWLINE \7f88,3801
+#define RE_DOT_NOT_NULL \7f92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE \7f96,4082
+#define RE_INTERVALS \7f101,4292
+#define RE_LIMITED_OPS \7f105,4441
+#define RE_NEWLINE_ALT \7f109,4583
+#define RE_NO_BK_BRACES \7f114,4773
+#define RE_NO_BK_PARENS \7f118,4964
+#define RE_NO_BK_REFS \7f122,5120
+#define RE_NO_BK_VBAR \7f126,5316
+#define RE_NO_EMPTY_RANGES \7f132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD \7f136,5766
+#define RE_NO_POSIX_BACKTRACKING \7f140,5937
+#define RE_NO_GNU_OPS \7f144,6133
+#define RE_FRUGAL \7f147,6253
+#define RE_SHY_GROUPS \7f150,6360
+#define RE_NO_NEWLINE_ANCHOR \7f153,6468
+#define RE_DEBUG \7f161,6884
+extern reg_syntax_t re_syntax_options;\7f167,7170
+extern Lisp_Object re_match_object;\7f172,7344
+extern size_t re_max_failures;\7f176,7454
+#define RE_SYNTAX_EMACS \7f183,7684
+#define RE_SYNTAX_AWK \7f186,7780
+#define RE_SYNTAX_GNU_AWK \7f193,8084
+#define RE_SYNTAX_POSIX_AWK \7f197,8255
+#define RE_SYNTAX_GREP \7f201,8393
+#define RE_SYNTAX_EGREP \7f206,8549
+#define RE_SYNTAX_POSIX_EGREP \7f212,8765
+#define RE_SYNTAX_ED \7f216,8910
+#define RE_SYNTAX_SED \7f218,8954
+#define _RE_SYNTAX_POSIX_COMMON \7f221,9072
+#define RE_SYNTAX_POSIX_BASIC \7f225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \7f231,9508
+#define RE_SYNTAX_POSIX_EXTENDED \7f234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \7f242,9967
+# undef RE_DUP_MAX\7f253,10454
+#define RE_DUP_MAX \7f256,10540
+#define REG_EXTENDED \7f263,10762
+#define REG_ICASE \7f267,10886
+#define REG_NEWLINE \7f272,11070
+#define REG_NOSUB \7f276,11248
+#define REG_NOTBOL \7f286,11614
+#define REG_NOTEOL \7f289,11688
+ REG_ENOSYS \7f297,11859
+ REG_NOERROR \7f300,11941
+ REG_NOMATCH,\7f301,11976
+ REG_BADPAT,\7f305,12123
+ REG_ECOLLATE,\7f306,12162
+ REG_ECTYPE,\7f307,12203
+ REG_EESCAPE,\7f308,12255
+ REG_ESUBREG,\7f309,12298
+ REG_EBRACK,\7f310,12345
+ REG_EPAREN,\7f311,12391
+ REG_EBRACE,\7f312,12436
+ REG_BADBR,\7f313,12472
+ REG_ERANGE,\7f314,12519
+ REG_ESPACE,\7f315,12560
+ REG_BADRPT,\7f316,12601
+ REG_EEND,\7f319,12693
+ REG_ESIZE,\7f320,12728
+ REG_ERPAREN,\7f321,12790
+ REG_ERANGEX \7f322,12859
+} reg_errcode_t;\7f323,12911
+# define RE_TRANSLATE_TYPE \7f332,13273
+struct re_pattern_buffer\7f335,13315
+#define REGS_UNALLOCATED \7f376,14889
+#define REGS_REALLOCATE \7f377,14916
+#define REGS_FIXED \7f378,14942
+typedef struct re_pattern_buffer regex_t;\7f416,16098
+typedef ssize_t regoff_t;\7f423,16492
+struct re_registers\7f428,16652
+# define RE_NREGS \7f440,16942
+} regmatch_t;\7f451,17317
+extern reg_syntax_t re_set_syntax \7f457,17512
+extern const char *re_compile_pattern \7fre_compile_pattern\ 1462,17776
+extern int re_compile_fastmap \7f469,18058
+extern regoff_t re_search \7f477,18466
+extern regoff_t re_search_2 \7f485,18781
+extern regoff_t re_match \7f495,19177
+extern regoff_t re_match_2 \7f501,19407
+extern void re_set_registers \7f520,20197
+extern char *re_comp \7fre_comp\ 1528,20469
+extern int re_exec \7f529,20506
+# define _Restrict_ \7f540,20886
+# define _Restrict_ \7f542,20979
+# define _Restrict_\7f544,21018
+# define _Restrict_arr_ \7f555,21418
+# define _Restrict_arr_\7f557,21461
+extern reg_errcode_t regcomp \7f562,21530
+extern reg_errcode_t regexec \7f566,21656
+extern size_t regerror \7f571,21850
+extern void regfree \7f574,21956
+# define CHAR_CLASS_MAX_LENGTH \7f593,22470
+# define CHAR_CLASS_MAX_LENGTH \7f597,22648
+typedef wctype_t re_wctype_t;\7f599,22692
+typedef wchar_t re_wchar_t;\7f600,22722
+# define re_wctype \7f601,22750
+# define re_iswctype \7f602,22776
+# define re_wctype_to_bit(\7f603,22806
+# define CHAR_CLASS_MAX_LENGTH \7f605,22844
+# define btowc(\7f606,22906
+typedef enum { RECC_ERROR \7f609,22953
+ RECC_ALNUM,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,\7f610,22984
+ RECC_GRAPH,\7f611,23027
+ RECC_GRAPH, RECC_PRINT,\7f611,23027
+ RECC_LOWER,\7f612,23059
+ RECC_LOWER, RECC_UPPER,\7f612,23059
+ RECC_PUNCT,\7f613,23091
+ RECC_PUNCT, RECC_CNTRL,\7f613,23091
+ RECC_DIGIT,\7f614,23123
+ RECC_DIGIT, RECC_XDIGIT,\7f614,23123
+ RECC_BLANK,\7f615,23156
+ RECC_BLANK, RECC_SPACE,\7f615,23156
+ RECC_MULTIBYTE,\7f616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,\7f616,23188
+ RECC_ASCII,\7f617,23227
+ RECC_ASCII, RECC_UNIBYTE\7f617,23227
+} re_wctype_t;\7f618,23260
+extern char re_iswctype \7f620,23276
+extern re_wctype_t re_wctype \7f621,23329
+typedef int re_wchar_t;\7f623,23387
+extern void re_set_whitespace_regexp \7f625,23412
+\f
+c-src/emacs/src/keyboard.c,15493
+volatile int interrupt_input_blocked;\7f76,1808
+volatile bool pending_signals;\7f80,1944
+#define KBD_BUFFER_SIZE \7f82,1976
+KBOARD *initial_kboard;\7finitial_kboard\ 184,2006
+KBOARD *current_kboard;\7fcurrent_kboard\ 185,2030
+static KBOARD *all_kboards;\7fall_kboards\ 186,2054
+static bool single_kboard;\7f89,2154
+#define NUM_RECENT_KEYS \7f91,2182
+static int recent_keys_index;\7f94,2269
+static int total_keys;\7f97,2357
+static Lisp_Object recent_keys;\7f100,2443
+Lisp_Object this_command_keys;\7f107,2777
+ptrdiff_t this_command_key_count;\7f108,2808
+static bool this_command_key_count_reset;\7f112,2922
+static Lisp_Object raw_keybuf;\7f116,3074
+static int raw_keybuf_count;\7f117,3105
+#define GROW_RAW_KEYBUF \7f119,3135
+static ptrdiff_t this_single_command_key_start;\7f125,3350
+static ptrdiff_t before_command_key_count;\7f129,3498
+static ptrdiff_t before_command_echo_length;\7f130,3541
+sigjmp_buf return_to_command_loop;\7f135,3677
+static Lisp_Object recover_top_level_message;\7f138,3791
+static Lisp_Object regular_top_level_message;\7f143,3930
+static sys_jmp_buf getcjmp;\7f147,4031
+bool waiting_for_input;\7f150,4095
+static bool echoing;\7f154,4186
+static struct kboard *ok_to_echo_at_next_pause;\7fok_to_echo_at_next_pause\ 1159,4328
+struct kboard *echo_kboard;\7fecho_kboard\ 1166,4632
+Lisp_Object echo_message_buffer;\7f171,4744
+bool immediate_quit;\7f174,4837
+int quit_char;\7f192,5623
+EMACS_INT command_loop_level;\7f195,5680
+Lisp_Object unread_switch_frame;\7f204,6108
+static ptrdiff_t last_non_minibuf_size;\7f207,6216
+uintmax_t num_input_events;\7f210,6334
+static EMACS_INT last_auto_save;\7f214,6428
+static ptrdiff_t last_point_position;\7f217,6523
+Lisp_Object internal_last_event_frame;\7f228,7028
+static Lisp_Object read_key_sequence_cmd;\7f232,7168
+static Lisp_Object read_key_sequence_remapped;\7f233,7210
+static FILE *dribble;\7fdribble\ 1236,7310
+bool input_pending;\7f239,7368
+static bool input_was_pending;\7f287,10022
+static struct input_event kbd_buffer[\7fkbd_buffer\ 1291,10107
+static struct input_event *kbd_fetch_ptr;\7fkbd_fetch_ptr\ 1297,10386
+static struct input_event * volatile kbd_store_ptr;\7f302,10601
+static void recursive_edit_unwind \7f313,11088
+static Lisp_Object command_loop \7f314,11144
+static void echo_now \7f316,11185
+static ptrdiff_t echo_length \7f317,11214
+unsigned timers_run;\7f320,11296
+struct timespec *input_available_clear_time;\7finput_available_clear_time\ 1324,11408
+bool interrupt_input;\7f328,11573
+bool interrupts_deferred;\7f331,11671
+static struct timespec timer_idleness_start_time;\7f335,11746
+static struct timespec timer_last_idleness_start_time;\7f340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW \7f346,12046
+#define READABLE_EVENTS_FILTER_EVENTS \7f347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES \7f348,12142
+static void (*keyboard_init_hook)\7fkeyboard_init_hook\ 1351,12264
+static bool get_input_pending \7f353,12307
+static bool readable_events \7f354,12344
+static Lisp_Object read_char_x_menu_prompt \7f355,12379
+static Lisp_Object read_char_minibuf_menu_prompt \7f357,12502
+static Lisp_Object make_lispy_event \7f358,12571
+static Lisp_Object make_lispy_movement \7f359,12631
+static Lisp_Object modify_event_symbol \7f363,12840
+static Lisp_Object make_lispy_switch_frame \7f366,13050
+static Lisp_Object make_lispy_focus_in \7f367,13108
+static Lisp_Object make_lispy_focus_out \7f369,13188
+static bool help_char_p \7f371,13275
+static void save_getcjmp \7f372,13314
+static void restore_getcjmp \7f373,13354
+static Lisp_Object apply_modifiers \7f374,13397
+static void clear_event \7f375,13452
+static void restore_kboard_configuration \7f376,13500
+static void deliver_input_available_signal \7f378,13568
+static void handle_interrupt \7f380,13631
+static _Noreturn void quit_throw_to_read_char \7f381,13668
+static void process_special_events \7f382,13722
+static void timer_start_idle \7f383,13765
+static void timer_stop_idle \7f384,13802
+static void timer_resume_idle \7f385,13838
+static void deliver_user_signal \7f386,13876
+static char *find_user_signal_name \7ffind_user_signal_name\ 1387,13915
+static void store_user_signal_events \7f388,13957
+kset_echo_string \7f392,14088
+kset_kbd_queue \7f397,14184
+kset_keyboard_translate_table \7f402,14276
+kset_last_prefix_arg \7f407,14399
+kset_last_repeatable_command \7f412,14504
+kset_local_function_key_map \7f417,14625
+kset_overriding_terminal_local_map \7f422,14744
+kset_real_last_command \7f427,14877
+kset_system_key_syms \7f432,14986
+echo_add_key \7f443,15249
+echo_char \7f527,17527
+echo_dash \7f541,17813
+echo_now \7f586,19140
+cancel_echoing \7f635,20614
+echo_length \7f648,20922
+echo_truncate \7f660,21253
+add_command_key \7f672,21582
+recursive_edit_1 \7f697,22406
+record_auto_save \7f742,23848
+force_auto_save_soon \7f751,24016
+DEFUN ("recursive-edit", Frecursive_edit,\7frecursive-edit\ 1759,24137
+recursive_edit_unwind \7f804,25747
+any_kboard_state \7f817,26013
+single_kboard_state \7f838,26665
+not_single_kboard_state \7f848,26803
+struct kboard_stack\7f858,27065
+static struct kboard_stack *kboard_stack;\7fkboard_stack\ 1864,27138
+push_kboard \7f867,27186
+pop_kboard \7f879,27375
+temporarily_switch_to_single_kboard \7f914,28263
+record_single_kboard_state \7f943,29437
+restore_kboard_configuration \7f952,29621
+cmd_error \7f970,30077
+cmd_error_internal \7f1024,31510
+DEFUN ("command-error-default-function", Fcommand_error_default_function,\7fcommand-error-default-function\ 11043,32030
+static Lisp_Object command_loop_2 \7f1086,33637
+static Lisp_Object top_level_1 \7f1087,33686
+command_loop \7f1094,33916
+command_loop_2 \7f1134,35135
+top_level_2 \7f1146,35339
+top_level_1 \7f1152,35417
+DEFUN ("top-level", Ftop_level,\7ftop-level\ 11164,35787
+user_error \7f1183,36288
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit,\7fexit-recursive-edit\ 11189,36429
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit,\7fabort-recursive-edit\ 11201,36819
+tracking_off \7f1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,\7ftrack-mouse\ 11234,37816
+bool ignore_mouse_drag_p;\7f1256,38392
+some_mouse_moved \7f1259,38441
+static int read_key_sequence \7f1282,38799
+static void adjust_point_for_property \7f1284,38917
+Lisp_Object last_undo_boundary;\7f1287,39032
+command_loop_1 \7f1294,39273
+read_menu_command \7f1649,50889
+adjust_point_for_property \7f1678,51617
+safe_run_hooks_1 \7f1831,57339
+safe_run_hooks_error \7f1841,57569
+safe_run_hook_funcall \7f1878,58576
+safe_run_hooks \7f1893,59058
+int poll_suppress_count;\7f1908,59397
+static struct atimer *poll_timer;\7fpoll_timer\ 11915,59487
+poll_for_input_1 \7f1919,59589
+poll_for_input \7f1930,59789
+start_polling \7f1942,60053
+input_polling_used \7f1979,61091
+stop_polling \7f1994,61390
+set_poll_suppress_count \7f2009,61759
+bind_polling_period \7f2029,62141
+make_ctrl_char \7f2048,62492
+show_help_echo \7f2113,64455
+static Lisp_Object kbd_buffer_get_event \7f2152,65484
+static void record_char \7f2154,65596
+static Lisp_Object help_form_saved_window_configs;\7f2156,65638
+read_char_help_form_unwind \7f2158,65701
+#define STOP_POLLING \7f2166,65959
+#define RESUME_POLLING \7f2170,66084
+read_event_from_main_queue \7f2175,66229
+read_decoded_event_from_main_queue \7f2249,68417
+#define MAX_ENCODED_BYTES \7f2254,68664
+echo_keystrokes_p \7f2342,71556
+read_char \7f2376,72848
+record_menu_key \7f3225,98949
+help_char_p \7f3258,99674
+record_char \7f3273,99953
+save_getcjmp \7f3412,104235
+restore_getcjmp \7f3418,104326
+readable_events \7f3430,104697
+int stop_character EXTERNALLY_VISIBLE;\7f3497,106437
+event_to_kboard \7f3500,106493
+kbd_buffer_nr_stored \7f3522,107142
+kbd_buffer_store_event \7f3534,107483
+kbd_buffer_store_event_hold \7f3550,108025
+kbd_buffer_unget_event \7f3684,111617
+#define INPUT_EVENT_POS_MAX \7f3698,112018
+#define INPUT_EVENT_POS_MIN \7f3701,112147
+position_to_Time \7f3706,112287
+Time_to_position \7f3716,112514
+gen_help_event \7f3738,113171
+kbd_buffer_store_help_event \7f3756,113611
+discard_mouse_events \7f3773,113976
+kbd_buffer_events_waiting \7f3803,114711
+clear_event \7f3823,115068
+kbd_buffer_get_event \7f3836,115408
+process_special_events \7f4258,127881
+swallow_events \7f4322,129705
+timer_start_idle \7f4339,130098
+timer_stop_idle \7f4355,130576
+timer_resume_idle \7f4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;\7f4372,130912
+Lisp_Object pending_funcalls;\7f4377,131172
+decode_timer \7f4381,131293
+timer_check_2 \7f4414,132246
+timer_check \7f4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,\7fcurrent-idle-time\ 14607,137662
+static Lisp_Object accent_key_syms;\7f4625,138239
+static Lisp_Object func_key_syms;\7f4626,138275
+static Lisp_Object mouse_syms;\7f4627,138309
+static Lisp_Object wheel_syms;\7f4628,138340
+static Lisp_Object drag_n_drop_syms;\7f4629,138371
+static const int lispy_accent_codes[\7flispy_accent_codes\ 14634,138516
+static const char *const lispy_accent_keys[\7flispy_accent_keys\ 14741,139878
+#define FUNCTION_KEY_OFFSET \7f4766,140314
+const char *const lispy_function_keys[\7flispy_function_keys\ 14768,140347
+static const char *const lispy_multimedia_keys[\7flispy_multimedia_keys\ 14962,148901
+static const char *const lispy_kana_keys[\7flispy_kana_keys\ 15026,150135
+#define FUNCTION_KEY_OFFSET \7f5061,151751
+static const char *const lispy_function_keys[\7flispy_function_keys\ 15065,151894
+#define ISO_FUNCTION_KEY_OFFSET \7f5149,154429
+static const char *const iso_lispy_function_keys[\7fiso_lispy_function_keys\ 15151,154469
+static Lisp_Object Vlispy_mouse_stem;\7f5172,155328
+static const char *const lispy_wheel_names[\7flispy_wheel_names\ 15174,155367
+static const char *const lispy_drag_n_drop_names[\7flispy_drag_n_drop_names\ 15181,155619
+static short const scroll_bar_parts[\7fscroll_bar_parts\ 15189,155885
+static Lisp_Object button_down_location;\7f5210,156910
+static int last_mouse_button;\7f5215,157065
+static int last_mouse_x;\7f5216,157095
+static int last_mouse_y;\7f5217,157120
+static Time button_down_time;\7f5218,157145
+static int double_click_count;\7f5222,157229
+make_lispy_position \7f5228,157390
+toolkit_menubar_in_use \7f5456,163953
+make_scroll_bar_position \7f5469,164321
+make_lispy_event \7f5485,164967
+make_lispy_movement \7f6104,183531
+make_lispy_switch_frame \7f6131,184262
+make_lispy_focus_in \7f6137,184369
+make_lispy_focus_out \7f6145,184495
+parse_modifiers_uncached \7f6163,184945
+#define SINGLE_LETTER_MOD(\7f6185,185465
+#undef SINGLE_LETTER_MOD\7f6212,185906
+#define MULTI_LETTER_MOD(\7f6214,185932
+#undef MULTI_LETTER_MOD\7f6231,186400
+apply_modifiers_uncached \7f6273,187574
+static const char *const modifier_names[\7fmodifier_names\ 16319,189193
+#define NUM_MOD_NAMES \7f6325,189399
+static Lisp_Object modifier_symbols;\7f6327,189449
+lispy_modifier_list \7f6331,189586
+#define KEY_TO_CHAR(\7f6353,190252
+parse_modifiers \7f6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,\7fevent-symbol-parse-modifiers\ 16399,191517
+apply_modifiers \7f6422,192391
+reorder_modifiers \7f6491,194720
+modify_event_symbol \7f6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,\7fevent-convert-list\ 16628,199244
+parse_solitary_modifier \7f6695,201135
+#define SINGLE_LETTER_MOD(\7f6701,201258
+#define MULTI_LETTER_MOD(\7f6705,201343
+#undef SINGLE_LETTER_MOD\7f6763,202641
+#undef MULTI_LETTER_MOD\7f6764,202666
+lucid_event_type_list_p \7f6775,202889
+get_input_pending \7f6814,203960
+record_asynch_buffer_change \7f6834,204579
+gobble_input \7f6872,205702
+tty_read_avail_input \7f6967,208310
+handle_async_input \7f7149,214039
+process_pending_signals \7f7165,214359
+unblock_input_to \7f7177,214645
+unblock_input \7f7200,215277
+totally_unblock_input \7f7209,215445
+handle_input_available_signal \7f7217,215529
+deliver_input_available_signal \7f7226,215700
+struct user_signal_info\7f7235,215865
+static struct user_signal_info *user_signals \7fuser_signals\ 17250,216090
+add_user_signal \7f7253,216149
+handle_user_signal \7f7275,216598
+deliver_user_signal \7f7316,217558
+find_user_signal_name \7f7322,217659
+store_user_signal_events \7f7334,217841
+static void menu_bar_item \7f7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;\7f7363,218416
+static Lisp_Object menu_bar_items_vector;\7f7368,218630
+static int menu_bar_items_index;\7f7369,218672
+static const char *separator_names[\7fseparator_names\ 17372,218707
+menu_separator_name_p \7f7393,219148
+menu_bar_items \7f7426,219852
+Lisp_Object item_properties;\7f7568,224603
+menu_bar_item \7f7571,224645
+menu_item_eval_property_1 \7f7647,227175
+eval_dyn \7f7658,227465
+menu_item_eval_property \7f7666,227675
+parse_menu_item \7f7686,228341
+static Lisp_Object tool_bar_items_vector;\7f7965,236336
+static Lisp_Object tool_bar_item_properties;\7f7970,236510
+static int ntool_bar_items;\7f7974,236606
+static void init_tool_bar_items \7f7978,236664
+static void process_tool_bar_item \7f7979,236711
+static bool parse_tool_bar_item \7f7981,236801
+static void append_tool_bar_item \7f7982,236861
+tool_bar_items \7f7990,237083
+process_tool_bar_item \7f8075,239892
+#define PROP(\7f8112,240969
+set_prop \7f8114,241038
+parse_tool_bar_item \7f8167,242453
+#undef PROP\7f8379,248844
+init_tool_bar_items \7f8387,248969
+append_tool_bar_item \7f8401,249261
+read_char_x_menu_prompt \7f8443,250771
+read_char_minibuf_menu_prompt \7f8503,252445
+#define PUSH_C_STR(\7f8527,253014
+follow_key \7f8726,258553
+active_maps \7f8733,258695
+typedef struct keyremap\7f8742,259021
+} keyremap;\7f8754,259464
+access_keymap_keyremap \7f8764,259808
+keyremap_step \7f8811,261450
+test_undefined \7f8867,262934
+read_key_sequence \7f8916,264861
+read_key_sequence_vs \7f9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,\7fread-key-sequence\ 19885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,\7fread-key-sequence-vector\ 19938,299982
+detect_input_pending \7f9950,300488
+detect_input_pending_ignore_squeezables \7f9959,300654
+detect_input_pending_run_timers \7f9967,300870
+clear_input_pending \7f9985,301362
+requeued_events_pending_p \7f9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,\7finput-pending-p\ 110002,301813
+DEFUN ("recent-keys", Frecent_keys,\7frecent-keys\ 110024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,\7fthis-command-keys\ 110055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,\7fthis-command-keys-vector\ 110068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,\7fthis-single-command-keys\ 110080,304380
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,\7fthis-single-command-raw-keys\ 110096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,\7freset-this-command-lengths\ 110109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,\7fclear-this-command-keys\ 110136,306510
+DEFUN ("recursion-depth", Frecursion_depth,\7frecursion-depth\ 110158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,\7fopen-dribble-file\ 110169,307406
+DEFUN ("discard-input", Fdiscard_input,\7fdiscard-input\ 110203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,\7fsuspend-emacs\ 110225,308949
+stuff_buffered_input \7f10285,311045
+set_waiting_for_input \7f10323,312016
+clear_waiting_for_input \7f10337,312390
+handle_interrupt_signal \7f10351,312754
+deliver_interrupt_signal \7f10378,313642
+static int volatile force_quit_count;\7f10387,313932
+handle_interrupt \7f10401,314414
+quit_throw_to_read_char \7f10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,\7fset-input-interrupt-mode\ 110562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,\7fset-output-flow-control\ 110609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,\7fset-input-meta-mode\ 110643,321432
+DEFUN ("set-quit-char", Fset_quit_char,\7fset-quit-char\ 110694,322706
+DEFUN ("set-input-mode", Fset_input_mode,\7fset-input-mode\ 110729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,\7fcurrent-input-mode\ 110750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,\7fposn-at-x-y\ 110787,325837
+DEFUN ("posn-at-point", Fposn_at_point,\7fposn-at-point\ 110824,327060
+init_kboard \7f10861,328214
+allocate_kboard \7f10893,329284
+wipe_kboard \7f10909,329637
+delete_kboard \7f10917,329751
+init_keyboard \7f10942,330281
+struct event_head\7f11021,332696
+static const struct event_head head_table[\7fhead_table\ 111027,332747
+syms_of_keyboard \7f11045,333577
+keys_of_keyboard \7f11841,367115
+mark_kboards \7f11916,370434
+\f
+c-src/emacs/src/lisp.h,33973
+#define EMACS_LISP_H\7f22,800
+#define DECLARE_GDB_SYM(\7f47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f49,1508
+# define DEFINE_GDB_SYMBOL_END(\7f50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f52,1625
+# define DEFINE_GDB_SYMBOL_END(\7f53,1702
+#undef min\7f57,1790
+#undef max\7f58,1801
+#define max(\7f59,1812
+#define min(\7f60,1854
+#define ARRAYELTS(\7f63,1936
+#define GCTYPEBITS \7f67,2079
+DEFINE_GDB_SYMBOL_BEGIN \7fGCTYPEBITS\ 166,2037
+# define NONPOINTER_BITS \7f78,2567
+# define NONPOINTER_BITS \7f80,2600
+typedef int EMACS_INT;\7f91,3023
+typedef unsigned int EMACS_UINT;\7f92,3046
+# define EMACS_INT_MAX \7f93,3079
+# define pI \7f94,3111
+typedef long int EMACS_INT;\7f96,3203
+typedef unsigned long EMACS_UINT;\7f97,3231
+# define EMACS_INT_MAX \7f98,3265
+# define pI \7f99,3298
+typedef long long int EMACS_INT;\7f103,3477
+typedef unsigned long long int EMACS_UINT;\7f104,3510
+# define EMACS_INT_MAX \7f105,3553
+# define pI \7f106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR \7f114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR \7f115,3840
+typedef size_t bits_word;\7f123,4165
+# define BITS_WORD_MAX \7f124,4191
+enum { BITS_PER_BITS_WORD \7f125,4223
+typedef unsigned char bits_word;\7f127,4290
+# define BITS_WORD_MAX \7f128,4323
+enum { BITS_PER_BITS_WORD \7f129,4386
+verify \7f131,4450
+ BITS_PER_CHAR \7f136,4570
+ BITS_PER_SHORT \7f137,4605
+ BITS_PER_LONG \7f138,4657
+ BITS_PER_EMACS_INT \7f139,4712
+typedef intmax_t printmax_t;\7f148,5089
+typedef uintmax_t uprintmax_t;\7f149,5118
+# define pMd \7f150,5149
+# define pMu \7f151,5170
+typedef EMACS_INT printmax_t;\7f153,5197
+typedef EMACS_UINT uprintmax_t;\7f154,5227
+# define pMd \7f155,5259
+# define pMu \7f156,5278
+# define pD \7f165,5664
+# define pD \7f167,5709
+# define pD \7f169,5756
+# define pD \7f171,5779
+# define eassert(\7f200,7062
+# define eassume(\7f201,7140
+extern _Noreturn void die \7f204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;\7f206,7268
+# define eassert(\7f208,7319
+# define eassume(\7f212,7450
+enum Lisp_Bits\7f239,8519
+#define GCALIGNMENT \7f243,8647
+ VALBITS \7f246,8742
+ INTTYPEBITS \7f249,8838
+ FIXNUM_BITS \7f252,8945
+#define VAL_MAX \7f263,9327
+#define USE_LSB_TAG \7f271,9777
+DEFINE_GDB_SYMBOL_BEGIN \7fUSE_LSB_TAG\ 1270,9733
+# define alignas(\7f281,10077
+# define GCALIGNED \7f288,10227
+# define GCALIGNED \7f290,10292
+# define lisp_h_XLI(\7f327,11642
+# define lisp_h_XIL(\7f328,11673
+# define lisp_h_XLI(\7f330,11724
+# define lisp_h_XIL(\7f331,11751
+#define lisp_h_CHECK_LIST_CONS(\7f333,11785
+#define lisp_h_CHECK_NUMBER(\7f334,11856
+#define lisp_h_CHECK_SYMBOL(\7f335,11927
+#define lisp_h_CHECK_TYPE(\7f336,11996
+#define lisp_h_CONSP(\7f338,12107
+#define lisp_h_EQ(\7f339,12156
+#define lisp_h_FLOATP(\7f340,12201
+#define lisp_h_INTEGERP(\7f341,12252
+#define lisp_h_MARKERP(\7f342,12333
+#define lisp_h_MISCP(\7f343,12408
+#define lisp_h_NILP(\7f344,12457
+#define lisp_h_SET_SYMBOL_VAL(\7f345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(\7f347,12607
+#define lisp_h_SYMBOL_VAL(\7f348,12671
+#define lisp_h_SYMBOLP(\7f350,12772
+#define lisp_h_VECTORLIKEP(\7f351,12825
+#define lisp_h_XCAR(\7f352,12886
+#define lisp_h_XCDR(\7f353,12924
+#define lisp_h_XCONS(\7f354,12964
+#define lisp_h_XHASH(\7f356,13059
+#define lisp_h_XPNTR(\7f357,13093
+# define lisp_h_check_cons_list(\7f360,13221
+# define lisp_h_make_number(\7f363,13289
+# define lisp_h_XFASTINT(\7f365,13392
+# define lisp_h_XINT(\7f366,13429
+# define lisp_h_XSYMBOL(\7f367,13478
+# define lisp_h_XTYPE(\7f371,13631
+# define lisp_h_XUNTAG(\7f372,13696
+# define XLI(\7f381,14086
+# define XIL(\7f382,14117
+# define CHECK_LIST_CONS(\7f383,14148
+# define CHECK_NUMBER(\7f384,14209
+# define CHECK_SYMBOL(\7f385,14258
+# define CHECK_TYPE(\7f386,14307
+# define CONSP(\7f387,14382
+# define EQ(\7f388,14417
+# define FLOATP(\7f389,14452
+# define INTEGERP(\7f390,14489
+# define MARKERP(\7f391,14530
+# define MISCP(\7f392,14569
+# define NILP(\7f393,14604
+# define SET_SYMBOL_VAL(\7f394,14637
+# define SYMBOL_CONSTANT_P(\7f395,14700
+# define SYMBOL_VAL(\7f396,14763
+# define SYMBOLP(\7f397,14812
+# define VECTORLIKEP(\7f398,14851
+# define XCAR(\7f399,14898
+# define XCDR(\7f400,14931
+# define XCONS(\7f401,14964
+# define XHASH(\7f402,14999
+# define XPNTR(\7f403,15034
+# define check_cons_list(\7f405,15097
+# define make_number(\7f408,15176
+# define XFASTINT(\7f409,15224
+# define XINT(\7f410,15266
+# define XSYMBOL(\7f411,15300
+# define XTYPE(\7f412,15340
+# define XUNTAG(\7f413,15376
+#define LISP_MACRO_DEFUN(\7f421,15672
+#define LISP_MACRO_DEFUN_VOID(\7f425,15845
+#define INTMASK \7f437,16289
+#define case_Lisp_Int \7f438,16342
+#define ENUM_BF(\7f445,16681
+#define ENUM_BF(\7f447,16722
+enum Lisp_Type\7f451,16763
+ Lisp_Symbol \7f454,16851
+ Lisp_Misc \7f458,16993
+ Lisp_Int0 \7f461,17067
+ Lisp_Int1 \7f462,17086
+ Lisp_String \7f466,17264
+ Lisp_Vectorlike \7f472,17543
+ Lisp_Cons \7f475,17632
+ Lisp_Float \7f477,17670
+enum Lisp_Misc_Type\7f485,18016
+ Lisp_Misc_Free \7f487,18040
+ Lisp_Misc_Marker,\7f488,18069
+ Lisp_Misc_Overlay,\7f489,18091
+ Lisp_Misc_Save_Value,\7f490,18114
+ Lisp_Misc_Finalizer,\7f491,18140
+ Lisp_Misc_Float,\7f494,18275
+ Lisp_Misc_Limit\7f496,18359
+enum Lisp_Fwd_Type\7f502,18543
+ Lisp_Fwd_Int,\7f504,18566
+ Lisp_Fwd_Bool,\7f505,18619
+ Lisp_Fwd_Obj,\7f506,18670
+ Lisp_Fwd_Buffer_Obj,\7f507,18729
+ Lisp_Fwd_Kboard_Obj \7f508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;\7f567,21781
+#define LISP_INITIALLY(\7f569,21827
+#undef CHECK_LISP_OBJECT_TYPE\7f571,21858
+enum CHECK_LISP_OBJECT_TYPE \7f572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f572,21888
+typedef EMACS_INT Lisp_Object;\7f577,22064
+#define LISP_INITIALLY(\7f578,22095
+enum CHECK_LISP_OBJECT_TYPE \7f579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f579,22125
+#define LISP_INITIALLY_ZERO \7f582,22226
+INLINE bool BOOL_VECTOR_P \7f588,22350
+INLINE bool BUFFER_OBJFWDP \7f589,22391
+INLINE bool BUFFERP \7f590,22438
+INLINE bool CHAR_TABLE_P \7f591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII \7f592,22513
+INLINE bool \7f593,22579
+INLINE bool \7f594,22614
+INLINE bool functionp \7f595,22650
+INLINE bool \7f596,22687
+INLINE bool \7f597,22725
+INLINE bool \7f598,22762
+INLINE bool \7f599,22797
+INLINE bool OVERLAYP \7f600,22831
+INLINE bool PROCESSP \7f601,22867
+INLINE bool PSEUDOVECTORP \7f602,22903
+INLINE bool SAVE_VALUEP \7f603,22949
+INLINE bool FINALIZERP \7f604,22988
+INLINE void set_sub_char_table_contents \7f605,23026
+INLINE bool STRINGP \7f607,23116
+INLINE bool SUB_CHAR_TABLE_P \7f608,23151
+INLINE bool SUBRP \7f609,23195
+INLINE bool \7f610,23228
+INLINE bool \7f611,23265
+INLINE bool WINDOWP \7f612,23306
+INLINE bool TERMINALP \7f613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE \7fXSAVE_VALUE\ 1614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER \7fXFINALIZER\ 1615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)\7f616,23492
+INLINE void \7f617,23544
+extern Lisp_Object char_table_ref \7f620,23616
+extern void char_table_set \7f621,23670
+extern _Noreturn Lisp_Object wrong_type_argument \7f624,23757
+extern _Noreturn void wrong_choice \7f625,23834
+extern bool might_dump;\7f628,23925
+extern bool initialized;\7f631,24061
+extern double extract_float \7f634,24117
+enum symbol_interned\7f639,24199
+ SYMBOL_UNINTERNED \7f641,24222
+ SYMBOL_INTERNED \7f642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY \7f643,24270
+enum symbol_redirect\7f646,24315
+ SYMBOL_PLAINVAL \7f648,24338
+ SYMBOL_VARALIAS \7f649,24362
+ SYMBOL_LOCALIZED \7f650,24386
+ SYMBOL_FORWARDED \7f651,24410
+struct Lisp_Symbol\7f654,24437
+ ENUM_BF \7f663,24793
+#define EXFUN(\7f707,26252
+#define DEFUN_ARGS_MANY \7f712,26446
+#define DEFUN_ARGS_UNEVALLED \7f713,26498
+#define DEFUN_ARGS_0 \7f714,26541
+#define DEFUN_ARGS_1 \7f715,26569
+#define DEFUN_ARGS_2 \7f716,26604
+#define DEFUN_ARGS_3 \7f717,26652
+#define DEFUN_ARGS_4 \7f718,26713
+#define DEFUN_ARGS_5 \7f719,26787
+#define DEFUN_ARGS_6 \7f721,26880
+#define DEFUN_ARGS_7 \7f723,26986
+#define DEFUN_ARGS_8 \7f725,27105
+#define TAG_PTR(\7f729,27296
+#define TAG_SYMOFFSET(\7f734,27543
+#define XLI_BUILTIN_LISPSYM(\7f741,27842
+#define DEFINE_LISP_SYMBOL(\7f746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS \7f755,28572
+LISP_MACRO_DEFUN \7f762,28777
+# define ARRAY_MARK_FLAG \7f768,29024
+# define PSEUDOVECTOR_FLAG \7f774,29267
+enum pvec_type\7f780,29568
+ PVEC_NORMAL_VECTOR,\7f782,29585
+ PVEC_FREE,\7f783,29607
+ PVEC_PROCESS,\7f784,29620
+ PVEC_FRAME,\7f785,29636
+ PVEC_WINDOW,\7f786,29650
+ PVEC_BOOL_VECTOR,\7f787,29665
+ PVEC_BUFFER,\7f788,29685
+ PVEC_HASH_TABLE,\7f789,29700
+ PVEC_TERMINAL,\7f790,29719
+ PVEC_WINDOW_CONFIGURATION,\7f791,29736
+ PVEC_SUBR,\7f792,29765
+ PVEC_OTHER,\7f793,29778
+ PVEC_COMPILED,\7f795,29856
+ PVEC_CHAR_TABLE,\7f796,29873
+ PVEC_SUB_CHAR_TABLE,\7f797,29892
+ PVEC_FONT \7f798,29915
+enum More_Lisp_Bits\7f801,29991
+ PSEUDOVECTOR_SIZE_BITS \7f808,30382
+ PSEUDOVECTOR_SIZE_MASK \7f809,30415
+ PSEUDOVECTOR_REST_BITS \7f813,30625
+ PSEUDOVECTOR_REST_MASK \7f814,30658
+ PSEUDOVECTOR_AREA_BITS \7f818,30823
+ PVEC_TYPE_MASK \7f819,30901
+# define VALMASK \7f829,31302
+DEFINE_GDB_SYMBOL_BEGIN \7fVALMASK\ 1828,31257
+#define MOST_POSITIVE_FIXNUM \7f834,31532
+#define MOST_NEGATIVE_FIXNUM \7f835,31592
+XINT \7f874,32684
+XFASTINT \7f889,33035
+XSYMBOL \7f899,33263
+XTYPE \7f910,33481
+XUNTAG \7f918,33661
+LISP_MACRO_DEFUN \7f927,33857
+LISP_MACRO_DEFUN \7f940,34242
+#define FIXNUM_OVERFLOW_P(\7f958,34855
+LISP_MACRO_DEFUN \7fFIXNUM_OVERFLOW_P\ 1952,34632
+LISP_MACRO_DEFUN \7f970,35171
+XSTRING \7f980,35391
+#define SYMBOL_INDEX(\7f988,35575
+XFLOAT \7f991,35636
+XPROCESS \7f1000,35778
+XWINDOW \7f1007,35895
+XTERMINAL \7f1014,36012
+XSUBR \7f1021,36134
+XBUFFER \7f1028,36245
+XCHAR_TABLE \7f1035,36369
+XSUB_CHAR_TABLE \7f1042,36506
+XBOOL_VECTOR \7f1049,36648
+make_lisp_ptr \7f1058,36827
+make_lisp_symbol \7f1066,37013
+builtin_lisp_symbol \7f1074,37197
+#define XSETINT(\7f1079,37279
+#define XSETFASTINT(\7f1080,37325
+#define XSETCONS(\7f1081,37375
+#define XSETVECTOR(\7f1082,37435
+#define XSETSTRING(\7f1083,37503
+#define XSETSYMBOL(\7f1084,37567
+#define XSETFLOAT(\7f1085,37621
+#define XSETMISC(\7f1086,37683
+#define XSETPVECTYPE(\7f1090,37772
+#define XSETPVECTYPESIZE(\7f1092,37888
+#define XSETPSEUDOVECTOR(\7f1099,38185
+#define XSETTYPED_PSEUDOVECTOR(\7f1105,38369
+#define XSETWINDOW_CONFIGURATION(\7f1110,38579
+#define XSETPROCESS(\7f1112,38675
+#define XSETWINDOW(\7f1113,38741
+#define XSETTERMINAL(\7f1114,38805
+#define XSETSUBR(\7f1115,38873
+#define XSETCOMPILED(\7f1116,38933
+#define XSETBUFFER(\7f1117,39001
+#define XSETCHAR_TABLE(\7f1118,39065
+#define XSETBOOL_VECTOR(\7f1119,39137
+#define XSETSUB_CHAR_TABLE(\7f1120,39211
+XINTPTR \7f1128,39581
+make_pointer_integer \7f1134,39661
+LISP_MACRO_DEFUN_VOID \7f1143,39826
+typedef struct interval *INTERVAL;\7fINTERVAL\ 11149,39987
+xcar_addr \7f1174,40760
+xcdr_addr \7f1179,40837
+LISP_MACRO_DEFUN \7f1185,40931
+XSETCDR \7f1198,41307
+CAR \7f1205,41457
+CDR \7f1212,41591
+CAR_SAFE \7f1221,41791
+CDR_SAFE \7f1226,41877
+STRING_MULTIBYTE \7f1243,42250
+#define STRING_BYTES_BOUND \7f1261,43057
+#define STRING_SET_UNIBYTE(\7f1265,43201
+#define STRING_SET_MULTIBYTE(\7f1275,43516
+SDATA \7f1286,43830
+SSDATA \7f1291,43908
+SREF \7f1297,44037
+SSET \7f1302,44128
+SCHARS \7f1307,44242
+extern ptrdiff_t string_bytes \7f1313,44337
+STRING_BYTES \7f1316,44415
+SBYTES \7f1326,44595
+STRING_SET_CHARS \7f1331,44681
+struct vectorlike_header\7f1343,45232
+struct Lisp_Vector\7f1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR\7f1378,46681
+struct Lisp_Bool_Vector\7f1384,46864
+bool_vector_size \7f1399,47385
+bool_vector_data \7f1407,47523
+bool_vector_uchar_data \7f1413,47617
+bool_vector_words \7f1421,47803
+bool_vector_bytes \7f1428,47998
+bool_vector_bitref \7f1437,48238
+bool_vector_ref \7f1445,48478
+bool_vector_set \7f1453,48618
+ header_size \7f1471,49047
+ bool_header_size \7f1472,49106
+ word_size \7f1473,49171
+AREF \7f1479,49284
+aref_addr \7f1485,49391
+ASIZE \7f1491,49501
+ASET \7f1497,49583
+gc_aset \7f1504,49742
+enum { NIL_IS_ZERO \7f1515,50269
+memclear \7f1520,50464
+#define VECSIZE(\7f1531,50762
+#define PSEUDOVECSIZE(\7f1538,51047
+#define UNSIGNED_CMP(\7f1546,51480
+#define ASCII_CHAR_P(\7f1552,51734
+enum CHARTAB_SIZE_BITS\7f1565,52489
+ CHARTAB_SIZE_BITS_0 \7f1567,52516
+ CHARTAB_SIZE_BITS_1 \7f1568,52545
+ CHARTAB_SIZE_BITS_2 \7f1569,52574
+ CHARTAB_SIZE_BITS_3 \7f1570,52603
+extern const int chartab_size[\7fchartab_size\ 11573,52637
+struct Lisp_Char_Table\7f1575,52672
+struct Lisp_Sub_Char_Table\7f1606,53752
+CHAR_TABLE_REF_ASCII \7f1628,54566
+CHAR_TABLE_REF \7f1648,55113
+CHAR_TABLE_SET \7f1658,55402
+struct Lisp_Subr\7f1670,55786
+enum char_table_specials\7f1692,56798
+ CHAR_TABLE_STANDARD_SLOTS \7f1697,56993
+ SUB_CHAR_TABLE_OFFSET \7f1701,57214
+CHAR_TABLE_EXTRA_SLOTS \7f1707,57377
+verify \7f1714,57596
+LISP_MACRO_DEFUN \7f1723,57921
+SYMBOL_BLV \7f1732,58181
+SYMBOL_FWD \7f1738,58316
+LISP_MACRO_DEFUN_VOID \7f1744,58428
+SET_SYMBOL_BLV \7f1754,58691
+SET_SYMBOL_FWD \7f1760,58850
+SYMBOL_NAME \7f1767,59001
+SYMBOL_INTERNED_P \7f1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P \7f1783,59299
+#define DEFSYM(\7f1796,59809
+LISP_MACRO_DEFUN \7fDEFSYM\ 11792,59630
+struct hash_table_test\7f1805,60062
+struct Lisp_Hash_Table\7f1823,60555
+XHASH_TABLE \7f1880,62531
+#define XSET_HASH_TABLE(\7f1885,62602
+HASH_TABLE_P \7f1889,62703
+HASH_KEY \7f1896,62860
+HASH_VALUE \7f1903,63040
+HASH_NEXT \7f1911,63254
+HASH_HASH \7f1918,63431
+HASH_INDEX \7f1926,63677
+HASH_TABLE_SIZE \7f1933,63826
+enum DEFAULT_HASH_SIZE \7f1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE \7f1940,63956
+static double const DEFAULT_REHASH_THRESHOLD \7f1946,64176
+static double const DEFAULT_REHASH_SIZE \7f1950,64299
+sxhash_combine \7f1956,64465
+SXHASH_REDUCE \7f1964,64648
+struct Lisp_Misc_Any \7f1971,64806
+ ENUM_BF \7f1973,64866
+struct Lisp_Marker\7f1978,64980
+ ENUM_BF \7f1980,65001
+struct Lisp_Overlay\7f2021,66841
+ ENUM_BF \7f2034,67349
+ SAVE_UNUSED,\7f2047,67644
+ SAVE_INTEGER,\7f2048,67661
+ SAVE_FUNCPOINTER,\7f2049,67679
+ SAVE_POINTER,\7f2050,67701
+ SAVE_OBJECT\7f2051,67719
+enum { SAVE_SLOT_BITS \7f2055,67804
+enum { SAVE_VALUE_SLOTS \7f2058,67901
+enum { SAVE_TYPE_BITS \7f2062,68009
+enum Lisp_Save_Type\7f2064,68075
+ SAVE_TYPE_INT_INT \7f2066,68099
+ SAVE_TYPE_INT_INT_INT\7f2067,68172
+ SAVE_TYPE_OBJ_OBJ \7f2069,68262
+ SAVE_TYPE_OBJ_OBJ_OBJ \7f2070,68333
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ\7f2071,68414
+ SAVE_TYPE_PTR_INT \7f2073,68509
+ SAVE_TYPE_PTR_OBJ \7f2074,68582
+ SAVE_TYPE_PTR_PTR \7f2075,68654
+ SAVE_TYPE_FUNCPTR_PTR_OBJ\7f2076,68727
+ SAVE_TYPE_MEMORY \7f2080,68885
+typedef void (*voidfuncptr)\7fvoidfuncptr\ 12108,69839
+struct Lisp_Save_Value\7f2110,69876
+ ENUM_BF \7f2112,69903
+save_type \7f2134,70755
+XSAVE_POINTER \7f2143,70985
+set_save_pointer \7f2149,71147
+XSAVE_FUNCPOINTER \7f2155,71329
+XSAVE_INTEGER \7f2164,71549
+set_save_integer \7f2170,71711
+XSAVE_OBJECT \7f2179,71932
+struct Lisp_Finalizer\7f2186,72109
+struct Lisp_Free\7f2201,72584
+ ENUM_BF \7f2203,72605
+union Lisp_Misc\7f2212,72885
+XMISC \7f2223,73184
+XMISCANY \7f2229,73273
+XMISCTYPE \7f2236,73382
+XMARKER \7f2242,73470
+XOVERLAY \7f2249,73585
+XSAVE_VALUE \7f2256,73706
+XFINALIZER \7f2263,73835
+struct Lisp_Intfwd\7f2274,74120
+struct Lisp_Boolfwd\7f2284,74414
+struct Lisp_Objfwd\7f2294,74705
+struct Lisp_Buffer_Objfwd\7f2302,74937
+struct Lisp_Buffer_Local_Value\7f2334,76473
+struct Lisp_Kboard_Objfwd\7f2362,77732
+union Lisp_Fwd\7f2368,77841
+XFWDTYPE \7f2378,78087
+XBUFFER_OBJFWD \7f2384,78183
+struct Lisp_Float\7f2391,78319
+XFLOAT_DATA \7f2401,78437
+ IEEE_FLOATING_POINT\7f2415,78946
+#define _UCHAR_T\7f2423,79269
+typedef unsigned char UCHAR;\7f2424,79286
+enum Lisp_Compiled\7f2429,79369
+ COMPILED_ARGLIST \7f2431,79392
+ COMPILED_BYTECODE \7f2432,79418
+ COMPILED_CONSTANTS \7f2433,79445
+ COMPILED_STACK_DEPTH \7f2434,79473
+ COMPILED_DOC_STRING \7f2435,79503
+ COMPILED_INTERACTIVE \7f2436,79532
+enum char_bits\7f2443,79834
+ CHAR_ALT \7f2445,79853
+ CHAR_SUPER \7f2446,79879
+ CHAR_HYPER \7f2447,79907
+ CHAR_SHIFT \7f2448,79935
+ CHAR_CTL \7f2449,79963
+ CHAR_META \7f2450,79989
+ CHAR_MODIFIER_MASK \7f2452,80017
+ CHARACTERBITS \7f2457,80212
+LISP_MACRO_DEFUN \7f2462,80270
+NATNUMP \7f2470,80412
+RANGED_INTEGERP \7f2476,80493
+#define TYPE_RANGED_INTEGERP(\7f2481,80615
+LISP_MACRO_DEFUN \7f2486,80800
+VECTORP \7f2500,81273
+OVERLAYP \7f2505,81376
+SAVE_VALUEP \7f2510,81475
+FINALIZERP \7f2516,81581
+AUTOLOADP \7f2522,81685
+BUFFER_OBJFWDP \7f2528,81776
+PSEUDOVECTOR_TYPEP \7f2534,81874
+PSEUDOVECTORP \7f2542,82127
+WINDOW_CONFIGURATIONP \7f2558,82479
+PROCESSP \7f2564,82589
+WINDOWP \7f2570,82673
+TERMINALP \7f2576,82755
+SUBRP \7f2582,82841
+COMPILEDP \7f2588,82919
+BUFFERP \7f2594,83005
+CHAR_TABLE_P \7f2600,83087
+SUB_CHAR_TABLE_P \7f2606,83178
+BOOL_VECTOR_P \7f2612,83277
+FRAMEP \7f2618,83370
+IMAGEP \7f2625,83487
+ARRAYP \7f2632,83592
+CHECK_LIST \7f2638,83711
+LISP_MACRO_DEFUN_VOID \7f2643,83792
+CHECK_STRING_CAR \7f2653,84089
+CHECK_CONS \7f2658,84193
+CHECK_VECTOR \7f2663,84273
+CHECK_BOOL_VECTOR \7f2668,84359
+CHECK_VECTOR_OR_STRING \7f2674,84536
+CHECK_ARRAY \7f2683,84710
+CHECK_BUFFER \7f2688,84818
+CHECK_WINDOW \7f2693,84904
+CHECK_PROCESS \7f2699,85010
+CHECK_NATNUM \7f2705,85106
+#define CHECK_RANGED_INTEGER(\7f2710,85183
+#define CHECK_TYPE_RANGED_INTEGER(\7f2721,85566
+#define CHECK_NUMBER_COERCE_MARKER(\7f2729,85836
+XFLOATINT \7f2738,86089
+CHECK_NUMBER_OR_FLOAT \7f2744,86160
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(\7f2749,86259
+CHECK_NUMBER_CAR \7f2760,86669
+CHECK_NUMBER_CDR \7f2768,86791
+#define DEFUN(\7f2803,88386
+#define DEFUN(\7f2812,88854
+FUNCTIONP \7f2822,89209
+extern void defsubr \7f2829,89361
+enum maxargs\7f2831,89404
+ MANY \7f2833,89421
+ UNEVALLED \7f2834,89436
+#define CALLMANY(\7f2838,89539
+#define CALLN(\7f2844,89892
+extern void defvar_lisp \7f2846,89962
+extern void defvar_lisp_nopro \7f2847,90039
+extern void defvar_bool \7f2848,90122
+extern void defvar_int \7f2849,90193
+extern void defvar_kboard \7f2850,90267
+#define DEFVAR_LISP(\7f2869,91097
+#define DEFVAR_LISP_NOPRO(\7f2874,91269
+#define DEFVAR_BOOL(\7f2879,91451
+#define DEFVAR_INT(\7f2884,91624
+#define DEFVAR_BUFFER_DEFAULTS(\7f2890,91795
+#define DEFVAR_KBOARD(\7f2896,91999
+typedef jmp_buf sys_jmp_buf;\7f2906,92323
+# define sys_setjmp(\7f2907,92352
+# define sys_longjmp(\7f2908,92387
+typedef sigjmp_buf sys_jmp_buf;\7f2910,92459
+# define sys_setjmp(\7f2911,92491
+# define sys_longjmp(\7f2912,92531
+typedef jmp_buf sys_jmp_buf;\7f2916,92690
+# define sys_setjmp(\7f2917,92719
+# define sys_longjmp(\7f2918,92753
+enum specbind_tag \7f2943,93805
+ SPECPDL_UNWIND,\7f2944,93825
+ SPECPDL_UNWIND_PTR,\7f2945,93894
+ SPECPDL_UNWIND_INT,\7f2946,93945
+ SPECPDL_UNWIND_VOID,\7f2947,93993
+ SPECPDL_BACKTRACE,\7f2948,94047
+ SPECPDL_LET,\7f2949,94105
+ SPECPDL_LET_LOCAL,\7f2951,94235
+ SPECPDL_LET_DEFAULT \7f2952,94292
+union specbinding\7f2955,94364
+ ENUM_BF \7f2957,94386
+ ENUM_BF \7f2959,94443
+ ENUM_BF \7f2964,94573
+ ENUM_BF \7f2969,94696
+ ENUM_BF \7f2974,94814
+ ENUM_BF \7f2978,94919
+ ENUM_BF \7f2983,95094
+enum handlertype \7f3021,96410
+enum handlertype { CATCHER,\7f3021,96410
+enum handlertype { CATCHER, CONDITION_CASE \7f3021,96410
+struct handler\7f3023,96457
+#define PUSH_HANDLER(\7f3053,97446
+extern Lisp_Object memory_signal_data;\7f3075,98152
+extern char *stack_bottom;\7fstack_bottom\ 13079,98285
+extern void process_pending_signals \7f3097,99102
+extern bool volatile pending_signals;\7f3098,99146
+extern void process_quit_flag \7f3100,99185
+#define QUIT \7f3101,99223
+#define QUITP \7f3112,99473
+extern Lisp_Object Vascii_downcase_table;\7f3114,99534
+extern Lisp_Object Vascii_canon_table;\7f3115,99576
+extern struct gcpro *gcprolist;\7fgcprolist\ 13130,100283
+struct gcpro\7f3132,100316
+#define GC_USE_GCPROS_AS_BEFORE \7f3171,101297
+#define GC_MAKE_GCPROS_NOOPS \7f3172,101332
+#define GC_MARK_STACK_CHECK_GCPROS \7f3173,101364
+#define GC_USE_GCPROS_CHECK_ZOMBIES \7f3174,101401
+#define GC_MARK_STACK \7f3177,101462
+#define BYTE_MARK_STACK \7f3181,101562
+#define GCPRO1(\7f3190,101833
+#define GCPRO2(\7f3191,101873
+#define GCPRO3(\7f3192,101939
+#define GCPRO4(\7f3194,102034
+#define GCPRO5(\7f3196,102154
+#define GCPRO6(\7f3198,102299
+#define GCPRO7(\7f3201,102474
+#define UNGCPRO \7f3202,102553
+#define GCPRO1(\7f3208,102653
+#define GCPRO2(\7f3212,102775
+#define GCPRO3(\7f3217,102967
+#define GCPRO4(\7f3223,103229
+#define GCPRO5(\7f3230,103560
+#define GCPRO6(\7f3238,103961
+#define GCPRO7(\7f3247,104431
+#define UNGCPRO \7f3257,104971
+extern int gcpro_level;\7f3261,105040
+#define GCPRO1(\7f3263,105065
+#define GCPRO2(\7f3269,105299
+#define GCPRO3(\7f3278,105717
+#define GCPRO4(\7f3289,106274
+#define GCPRO5(\7f3302,106972
+#define GCPRO6(\7f3317,107812
+#define GCPRO7(\7f3334,108793
+#define UNGCPRO \7f3353,109916
+#define RETURN_UNGCPRO(\7f3363,110183
+void staticpro \7f3375,110456
+vcopy \7f3384,110657
+set_hash_key_slot \7f3393,110932
+set_hash_value_slot \7f3399,111071
+set_symbol_function \7f3408,111306
+set_symbol_plist \7f3414,111421
+set_symbol_next \7f3420,111524
+blv_found \7f3428,111697
+set_overlay_plist \7f3437,111880
+string_intervals \7f3445,112031
+set_string_intervals \7f3453,112153
+set_char_table_defalt \7f3462,112355
+set_char_table_purpose \7f3467,112467
+set_char_table_extras \7f3475,112636
+set_char_table_contents \7f3482,112845
+set_sub_char_table_contents \7f3489,113040
+extern Lisp_Object indirect_function \7f3495,113199
+extern Lisp_Object find_symbol_value \7f3496,113251
+enum Arith_Comparison \7f3497,113303
+ ARITH_EQUAL,\7f3498,113327
+ ARITH_NOTEQUAL,\7f3499,113342
+ ARITH_LESS,\7f3500,113360
+ ARITH_GRTR,\7f3501,113374
+ ARITH_LESS_OR_EQUAL,\7f3502,113388
+ ARITH_GRTR_OR_EQUAL\7f3503,113411
+extern Lisp_Object arithcompare \7f3505,113436
+#define INTEGER_TO_CONS(\7f3511,113762
+#define CONS_TO_INTEGER(\7f3529,114625
+extern intmax_t cons_to_signed \7f3533,114840
+extern uintmax_t cons_to_unsigned \7f3534,114906
+extern struct Lisp_Symbol *indirect_variable \7findirect_variable\ 13536,114967
+extern _Noreturn void args_out_of_range \7f3537,115036
+extern _Noreturn void args_out_of_range_3 \7f3538,115104
+extern Lisp_Object do_symval_forwarding \7f3540,115195
+extern void set_internal \7f3541,115255
+extern void syms_of_data \7f3542,115327
+extern void swap_in_global_binding \7f3543,115360
+extern void syms_of_cmds \7f3546,115444
+extern void keys_of_cmds \7f3547,115477
+extern Lisp_Object detect_coding_system \7f3550,115539
+extern void init_coding \7f3552,115692
+extern void init_coding_once \7f3553,115724
+extern void syms_of_coding \7f3554,115761
+extern ptrdiff_t chars_in_text \7f3557,115828
+extern ptrdiff_t multibyte_chars_in_text \7f3558,115895
+extern void syms_of_character \7f3559,115972
+extern void init_charset \7f3562,116040
+extern void init_charset_once \7f3563,116073
+extern void syms_of_charset \7f3564,116111
+extern void init_syntax_once \7f3569,116231
+extern void syms_of_syntax \7f3570,116268
+enum { NEXT_ALMOST_PRIME_LIMIT \7f3573,116329
+extern EMACS_INT next_almost_prime \7f3574,116368
+enum constype \7f3739,123820
+enum constype {CONSTYPE_HEAP,\7fCONSTYPE_HEAP\ 13739,123820
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}\7fCONSTYPE_PURE\ 13739,123820
+extern Lisp_Object listn \7f3740,123866
+list2i \7f3745,124010
+list3i \7f3751,124119
+list4i \7f3757,124258
+extern Lisp_Object make_uninit_bool_vector \7f3763,124410
+extern Lisp_Object bool_vector_fill \7f3764,124466
+extern _Noreturn void string_overflow \7f3765,124530
+extern Lisp_Object make_string \7f3766,124576
+extern Lisp_Object make_formatted_string \7f3767,124634
+extern Lisp_Object make_multibyte_string \7f3779,124988
+extern Lisp_Object make_event_array \7f3780,125067
+extern Lisp_Object make_uninit_string \7f3781,125131
+extern Lisp_Object make_uninit_multibyte_string \7f3782,125182
+extern Lisp_Object make_string_from_bytes \7f3783,125254
+extern Lisp_Object make_specified_string \7f3784,125334
+extern Lisp_Object make_pure_string \7f3786,125426
+extern Lisp_Object make_pure_c_string \7f3787,125506
+build_pure_c_string \7f3792,125662
+build_string \7f3801,125867
+extern Lisp_Object pure_cons \7f3806,125945
+extern void make_byte_code \7f3807,126002
+extern struct Lisp_Vector *allocate_vector \7fallocate_vector\ 13808,126053
+make_uninit_vector \7f3820,126438
+make_uninit_sub_char_table \7f3833,126657
+extern struct Lisp_Vector *allocate_pseudovector \7fallocate_pseudovector\ 13844,126966
+#define ALLOCATE_PSEUDOVECTOR(\7f3850,127201
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(\7f3858,127537
+extern bool gc_in_progress;\7f3863,127738
+extern bool abort_on_gc;\7f3864,127766
+extern Lisp_Object make_float \7f3865,127791
+extern void display_malloc_warning \7f3866,127831
+extern ptrdiff_t inhibit_garbage_collection \7f3867,127874
+extern Lisp_Object make_save_int_int_int \7f3868,127926
+extern Lisp_Object make_save_obj_obj_obj_obj \7f3869,128002
+extern Lisp_Object make_save_ptr \7f3871,128112
+extern Lisp_Object make_save_ptr_int \7f3872,128155
+extern Lisp_Object make_save_ptr_ptr \7f3873,128213
+extern Lisp_Object make_save_funcptr_ptr_obj \7f3874,128268
+extern Lisp_Object make_save_memory \7f3876,128364
+extern void free_save_value \7f3877,128428
+extern Lisp_Object build_overlay \7f3878,128471
+extern void free_marker \7f3879,128545
+extern void free_cons \7f3880,128584
+extern void init_alloc_once \7f3881,128628
+extern void init_alloc \7f3882,128664
+extern void syms_of_alloc \7f3883,128695
+extern struct buffer * allocate_buffer \7f3884,128729
+extern int valid_lisp_object_p \7f3885,128776
+extern int relocatable_string_data_p \7f3886,128822
+extern void check_cons_list \7f3888,128901
+INLINE void \7f3890,128943
+extern void *r_alloc \7fr_alloc\ 13895,129064
+#define FLOAT_TO_STRING_BUFSIZE \7f3927,130527
+extern int openp \7f3957,131676
+extern Lisp_Object string_to_number \7f3959,131786
+extern void map_obarray \7f3960,131849
+extern void dir_warning \7f3962,131963
+extern void init_obarray \7f3963,132016
+extern void init_lread \7f3964,132049
+extern void syms_of_lread \7f3965,132080
+intern \7f3968,132134
+intern_c_string \7f3974,132222
+extern EMACS_INT lisp_eval_depth;\7f3980,132335
+extern Lisp_Object Vautoload_queue;\7f3981,132369
+extern Lisp_Object Vrun_hooks;\7f3982,132405
+extern Lisp_Object Vsignaling_function;\7f3983,132436
+extern Lisp_Object inhibit_lisp_code;\7f3984,132476
+extern struct handler *handlerlist;\7fhandlerlist\ 13985,132514
+extern void run_hook \7f3994,132756
+extern void run_hook_with_args_2 \7f3995,132792
+extern Lisp_Object run_hook_with_args \7f3996,132866
+extern _Noreturn void xsignal \7f3999,133025
+extern _Noreturn void xsignal0 \7f4000,133083
+extern _Noreturn void xsignal1 \7f4001,133129
+extern _Noreturn void xsignal2 \7f4002,133188
+extern _Noreturn void xsignal3 \7f4003,133260
+extern _Noreturn void signal_error \7f4005,133349
+extern Lisp_Object eval_sub \7f4006,133413
+extern Lisp_Object apply1 \7f4007,133461
+extern Lisp_Object call0 \7f4008,133515
+extern Lisp_Object call1 \7f4009,133555
+extern Lisp_Object call2 \7f4010,133608
+extern Lisp_Object call3 \7f4011,133674
+extern Lisp_Object call4 \7f4012,133753
+extern Lisp_Object call5 \7f4013,133845
+extern Lisp_Object call6 \7f4014,133950
+extern Lisp_Object call7 \7f4015,134068
+extern Lisp_Object internal_catch \7f4016,134199
+extern Lisp_Object internal_lisp_condition_case \7f4017,134292
+extern Lisp_Object internal_condition_case \7f4018,134381
+extern Lisp_Object internal_condition_case_1 \7f4019,134494
+extern Lisp_Object internal_condition_case_2 \7f4020,134629
+extern Lisp_Object internal_condition_case_n\7f4021,134790
+extern void specbind \7f4024,134986
+extern void record_unwind_protect \7f4025,135035
+extern void record_unwind_protect_ptr \7f4026,135108
+extern void record_unwind_protect_int \7f4027,135175
+extern void record_unwind_protect_void \7f4028,135236
+extern void record_unwind_protect_nothing \7f4029,135294
+extern void clear_unwind_protect \7f4030,135344
+extern void set_unwind_protect \7f4031,135390
+extern void set_unwind_protect_ptr \7f4032,135471
+extern Lisp_Object unbind_to \7f4033,135546
+extern _Noreturn void error \7f4034,135601
+fast_string_match_ignore_case \7f4136,140089
+extern ptrdiff_t fast_c_string_match_ignore_case \7f4141,140239
+extern ptrdiff_t fast_looking_at \7f4143,140336
+extern ptrdiff_t find_newline \7f4145,140475
+extern ptrdiff_t scan_newline \7f4147,140604
+extern ptrdiff_t scan_newline_from_point \7f4149,140707
+extern ptrdiff_t find_newline_no_quit \7f4150,140787
+extern ptrdiff_t find_before_next_newline \7f4152,140884
+extern void syms_of_search \7f4154,140982
+extern void clear_regexp_cache \7f4155,141017
+extern Lisp_Object Vminibuffer_list;\7f4159,141087
+extern Lisp_Object last_minibuf_string;\7f4160,141124
+extern Lisp_Object get_minibuffer \7f4161,141164
+extern void init_minibuf_once \7f4162,141211
+extern void syms_of_minibuf \7f4163,141249
+extern void syms_of_callint \7f4167,141316
+extern void syms_of_casefiddle \7f4171,141386
+extern void keys_of_casefiddle \7f4172,141425
+extern void init_casetab_once \7f4176,141495
+extern void syms_of_casetab \7f4177,141533
+extern Lisp_Object echo_message_buffer;\7f4181,141601
+extern struct kboard *echo_kboard;\7fecho_kboard\ 14182,141641
+extern void cancel_echoing \7f4183,141676
+extern Lisp_Object last_undo_boundary;\7f4184,141711
+extern bool input_pending;\7f4185,141750
+extern sigjmp_buf return_to_command_loop;\7f4187,141813
+extern Lisp_Object menu_bar_items \7f4189,141862
+extern Lisp_Object tool_bar_items \7f4190,141911
+extern void discard_mouse_events \7f4191,141967
+void handle_input_available_signal \7f4193,142028
+extern Lisp_Object pending_funcalls;\7f4195,142077
+extern bool detect_input_pending \7f4196,142114
+extern bool detect_input_pending_ignore_squeezables \7f4197,142155
+extern bool detect_input_pending_run_timers \7f4198,142215
+extern void safe_run_hooks \7f4199,142267
+extern void cmd_error_internal \7f4200,142309
+extern Lisp_Object command_loop_1 \7f4201,142369
+extern Lisp_Object read_menu_command \7f4202,142411
+extern Lisp_Object recursive_edit_1 \7f4203,142456
+extern void record_auto_save \7f4204,142500
+extern void force_auto_save_soon \7f4205,142537
+extern void init_keyboard \7f4206,142578
+extern void syms_of_keyboard \7f4207,142612
+extern void keys_of_keyboard \7f4208,142649
+extern ptrdiff_t current_column \7f4211,142715
+extern void invalidate_current_column \7f4212,142755
+extern bool indented_beyond_p \7f4213,142801
+extern void syms_of_indent \7f4214,142866
+extern void store_frame_param \7f4217,142929
+extern void store_in_alist \7f4218,143003
+extern Lisp_Object do_switch_frame \7f4219,143073
+extern Lisp_Object get_frame_param \7f4220,143146
+extern void frames_discard_buffer \7f4221,143212
+extern void syms_of_frame \7f4222,143261
+extern char **initial_argv;\7finitial_argv\ 14225,143323
+extern int initial_argc;\7f4226,143351
+extern bool display_arg;\7f4228,143426
+extern Lisp_Object decode_env_path \7f4230,143458
+extern Lisp_Object empty_unibyte_string,\7f4231,143529
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;\7f4231,143529
+extern _Noreturn void terminate_due_to_signal \7f4232,143594
+extern Lisp_Object Vlibrary_cache;\7f4234,143669
+void fixup_locale \7f4237,143730
+void synchronize_system_messages_locale \7f4238,143756
+void synchronize_system_time_locale \7f4239,143804
+INLINE void fixup_locale \7f4241,143854
+INLINE void synchronize_system_messages_locale \7f4242,143889
+INLINE void synchronize_system_time_locale \7f4243,143946
+extern void shut_down_emacs \7f4245,144006
+extern bool noninteractive;\7f4248,144132
+extern bool no_site_lisp;\7f4251,144224
+extern int daemon_pipe[\7fdaemon_pipe\ 14256,144392
+#define IS_DAEMON \7f4257,144419
+#define DAEMON_RUNNING \7f4258,144459
+extern void *w32_daemon_event;\7fw32_daemon_event\ 14260,144527
+#define IS_DAEMON \7f4261,144558
+#define DAEMON_RUNNING \7f4262,144603
+extern bool fatal_error_in_progress;\7f4266,144724
+extern bool inhibit_window_system;\7f4269,144830
+extern bool running_asynch_code;\7f4271,144923
+extern void kill_buffer_processes \7f4274,144986
+extern int wait_reading_process_output \7f4275,145035
+# define WAIT_READING_MAX \7f4281,145422
+# define WAIT_READING_MAX \7f4283,145494
+extern void add_timer_wait_descriptor \7f4286,145558
+extern void add_keyboard_wait_descriptor \7f4288,145610
+extern void delete_keyboard_wait_descriptor \7f4289,145658
+extern void add_gpm_wait_descriptor \7f4291,145725
+extern void delete_gpm_wait_descriptor \7f4292,145768
+extern void init_process_emacs \7f4294,145821
+extern void syms_of_process \7f4295,145860
+extern void setup_process_coding_systems \7f4296,145896
+extern int child_setup \7f4302,146016
+extern void init_callproc_1 \7f4303,146084
+extern void init_callproc \7f4304,146120
+extern void set_initial_environment \7f4305,146154
+extern void syms_of_callproc \7f4306,146198
+extern Lisp_Object read_doc_string \7f4309,146261
+extern Lisp_Object get_doc_string \7f4310,146311
+extern void syms_of_doc \7f4311,146372
+extern int read_bytecode_char \7f4312,146404
+extern void syms_of_bytecode \7f4315,146473
+extern struct byte_stack *byte_stack_list;\7fbyte_stack_list\ 14316,146510
+extern void mark_byte_stack \7f4318,146573
+extern void unmark_byte_stack \7f4320,146616
+extern Lisp_Object exec_byte_code \7f4321,146654
+extern void init_macros \7f4325,146804
+extern void syms_of_macros \7f4326,146836
+extern void truncate_undo_list \7f4329,146898
+extern void record_insert \7f4330,146948
+extern void record_delete \7f4331,146998
+extern void record_first_change \7f4332,147056
+extern void record_change \7f4333,147096
+extern void record_property_change \7f4334,147146
+extern void syms_of_undo \7f4337,147288
+extern void report_interval_modification \7f4340,147352
+extern void syms_of_menu \7f4343,147448
+extern void syms_of_xmenu \7f4346,147509
+extern char *get_current_dir_name \7fget_current_dir_name\ 14356,147711
+extern void stuff_char \7f4358,147760
+extern void init_foreground_group \7f4359,147793
+extern void sys_subshell \7f4360,147835
+extern void sys_suspend \7f4361,147868
+extern void discard_tty_input \7f4362,147900
+extern void init_sys_modes \7f4363,147938
+extern void reset_sys_modes \7f4364,147994
+extern void init_all_sys_modes \7f4365,148051
+extern void reset_all_sys_modes \7f4366,148090
+extern void child_setup_tty \7f4367,148130
+extern void setup_pty \7f4368,148165
+extern int set_window_size \7f4369,148194
+extern EMACS_INT get_random \7f4370,148238
+extern void seed_random \7f4371,148274
+extern void init_random \7f4372,148319
+extern void emacs_backtrace \7f4373,148351
+extern _Noreturn void emacs_abort \7f4374,148386
+extern void xputenv \7f4527,152700
+extern char *egetenv_internal \7fegetenv_internal\ 14529,152737
+egetenv \7f4532,152809
+extern void init_system_name \7f4539,153012
+#define eabs(\7f4545,153305
+#define make_fixnum_or_float(\7f4550,153438
+enum MAX_ALLOCA \7f4556,153689
+enum MAX_ALLOCA { MAX_ALLOCA \7f4556,153689
+extern void *record_xmalloc \7frecord_xmalloc\ 14558,153734
+#define USE_SAFE_ALLOCA \7f4560,153800
+#define AVAIL_ALLOCA(\7f4564,153933
+#define SAFE_ALLOCA(\7f4568,154044
+#define SAFE_NALLOCA(\7f4576,154385
+#define SAFE_ALLOCA_STRING(\7f4590,154861
+#define SAFE_FREE(\7f4598,155113
+#define SAFE_ALLOCA_LISP(\7f4625,155691
+# define USE_STACK_LISP_OBJECTS \7f4652,156813
+# undef USE_STACK_LISP_OBJECTS\7f4658,156979
+# define USE_STACK_LISP_OBJECTS \7f4659,157010
+enum { defined_GC_CHECK_STRING_BYTES \7f4663,157085
+enum { defined_GC_CHECK_STRING_BYTES \7f4665,157138
+union Aligned_Cons\7f4670,157272
+union Aligned_String\7f4676,157352
+ USE_STACK_CONS \7f4689,157707
+ USE_STACK_STRING \7f4691,157813
+#define STACK_CONS(\7f4699,158150
+#define AUTO_CONS_EXPR(\7f4701,158247
+#define AUTO_CONS(\7f4709,158610
+#define AUTO_LIST1(\7f4710,158681
+#define AUTO_LIST2(\7f4712,158789
+#define AUTO_LIST3(\7f4716,158944
+#define AUTO_LIST4(\7f4720,159119
+extern const char *verify_ascii \7fverify_ascii\ 14730,159456
+# define verify_ascii(\7f4732,159510
+#define AUTO_STRING(\7f4740,159818
+#define FOR_EACH_TAIL(\7f4752,160282
+#define FOR_EACH_ALIST_VALUE(\7f4766,160773
+maybe_gc \7f4774,161060
+functionp \7f4784,161299
+\f
+c-src/machsyscalls.c,23
+#define SYSCALL(\7f6,113
+\f
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,\7f1,0
+SYSCALL (mach_reply_port,\7f13,314
+SYSCALL (mach_thread_self,\7f18,377
+SYSCALL (mach_task_self,\7f23,441
+SYSCALL (mach_host_self,\7f28,503
+\f
+c-src/fail.c,30
+void (*prt_call(\7fprt_call\ 11,0
+\f
+c-src/h.h,1962
+ ELEM_I/\7fELEM_I\ 13,15
+} Fails_t;\7f5,85
+typedef void Lang_function \7f6,96
+void Asm_labels \7f7,127
+typedef struct tpcmd\7f8,147
+#define ggg \7f10,170
+tpcmd;\7f15,209
+typedef struct foobar2_ \7f16,216
+} foobar2;\7f20,307
+ DEVICE_SWP,\7f23,333
+ DEVICE_LAST\7f24,349
+} bsp_DevId;\7f25,365
+ struct constant_args \7f27,394
+} args;\7f30,457
+typedef int *regset;\7fregset\ 131,465
+typedef int INT;\7f32,486
+typedef union abc\7f33,503
+} ghi1;\7f36,534
+typedef union abc \7f37,542
+} ghi2;\7f39,573
+typedef struct a \7f40,581
+} b;\7f41,600
+#define c(\7f42,605
+typedef struct an_extern_linkage *an_extern_linkage_ptr;\7fan_extern_linkage_ptr\ 143,619
+typedef struct an_extern_linkage \7f44,676
+} an_extern_linkage;\7f56,1054
+typedef struct pollfd pfdset[\7fpfdset\ 157,1075
+typedef union rtunion_def\7f58,1119
+ } womboid \7f63,1206
+typedef union rtunion_def\7f64,1220
+womboid\7f75,1330
+enum {dog,\7fdog\ 181,1416
+enum {dog, cat}\7fcat\ 181,1416
+enum {dog, cat} animals;\7f81,1416
+typedef void (_CALLBACK_ *signal_handler)\7fsignal_handler\ 182,1441
+typedef void (_CALLBACK_ *signal_handler1)\7fsignal_handler1\ 183,1489
+/* comment */ #define ANSIC\7f84,1538
+ #define ANSIC\7f85,1566
+typedef void (proc)\7f87,1588
+typedef void OperatorFun(\7f88,1612
+typedef int f(\7f89,1648
+struct my_struct \7f91,1691
+typedef struct my_struct my_typedef;\7f93,1713
+typedef RETSIGTYPE (*signal_handler_t)\7fsignal_handler_t\ 194,1750
+ Date 04 May 87 235311 PDT \7f96,1802
+typedef unsigned char unchar;\7f99,1880
+typedef int X,\7f100,1910
+typedef int X, Y,\7f100,1910
+typedef int X, Y, Z;\7f100,1910
+typedef mio mao;\7f101,1931
+extern void ab(\7f102,1948
+typedef struct a \7f103,1966
+typedef struct a { } b;\7f103,1966
+typedef struct b\7f104,1990
+} c;\7f106,2009
+int (*oldhup)\7foldhup\ 1107,2014
+request (*oldhup)\7foldhup\ 1108,2031
+int extvar;\7f109,2053
+#define tag1\7f110,2065
+#define aaaaaa \7f111,2078
+#define bbbbbb\\7fbbbbbb\ 1113,2102
+#define cccccccccc\7f115,2125
+#define enter_critical_section \7f116,2144
+#define exit_critical_to_previous \7f117,2199
+#define UNDEFINED\7f118,2259
+struct re_pattern_buffer \7f119,2277
+\f
+cp-src/c.C,2378
+template <typename ipc3dIslandHierarchy,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,\7f1,0
+class CMultiChannelCSC19_3D\7f2,151
+ void execute(\7f11,493
+static void my_function1(\7f24,984
+int main \7f25,1026
+double base \7f26,1088
+operator += \7foperator +=\ 129,1174
+class TestRecord;\7f31,1233
+typedef struct s1 \7f32,1251
+} t1;\7f34,1287
+struct s2 \7f35,1293
+typedef struct s2 t2;\7f38,1324
+class A \7f39,1346
+ enum { rosso,\7f40,1356
+ enum { rosso, giallo,\7f40,1356
+ enum { rosso, giallo, verde \7f40,1356
+ const A& operator+(\7f41,1396
+const A& A::operator+(\7foperator+\ 143,1431
+void operator+(\7f44,1467
+void operator -(\7foperator -\ 145,1495
+void operator int(\7foperator int\ 146,1524
+A<int>* f(\7f48,1556
+int f(\7f49,1571
+int A<int>::f(\7ff\ 150,1590
+A<float,B<int> > A<B<float>,int>::f(\7ff\ 151,1618
+template <class C, int n> class AT \7f52,1668
+class AU \7f53,1716
+class B<\7fB\ 154,1735
+class B<int> { void f(\7f54,1735
+const A::B::T& abt \7f55,1766
+class A \7f56,1792
+class A { class B \7f56,1792
+class A { class B { int f(\7f56,1792
+class A \7f57,1827
+ int get_data(\7f58,1837
+ A operator+(\7f59,1861
+is_muldiv_operation(\7f61,1888
+domain foo \7f68,1956
+ void f(\7f69,1969
+void A::A(\7fA\ 172,1990
+struct A \7f73,2005
+struct A { A(\7f73,2005
+struct B \7f74,2023
+struct B { B(\7f74,2023
+void B::B(\7fB\ 175,2042
+void BE_Node::BE_Node(\7fBE_Node\ 176,2057
+class BE_Node \7f77,2084
+struct foo \7f79,2103
+class test \7f86,2157
+ int f(\7f87,2170
+ int ff(\7f89,2232
+ int g(\7f90,2255
+class AST_Root \7f92,2279
+class AST_Root;\7f96,2328
+AST_ConcreteType::AST_ConcreteType(\7f99,2394
+AST_Array::AST_Array(\7f107,2533
+ void f(\7f115,2734
+struct A \7f117,2754
+ ~A(\7f118,2765
+A::~A(\7f~A\ 1120,2778
+struct B \7f122,2790
+ ~B(\7f123,2801
+enum {dog,\7fdog\ 1126,2818
+enum {dog, cat}\7fcat\ 1126,2818
+enum {dog, cat} animals;\7f126,2818
+struct {int teats;} cow;\7f127,2843
+class Boo \7f129,2869
+ enum {dog,\7fdog\ 1130,2881
+ enum {dog, cat}\7fcat\ 1130,2881
+ foo(\7f133,2955
+ Boo(\7f137,2996
+ Boo(\7f138,3053
+Boo::Boo(\7f141,3071
+typedef int should_see_this_one_enclosed_in_extern_C;\7f149,3156
+typedef int (*should_see_this_function_pointer)\7fshould_see_this_function_pointer\ 1153,3229
+typedef int should_see_this_array_type[\7fshould_see_this_array_type\ 1156,3311
+\f
+cp-src/x.cc,102
+class XX\7f1,0
+ int foo(\7f4,19
+ void bar(\7f5,35
+XX::foo(\7ffoo\ 19,60
+XX::bar(\7fbar\ 115,95
+main(\7f21,126
+\f
+cp-src/burton.cpp,124
+::dummy::dummy test::dummy1(\7fdummy1\ 11,0
+::dummy::dummy test::dummy2(\7fdummy2\ 16,64
+::dummy::dummy test::dummy3(\7fdummy3\ 111,143
+\f
+cp-src/functions.cpp,778
+void Date::setDate \7fsetDate\ 15,148
+void Date::plus \7fplus\ 132,939
+void Date::minus \7fminus\ 142,1229
+void Date::shift \7fshift\ 152,1407
+Date & Date::operator = \7foperator =\ 162,1628
+Date & Date::operator += \7foperator +=\ 169,1789
+Date & Date::operator -= \7foperator -=\ 178,1939
+Date & Date::operator ++ \7foperator ++\ 187,2080
+Date & Date::operator -- \7foperator --\ 196,2216
+int Date::operator - \7foperator -\ 1104,2331
+int Date::operator < \7foperator <\ 1112,2483
+int Date::operator > \7foperator >\ 1116,2557
+int Date::operator == \7foperator ==\ 1120,2631
+ostream& operator << \7foperator <<\ 1124,2707
+istream& operator >> \7foperator >>\ 1133,2943
+bool isLeap \7f159,3543
+bool isHoliday \7f163,3629
+void asort(\7f173,3865
+void ReadVacation \7f186,4064
+void Debug \7f201,4523
+int WorkingDays(\7f211,4867
+Date StartDay(\7f226,5129
+\f
+cp-src/MDiagArray2.h,1194
+#define octave_MDiagArray2_h \7f29,870
+#undef LTGT\7f35,967
+#define LTGT\7f39,1031
+#define LTGT \7f42,1051
+class MDiagArray2;\7f45,1087
+operator += \7foperator +=\ 148,1145
+operator -= \7foperator -=\ 151,1242
+operator * \7foperator *\ 154,1339
+operator / \7foperator /\ 157,1428
+operator * \7foperator *\ 160,1517
+operator + \7foperator +\ 163,1605
+operator - \7foperator -\ 166,1707
+product \7f69,1808
+operator - \7foperator -\ 172,1907
+class MDiagArray2 \7f78,2022
+ MDiagArray2 \7f82,2077
+ MDiagArray2 \7f86,2154
+ MDiagArray2 \7f87,2198
+ MDiagArray2 \7f88,2254
+ MDiagArray2 \7f89,2329
+ MDiagArray2 \7f90,2387
+ MDiagArray2 \7f91,2450
+ ~MDiagArray2 \7f93,2515
+ MDiagArray2<T>& operator = \7foperator =\ 195,2542
+ DiagArray2<T>::operator = \7foperator =\ 197,2603
+ operator MArray2<T> \7foperator MArray2<T>\ 1101,2667
+ operator += \7foperator +=\ 1116,2966
+ operator -= \7foperator -=\ 1119,3057
+ friend MDiagArray2<T> operator * \7foperator *\ 1123,3174
+ friend MDiagArray2<T> operator / \7foperator /\ 1124,3253
+ friend MDiagArray2<T> operator * \7foperator *\ 1128,3384
+ operator + \7foperator +\ 1133,3544
+ operator - \7foperator -\ 1136,3640
+ friend MDiagArray2<T> operator - \7foperator -\ 1141,3803
+#undef LTGT\7f144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(\7f146,3887
+\f
+cp-src/Range.h,678
+#define octave_Range_h \7f24,765
+class istream;\7f30,840
+class ostream;\7f31,855
+class Matrix;\7f32,870
+Range\7f35,891
+ Range \7f39,909
+ Range \7f42,995
+ Range \7f46,1130
+ Range \7f50,1248
+ double base \7f54,1376
+ double limit \7f55,1425
+ double inc \7f56,1475
+ int nelem \7f57,1523
+ bool all_elements_are_ints \7f59,1571
+ Matrix matrix_value \7f61,1615
+ double min \7f63,1652
+ double max \7f64,1679
+ void sort \7f66,1707
+ void set_base \7f68,1728
+ void set_limit \7f69,1774
+ void set_inc \7f70,1821
+ friend ostream& operator << \7foperator <<\ 172,1867
+ friend istream& operator >> \7foperator >>\ 173,1928
+ void print_range \7f75,1984
+ int nelem_internal \7f85,2099
+extern Range operator - \7foperator -\ 188,2138
+\f
+cp-src/screen.cpp,228
+unsigned char cursor_x,\7f15,548
+unsigned char cursor_x, cursor_y;\7f15,548
+static union REGS regs;\7f16,582
+void goto_xy(\7f18,607
+void hide_cursor(\7f27,774
+void cursor_position(\7f32,836
+void clear_screen(\7f41,997
+void write_xyc(\7f55,1247
+\f
+cp-src/screen.hpp,538
+#define __COLORS\7f9,401
+enum COLORS \7f11,419
+ BLACK,\7f12,433
+ BLUE,\7f13,471
+ GREEN,\7f14,481
+ CYAN,\7f15,492
+ RED,\7f16,502
+ MAGENTA,\7f17,511
+ BROWN,\7f18,524
+ LIGHTGRAY,\7f19,535
+ DARKGRAY,\7f20,550
+ LIGHTBLUE,\7f21,589
+ LIGHTGREEN,\7f22,604
+ LIGHTCYAN,\7f23,620
+ LIGHTRED,\7f24,635
+ LIGHTMAGENTA,\7f25,649
+ YELLOW,\7f26,667
+ WHITE\7f27,679
+#define SCREEN_FP(\7f31,700
+#define SCREEN_START \7f33,795
+void goto_xy(\7f35,835
+void hide_cursor(\7f36,883
+void cursor_position(\7f37,907
+void clear_screen(\7f38,935
+void write_xyc(\7f39,960
+\f
+cp-src/conway.cpp,288
+#define max(\7f12,357
+#define min(\7f13,393
+const int num_rows \7f15,430
+const int num_columns \7f16,470
+class site *field_of_play[\7ffield_of_play\ 118,499
+int site::total_surrounding(\7ftotal_surrounding\ 120,550
+void display(\7f37,958
+void glider(\7f50,1239
+void traffic_light(\7f59,1478
+void main(\7f67,1633
+\f
+cp-src/conway.hpp,215
+class site:\7fsite\ 15,235
+ int total_surrounding(\7f8,303
+ site(\7f10,344
+ ~site(\7f11,397
+ char read(\7f12,410
+ void set(\7f13,444
+ void clear(\7f14,478
+ void compute_next_state(\7f15,514
+ void step(\7f22,717
+\f
+cp-src/clheir.cpp,359
+const int max_num_generic_objects \7f9,298
+generic_object * object_registry[\7fobject_registry\ 110,340
+void init_registry(\7f12,400
+void step_everybody(\7f19,527
+void discrete_location::clear_neighbors(\7fclear_neighbors\ 131,852
+generic_object::generic_object(\7fgeneric_object\ 136,981
+generic_object::~generic_object(\7f~generic_object\ 148,1255
+void agent::move(\7fmove\ 153,1353
+\f
+cp-src/clheir.hpp,731
+extern void init_registry(\7f10,452
+extern void step_everybody(\7f11,485
+class generic_object\7f13,520
+ generic_object(\7f17,582
+ ~generic_object(\7f19,724
+ virtual void compute_next_state(\7f21,843
+ virtual void step(\7f22,889
+const int max_num_directions \7f31,1220
+class location:\7flocation\ 133,1290
+ location(\7f43,1643
+ ~location(\7f44,1662
+class irregular_location:\7firregular_location\ 147,1687
+ irregular_location(\7f51,1763
+ ~irregular_location(\7f53,1855
+class discrete_location:\7fdiscrete_location\ 156,1890
+ void clear_neighbors(\7f60,2005
+ discrete_location(\7f62,2045
+ ~discrete_location(\7f65,2155
+ void assign_neighbor(\7f66,2185
+class agent:\7fagent\ 175,2509
+ agent(\7f79,2579
+ ~agent(\7f80,2592
+ void move(\7f81,2606
+\f
+cp-src/fail.C,315
+struct A \7f7,263
+ struct B \7f8,274
+ struct C \7f9,289
+ C(\7f11,318
+ operator int(\7foperator int\ 112,342
+ typedef C T;\7f14,389
+ typedef B T2;\7f16,414
+class String;\7f20,437
+class A \7f23,453
+ class B \7f24,463
+ class C \7f25,474
+ int f(\7f26,488
+int A::B::f(\7ff\ 131,521
+main(\7f37,571
+ class D \7f41,622
+ D(\7f43,659
+\f
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch \7f1,0
+(defalias 'pending-delete-mode \7fpending-delete-mode\ 15,102
+(defalias (quote explicitly-quoted-pending-delete-mode)\7f8,175
+\f
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name \7f34,1034
+(defgroup etags \7f43,1498
+(defcustom tags-case-fold-search \7f47,1566
+(defcustom tags-table-list \7f59,2051
+(defcustom tags-compression-info-list\7f69,2449
+(defcustom tags-add-tables \7f88,3231
+(defcustom tags-revert-without-query \7f98,3627
+(defvar tags-table-computed-list \7f103,3778
+(defvar tags-table-computed-list-for \7f112,4262
+(defvar tags-table-list-pointer \7f117,4510
+(defvar tags-table-list-started-at \7f121,4701
+(defvar tags-table-set-list \7f124,4821
+(defcustom find-tag-hook \7f129,5000
+(defcustom find-tag-default-function \7f137,5263
+(define-obsolete-variable-alias 'find-tag-marker-ring-length\7ffind-tag-marker-ring-length\ 1145,5602
+(defcustom tags-tag-face \7f148,5699
+(defcustom tags-apropos-verbose \7f154,5834
+(defcustom tags-apropos-additional-actions \7f160,5998
+(defvaralias 'find-tag-marker-ring \7ffind-tag-marker-ring\ 1183,6917
+(defvar default-tags-table-function \7f189,7097
+(defvar tags-location-ring \7f194,7323
+(defvar tags-table-files \7f201,7599
+(defvar tags-completion-table \7f206,7766
+(defvar tags-included-tables \7f209,7858
+(defvar next-file-list \7f212,7953
+(defvar tags-table-format-functions \7f217,8059
+(defvar file-of-tag-function \7f224,8440
+(defvar tags-table-files-function \7f228,8634
+(defvar tags-completion-table-function \7f230,8745
+(defvar snarf-tag-function \7f232,8840
+(defvar goto-tag-location-function \7f236,9049
+(defvar find-tag-regexp-search-function \7f239,9222
+(defvar find-tag-regexp-tag-order \7f241,9343
+(defvar find-tag-regexp-next-line-after-failure-p \7f243,9452
+(defvar find-tag-search-function \7f245,9572
+(defvar find-tag-tag-order \7f247,9679
+(defvar find-tag-next-line-after-failure-p \7f249,9774
+(defvar list-tags-function \7f251,9880
+(defvar tags-apropos-function \7f253,9968
+(defvar tags-included-tables-function \7f255,10062
+(defvar verify-tags-table-function \7f257,10181
+(defun initialize-new-tags-table \7f260,10292
+(defun tags-table-mode \7f276,10980
+(defun visit-tags-table \7f285,11245
+(defun tags-table-check-computed-list \7f321,12783
+(defun tags-table-extend-computed-list \7f360,14654
+(defun tags-expand-table-name \7f400,16367
+(defun tags-table-list-member \7f409,16710
+(defun tags-verify-table \7f421,17182
+(defun tags-table-including \7f470,19302
+(defun tags-next-table \7f522,21346
+(defun visit-tags-table-buffer \7f543,22203
+(defun tags-reset-tags-tables \7f712,28513
+(defun file-of-tag \7f731,29170
+(defun tags-table-files \7f740,29519
+(defun tags-included-tables \7f749,29869
+(defun tags-completion-table \7f755,30115
+(defun tags-lazy-completion-table \7f783,31309
+(defun tags-completion-at-point-function \7f799,31944
+(defun find-tag-tag \7f818,32694
+(defvar last-tag \7f837,33367
+(defun find-tag-interactive \7f840,33426
+(defvar find-tag-history \7f852,33841
+(defvar etags-case-fold-search)\7f855,33906
+(defvar etags-syntax-table)\7f856,33938
+(defvar local-find-tag-hook)\7f857,33966
+(defun find-tag-noselect \7f860,34011
+(defun find-tag \7f932,37125
+(defun find-tag-other-window \7f959,38341
+(defun find-tag-other-frame \7f1000,40269
+(defun find-tag-regexp \7f1025,41443
+(defalias 'pop-tag-mark \7fpop-tag-mark\ 11049,42605
+(defvar tag-lines-already-matched \7f1052,42656
+(defun find-tag-in-order \7f1055,42763
+(defun tag-find-file-of-tag-noselect \7f1167,47109
+(defun tag-find-file-of-tag \7f1200,48955
+(defun etags-recognize-tags-table \7f1208,49181
+(defun etags-verify-tags-table \7f1241,50812
+(defun etags-file-of-tag \7f1246,51010
+(defun etags-tags-completion-table \7f1256,51345
+(defun etags-snarf-tag \7f1286,52551
+(defun etags-goto-tag-location \7f1324,54120
+(defun etags-list-tags \7f1388,56563
+(defmacro tags-with-face \7f1423,57838
+(defun etags-tags-apropos-additional \7f1431,58171
+(defun etags-tags-apropos \7f1465,59408
+(defun etags-tags-table-files \7f1527,61617
+(defun etags-tags-included-tables \7f1542,62053
+(defun tags-recognize-empty-tags-table \7f1559,62593
+(defun tag-exact-file-name-match-p \7f1587,63739
+(defun tag-file-name-match-p \7f1596,64132
+(defun tag-exact-match-p \7f1609,64688
+(defun tag-implicit-name-match-p \7f1620,65256
+(defun tag-symbol-match-p \7f1633,65856
+(defun tag-word-match-p \7f1643,66292
+(defun tag-partial-file-name-match-p \7f1652,66690
+(defun tag-any-match-p \7f1662,67134
+(defun tag-re-match-p \7f1667,67318
+(defcustom tags-loop-revert-buffers \7f1675,67567
+(defun next-file \7f1685,67976
+(defvar tags-loop-operate \7f1760,70890
+(defvar tags-loop-scan\7f1763,70984
+(defun tags-loop-eval \7f1771,71313
+(defun tags-loop-continue \7f1782,71642
+(defun tags-search \7f1850,73948
+(defun tags-query-replace \7f1871,74774
+(defun tags-complete-tags-table-file \7f1896,75998
+(defun list-tags \7f1906,76377
+(defun tags-apropos \7f1934,77330
+(define-button-type 'tags-select-tags-table\7ftags-select-tags-table\ 11957,78156
+(defun select-tags-table \7f1964,78395
+(defvar select-tags-table-mode-map \7f2019,80522
+(define-derived-mode select-tags-table-mode \7f2030,80905
+(defun select-tags-table-select \7f2034,81089
+(defun select-tags-table-quit \7f2043,81455
+(defun complete-tag \7f2049,81610
+(defconst etags--xref-limit \7f2074,82551
+(defvar etags-xref-find-definitions-tag-order \7f2076,82586
+(defun etags-xref-find \7f2082,82876
+(defun etags--xref-find-definitions \7f2096,83405
+(defclass xref-etags-location \7f2129,85119
+(defun xref-make-etags-location \7f2135,85342
+(cl-defmethod xref-location-marker \7f2139,85497
+(cl-defmethod xref-location-line \7f2146,85741
+\f
+erl-src/gs_dialog.erl,98
+-define(VERSION\7f2,32
+behaviour_info(\7f51,2177
+show(\7f124,5458
+dialog_loop(\7f219,9529
+test(\7f252,10806
+\f
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+forth-src/test-forth.fth,408
+: a-forth-word \7f20,301
+99 constant a-forth-constant!\7f22,343
+55 value a-forth-value?\7f23,373
+create :a-forth-dictionary-entry\7f24,397
+defer #a-defer-word\7f27,460
+: (another-forth-word)\7f(another-forth-word\ 129,481
+ 9 field >field1\7f36,582
+ 5 field >field2\7f37,605
+constant (a-forth-constant\7f(a-forth-constant\ 138,628
+2000 buffer: #some-storage\7f41,657
+code assemby-code-word \7f43,685
+: a-forth-word \7f50,870
+\f
+go-src/test.go,48
+package main\7f1,0
+func say(\7f5,28
+func main(\7f9,72
+\f
+go-src/test1.go,119
+package main\7f1,0
+func (s str) PrintAdd(\7f17,136
+func (n intNumber) PrintAdd(\7f21,189
+func test(\7f25,248
+func main(\7f29,285
+\f
+html-src/softwarelibero.html,200
+Cos'è il software libero?\7f4,38
+Licenze d'uso di un programma\7flicenze\ 165,2500
+Sfatiamo alcuni miti\7f138,6118
+Il movimento open source\7foss\ 1191,8037
+Impatto pratico del software libero\7fimpatto\ 1231,10066
+\f
+html-src/index.shtml,104
+ \7f8,281
+In evidenza\7f15,447
+Comunicati e iniziative\7f32,976
+Ultime notizie dall'associazione\7f63,2030
+\f
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms\7f7,277
+Description\7falgorithms\ 110,481
+Generating the Data\7fgenalgorithm\ 148,1995
+Convolutionally\7fconalgorithm\ 155,2512
+Next\7fstatetable\ 1262,11587
+Output\7foutputtable\ 1350,13915
+Mapping the Channel Symbols\7fmapping\ 1433,16213
+Adding Noise to the\7faddnoise\ 1439,16607
+Quantizing the Received\7fquantizing\ 1469,19100
+\f
+html-src/software.html,439
+Francesco Potortì Software Page\7f9,280
+Software that I wrote for supporting my research activity\7fsimulation\ 136,1398
+MTG\7fmtg\ 141,1482
+Fracas\7ffracas\ 165,2624
+GaliLEO\7fgalileo\ 1101,4232
+Leasqr\7fleasqr\ 1114,4677
+Free software that I wrote for the GNU project or for my personal or work\7fgnu\ 1142,6065
+Etags\7fetags\ 1148,6180
+checkiso\7f161,6729
+cgrep\7f178,7547
+debian-bug.el\7fdebian-bug\ 1190,7979
+tcpdump\7f205,8564
+Links to interesting software\7flinks\ 1216,8891
+\f
+lua-src/allegro.lua,400
+local function get_layer_by_name \7f7,175
+local function count_layers \7f33,621
+function GetLayerByName \7f54,980
+function GetUniqueLayerName \7f65,1204
+function SelectLayer \7f76,1415
+function NewLayer \7f86,1773
+function NewLayerSet \7f144,3226
+function RemoveLayer \7f170,3750
+function MoveLayerTop \7f211,4767
+function MoveLayerBottom \7f223,5079
+function MoveLayerBefore \7f236,5457
+function MoveLayerAfter \7f258,6090
+\f
+lua-src/test.lua,442
+function Rectangle.getPos \7f2,15
+function Rectangle.getPos \7fgetPos\ 12,15
+function Circle.getPos \7f6,61
+function Circle.getPos \7fgetPos\ 16,61
+function Cube.data.getFoo \7f10,102
+function Cube.data.getFoo \7fgetFoo\ 110,102
+function Square.something:Bar \7f14,148
+function Square.something:Bar \7fBar\ 114,148
+ function test.me_22a(\7f22,241
+ function test.me_22a(\7fme_22a\ 122,241
+ local function test.me22b \7f25,297
+ local function test.me22b \7fme22b\ 125,297
+\f
+make-src/Makefile,2175
+LATEST=\7f1,0
+RELEASELIST=\7f2,10
+ADASRC=\7f4,104
+ASRC=\7f5,171
+CSRC=\7f6,197
+CPSRC=\7f10,423
+ELSRC=\7f13,614
+ERLSRC=\7f14,661
+FORTHSRC=\7f15,702
+FSRC=\7f16,726
+HTMLSRC=\7f17,776
+JAVASRC=\7f18,844
+LUASRC=\7f19,907
+MAKESRC=\7f20,926
+OBJCSRC=\7f21,943
+OBJCPPSRC=\7f22,999
+PASSRC=\7f23,1035
+PERLSRC=\7f24,1053
+PHPSRC=\7f25,1108
+PSSRC=\7f26,1156
+PROLSRC=\7f27,1173
+PYTSRC=\7f28,1210
+TEXSRC=\7f29,1227
+YSRC=\7f30,1282
+SRCS=\7f31,1325
+NONSRCS=\7f35,1577
+VHDLFLAGS=\7f37,1624
+COBOLFLAGS=\7f38,1827
+POSTSCRIPTFLAGS=\7f39,1889
+TCLFLAGS=\7f40,1943
+GETOPTOBJS=\7f42,2002
+RXINCLUDE=\7f43,2034
+REGEXOBJS=\7f44,2056
+CHECKOBJS=\7f46,2075
+CHECKFLAGS=\7f47,2105
+OBJS=\7f48,2145
+CPPFLAGS=\7f49,2190
+LDFLAGS=\7f50,2259
+WARNINGS=\7f51,2282
+CFLAGS=\7f52,2466
+FASTCFLAGS=\7f55,2530
+FASTCFLAGSWARN=\7f56,2591
+FILTER=\7f58,2641
+REGEX=\7f59,2695
+xx=\7f60,2741
+MAKE:\7fMAKE\ 162,2790
+RUN=\7f63,2825
+RUN=\7f64,2865
+OPTIONS=\7f65,2870
+ARGS=\7f66,2922
+infiles \7f68,2940
+quiettest:\7fquiettest\ 170,3002
+test:\7ftest\ 179,3409
+${CHECKOBJS}:\7f${CHECKOBJS}\ 188,3805
+checker:\7fchecker\ 190,3849
+standalone:\7fstandalone\ 196,4062
+prof:\7fprof\ 1101,4168
+fastetags:\7ffastetags\ 1104,4198
+fastctags:\7ffastctags\ 1108,4322
+staticetags:\7fstaticetags\ 1112,4446
+rsynctofly:\7frsynctofly\ 1116,4608
+rsyncfromfly:\7frsyncfromfly\ 1119,4698
+web ftp publish:\7fweb ftp publish\ 1122,4794
+release distrib:\7frelease distrib\ 1129,5115
+tags:\7ftags\ 1134,5255
+clean:\7fclean\ 1136,5267
+srclist:\7fsrclist\ 1139,5302
+regexfile:\7fregexfile\ 1143,5391
+/home/www/pub/etags.c.gz:\7f/home/www/pub/etags.c.gz\ 1149,5566
+/home/www/pub/software/unix/etags.tar.gz:\7f/home/www/pub/software/unix/etags.tar.gz\ 1156,5825
+regex.o:\7fregex.o\ 1159,6031
+getopt.o:\7fgetopt.o\ 1162,6086
+getopt1.o:\7fgetopt1.o\ 1165,6147
+etags:\7fetags\ 1168,6210
+ctags:\7fctags\ 1171,6299
+man manpage:\7fman manpage\ 1174,6396
+etags.1.man:\7fetags.1.man\ 1176,6422
+maintaining.info:\7fmaintaining.info\ 1179,6475
+TAGS:\7fTAGS\ 1182,6557
+%ediff:\7f%ediff\ 1185,6587
+oediff:\7foediff\ 1188,6677
+%cdiff:\7f%cdiff\ 1191,6764
+xdiff:\7fxdiff\ 1194,6854
+ETAGS:\7fETAGS\ 1197,6942
+ETAGS%:\7fETAGS%\ 1200,7012
+ETAGS13 ETAGS14 ETAGS15:\7fETAGS13 ETAGS14 ETAGS15\ 1203,7084
+ETAGS12:\7fETAGS12\ 1206,7216
+OTAGS:\7fOTAGS\ 1209,7304
+CTAGS:\7fCTAGS\ 1212,7369
+CTAGS%:\7fCTAGS%\ 1215,7443
+CTAGS13 CTAGS14 CTAGS15:\7fCTAGS13 CTAGS14 CTAGS15\ 1218,7545
+EXTAGS:\7fEXTAGS\ 1221,7680
+.PRECIOUS:\7f.PRECIOUS\ 1224,7838
+FRC:\7fFRC\ 1226,7894
+\f
+objc-src/Subprocess.h,98
+#define Subprocess \7f41,1217
+#define BUFFERSIZE \7f43,1267
+@interface Subprocess:\7fSubprocess\ 145,1292
+\f
+objc-src/Subprocess.m,476
+#define PTY_TEMPLATE \7f20,494
+#define PTY_LENGTH \7f21,528
+static void showError(\7f23,551
+@interface Subprocess(Private)\7f32,737
+- childDidExit\7f39,851
+- fdHandler:\7ffdHandler\ 167,1589
+showError \7f98,2360
+fdHandler \7f112,2785
+getptys \7f119,2907
+- init:\7finit\ 1183,4815
+ andStdErr:\7finit\ 1197,5147
+- send:(const char *)string withNewline:\7fsend\ 1300,7436
+- send:\7fsend\ 1308,7599
+- terminateInput\7f314,7689
+- terminate:\7fterminate\ 1321,7810
+- setDelegate:\7fsetDelegate\ 1332,7961
+- delegate\7f338,8031
+\f
+objc-src/PackInsp.h,109
+#define NUMSTATS \7f36,1101
+#define TYPESTOSTAT \7f37,1120
+@interface PackageInspector:\7fPackageInspector\ 139,1172
+\f
+objc-src/PackInsp.m,1322
+static const char RCSid[\7fRCSid\ 130,1032
+#define VERSION \7f34,1116
+# define DEBUG \7f37,1155
+#define LISTCONTENTS \7f39,1181
+#define OPENBUTTON \7f47,1352
+#define LISTCONTENTSBUTTON \7f48,1449
+#define LISTDESCRIPTIONBUTTON \7f49,1562
+#define STATE_UNINSTALLED \7f52,1687
+#define STATE_INSTALLED \7f53,1807
+#define STATE_COMPRESSD \7f54,1948
+#define SIZEFORMAT \7f57,2152
+#define KBYTES \7f58,2362
+#define MBYTES \7f59,2473
+#define LOCALIZE(\7f61,2585
+#define LOCALIZE_ARCH(\7f62,2668
++new\7fnew\ 167,2802
+-showInfo:\7fshowInfo\ 193,3417
+-revert:\7frevert\ 1107,3737
+-ok:\7fok\ 1136,4297
+-load\7fload\ 1143,4424
+#define LOOKUP(\7f156,4826
+#undef LOOKUP\7f176,5694
+-loadKeyValuesFrom:(const char *)type inTable:\7floadKeyValuesFrom\ 1186,5852
+-loadContentsOf:(const char *)type inTable:\7floadContentsOf\ 1238,7079
+-loadImage\7floadImage\ 1257,7552
+#define STAT_EQ(\7f275,7940
+-(BOOL)shouldLoad\7f280,8116
+-toggleDescription\7ftoggleDescription\ 1301,8626
+-(const char *)getPath:(char *)buf forType:\7fgetPath\ 1317,8899
+-setRevertButtonTitle\7fsetRevertButtonTitle\ 1333,9320
+-(const char *)formatSize:(const char *)size inBuf:\7fformatSize\ 1344,9525
+#define WORKING \7f368,10045
+-(void)getArchs\7f370,10100
+-(void)addArchs:\7faddArchs\ 1385,10520
+-subprocess:(Subprocess *)sender output:\7fsubprocess\ 1428,11351
+-subprocessDone:\7fsubprocessDone\ 1436,11484
+static void openInWorkspace(\7f446,11634
+-open:\7fopen\ 1464,12063
+\f
+objcpp-src/SimpleCalc.H,41
+@interface SimpleCalc:\7fSimpleCalc\ 114,400
+\f
+objcpp-src/SimpleCalc.M,445
+- init\7f52,1747
+- appendToDisplay:\7fappendToDisplay\ 160,1933
+- registerAction:\7fregisterAction\ 170,2210
+- decimalKey:\7fdecimalKey\ 177,2348
+- numberKeys:\7fnumberKeys\ 191,2661
+- equalsKey:\7fequalsKey\ 1112,3192
+- operationKeys:\7foperationKeys\ 1131,3680
+- clearKey:\7fclearKey\ 1153,4301
+- clearAllKey:\7fclearAllKey\ 1160,4410
+- appDidInit:\7fappDidInit\ 1168,4591
+- windowWillClose:\7fwindowWillClose\ 1178,4882
+- infoPanel:\7finfoPanel\ 1186,5132
+- helpPanel:\7fhelpPanel\ 1198,5482
+\f
+pas-src/common.pas,1875
+procedure InitializeStringPackage;\7f26,527
+function newtextstring;\7f34,874
+procedure disposetextstring;\7f52,1404
+function ConcatT;\7f78,2066
+function AppendTextString;\7f112,3238
+function CopyTextString;\7f132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;\7f151,4505
+procedure append_string;\7f172,5166
+function To_Upper;\7f186,5462
+function To_Lower;\7f194,5617
+function EmptyNmStr(\7f209,6213
+function chartonmstr;\7f219,6436
+function LowerCaseNmStr;\7f230,6682
+function concatenatenamestrings;\7f242,7007
+procedure writenamestring;\7f263,7517
+function IsControlChar;\7f277,7928
+function namestringequal;\7f283,8079
+function NameStringLess;\7f302,8539
+function IsControlCharName(\7f343,9710
+function SubString;\7f358,10208
+function SkipChars;\7f379,10791
+function RemoveUnderlineControl;\7f397,11311
+procedure First100Chars;\7f427,12162
+procedure SkipSpaces;\7f462,13298
+function SkipBlanks;\7f477,13782
+function stripname;\7f505,14595
+function Locate;\7f522,15039
+function NameHasChar;\7f543,15581
+function integertonmstr;\7f561,16134
+function NmStrToInteger;\7f585,16901
+function AddNullToNmStr;\7f600,17317
+function ValToNmStr;\7f611,17585
+function ChangeFileType;\7f625,18037
+function StripPath;\7f647,18734
+function ReprOfChar;\7f675,19343
+procedure ExtractCommentInfo;\7f702,20749
+procedure INSERT_TREE_NODE;\7f784,24053
+function GetNameList;\7f920,27926
+procedure DisposeANameList(\7f925,28010
+procedure DisposeNameList;\7f938,28340
+function GetNewNameListNode;\7f943,28409
+function insertname;\7f972,29051
+procedure InitNameList;\7f988,29471
+procedure InitNameStringPool;\7f998,29767
+procedure NewNameString;\7f1004,29867
+procedure ReleaseNameString;\7f1022,30232
+procedure SDTrefStringToRec \7f1045,30741
+procedure SDTrefSkipSpaces;\7f1059,31092
+function SDTrefIsEnd \7f1070,31323
+function SDTrefGetInteger \7f1082,31529
+procedure SDTrefRecToString \7f1303,37546
+function NmStrToErrStr;\7f1497,42305
+function ErrStrToNmStr;\7f1509,42557
+function GetTextRef;\7f1529,43112
+\f
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"\7fLCE_FUNCTIONS\ 14,38
+ define("LCE_UNKNOWN"\7fLCE_UNKNOWN\ 19,145
+ define("LCE_WS"\7fLCE_WS\ 111,194
+ define("LCE_COMMENT"\7fLCE_COMMENT\ 113,244
+ define("LCE_COMMENT_USER"\7fLCE_COMMENT_USER\ 115,303
+ define("LCE_COMMENT_TOOL"\7fLCE_COMMENT_TOOL\ 117,366
+ define("LCE_MSGID"\7fLCE_MSGID\ 119,430
+ define("LCE_MSGSTR"\7fLCE_MSGSTR\ 121,488
+ define("LCE_TEXT"\7fLCE_TEXT\ 123,541
+ define("STATE_ABORT"\7fSTATE_ABORT\ 125,567
+ define("STATE_OK"\7fSTATE_OK\ 126,595
+ define("STATE_LOOP"\7fSTATE_LOOP\ 127,620
+ class POEntryAD \7f29,648
+ function validate(\7f31,683
+ function checkQuotation(\7f59,1384
+ class CommentAD \7f70,1639
+ function CommentAD(\7f73,1693
+ function validate(\7f83,1944
+ class POEntry \7f105,2410
+ function POEntry(\7f119,2711
+ function lineCount(\7f135,3255
+ function serializeToVars(\7f141,3365
+ function write(\7f151,3800
+ class POReader \7f163,4178
+ function gettext(\7f177,4457
+ function parseFromVars(\7f189,4705
+ function serializeToVars(\7f215,5331
+ function POReader(\7f229,5613
+ function read(\7f243,5983
+ function write(\7f259,6307
+ function isComment(\7f277,6645
+ function comment(\7f284,6822
+ function msgid(\7f304,7247
+ function msgstr(\7f320,7574
+ function start(\7f340,8232
+ function createPOEntries(\7f360,8644
+ function stripLine(\7f394,9472
+ function printClassification(\7f421,10056
+ function classifyLine(\7f432,10301
+ function getTextDomains(\7f471,11094
+ class PORManager \7f498,11756
+ function PORManager(\7f502,11822
+ function addPOReader(\7f507,11896
+ function &getPOReader(\7fgetPOReader\ 1512,11992
+ function getDomainNames(\7f517,12081
+ function &loadPORManager(\7floadPORManager\ 1523,12174
+ function fileJoin(\7f536,12436
+ function lce_bindtextdomain(\7f557,12839
+ function lce_textdomain(\7f614,14530
+ function lce_gettext(\7f620,14641
+ function lce_dgettext(\7f626,14767
+ function lce(\7f634,14966
+ function lce_bindtextdomain(\7f651,15488
+ function lce_textdomain(\7f656,15592
+ function lce_gettext(\7f661,15674
+ function lce_dgettext(\7f666,15755
+ function lce(\7f670,15855
+ function lce_geteditcode(\7f676,15898
+\f
+php-src/ptest.php,46
+define("TEST"\7fTEST\ 11,0
+test \7f4,26
+foo(\7f16,200
+\f
- sub read_toc \7fmain::read_toc\ 1165,3917
++perl-src/htlmify-cystic,1197
+my @section_name;\7fsection_name\ 112,236
+my @appendix_name;\7fappendix_name\ 113,254
+my @section_toc;\7fsection_toc\ 115,274
+my @appendix_toc;\7fappendix_toc\ 116,291
+my $new_tag \7fnew_tag\ 118,310
+my $appendix;\7fappendix\ 124,409
+my $section;\7fsection\ 125,423
+my $subsection;\7fsubsection\ 126,436
+my $subsubsection;\7fsubsubsection\ 127,452
+my $this_file_toc \7fthis_file_toc\ 129,472
+my %file_tocs;\7ffile_tocs\ 130,496
+my @output_files \7foutput_files\ 132,512
+my $file_index \7ffile_index\ 133,535
+my $output_file;\7foutput_file\ 135,556
+my $line;\7fline\ 137,574
+my $subsection_marker;\7fsubsection_marker\ 1161,3883
+my $new;\7fnew\ 1163,3907
- sub finish_subsubsections \7fmain::finish_subsubsections\ 1302,7805
- sub finish_subsections \7fmain::finish_subsections\ 1309,7987
- sub finish_sections \7fmain::finish_sections\ 1320,8310
- sub finish_appendices \7fmain::finish_appendices\ 1331,8599
- sub section_url_base \7fmain::section_url_base\ 1337,8724
- sub section_url_name \7fmain::section_url_name\ 1342,8922
- sub section_url \7fmain::section_url\ 1355,9284
++sub read_toc \7f165,3917
+ my $entry \7fentry\ 1218,5621
+ my $entry \7fentry\ 1234,6077
+ my $entry \7fentry\ 1245,6351
+ my $entry \7fentry\ 1252,6536
+ my $entry \7fentry\ 1268,7010
+ my $entry \7fentry\ 1276,7204
+ my $entry \7fentry\ 1281,7328
+ my $entry \7fentry\ 1296,7698
- sub section_href \7fmain::section_href\ 1364,9452
- sub section_name \7fmain::section_name\ 1368,9551
- sub toc_line \7fmain::toc_line\ 1372,9655
- sub file_end \7fmain::file_end\ 1375,9750
++sub finish_subsubsections \7f302,7805
++sub finish_subsections \7f309,7987
++sub finish_sections \7f320,8310
++sub finish_appendices \7f331,8599
++sub section_url_base \7f337,8724
++sub section_url_name \7f342,8922
++sub section_url \7f355,9284
+ my $name \7fname\ 1357,9336
- perl-src/yagrip.pl,258
- sub getopt \7fmain::getopt\ 17,156
++sub section_href \7f364,9452
++sub section_name \7f368,9551
++sub toc_line \7f372,9655
++sub file_end \7f375,9750
+\f
- sub usage \7fmain::usage\ 138,856
++perl-src/yagrip.pl,233
++sub getopt \7f7,156
+ local($_,$flag,$opt,$f,$r,@temp)\7f($_,$flag,$opt,$f,$r,@temp\ 18,169
- perl-src/kai-test.pl,244
- sub f1 \7fmain::f1\ 12,16
- sub main::f2 \7f6,50
++sub usage \7f38,856
+ local($prog,$_,@list)\7f($prog,$_,@list\ 139,868
+ local($string,$flag,@string,@temp,@last)\7f($string,$flag,@string,@temp,@last\ 140,897
+\f
- sub f3 \7fFoo::f3\ 112,104
- sub Bar::f4 \7f16,138
++perl-src/kai-test.pl,203
++sub f1 \7f2,16
++sub main::f2 \7ff2\ 16,50
+package Foo;\7f10,90
- sub f5 \7fBar::f5\ 122,191
++sub f3 \7f12,104
++sub Bar::f4 \7ff4\ 116,138
+package Bar;\7f20,177
- sub f6 \7fFoo::Bar::f6\ 128,244
++sub f5 \7f22,191
+package Foo::Bar;\7f26,225
- sub f7 \7fmain::f7\ 134,293
++sub f6 \7f28,244
+package main;\7f32,278
++sub f7 \7f34,293
+\f
+ps-src/rfc1245.ps,2478
+/FMversion \7f12,311
+/FrameDict \7f17,500
+/FMVERSION \7f47,1307
+/FMLOCAL \7f56,1494
+/FMDOCUMENT \7f73,1766
+/FMBEGINPAGE \7f95,2279
+/FMENDPAGE \7f109,2516
+/FMDEFINEFONT \7f115,2582
+/FMNORMALIZEGRAPHICS \7f126,2725
+/FMBEGINEPSF \7f142,2955
+/FMENDEPSF \7f153,3207
+/setmanualfeed \7f158,3283
+/max \7f163,3386
+/min \7f164,3426
+/inch \7f165,3466
+/pagedimen \7f166,3485
+/setpapername \7f172,3629
+/papersize \7f190,4214
+/manualpapersize \7f211,4789
+/desperatepapersize \7f230,5211
+/savematrix \7f239,5370
+/restorematrix \7f242,5425
+/dmatrix \7f245,5475
+/dpi \7f246,5495
+/freq \7f248,5583
+/sangle \7f249,5658
+/DiacriticEncoding \7f250,5717
+/.notdef \7f251,5738
+/.notdef \7f252,5801
+/.notdef \7f253,5864
+/.notdef \7f254,5927
+/.notdef \7f255,5990
+/numbersign \7f256,6051
+/parenright \7f257,6115
+/two \7f258,6184
+/less \7f259,6251
+/L \7f260,6320
+/bracketright \7f261,6389
+/i \7f262,6459
+/braceright \7f263,6529
+/Ntilde \7f264,6598
+/atilde \7f265,6668
+/iacute \7f266,6733
+/ocircumflex \7f267,6797
+/udieresis \7f268,6858
+/paragraph \7f269,6919
+/dieresis \7f270,6983
+/yen \7f271,7050
+/ordfeminine \7f272,7109
+/exclamdown \7f273,7171
+/guillemotleft \7f274,7230
+/Otilde \7f275,7296
+/quoteleft \7f276,7357
+/fraction \7f277,7420
+/periodcentered \7f278,7490
+/Acircumflex \7f279,7549
+/Icircumflex \7f280,7610
+/Uacute \7f281,7680
+/breve \7f282,7746
+/ReEncode \7f284,7814
+/graymode \7f300,8020
+/setpattern \7f310,8184
+/grayness \7f331,8725
+/normalize \7f394,9873
+/dnormalize \7f397,9942
+/lnormalize \7f400,10014
+/H \7f403,10104
+/Z \7f406,10147
+/X \7f409,10176
+/V \7f412,10219
+/N \7f415,10260
+/M \7f418,10286
+/E \7f419,10315
+/D \7f420,10336
+/O \7f421,10358
+/L \7f423,10394
+/Y \7f430,10489
+/R \7f439,10588
+/RR \7f450,10696
+/C \7f467,10959
+/U \7f473,11004
+/F \7f477,11039
+/T \7f481,11084
+/RF \7f484,11115
+/TF \7f488,11164
+/P \7f495,11219
+/PF \7f499,11270
+/S \7f506,11344
+/SF \7f510,11384
+/B \7f517,11446
+/BF \7f521,11505
+/W \7f538,11714
+/G \7f573,12382
+/A \7f582,12525
+/BEGINPRINTCODE \7f606,12918
+/ENDPRINTCODE \7f615,13131
+/gn \7f620,13259
+/cfs \7f631,13384
+/ic \7f636,13473
+/ms \7f658,14285
+/ip \7f668,14395
+/wh \7f678,14492
+/bl \7f684,14607
+/s1 \7f690,14722
+/fl \7f691,14739
+/hx \7f698,14887
+/wbytes \7f709,15055
+/BEGINBITMAPBWc \7f713,15147
+/BEGINBITMAPGRAYc \7f716,15198
+/BEGINBITMAP2BITc \7f719,15251
+/COMMONBITMAPc \7f722,15304
+/BEGINBITMAPBW \7f739,15660
+/BEGINBITMAPGRAY \7f742,15709
+/BEGINBITMAP2BIT \7f745,15760
+/COMMONBITMAP \7f748,15811
+/Fmcc \7f765,16156
+/ngrayt \7f773,16371
+/nredt \7f774,16393
+/nbluet \7f775,16414
+/ngreent \7f776,16436
+/colorsetup \7f787,16603
+/fakecolorsetup \7f814,17370
+/BITMAPCOLOR \7f826,17636
+/BITMAPCOLORc \7f839,17926
+/BITMAPGRAY \7f855,18275
+/BITMAPGRAYc \7f858,18335
+/ENDBITMAP \7f861,18397
+/fillprocs \7f868,18497
+\f
+prol-src/ordsets.prolog,525
+is_ordset(\7f47,1310
+list_to_ord_set(\7f63,1688
+ord_add_element(\7f71,1867
+ord_del_element(\7f85,2344
+ord_disjoint(\7f100,2783
+ord_intersect(\7f108,2953
+ord_intersection(\7f126,3552
+ord_intersection3(\7f130,3691
+ord_intersection(\7f150,4531
+ord_intersection4(\7f154,4703
+ord_intersection(\7f176,5664
+ord_intersection2(\7f181,5812
+ord_member(\7f200,6318
+ord_seteq(\7f216,6683
+ord_setproduct(\7f225,6971
+ord_subset(\7f240,7377
+ord_subtract(\7f257,7861
+ord_symdiff(\7f265,8054
+ord_union(\7f288,8887
+ord_union4(\7f303,9352
+ord_union(\7f324,10171
+ord_union_all(\7f329,10313
+\f
+prol-src/natded.prolog,2319
+expandmng(\7f100,2879
+normalize(\7f116,3359
+fresh_vars(\7f125,3716
+subst(\7f138,4134
+normalize_fresh(\7f159,4660
+reduce_subterm(\7f171,5112
+reduce(\7f185,5559
+free_var(\7f196,5903
+free_for(\7f209,6246
+compile_lex(\7f231,6875
+consult_lex:-\7fconsult_lex\ 1248,7384
+lex(\7f259,7754
+expandsyn(\7f267,8068
+bas_syn(\7f292,8897
+compile_empty:-\7fcompile_empty\ 1310,9376
+complete(\7f328,10055
+add_active(\7f340,10527
+parse(\7f353,10949
+derived_analyses(\7f364,11341
+build(\7f378,11965
+buildact(\7f392,12521
+mapsyn(\7f412,13542
+add_edge(\7f434,14278
+findcats(\7f447,14758
+normalize_tree(\7f465,15478
+normalize_trees(\7f475,15856
+expandmng_tree(\7f486,16248
+expandmng_trees(\7f496,16614
+cat(\7f511,17013
+subtree(\7f644,21266
+hypothetical_mem(\7f653,21565
+make_coor(\7f667,22130
+start_up:-\7fstart_up\ 1688,23013
+tokenizeatom(\7f710,23921
+tokenize(\7f720,24348
+isoperator(\7f752,25377
+isoptab(\7f756,25431
+specialsymbol(\7f765,25756
+sstab(\7f771,25861
+parse_cgi(\7f787,26347
+keyvalseq(\7f792,26510
+andkeyvalseq(\7f796,26609
+keyval(\7f799,26688
+valseq(\7f807,26920
+plusvalseq(\7f810,27007
+val(\7f816,27109
+argvals(\7f824,27426
+commaargvals(\7f828,27503
+atomval(\7f833,27578
+atom(\7f836,27640
+action(\7f846,28004
+keyvalcgi(\7f864,28649
+keyvalscgi(\7f865,28670
+outsyn(\7f868,28726
+act(\7f876,29060
+actout(\7f901,29906
+texttreelist(\7f912,30089
+htmltreelist(\7f918,30190
+fitchtreelist(\7f924,30304
+pp_html_table_tree(\7f938,30759
+pp_html_tree(\7f949,31113
+pp_html_trees(\7f988,32381
+pp_html_table_fitch_tree(\7f999,32769
+pp_html_fitch_tree(\7f1017,33672
+removeexp(\7f1129,39002
+splitexp(\7f1142,39490
+pp_exp(\7f1155,39990
+map_word(\7f1168,40249
+pp_exps(\7f1180,40474
+pp_tree(\7f1188,40777
+pp_trees(\7f1216,41807
+pp_word_list(\7f1225,42128
+pp_word(\7f1231,42262
+pp_word_list_rest(\7f1238,42569
+pp_cat(\7f1248,42929
+pp_syn(\7f1255,43196
+pp_syn_paren(\7f1276,43899
+pp_paren(\7f1293,44377
+pp_syn_back(\7f1300,44661
+pp_bas_cat(\7f1311,45001
+writecat(\7f1322,45409
+writesubs(\7f1351,46455
+writesups(\7f1361,46757
+writelistsubs(\7f1371,47090
+pp_lam(\7f1380,47408
+pp_lam_bracket(\7f1398,48022
+pp_lam_paren(\7f1407,48338
+pp_rule(\7f1429,49238
+member(\7f1447,49866
+append_list(\7f1451,49919
+append(\7f1456,50010
+at_least_one_member(\7f1460,50076
+numbervars(\7f1464,50171
+reverse(\7f1467,50209
+select(\7f1471,50290
+select_last(\7f1475,50357
+cat_atoms(\7f1479,50436
+writelist(\7f1485,50524
+write_lex_cat(\7f1492,50676
+writebreaklex(\7f1500,50988
+write_lex(\7f1513,51265
+writebreak(\7f1521,51541
+tt:-\7ftt\ 11531,51713
+mt:-\7fmt\ 11534,51784
+cmt:-\7fcmt\ 11537,51878
+\f
+pyt-src/server.py,1438
+class Controls:\7fControls\ 117,358
+ def __init__(\7f18,374
+ def __repr__(\7f24,590
+ def __str__(\7f34,871
+class Server:\7fServer\ 137,934
+ def __init__(\7f38,948
+ def dump(\7f73,2198
+ def __repr__(\7f125,3896
+ def __str__(\7f128,3945
+class User:\7fUser\ 1131,4014
+ def __init__(\7f132,4026
+ def __repr__(\7f172,5445
+ def __str__(\7f206,6883
+def flag2str(\7f223,7212
+class LabeledEntry(\7f232,7442
+ def bind(\7f234,7525
+ def focus_set(\7f236,7584
+ def __init__(\7f238,7629
+def ButtonBar(\7f245,7909
+def helpwin(\7f255,8280
+class ListEdit(\7f267,8707
+ def __init__(\7f269,8808
+ def handleList(\7f303,10042
+ def handleNew(\7f306,10094
+ def editItem(\7f314,10426
+ def deleteItem(\7f320,10596
+def ConfirmQuit(\7f326,10760
+class ControlEdit(\7f375,12377
+ def PostControls(\7f376,12403
+ def GatherControls(\7f421,13530
+class ServerEdit(\7f512,16264
+ def __init__(\7f513,16289
+ def post(\7f525,16629
+ def gather(\7f543,17191
+ def nosave(\7f547,17304
+ def save(\7f551,17408
+ def refreshPort(\7f556,17509
+ def createWidgets(\7f561,17663
+ def edituser(\7f631,20708
+class UserEdit(\7f645,20921
+ def __init__(\7f646,20944
+ def post(\7f658,21283
+ def gather(\7f676,21841
+ def nosave(\7f680,21950
+ def save(\7f684,22052
+ def createWidgets(\7f689,22151
+class Configure(\7f760,24879
+ def __init__(\7f761,24916
+ def MakeDispose(\7f772,25211
+ def MakeSitelist(\7f786,25706
+ def editsite(\7f794,25949
+ def save(\7f797,26022
+ def nosave(\7f807,26310
+\f
+ruby-src/test.rb,637
+module ModuleExample\7f1,0
+ class ClassExample\7f2,21
+ def instance_method\7f3,44
+ def ClassExample.class_method\7fclass_method\ 16,121
+ def instance_method_exclamation!\7f9,206
+ def instance_method_question?\7f12,310
+ def instance_method_equals=\7finstance_method_equals=\ 115,408
+ def `(\7f18,502
+ def +(\7f21,592
+ def [](\7f24,640
+ def []=(\7f[]=\ 127,690
+ def <<(\7f30,752
+ def ==(\7f==\ 133,802
+ def <=(\7f<=\ 136,872
+ def <=>(\7f<=>\ 139,943
+ def ===(\7f===\ 142,990
+ def module_instance_method\7f46,1051
+ def ModuleExample.module_class_method\7fmodule_class_method\ 149,1131
+\f
+ruby-src/test1.ru,935
+class A\7f1,0
+ def a(\7f2,8
+ def b(\7f5,38
+module A\7f9,57
+ class B\7f10,66
+ ABC \7f11,76
+ Def_ \7f12,88
+ Xyzzy \7f13,106
+ def foo!\7f15,121
+ def self._bar?(\7f_bar?\ 118,143
+ def qux=(\7fqux=\ 122,194
+ attr_reader :foo\7ffoo\ 126,233
+ attr_reader :read1 \7fread1\ 127,254
+ attr_reader :read1 , :read2;\7fread2\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1,\7fwrite1=\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1, :write2\7fwrite2=\ 127,254
+ attr_writer :bar,\7fbar=\ 128,316
+ :baz,\7fbaz=\ 129,338
+ :more\7fmore=\ 130,360
+ attr_accessor :tee\7ftee\ 131,382
+ attr_accessor :tee\7ftee=\ 131,382
+ alias_method :qux,\7fqux\ 132,405
+ alias_method :xyz,\7fxyz\ 133,456
+ :tee ; attr_reader :subtle\7fsubtle\ 134,479
+ attr_reader(:foo1,\7ffoo1\ 135,523
+ attr_reader(:foo1, :bar1,\7fbar1\ 135,523
+ :qux1)\7fqux1\ 136,563
+ alias_method ( :foo2,\7ffoo2\ 137,586
+A::Constant \7fConstant\ 142,655
+\f
+tex-src/testenv.tex,52
+\newcommand{\nm}\7f\nm\ 14,77
+\section{blah}\7fblah\ 18,139
+\f
+tex-src/gzip.texi,303
+@node Top,\7f62,2139
+@node Copying,\7f80,2652
+@node Overview,\7f83,2705
+@node Sample,\7f166,7272
+@node Invoking gzip,\7fInvoking gzip\ 1210,8828
+@node Advanced usage,\7fAdvanced usage\ 1357,13495
+@node Environment,\7f420,15207
+@node Tapes,\7f437,15768
+@node Problems,\7f460,16767
+@node Concept Index,\7fConcept Index\ 1473,17287
+\f
+tex-src/texinfo.tex,30627
+\def\texinfoversion{\7f\texinfoversion\ 126,1027
+\def\tie{\7f\tie\ 149,1518
+\def\gloggingall{\7f\gloggingall\ 172,2268
+\def\loggingall{\7f\loggingall\ 173,2337
+\def\onepageout#1{\7f\onepageout\ 199,3274
+\def\croppageout#1{\7f\croppageout\ 1115,4024
+\def\cropmarks{\7f\cropmarks\ 1142,5084
+\def\pagebody#1{\7f\pagebody\ 1144,5131
+\def\ewtop{\7f\ewtop\ 1157,5586
+\def\nstop{\7f\nstop\ 1158,5650
+\def\ewbot{\7f\ewbot\ 1160,5733
+\def\nsbot{\7f\nsbot\ 1161,5797
+\def\parsearg #1{\7f\parsearg\ 1170,6096
+\def\parseargx{\7f\parseargx\ 1172,6174
+\def\parseargline{\7f\parseargline\ 1182,6414
+\def\flushcr{\7f\flushcr\ 1186,6535
+\newif\ifENV \ENVfalse \def\inENV{\7f\inENV\ 1190,6734
+\def\ENVcheck{\7f\ENVcheck\ 1191,6798
+\outer\def\begin{\7f\begin\ 1198,7045
+\def\beginxxx #1{\7f\beginxxx\ 1200,7083
+\def\end{\7f\end\ 1208,7338
+\def\endxxx #1{\7f\endxxx\ 1210,7366
+\def\errorE#1{\7f\errorE\ 1216,7555
+\def\singlespace{\7f\singlespace\ 1222,7749
+\def\@{\7f\@\ 1232,7972
+\def\`{\7f\`\ 1236,8072
+\def\'{\7f\'\ 1237,8084
+\def\mylbrace {\7f\mylbrace\ 1241,8132
+\def\myrbrace {\7f\myrbrace\ 1242,8165
+\def\:{\7f\:\ 1247,8279
+\def\*{\7f\*\ 1250,8333
+\def\.{\7f\.\ 1253,8409
+\def\w#1{\7f\w\ 1258,8640
+\def\group{\7f\group\ 1268,9123
+ \def\Egroup{\7f\Egroup\ 1273,9287
+\def\need{\7f\need\ 1289,9729
+\def\needx#1{\7f\needx\ 1300,10006
+\def\dots{\7f\dots\ 1339,11392
+\def\page{\7f\page\ 1343,11456
+\def\exdent{\7f\exdent\ 1353,11783
+\def\exdentyyy #1{\7f\exdentyyy\ 1354,11816
+\def\nofillexdent{\7f\nofillexdent\ 1357,11960
+\def\nofillexdentyyy #1{\7f\nofillexdentyyy\ 1358,12005
+\def\include{\7f\include\ 1365,12189
+\def\includezzz #1{\7f\includezzz\ 1366,12224
+\def\thisfile{\7f\thisfile\ 1369,12275
+\def\center{\7f\center\ 1373,12338
+\def\centerzzz #1{\7f\centerzzz\ 1374,12371
+\def\sp{\7f\sp\ 1380,12513
+\def\spxxx #1{\7f\spxxx\ 1381,12538
+\def\comment{\7f\comment\ 1387,12712
+\def\commentxxx #1{\7f\commentxxx\ 1390,12809
+\def\ignoresections{\7f\ignoresections\ 1396,12978
+\let\chapter=\relax\7f=\relax\ 1397,13000
+\let\section=\relax\7f=\relax\ 1406,13245
+\let\subsection=\relax\7f=\relax\ 1409,13306
+\let\subsubsection=\relax\7f=\relax\ 1410,13329
+\let\appendix=\relax\7f=\relax\ 1411,13355
+\let\appendixsec=\relax\7fsec=\relax\ 1412,13376
+\let\appendixsection=\relax\7fsection=\relax\ 1413,13400
+\let\appendixsubsec=\relax\7fsubsec=\relax\ 1414,13428
+\let\appendixsubsection=\relax\7fsubsection=\relax\ 1415,13455
+\let\appendixsubsubsec=\relax\7fsubsubsec=\relax\ 1416,13486
+\let\appendixsubsubsection=\relax\7fsubsubsection=\relax\ 1417,13516
+\def\ignore{\7f\ignore\ 1423,13618
+\long\def\ignorexxx #1\end ignore{\7f\ignorexxx\ 1427,13758
+\def\direntry{\7f\direntry\ 1429,13817
+\long\def\direntryxxx #1\end direntry{\7f\direntryxxx\ 1430,13856
+\def\ifset{\7f\ifset\ 1434,13966
+\def\ifsetxxx #1{\7f\ifsetxxx\ 1436,14024
+\def\Eifset{\7f\Eifset\ 1440,14151
+\def\ifsetfail{\7f\ifsetfail\ 1441,14165
+\long\def\ifsetfailxxx #1\end ifset{\7f\ifsetfailxxx\ 1442,14221
+\def\ifclear{\7f\ifclear\ 1444,14282
+\def\ifclearxxx #1{\7f\ifclearxxx\ 1446,14344
+\def\Eifclear{\7f\Eifclear\ 1450,14475
+\def\ifclearfail{\7f\ifclearfail\ 1451,14491
+\long\def\ifclearfailxxx #1\end ifclear{\7f\ifclearfailxxx\ 1452,14551
+\def\set{\7f\set\ 1456,14702
+\def\setxxx #1{\7f\setxxx\ 1457,14729
+\def\clear{\7f\clear\ 1460,14791
+\def\clearxxx #1{\7f\clearxxx\ 1461,14822
+\def\iftex{\7f\iftex\ 1466,14939
+\def\Eiftex{\7f\Eiftex\ 1467,14952
+\def\ifinfo{\7f\ifinfo\ 1468,14966
+\long\def\ifinfoxxx #1\end ifinfo{\7f\ifinfoxxx\ 1469,15016
+\long\def\menu #1\end menu{\7f\menu\ 1471,15075
+\def\asis#1{\7f\asis\ 1472,15104
+\def\math#1{\7f\math\ 1485,15647
+\def\node{\7f\node\ 1487,15691
+\def\nodezzz#1{\7f\nodezzz\ 1488,15729
+\def\nodexxx[#1,#2]{\7f\nodexxx[\ 1489,15760
+\def\donoderef{\7f\donoderef\ 1492,15822
+\def\unnumbnoderef{\7f\unnumbnoderef\ 1496,15943
+\def\appendixnoderef{\7f\appendixnoderef\ 1500,16074
+\expandafter\expandafter\expandafter\appendixsetref{\7fsetref\ 1501,16120
+\let\refill=\relax\7fill=\relax\ 1504,16209
+\def\setfilename{\7f\setfilename\ 1509,16423
+\outer\def\bye{\7f\bye\ 1518,16669
+\def\inforef #1{\7f\inforef\ 1520,16725
+\def\inforefzzz #1,#2,#3,#4**{\7f\inforefzzz\ 1521,16763
+\def\losespace #1{\7f\losespace\ 1523,16860
+\def\sf{\7f\sf\ 1532,17064
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\7fbf=cmbx10\ 1558,17859
+\font\deftt=cmtt10 scaled \magstep1\7ftt=cmtt10\ 1559,17905
+\def\df{\7f\df\ 1560,17941
+\def\resetmathfonts{\7f\resetmathfonts\ 1635,20535
+\def\textfonts{\7f\textfonts\ 1648,21124
+\def\chapfonts{\7f\chapfonts\ 1653,21339
+\def\secfonts{\7f\secfonts\ 1658,21555
+\def\subsecfonts{\7f\subsecfonts\ 1663,21760
+\def\indexfonts{\7f\indexfonts\ 1668,21977
+\def\smartitalicx{\7f\smartitalicx\ 1691,22709
+\def\smartitalic#1{\7f\smartitalic\ 1692,22785
+\let\cite=\smartitalic\7f=\smartitalic\ 1698,22930
+\def\b#1{\7f\b\ 1700,22954
+\def\t#1{\7f\t\ 1703,22989
+\def\samp #1{\7f\samp\ 1706,23141
+\def\key #1{\7f\key\ 1707,23174
+\def\ctrl #1{\7f\ctrl\ 1708,23235
+\def\tclose#1{\7f\tclose\ 1716,23437
+\def\ {\7f\\ 1720,23603
+\def\xkey{\7f\xkey\ 1728,23872
+\def\kbdfoo#1#2#3\par{\7f\kbdfoo\ 1729,23888
+\def\dmn#1{\7f\dmn\ 1738,24189
+\def\kbd#1{\7f\kbd\ 1740,24216
+\def\l#1{\7f\l\ 1742,24273
+\def\r#1{\7f\r\ 1744,24302
+\def\sc#1{\7f\sc\ 1746,24370
+\def\ii#1{\7f\ii\ 1747,24413
+\def\titlefont#1{\7f\titlefont\ 1755,24646
+\def\titlepage{\7f\titlepage\ 1761,24749
+ \def\subtitlefont{\7f\subtitlefont\ 1766,24976
+ \def\authorfont{\7f\authorfont\ 1768,25060
+ \def\title{\7f\title\ 1774,25270
+ \def\titlezzz##1{\7f\titlezzz\ 1775,25305
+ \def\subtitle{\7f\subtitle\ 1783,25620
+ \def\subtitlezzz##1{\7f\subtitlezzz\ 1784,25661
+ \def\author{\7f\author\ 1787,25779
+ \def\authorzzz##1{\7f\authorzzz\ 1788,25816
+ \def\page{\7f\page\ 1794,26107
+\def\Etitlepage{\7f\Etitlepage\ 1804,26276
+\def\finishtitlepage{\7f\finishtitlepage\ 1817,26664
+\def\evenheading{\7f\evenheading\ 1846,27672
+\def\oddheading{\7f\oddheading\ 1847,27715
+\def\everyheading{\7f\everyheading\ 1848,27756
+\def\evenfooting{\7f\evenfooting\ 1850,27802
+\def\oddfooting{\7f\oddfooting\ 1851,27845
+\def\everyfooting{\7f\everyfooting\ 1852,27886
+\def\headings #1 {\7f\headings\ 1893,29578
+\def\HEADINGSoff{\7f\HEADINGSoff\ 1895,29627
+\def\HEADINGSdouble{\7f\HEADINGSdouble\ 1904,30054
+\def\HEADINGSsingle{\7f\HEADINGSsingle\ 1914,30374
+\def\HEADINGSon{\7f\HEADINGSon\ 1922,30595
+\def\HEADINGSafter{\7f\HEADINGSafter\ 1924,30629
+\def\HEADINGSdoublex{\7f\HEADINGSdoublex\ 1926,30724
+\def\HEADINGSsingleafter{\7f\HEADINGSsingleafter\ 1933,30912
+\def\HEADINGSsinglex{\7f\HEADINGSsinglex\ 1934,30973
+\def\today{\7f\today\ 1943,31248
+\def\thistitle{\7f\thistitle\ 1958,31793
+\def\settitle{\7f\settitle\ 1959,31818
+\def\settitlezzz #1{\7f\settitlezzz\ 1960,31855
+\def\internalBitem{\7f\internalBitem\ 1992,32785
+\def\internalBitemx{\7f\internalBitemx\ 1993,32835
+\def\internalBxitem "#1"{\7f\internalBxitem\ 1995,32880
+\def\internalBxitemx "#1"{\7f\internalBxitemx\ 1996,32960
+\def\internalBkitem{\7f\internalBkitem\ 1998,33035
+\def\internalBkitemx{\7f\internalBkitemx\ 1999,33087
+\def\kitemzzz #1{\7f\kitemzzz\ 11001,33134
+\def\xitemzzz #1{\7f\xitemzzz\ 11004,33236
+\def\itemzzz #1{\7f\itemzzz\ 11007,33339
+\def\item{\7f\item\ 11037,34410
+\def\itemx{\7f\itemx\ 11038,34461
+\def\kitem{\7f\kitem\ 11039,34514
+\def\kitemx{\7f\kitemx\ 11040,34567
+\def\xitem{\7f\xitem\ 11041,34622
+\def\xitemx{\7f\xitemx\ 11042,34675
+\def\description{\7f\description\ 11045,34785
+\def\table{\7f\table\ 11047,34835
+\def\ftable{\7f\ftable\ 11052,34979
+\def\Eftable{\7f\Eftable\ 11056,35125
+\def\vtable{\7f\vtable\ 11059,35194
+\def\Evtable{\7f\Evtable\ 11063,35340
+\def\dontindex #1{\7f\dontindex\ 11066,35409
+\def\fnitemindex #1{\7f\fnitemindex\ 11067,35429
+\def\vritemindex #1{\7f\vritemindex\ 11068,35474
+\def\tablez #1#2#3#4#5#6{\7f\tablez\ 11074,35623
+\def\Edescription{\7f\Edescription\ 11077,35681
+\def\itemfont{\7f\itemfont\ 11082,35883
+\def\Etable{\7f\Etable\ 11090,36109
+\def\itemize{\7f\itemize\ 11103,36433
+\def\itemizezzz #1{\7f\itemizezzz\ 11105,36469
+\def\itemizey #1#2{\7f\itemizey\ 11110,36564
+\def#2{\7f1119,36810
+\def\itemcontents{\7f\itemcontents\ 11120,36851
+\def\bullet{\7f\bullet\ 11123,36899
+\def\minus{\7f\minus\ 11124,36926
+\def\frenchspacing{\7f\frenchspacing\ 11128,37034
+\def\splitoff#1#2\endmark{\7f\splitoff\ 11134,37259
+\def\enumerate{\7f\enumerate\ 11140,37489
+\def\enumeratezzz #1{\7f\enumeratezzz\ 11141,37528
+\def\enumeratey #1 #2\endenumeratey{\7f\enumeratey\ 11142,37581
+ \def\thearg{\7f\thearg\ 11146,37728
+ \ifx\thearg\empty \def\thearg{\7f\thearg\ 11147,37747
+\def\numericenumerate{\7f\numericenumerate\ 11184,39081
+\def\lowercaseenumerate{\7f\lowercaseenumerate\ 11190,39211
+\def\uppercaseenumerate{\7f\uppercaseenumerate\ 11203,39558
+\def\startenumeration#1{\7f\startenumeration\ 11219,40048
+\def\alphaenumerate{\7f\alphaenumerate\ 11227,40230
+\def\capsenumerate{\7f\capsenumerate\ 11228,40265
+\def\Ealphaenumerate{\7f\Ealphaenumerate\ 11229,40299
+\def\Ecapsenumerate{\7f\Ecapsenumerate\ 11230,40333
+\def\itemizeitem{\7f\itemizeitem\ 11234,40413
+\def\newindex #1{\7f\newindex\ 11259,41270
+\def\defindex{\7f\defindex\ 11268,41559
+\def\newcodeindex #1{\7f\newcodeindex\ 11272,41667
+\def\defcodeindex{\7f\defcodeindex\ 11279,41927
+\def\synindex #1 #2 {\7f\synindex\ 11283,42107
+\def\syncodeindex #1 #2 {\7f\syncodeindex\ 11292,42447
+\def\doindex#1{\7f\doindex\ 11309,43126
+\def\singleindexer #1{\7f\singleindexer\ 11310,43185
+\def\docodeindex#1{\7f\docodeindex\ 11313,43297
+\def\singlecodeindexer #1{\7f\singlecodeindexer\ 11314,43364
+\def\indexdummies{\7f\indexdummies\ 11316,43422
+\def\_{\7f\_\ 11317,43442
+\def\w{\7f\w\ 11318,43470
+\def\bf{\7f\bf\ 11319,43497
+\def\rm{\7f\rm\ 11320,43526
+\def\sl{\7f\sl\ 11321,43555
+\def\sf{\7f\sf\ 11322,43584
+\def\tt{\7f\tt\ 11323,43612
+\def\gtr{\7f\gtr\ 11324,43640
+\def\less{\7f\less\ 11325,43670
+\def\hat{\7f\hat\ 11326,43702
+\def\char{\7f\char\ 11327,43732
+\def\TeX{\7f\TeX\ 11328,43764
+\def\dots{\7f\dots\ 11329,43794
+\def\copyright{\7f\copyright\ 11330,43827
+\def\tclose##1{\7f\tclose\ 11331,43870
+\def\code##1{\7f\code\ 11332,43915
+\def\samp##1{\7f\samp\ 11333,43956
+\def\t##1{\7f\t\ 11334,43997
+\def\r##1{\7f\r\ 11335,44032
+\def\i##1{\7f\i\ 11336,44067
+\def\b##1{\7f\b\ 11337,44102
+\def\cite##1{\7f\cite\ 11338,44137
+\def\key##1{\7f\key\ 11339,44178
+\def\file##1{\7f\file\ 11340,44217
+\def\var##1{\7f\var\ 11341,44258
+\def\kbd##1{\7f\kbd\ 11342,44297
+\def\indexdummyfont#1{\7f\indexdummyfont\ 11347,44453
+\def\indexdummytex{\7f\indexdummytex\ 11348,44479
+\def\indexdummydots{\7f\indexdummydots\ 11349,44503
+\def\indexnofonts{\7f\indexnofonts\ 11351,44529
+\let\w=\indexdummyfont\7fdummyfont\ 11352,44549
+\let\t=\indexdummyfont\7fdummyfont\ 11353,44572
+\let\r=\indexdummyfont\7fdummyfont\ 11354,44595
+\let\i=\indexdummyfont\7fdummyfont\ 11355,44618
+\let\b=\indexdummyfont\7fdummyfont\ 11356,44641
+\let\emph=\indexdummyfont\7fdummyfont\ 11357,44664
+\let\strong=\indexdummyfont\7fdummyfont\ 11358,44690
+\let\cite=\indexdummyfont\7f=\indexdummyfont\ 11359,44718
+\let\sc=\indexdummyfont\7fdummyfont\ 11360,44744
+\let\tclose=\indexdummyfont\7fdummyfont\ 11364,44916
+\let\code=\indexdummyfont\7fdummyfont\ 11365,44944
+\let\file=\indexdummyfont\7fdummyfont\ 11366,44970
+\let\samp=\indexdummyfont\7fdummyfont\ 11367,44996
+\let\kbd=\indexdummyfont\7fdummyfont\ 11368,45022
+\let\key=\indexdummyfont\7fdummyfont\ 11369,45047
+\let\var=\indexdummyfont\7fdummyfont\ 11370,45072
+\let\TeX=\indexdummytex\7fdummytex\ 11371,45097
+\let\dots=\indexdummydots\7fdummydots\ 11372,45121
+\let\indexbackslash=0 %overridden during \printindex.\7fbackslash=0\ 11382,45373
+\def\doind #1#2{\7f\doind\ 11384,45429
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11386,45472
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11389,45612
+{\indexnofonts\7fnofonts\ 11394,45874
+\def\dosubind #1#2#3{\7f\dosubind\ 11405,46185
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11407,46233
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11410,46337
+{\indexnofonts\7fnofonts\ 11414,46491
+\def\findex {\7f\findex\ 11443,47422
+\def\kindex {\7f\kindex\ 11444,47445
+\def\cindex {\7f\cindex\ 11445,47468
+\def\vindex {\7f\vindex\ 11446,47491
+\def\tindex {\7f\tindex\ 11447,47514
+\def\pindex {\7f\pindex\ 11448,47537
+\def\cindexsub {\7f\cindexsub\ 11450,47561
+\def\printindex{\7f\printindex\ 11462,47888
+\def\doprintindex#1{\7f\doprintindex\ 11464,47929
+ \def\indexbackslash{\7f\indexbackslash\ 11481,48414
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\7ffonts\rm\ 11482,48453
+\def\initial #1{\7f\initial\ 11517,49525
+\def\entry #1#2{\7f\entry\ 11523,49732
+ \null\nobreak\indexdotfill % Have leaders before the page number.\7fdotfill\ 11540,50379
+\def\indexdotfill{\7f\indexdotfill\ 11549,50707
+\def\primary #1{\7f\primary\ 11552,50813
+\def\secondary #1#2{\7f\secondary\ 11556,50895
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\7fdotfill\ 11559,50977
+\newbox\partialpage\7fialpage\ 11566,51150
+\def\begindoublecolumns{\7f\begindoublecolumns\ 11572,51308
+ \output={\global\setbox\partialpage=\7fialpage=\ 11573,51344
+\def\enddoublecolumns{\7f\enddoublecolumns\ 11577,51532
+\def\doublecolumnout{\7f\doublecolumnout\ 11580,51617
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11581,51686
+\def\pagesofar{\7f\pagesofar\ 11584,51864
+\def\balancecolumns{\7f\balancecolumns\ 11588,52101
+ \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\7fialpage\ 11594,52272
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11600,52533
+\newcount \appendixno \appendixno = `\@\7fno\ 11627,53438
+\def\appendixletter{\7f\appendixletter\ 11628,53479
+\def\opencontents{\7f\opencontents\ 11632,53582
+\def\thischapter{\7f\thischapter\ 11637,53763
+\def\seccheck#1{\7f\seccheck\ 11638,53801
+\def\chapternofonts{\7f\chapternofonts\ 11643,53905
+\def\result{\7f\result\ 11646,53980
+\def\equiv{\7f\equiv\ 11647,54015
+\def\expansion{\7f\expansion\ 11648,54048
+\def\print{\7f\print\ 11649,54089
+\def\TeX{\7f\TeX\ 11650,54122
+\def\dots{\7f\dots\ 11651,54151
+\def\copyright{\7f\copyright\ 11652,54182
+\def\tt{\7f\tt\ 11653,54223
+\def\bf{\7f\bf\ 11654,54250
+\def\w{\7f\w\ 11655,54278
+\def\less{\7f\less\ 11656,54303
+\def\gtr{\7f\gtr\ 11657,54334
+\def\hat{\7f\hat\ 11658,54363
+\def\char{\7f\char\ 11659,54392
+\def\tclose##1{\7f\tclose\ 11660,54423
+\def\code##1{\7f\code\ 11661,54467
+\def\samp##1{\7f\samp\ 11662,54507
+\def\r##1{\7f\r\ 11663,54547
+\def\b##1{\7f\b\ 11664,54581
+\def\key##1{\7f\key\ 11665,54615
+\def\file##1{\7f\file\ 11666,54653
+\def\kbd##1{\7f\kbd\ 11667,54693
+\def\i##1{\7f\i\ 11669,54801
+\def\cite##1{\7f\cite\ 11670,54835
+\def\var##1{\7f\var\ 11671,54875
+\def\emph##1{\7f\emph\ 11672,54913
+\def\dfn##1{\7f\dfn\ 11673,54953
+\def\thischaptername{\7f\thischaptername\ 11676,54994
+\outer\def\chapter{\7f\chapter\ 11677,55033
+\def\chapterzzz #1{\7f\chapterzzz\ 11678,55074
+{\chapternofonts%\7fnofonts%\ 11687,55470
+\global\let\section = \numberedsec\7f=\ 11692,55623
+\global\let\subsection = \numberedsubsec\7f=\ 11693,55658
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11694,55699
+\outer\def\appendix{\7f\appendix\ 11697,55750
+\def\appendixzzz #1{\7f\appendixzzz\ 11698,55793
+\global\advance \appendixno by 1 \message{\7fno\ 11700,55870
+\chapmacro {#1}{Appendix \appendixletter}\7fletter\ 11701,55939
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\7fletter:\ 11704,56032
+{\chapternofonts%\7fnofonts%\ 11705,56104
+ {#1}{Appendix \appendixletter}\7fletter\ 11707,56160
+\appendixnoderef %\7fnoderef\ 11710,56260
+\global\let\section = \appendixsec\7f=\ 11711,56279
+\global\let\subsection = \appendixsubsec\7f=\ 11712,56314
+\global\let\subsubsection = \appendixsubsubsec\7f=\ 11713,56355
+\outer\def\top{\7f\top\ 11716,56406
+\outer\def\unnumbered{\7f\unnumbered\ 11717,56446
+\def\unnumberedzzz #1{\7f\unnumberedzzz\ 11718,56493
+{\chapternofonts%\7fnofonts%\ 11722,56656
+\global\let\section = \unnumberedsec\7f=\ 11727,56806
+\global\let\subsection = \unnumberedsubsec\7f=\ 11728,56843
+\global\let\subsubsection = \unnumberedsubsubsec\7f=\ 11729,56886
+\outer\def\numberedsec{\7f\numberedsec\ 11732,56939
+\def\seczzz #1{\7f\seczzz\ 11733,56980
+{\chapternofonts%\7fnofonts%\ 11736,57136
+\outer\def\appendixsection{\7f\appendixsection\ 11745,57322
+\outer\def\appendixsec{\7f\appendixsec\ 11746,57379
+\def\appendixsectionzzz #1{\7f\appendixsectionzzz\ 11747,57432
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}\7fletter\ 11749,57544
+{\chapternofonts%\7fnofonts%\ 11750,57612
+{#1}{\appendixletter}\7fletter\ 11752,57668
+\appendixnoderef %\7fnoderef\ 11755,57768
+\outer\def\unnumberedsec{\7f\unnumberedsec\ 11759,57808
+\def\unnumberedseczzz #1{\7f\unnumberedseczzz\ 11760,57861
+{\chapternofonts%\7fnofonts%\ 11762,57956
+\outer\def\numberedsubsec{\7f\numberedsubsec\ 11770,58124
+\def\numberedsubseczzz #1{\7f\numberedsubseczzz\ 11771,58179
+{\chapternofonts%\7fnofonts%\ 11774,58358
+\outer\def\appendixsubsec{\7f\appendixsubsec\ 11783,58562
+\def\appendixsubseczzz #1{\7f\appendixsubseczzz\ 11784,58617
+\subsecheading {#1}{\appendixletter}\7fletter\ 11786,58739
+{\chapternofonts%\7fnofonts%\ 11787,58804
+{#1}{\appendixletter}\7fletter\ 11789,58863
+\appendixnoderef %\7fnoderef\ 11792,58978
+\outer\def\unnumberedsubsec{\7f\unnumberedsubsec\ 11796,59018
+\def\unnumberedsubseczzz #1{\7f\unnumberedsubseczzz\ 11797,59077
+{\chapternofonts%\7fnofonts%\ 11799,59178
+\outer\def\numberedsubsubsec{\7f\numberedsubsubsec\ 11807,59349
+\def\numberedsubsubseczzz #1{\7f\numberedsubsubseczzz\ 11808,59410
+{\chapternofonts%\7fnofonts%\ 11812,59607
+\outer\def\appendixsubsubsec{\7f\appendixsubsubsec\ 11823,59840
+\def\appendixsubsubseczzz #1{\7f\appendixsubsubseczzz\ 11824,59901
+ {\appendixletter}\7fletter\ 11827,60040
+{\chapternofonts%\7fnofonts%\ 11828,60106
+ {\appendixletter}\7fletter\ 11830,60171
+\appendixnoderef %\7fnoderef\ 11834,60305
+\outer\def\unnumberedsubsubsec{\7f\unnumberedsubsubsec\ 11838,60345
+\def\unnumberedsubsubseczzz #1{\7f\unnumberedsubsubseczzz\ 11839,60410
+{\chapternofonts%\7fnofonts%\ 11841,60517
+\def\infotop{\7f\infotop\ 11851,60846
+\def\infounnumbered{\7f\infounnumbered\ 11852,60884
+\def\infounnumberedsec{\7f\infounnumberedsec\ 11853,60929
+\def\infounnumberedsubsec{\7f\infounnumberedsubsec\ 11854,60980
+\def\infounnumberedsubsubsec{\7f\infounnumberedsubsubsec\ 11855,61037
+\def\infoappendix{\7f\infoappendix\ 11857,61101
+\def\infoappendixsec{\7f\infoappendixsec\ 11858,61142
+\def\infoappendixsubsec{\7f\infoappendixsubsec\ 11859,61189
+\def\infoappendixsubsubsec{\7f\infoappendixsubsubsec\ 11860,61242
+\def\infochapter{\7f\infochapter\ 11862,61302
+\def\infosection{\7f\infosection\ 11863,61341
+\def\infosubsection{\7f\infosubsection\ 11864,61380
+\def\infosubsubsection{\7f\infosubsubsection\ 11865,61425
+\global\let\section = \numberedsec\7f=\ 11870,61662
+\global\let\subsection = \numberedsubsec\7f=\ 11871,61697
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11872,61738
+\def\majorheading{\7f\majorheading\ 11886,62245
+\def\majorheadingzzz #1{\7f\majorheadingzzz\ 11887,62290
+\def\chapheading{\7f\chapheading\ 11893,62523
+\def\chapheadingzzz #1{\7f\chapheadingzzz\ 11894,62566
+\def\heading{\7f\heading\ 11899,62761
+\def\subheading{\7f\subheading\ 11901,62798
+\def\subsubheading{\7f\subsubheading\ 11903,62841
+\def\dobreak#1#2{\7f\dobreak\ 11910,63118
+\def\setchapterstyle #1 {\7f\setchapterstyle\ 11912,63196
+\def\chapbreak{\7f\chapbreak\ 11919,63451
+\def\chappager{\7f\chappager\ 11920,63501
+\def\chapoddpage{\7f\chapoddpage\ 11921,63539
+\def\setchapternewpage #1 {\7f\setchapternewpage\ 11923,63618
+\def\CHAPPAGoff{\7f\CHAPPAGoff\ 11925,63675
+\def\CHAPPAGon{\7f\CHAPPAGon\ 11929,63769
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11932,63860
+\def\CHAPPAGodd{\7f\CHAPPAGodd\ 11934,63902
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11937,63998
+\def\CHAPFplain{\7f\CHAPFplain\ 11941,64052
+\def\chfplain #1#2{\7f\chfplain\ 11945,64144
+\def\unnchfplain #1{\7f\unnchfplain\ 11956,64367
+\def\unnchfopen #1{\7f\unnchfopen\ 11964,64596
+\def\chfopen #1#2{\7f\chfopen\ 11970,64804
+\def\CHAPFopen{\7f\CHAPFopen\ 11975,64948
+\def\subsecheadingbreak{\7f\subsecheadingbreak\ 11982,65166
+\def\secheadingbreak{\7f\secheadingbreak\ 11985,65295
+\def\secheading #1#2#3{\7f\secheading\ 11993,65577
+\def\plainsecheading #1{\7f\plainsecheading\ 11994,65633
+\def\secheadingi #1{\7f\secheadingi\ 11995,65676
+\def\subsecheading #1#2#3#4{\7f\subsecheading\ 12006,66044
+\def\subsecheadingi #1{\7f\subsecheadingi\ 12007,66111
+\def\subsubsecfonts{\7f\subsubsecfonts\ 12014,66408
+\def\subsubsecheading #1#2#3#4#5{\7f\subsubsecheading\ 12017,66531
+\def\subsubsecheadingi #1{\7f\subsubsecheadingi\ 12018,66609
+\def\startcontents#1{\7f\startcontents\ 12032,67081
+ \unnumbchapmacro{#1}\def\thischapter{\7f\thischapter\ 12040,67354
+\outer\def\contents{\7f\contents\ 12049,67713
+\outer\def\summarycontents{\7f\summarycontents\ 12057,67857
+ \def\secentry ##1##2##3##4{\7f\secentry\ 12067,68228
+ \def\unnumbsecentry ##1##2{\7f\unnumbsecentry\ 12068,68263
+ \def\subsecentry ##1##2##3##4##5{\7f\subsecentry\ 12069,68298
+ \def\unnumbsubsecentry ##1##2{\7f\unnumbsubsecentry\ 12070,68339
+ \def\subsubsecentry ##1##2##3##4##5##6{\7f\subsubsecentry\ 12071,68377
+ \def\unnumbsubsubsecentry ##1##2{\7f\unnumbsubsubsecentry\ 12072,68424
+\def\chapentry#1#2#3{\7f\chapentry\ 12085,68858
+\def\shortchapentry#1#2#3{\7f\shortchapentry\ 12088,68975
+ {#2\labelspace #1}\7fspace\ 12091,69085
+\def\unnumbchapentry#1#2{\7f\unnumbchapentry\ 12094,69139
+\def\shortunnumberedentry#1#2{\7f\shortunnumberedentry\ 12095,69186
+\def\secentry#1#2#3#4{\7f\secentry\ 12102,69350
+\def\unnumbsecentry#1#2{\7f\unnumbsecentry\ 12103,69409
+\def\subsecentry#1#2#3#4#5{\7f\subsecentry\ 12106,69470
+\def\unnumbsubsecentry#1#2{\7f\unnumbsubsecentry\ 12107,69540
+\def\subsubsecentry#1#2#3#4#5#6{\7f\subsubsecentry\ 12110,69614
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\7fspace\ 12111,69648
+\def\unnumbsubsubsecentry#1#2{\7f\unnumbsubsubsecentry\ 12112,69699
+\def\dochapentry#1#2{\7f\dochapentry\ 12123,70073
+\def\dosecentry#1#2{\7f\dosecentry\ 12138,70678
+\def\dosubsecentry#1#2{\7f\dosubsecentry\ 12145,70856
+\def\dosubsubsecentry#1#2{\7f\dosubsubsecentry\ 12152,71041
+\def\labelspace{\7f\labelspace\ 12160,71292
+\def\dopageno#1{\7f\dopageno\ 12162,71327
+\def\doshortpageno#1{\7f\doshortpageno\ 12163,71353
+\def\chapentryfonts{\7f\chapentryfonts\ 12165,71385
+\def\secentryfonts{\7f\secentryfonts\ 12166,71420
+\def\point{\7f\point\ 12192,72379
+\def\result{\7f\result\ 12194,72400
+\def\expansion{\7f\expansion\ 12195,72473
+\def\print{\7f\print\ 12196,72544
+\def\equiv{\7f\equiv\ 12198,72611
+\def\error{\7f\error\ 12218,73384
+\def\tex{\7f\tex\ 12224,73613
+\def\@{\7f\@\ 12242,73996
+\gdef\sepspaces{\def {\ }}}\7f\\ 12265,74728
+\def\aboveenvbreak{\7f\aboveenvbreak\ 12268,74810
+\def\afterenvbreak{\7f\afterenvbreak\ 12272,74976
+\def\ctl{\7f\ctl\ 12286,75487
+\def\ctr{\7f\ctr\ 12287,75559
+\def\cbl{\7f\cbl\ 12288,75598
+\def\cbr{\7f\cbr\ 12289,75638
+\def\carttop{\7f\carttop\ 12290,75677
+\def\cartbot{\7f\cartbot\ 12293,75785
+\long\def\cartouche{\7f\cartouche\ 12299,75925
+\def\Ecartouche{\7f\Ecartouche\ 12326,76713
+\def\lisp{\7f\lisp\ 12338,76848
+\def\Elisp{\7f\Elisp\ 12348,77195
+\def\next##1{\7f\next\ 12360,77521
+\def\Eexample{\7f\Eexample\ 12364,77563
+\def\Esmallexample{\7f\Esmallexample\ 12367,77610
+\def\smalllispx{\7f\smalllispx\ 12373,77788
+\def\Esmalllisp{\7f\Esmalllisp\ 12383,78142
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\7ffonts\ 12396,78498
+\def\next##1{\7f\next\ 12397,78555
+\def\display{\7f\display\ 12401,78635
+\def\Edisplay{\7f\Edisplay\ 12410,78954
+\def\next##1{\7f\next\ 12422,79265
+\def\format{\7f\format\ 12426,79368
+\def\Eformat{\7f\Eformat\ 12434,79664
+\def\next##1{\7f\next\ 12437,79753
+\def\flushleft{\7f\flushleft\ 12441,79805
+\def\Eflushleft{\7f\Eflushleft\ 12451,80176
+\def\next##1{\7f\next\ 12454,80269
+\def\flushright{\7f\flushright\ 12456,80291
+\def\Eflushright{\7f\Eflushright\ 12466,80663
+\def\next##1{\7f\next\ 12470,80794
+\def\quotation{\7f\quotation\ 12474,80852
+\def\Equotation{\7f\Equotation\ 12480,81044
+\def\setdeffont #1 {\7f\setdeffont\ 12493,81442
+\newskip\defbodyindent \defbodyindent=.4in\7fbodyindent\ 12495,81488
+\newskip\defargsindent \defargsindent=50pt\7fargsindent\ 12496,81531
+\newskip\deftypemargin \deftypemargin=12pt\7ftypemargin\ 12497,81574
+\newskip\deflastargmargin \deflastargmargin=18pt\7flastargmargin\ 12498,81617
+\def\activeparens{\7f\activeparens\ 12503,81815
+\def\opnr{\7f\opnr\ 12529,83027
+\def\lbrb{\7f\lbrb\ 12530,83092
+\def\defname #1#2{\7f\defname\ 12536,83293
+\advance\dimen2 by -\defbodyindent\7fbodyindent\ 12540,83411
+\advance\dimen3 by -\defbodyindent\7fbodyindent\ 12542,83465
+\setbox0=\hbox{\hskip \deflastargmargin{\7flastargmargin\ 12544,83519
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\7fargsindent\ 12546,83661
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %\7fargsindent\ 12547,83736
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\7ftypemargin\ 12554,84105
+\advance\leftskip by -\defbodyindent\7fbodyindent\ 12557,84239
+\exdentamount=\defbodyindent\7fbodyindent\ 12558,84276
+\def\defparsebody #1#2#3{\7f\defparsebody\ 12568,84635
+\def#1{\7f2572,84819
+\def#2{\7f2573,84855
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12575,84927
+\exdentamount=\defbodyindent\7fbodyindent\ 12576,85001
+\def\defmethparsebody #1#2#3#4 {\7f\defmethparsebody\ 12581,85105
+\def#1{\7f2585,85266
+\def#2##1 {\7f2586,85302
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12588,85385
+\exdentamount=\defbodyindent\7fbodyindent\ 12589,85459
+\def\defopparsebody #1#2#3#4#5 {\7f\defopparsebody\ 12592,85544
+\def#1{\7f2596,85705
+\def#2##1 ##2 {\7f2597,85741
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12600,85841
+\exdentamount=\defbodyindent\7fbodyindent\ 12601,85915
+\def\defvarparsebody #1#2#3{\7f\defvarparsebody\ 12608,86186
+\def#1{\7f2612,86373
+\def#2{\7f2613,86409
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12615,86468
+\exdentamount=\defbodyindent\7fbodyindent\ 12616,86542
+\def\defvrparsebody #1#2#3#4 {\7f\defvrparsebody\ 12621,86633
+\def#1{\7f2625,86792
+\def#2##1 {\7f2626,86828
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12628,86898
+\exdentamount=\defbodyindent\7fbodyindent\ 12629,86972
+\def\defopvarparsebody #1#2#3#4#5 {\7f\defopvarparsebody\ 12632,87044
+\def#1{\7f2636,87208
+\def#2##1 ##2 {\7f2637,87244
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12640,87331
+\exdentamount=\defbodyindent\7fbodyindent\ 12641,87405
+\def\defunargs #1{\7f\defunargs\ 12664,88165
+\def\deftypefunargs #1{\7f\deftypefunargs\ 12676,88547
+\def\deffn{\7f\deffn\ 12690,88929
+\def\deffnheader #1#2#3{\7f\deffnheader\ 12692,88986
+\begingroup\defname {\7fname\ 12693,89034
+\def\defun{\7f\defun\ 12699,89179
+\def\defunheader #1#2{\7f\defunheader\ 12701,89232
+\begingroup\defname {\7fname\ 12702,89307
+\defunargs {\7funargs\ 12703,89343
+\def\deftypefun{\7f\deftypefun\ 12709,89491
+\def\deftypefunheader #1#2{\7f\deftypefunheader\ 12712,89613
+\def\deftypefunheaderx #1#2 #3\relax{\7f\deftypefunheaderx\ 12714,89722
+\begingroup\defname {\7fname\ 12716,89814
+\deftypefunargs {\7ftypefunargs\ 12717,89860
+\def\deftypefn{\7f\deftypefn\ 12723,90031
+\def\deftypefnheader #1#2#3{\7f\deftypefnheader\ 12726,90180
+\def\deftypefnheaderx #1#2#3 #4\relax{\7f\deftypefnheaderx\ 12728,90316
+\begingroup\defname {\7fname\ 12730,90409
+\deftypefunargs {\7ftypefunargs\ 12731,90449
+\def\defmac{\7f\defmac\ 12737,90570
+\def\defmacheader #1#2{\7f\defmacheader\ 12739,90627
+\begingroup\defname {\7fname\ 12740,90703
+\defunargs {\7funargs\ 12741,90736
+\def\defspec{\7f\defspec\ 12747,90860
+\def\defspecheader #1#2{\7f\defspecheader\ 12749,90921
+\begingroup\defname {\7fname\ 12750,90998
+\defunargs {\7funargs\ 12751,91038
+\def\deffnx #1 {\7f\deffnx\ 12758,91233
+\def\defunx #1 {\7f\defunx\ 12759,91290
+\def\defmacx #1 {\7f\defmacx\ 12760,91347
+\def\defspecx #1 {\7f\defspecx\ 12761,91406
+\def\deftypefnx #1 {\7f\deftypefnx\ 12762,91467
+\def\deftypeunx #1 {\7f\deftypeunx\ 12763,91532
+\def\defop #1 {\7f\defop\ 12769,91678
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\7fopparsebody\Edefop\defopx\defopheader\defoptype\ 12770,91713
+\def\defopheader #1#2#3{\7f\defopheader\ 12772,91767
+\begingroup\defname {\7fname\ 12774,91856
+\defunargs {\7funargs\ 12775,91902
+\def\defmethod{\7f\defmethod\ 12780,91963
+\def\defmethodheader #1#2#3{\7f\defmethodheader\ 12782,92036
+\begingroup\defname {\7fname\ 12784,92124
+\defunargs {\7funargs\ 12785,92164
+\def\defcv #1 {\7f\defcv\ 12790,92238
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\ 12791,92273
+\def\defcvarheader #1#2#3{\7f\defcvarheader\ 12793,92332
+\begingroup\defname {\7fname\ 12795,92418
+\defvarargs {\7fvarargs\ 12796,92464
+\def\defivar{\7f\defivar\ 12801,92537
+\def\defivarheader #1#2#3{\7f\defivarheader\ 12803,92600
+\begingroup\defname {\7fname\ 12805,92686
+\defvarargs {\7fvarargs\ 12806,92737
+\def\defopx #1 {\7f\defopx\ 12812,92886
+\def\defmethodx #1 {\7f\defmethodx\ 12813,92943
+\def\defcvx #1 {\7f\defcvx\ 12814,93008
+\def\defivarx #1 {\7f\defivarx\ 12815,93065
+\def\defvarargs #1{\7f\defvarargs\ 12822,93336
+\def\defvr{\7f\defvr\ 12828,93480
+\def\defvrheader #1#2#3{\7f\defvrheader\ 12830,93535
+\begingroup\defname {\7fname\ 12831,93583
+\def\defvar{\7f\defvar\ 12835,93668
+\def\defvarheader #1#2{\7f\defvarheader\ 12837,93728
+\begingroup\defname {\7fname\ 12838,93799
+\defvarargs {\7fvarargs\ 12839,93835
+\def\defopt{\7f\defopt\ 12844,93901
+\def\defoptheader #1#2{\7f\defoptheader\ 12846,93961
+\begingroup\defname {\7fname\ 12847,94032
+\defvarargs {\7fvarargs\ 12848,94071
+\def\deftypevar{\7f\deftypevar\ 12853,94128
+\def\deftypevarheader #1#2{\7f\deftypevarheader\ 12856,94244
+\begingroup\defname {\7fname\ 12858,94327
+\def\deftypevr{\7f\deftypevr\ 12865,94501
+\def\deftypevrheader #1#2#3{\7f\deftypevrheader\ 12867,94572
+\begingroup\defname {\7fname\ 12868,94624
+\def\defvrx #1 {\7f\defvrx\ 12876,94861
+\def\defvarx #1 {\7f\defvarx\ 12877,94918
+\def\defoptx #1 {\7f\defoptx\ 12878,94977
+\def\deftypevarx #1 {\7f\deftypevarx\ 12879,95036
+\def\deftypevrx #1 {\7f\deftypevrx\ 12880,95103
+\def\deftpargs #1{\7f\deftpargs\ 12885,95252
+\def\deftp{\7f\deftp\ 12889,95332
+\def\deftpheader #1#2#3{\7f\deftpheader\ 12891,95387
+\begingroup\defname {\7fname\ 12892,95435
+\def\deftpx #1 {\7f\deftpx\ 12897,95594
+\def\setref#1{\7f\setref\ 12908,95915
+\def\unnumbsetref#1{\7f\unnumbsetref\ 12913,96029
+\def\appendixsetref#1{\7f\appendixsetref\ 12918,96136
+\def\pxref#1{\7f\pxref\ 12929,96547
+\def\xref#1{\7f\xref\ 12930,96583
+\def\ref#1{\7f\ref\ 12931,96618
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\7f\xrefX[\ 12932,96648
+\def\printedmanual{\7f\printedmanual\ 12933,96691
+\def\printednodename{\7f\printednodename\ 12934,96729
+\def\printednodename{\7f\printednodename\ 12939,96854
+section ``\printednodename'' in \cite{\printedmanual}\7f\printedmanual\ 12954,97487
+\refx{\7fx\ 12957,97565
+\def\dosetq #1#2{\7f\dosetq\ 12965,97785
+\def\internalsetq #1#2{\7f\internalsetq\ 12973,98043
+\def\Ypagenumber{\7f\Ypagenumber\ 12977,98144
+\def\Ytitle{\7f\Ytitle\ 12979,98170
+\def\Ynothing{\7f\Ynothing\ 12981,98197
+\def\Ysectionnumberandtype{\7f\Ysectionnumberandtype\ 12983,98214
+\def\Yappendixletterandtype{\7f\Yappendixletterandtype\ 12992,98530
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\7fno\ 12993,98560
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\7fno.\the\secno\ 12994,98615
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\7fno.\the\secno.\the\subsecno\ 12996,98719
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\7fno.\the\secno.\the\subsecno.\the\subsubsecno\ 12998,98790
+ \def\linenumber{\7f\linenumber\ 13009,99129
+\def\refx#1#2{\7f\refx\ 13015,99313
+\def\xrdef #1#2{\7f\xrdef\ 13037,99939
+\def\readauxfile{\7f\readauxfile\ 13040,100024
+\def\supereject{\7f\supereject\ 13110,101805
+\footstrut\parindent=\defaultparindent\hang\textindent{\7faultparindent\hang\textindent\ 13131,102490
+\def\openindices{\7f\openindices\ 13139,102676
+\newdimen\defaultparindent \defaultparindent = 15pt\7faultparindent\ 13151,102901
+\parindent = \defaultparindent\7faultparindent\ 13152,102953
+\def\smallbook{\7f\smallbook\ 13175,103677
+\global\def\Esmallexample{\7f\Esmallexample\ 13192,104104
+\def\afourpaper{\7f\afourpaper\ 13196,104195
+\def\finalout{\7f\finalout\ 13224,105003
+\def\normaldoublequote{\7f\normaldoublequote\ 13235,105264
+\def\normaltilde{\7f\normaltilde\ 13236,105290
+\def\normalcaret{\7f\normalcaret\ 13237,105310
+\def\normalunderscore{\7f\normalunderscore\ 13238,105330
+\def\normalverticalbar{\7f\normalverticalbar\ 13239,105355
+\def\normalless{\7f\normalless\ 13240,105381
+\def\normalgreater{\7f\normalgreater\ 13241,105400
+\def\normalplus{\7f\normalplus\ 13242,105422
+\def\ifusingtt#1#2{\7f\ifusingtt\ 13253,105914
+\def\activedoublequote{\7f\activedoublequote\ 13261,106242
+\def~{\7f~\ 13264,106328
+\def^{\7f^\ 13267,106389
+\def_{\7f_\ 13270,106428
+\def\_{\7f\_\ 13272,106502
+\def\lvvmode{\7f\lvvmode\ 13279,106839
+\def|{\7f|\ 13282,106889
+\def<{\7f<\ 13285,106952
+\def>{\7f>\ 13288,107009
+\def+{\7f+\ 13290,107047
+\def\turnoffactive{\7f\turnoffactive\ 13296,107208
+\global\def={\7f=\ 13307,107494
+\def\normalbackslash{\7f\normalbackslash\ 13321,107876
+\f
+c-src/c.c,76
+T f(\7f1,0
+}T i;\7f2,14
+void bar(\7f5,69
+int foobar(\7f6,94
+interface_locate(\7f9,131
+\f
+c.c,1836
+void (*fa)\7ffa\ 1131,
+void \7f132,
+my_printf \7f135,
+void fatala \7f138,
+void fatalb \7f139,
+max \7f141,
+struct bar \7f143,
+__attribute__ ((always_inline)) max \7f147,
+extern int old_var \7f149,
+struct foo\7f150,
+char stack[\7fstack\ 1155,
+struct S \7f156,
+} wait_status_ptr_t \7f161,
+Some_Class A \7f162,
+typedef T1 T3 \7f163,
+T3 z \7f164,
+typedef int more_aligned_int \7f165,
+struct S __attribute__ ((vector_size (16))) foo;\7f166,
+int foo \7f167,
+char *__attribute__((aligned(8))) *f;\7ff\ 1168,
+int i \7f169,
+extern void foobar \7f170,
+typedef struct cacheLRUEntry_s\7f172,
+__attribute__ ((packed)) cacheLRUEntry_t;\7f177,
+struct foo \7f178,
+ f1 \7f183,
+void f2 \7f184,
+__attribute__((noreturn)) void d0 \7f185,
+ __attribute__((format(printf, 1, 2))) d1 \7f186,
+ d2 \7f187,
+int x \7f188,
+struct foo \7f189,
+short array[\7farray\ 1190,
+int f\7f193,
+DEAFUN \7f196,
+XDEFUN \7f203,
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,\7fx-get-selection-internal\ 1206,
+ Fx_get_selection_internal,\7fx-get-selection-internal\ 1212,
+ Fy_get_selection_internal,\7fy-get-selection-internal\ 1216,
+defun_func1(\7f218,
+DEFUN_func2(\7f220,
+typedef int bool;\7f222,
+bool funcboo \7f223,
+struct my_struct \7f226,
+typedef struct my_struct my_typedef;\7f228,
+int bla \7f229,
+a(\7f234,
+int func1\7f237,
+static struct cca_control init_control \7f239,
+static tpcmd rbtp \7f240,
+static byte ring1 \7f241,
+static byte ring2 \7f242,
+request request \7f243,
+int func2 \7f246,
+ aaa;\7f249,
+ bbb;\7f251,
+struct sss1 \7f252,
+struct sss2\7f253,
+ struct ss3\7f255,
+struct a b;\7f259,
+struct aa *b;\7fb\ 1260,
+ **b;\7fb\ 1262,
+caccacacca \7f263,
+a \7f267,
+ typedef struct aa \7f269,
+ typedef struct aa {} aaa;\7f269,
+static void inita \7f271,
+node *lasta \7flasta\ 1272,
+b \7f273,
+ typedef int bb;\7f275,
+static void initb \7f277,
+node *lastb \7flastb\ 1278,
+typedef enum { REG_ENOSYS \7f279,
+typedef enum { REG_ENOSYS = -1, aa \7f279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;\7f279,
+\f
+c-src/a/b/b.c,18
+#define this \7f1,0
+\f
+../c/c.web,20
+#define questo \7f34,
+\f
+y-src/parse.y,1061
+#define obstack_chunk_alloc \7f46,1116
+#define obstack_chunk_free \7f47,1154
+int yylex \7f57,1322
+void yyerror \7f59,1352
+void yyerror \7f61,1381
+VOIDSTAR parse_hash;\7f63,1405
+extern VOIDSTAR hash_find(\7f64,1426
+unsigned char fnin[\7ffnin\ 167,1524
+#define YYSTYPE \7f71,1622
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,1653
+YYSTYPE parse_return;\7f73,1683
+YYSTYPE make_list \7f75,1721
+YYSTYPE make_list \7f77,1765
+char *instr;\7finstr\ 180,1795
+int parse_error \7f81,1808
+extern struct obstack tmp_mem;\7f82,1829
+line:\7fline\ 186,1867
+exp:\7fexp\ 194,1980
+exp_list:\7fexp_list\ 1262,5647
+range_exp:\7frange_exp\ 1268,5745
+range_exp_list:\7frange_exp_list\ 1272,5775
+cell:\7fcell\ 1278,5893
+yyerror FUN1(\7f285,5940
+make_list FUN2(\7f292,6020
+#define ERROR \7f303,6220
+extern struct node *yylval;\7fyylval\ 1305,6238
+unsigned char parse_cell_or_range \7f308,6283
+unsigned char parse_cell_or_range \7f310,6347
+yylex FUN0(\7f314,6397
+parse_cell_or_range FUN2(\7f586,11763
+#define CK_ABS_R(\7f670,13205
+#define CK_REL_R(\7f674,13284
+#define CK_ABS_C(\7f679,13413
+#define CK_REL_C(\7f683,13492
+#define MAYBEREL(\7f688,13621
+str_to_col FUN1(\7f846,16822
+\f
+y-src/parse.c,520
+#define YYBISON \7f4,64
+# define NE \7f6,114
+# define LE \7f7,130
+# define GE \7f8,146
+# define NEG \7f9,162
+# define L_CELL \7f10,179
+# define L_RANGE \7f11,199
+# define L_VAR \7f12,220
+# define L_CONST \7f13,239
+# define L_FN0 \7f14,260
+# define L_FN1 \7f15,279
+# define L_FN2 \7f16,298
+# define L_FN3 \7f17,317
+# define L_FN4 \7f18,336
+# define L_FNN \7f19,355
+# define L_FN1R \7f20,374
+# define L_FN2R \7f21,394
+# define L_FN3R \7f22,414
+# define L_FN4R \7f23,434
+# define L_FNNR \7f24,454
+# define L_LE \7f25,474
+# define L_NE \7f26,492
+# define L_GE \7f27,510
+\f
+parse.y,1464
+#define obstack_chunk_alloc \7f46,
+#define obstack_chunk_free \7f47,
+int yylex \7f57,
+void yyerror \7f59,
+void yyerror \7f61,
+VOIDSTAR parse_hash;\7f63,
+extern VOIDSTAR hash_find(\7f64,
+unsigned char fnin[\7ffnin\ 167,
+#define YYSTYPE \7f71,
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,
+YYSTYPE parse_return;\7f73,
+YYSTYPE make_list \7f75,
+YYSTYPE make_list \7f77,
+char *instr;\7finstr\ 180,
+int parse_error \7f81,
+extern struct obstack tmp_mem;\7f82,
+#define YYSTYPE \7f85,
+# define YYDEBUG \7f88,
+#define YYFINAL \7f93,
+#define YYFLAG \7f94,
+#define YYNTBASE \7f95,
+#define YYTRANSLATE(\7f98,
+static const char yytranslate[\7fyytranslate\ 1101,
+static const short yyprhs[\7fyyprhs\ 1134,
+static const short yyrhs[\7fyyrhs\ 1142,
+static const short yyrline[\7fyyrline\ 1171,
+static const char *const yytname[\7fyytname\ 1185,
+static const short yyr1[\7fyyr1\ 1197,
+static const short yyr2[\7fyyr2\ 1207,
+static const short yydefact[\7fyydefact\ 1219,
+static const short yydefgoto[\7fyydefgoto\ 1237,
+static const short yypact[\7fyypact\ 1242,
+static const short yypgoto[\7fyypgoto\ 1260,
+#define YYLAST \7f266,
+static const short yytable[\7fyytable\ 1269,
+static const short yycheck[\7fyycheck\ 1330,
+yyerror FUN1(\7f285,
+make_list FUN2(\7f292,
+#define ERROR \7f303,
+extern struct node *yylval;\7fyylval\ 1305,
+unsigned char parse_cell_or_range \7f308,
+unsigned char parse_cell_or_range \7f310,
+yylex FUN0(\7f314,
+parse_cell_or_range FUN2(\7f586,
+#define CK_ABS_R(\7f670,
+#define CK_REL_R(\7f674,
+#define CK_ABS_C(\7f679,
+#define CK_REL_C(\7f683,
+#define MAYBEREL(\7f688,
+str_to_col FUN1(\7f846,
+\f
+/usr/share/bison/bison.simple,2180
+# define YYSTD(\7f40,
+# define YYSTD(\7f42,
+# define YYSTACK_ALLOC \7f50,
+# define YYSIZE_T \7f51,
+# define YYSTACK_ALLOC \7f55,
+# define YYSIZE_T \7f56,
+# define YYSTACK_ALLOC \7f59,
+# define YYSTACK_FREE(\7f67,
+# define YYSIZE_T \7f71,
+# define YYSIZE_T \7f75,
+# define YYSTACK_ALLOC \7f78,
+# define YYSTACK_FREE \7f79,
+union yyalloc\7f83,
+# define YYSTACK_GAP_MAX \7f93,
+# define YYSTACK_BYTES(\7f98,
+# define YYSTACK_BYTES(\7f102,
+# define YYSTACK_RELOCATE(\7f112,
+# define YYSIZE_T \7f128,
+# define YYSIZE_T \7f131,
+# define YYSIZE_T \7f136,
+# define YYSIZE_T \7f140,
+# define YYSIZE_T \7f145,
+#define yyerrok \7f148,
+#define yyclearin \7f149,
+#define YYEMPTY \7f150,
+#define YYEOF \7f151,
+#define YYACCEPT \7f152,
+#define YYABORT \7f153,
+#define YYERROR \7f154,
+#define YYFAIL \7f158,
+#define YYRECOVERING(\7f159,
+#define YYBACKUP(\7f160,
+#define YYTERROR \7f177,
+#define YYERRCODE \7f178,
+# define YYLLOC_DEFAULT(\7f189,
+# define YYLEX \7f200,
+# define YYLEX \7f202,
+# define YYLEX \7f206,
+# define YYLEX \7f208,
+# define YYLEX \7f212,
+# define YYFPRINTF \7f225,
+# define YYDPRINTF(\7f228,
+int yydebug;\7f237,
+# define YYDPRINTF(\7f239,
+# define YYINITDEPTH \7f244,
+# undef YYMAXDEPTH\7f255,
+# define YYMAXDEPTH \7f259,
+# define yymemcpy \7f264,
+yymemcpy \7f271,
+# define yystrlen \7f293,
+yystrlen \7f298,
+# define yystpcpy \7f316,
+yystpcpy \7f322,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+int yyparse \7f365,
+int yyparse \7f367,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ YYDPRINTF \7f917,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyerror \7f946,
+ yyresult \7f947,
+\f
+y-src/atest.y,9
+exp \7f2,3
+\f
+y-src/cccp.c,303
+#define YYBISON \7f4,63
+# define INT \7f6,113
+# define CHAR \7f7,130
+# define NAME \7f8,148
+# define ERROR \7f9,166
+# define OR \7f10,185
+# define AND \7f11,201
+# define EQUAL \7f12,218
+# define NOTEQUAL \7f13,237
+# define LEQ \7f14,259
+# define GEQ \7f15,276
+# define LSH \7f16,293
+# define RSH \7f17,310
+# define UNARY \7f18,327
+\f
+cccp.y,2005
+typedef unsigned char U_CHAR;\7f38,
+struct arglist \7f41,
+#define NULL \7f51,
+#define GENERIC_PTR \7f56,
+#define GENERIC_PTR \7f58,
+#define NULL_PTR \7f63,
+int yylex \7f66,
+void yyerror \7f67,
+int expression_value;\7f68,
+static jmp_buf parse_return_error;\7f70,
+static int keyword_parsing \7f73,
+extern unsigned char is_idstart[\7fis_idstart\ 176,
+extern unsigned char is_idstart[], is_idchar[\7fis_idchar\ 176,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[\7fis_hor_space\ 176,
+extern char *xmalloc \7fxmalloc\ 178,
+extern int pedantic;\7f81,
+extern int traditional;\7f84,
+#define CHAR_TYPE_SIZE \7f87,
+#define INT_TYPE_SIZE \7f91,
+#define LONG_TYPE_SIZE \7f95,
+#define WCHAR_TYPE_SIZE \7f99,
+#define possible_sum_sign(\7f104,
+static void integer_overflow \7f106,
+static long left_shift \7f107,
+static long right_shift \7f108,
+ struct constant \7f113,
+ struct name \7f114,
+} yystype;\7f118,
+# define YYSTYPE \7f119,
+# define YYDEBUG \7f122,
+#define YYFINAL \7f127,
+#define YYFLAG \7f128,
+#define YYNTBASE \7f129,
+#define YYTRANSLATE(\7f132,
+static const char yytranslate[\7fyytranslate\ 1135,
+static const short yyprhs[\7fyyprhs\ 1167,
+static const short yyrhs[\7fyyrhs\ 1174,
+static const short yyrline[\7fyyrline\ 1195,
+static const char *const yytname[\7fyytname\ 1208,
+static const short yyr1[\7fyyr1\ 1219,
+static const short yyr2[\7fyyr2\ 1228,
+static const short yydefact[\7fyydefact\ 1239,
+static const short yydefgoto[\7fyydefgoto\ 1251,
+static const short yypact[\7fyypact\ 1256,
+static const short yypgoto[\7fyypgoto\ 1268,
+#define YYLAST \7f274,
+static const short yytable[\7fyytable\ 1277,
+static const short yycheck[\7fyycheck\ 1301,
+static char *lexptr;\7flexptr\ 1332,
+parse_number \7f341,
+struct token \7f437,
+static struct token tokentab2[\7ftokentab2\ 1442,
+yylex \7f459,
+parse_escape \7f740,
+yyerror \7f836,
+integer_overflow \7f844,
+left_shift \7f851,
+right_shift \7f873,
+parse_c_expression \7f893,
+extern int yydebug;\7f919,
+main \7f923,
+unsigned char is_idchar[\7fis_idchar\ 1948,
+unsigned char is_idstart[\7fis_idstart\ 1950,
+char is_hor_space[\7fis_hor_space\ 1953,
+initialize_random_junk \7f958,
+error \7f988,
+warning \7f993,
+lookup \7f999,
+\f
+/usr/share/bison/bison.simple,2180
+# define YYSTD(\7f41,
+# define YYSTD(\7f43,
+# define YYSTACK_ALLOC \7f51,
+# define YYSIZE_T \7f52,
+# define YYSTACK_ALLOC \7f56,
+# define YYSIZE_T \7f57,
+# define YYSTACK_ALLOC \7f60,
+# define YYSTACK_FREE(\7f68,
+# define YYSIZE_T \7f72,
+# define YYSIZE_T \7f76,
+# define YYSTACK_ALLOC \7f79,
+# define YYSTACK_FREE \7f80,
+union yyalloc\7f84,
+# define YYSTACK_GAP_MAX \7f94,
+# define YYSTACK_BYTES(\7f99,
+# define YYSTACK_BYTES(\7f103,
+# define YYSTACK_RELOCATE(\7f113,
+# define YYSIZE_T \7f129,
+# define YYSIZE_T \7f132,
+# define YYSIZE_T \7f137,
+# define YYSIZE_T \7f141,
+# define YYSIZE_T \7f146,
+#define yyerrok \7f149,
+#define yyclearin \7f150,
+#define YYEMPTY \7f151,
+#define YYEOF \7f152,
+#define YYACCEPT \7f153,
+#define YYABORT \7f154,
+#define YYERROR \7f155,
+#define YYFAIL \7f159,
+#define YYRECOVERING(\7f160,
+#define YYBACKUP(\7f161,
+#define YYTERROR \7f178,
+#define YYERRCODE \7f179,
+# define YYLLOC_DEFAULT(\7f190,
+# define YYLEX \7f201,
+# define YYLEX \7f203,
+# define YYLEX \7f207,
+# define YYLEX \7f209,
+# define YYLEX \7f213,
+# define YYFPRINTF \7f226,
+# define YYDPRINTF(\7f229,
+int yydebug;\7f238,
+# define YYDPRINTF(\7f240,
+# define YYINITDEPTH \7f245,
+# undef YYMAXDEPTH\7f256,
+# define YYMAXDEPTH \7f260,
+# define yymemcpy \7f265,
+yymemcpy \7f272,
+# define yystrlen \7f294,
+yystrlen \7f299,
+# define yystpcpy \7f317,
+yystpcpy \7f323,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+int yyparse \7f365,
+int yyparse \7f367,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ YYDPRINTF \7f917,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyerror \7f946,
+ yyresult \7f947,
+\f
+y-src/cccp.y,1582
+typedef unsigned char U_CHAR;\7f38,1201
+struct arglist \7f41,1301
+#define NULL \7f51,1468
+#define GENERIC_PTR \7f56,1578
+#define GENERIC_PTR \7f58,1611
+#define NULL_PTR \7f63,1670
+int yylex \7f66,1712
+void yyerror \7f67,1726
+int expression_value;\7f68,1743
+static jmp_buf parse_return_error;\7f70,1766
+static int keyword_parsing \7f73,1865
+extern unsigned char is_idstart[\7fis_idstart\ 176,1944
+extern unsigned char is_idstart[], is_idchar[\7fis_idchar\ 176,1944
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[\7fis_hor_space\ 176,1944
+extern char *xmalloc \7fxmalloc\ 178,2009
+extern int pedantic;\7f81,2062
+extern int traditional;\7f84,2114
+#define CHAR_TYPE_SIZE \7f87,2162
+#define INT_TYPE_SIZE \7f91,2229
+#define LONG_TYPE_SIZE \7f95,2296
+#define WCHAR_TYPE_SIZE \7f99,2365
+#define possible_sum_sign(\7f104,2556
+static void integer_overflow \7f106,2632
+static long left_shift \7f107,2665
+static long right_shift \7f108,2692
+ struct constant \7f112,2733
+ struct name \7f113,2789
+start \7f143,3226
+exp1 \7f148,3330
+exp \7f156,3505
+exp \7f185,4295
+keywords \7f306,7835
+static char *lexptr;\7flexptr\ 1332,8579
+parse_number \7f341,8842
+struct token \7f437,11038
+static struct token tokentab2[\7ftokentab2\ 1442,11088
+yylex \7f459,11367
+parse_escape \7f740,17718
+yyerror \7f836,19599
+integer_overflow \7f844,19690
+left_shift \7f851,19804
+right_shift \7f873,20194
+parse_c_expression \7f893,20732
+extern int yydebug;\7f919,21416
+main \7f923,21483
+unsigned char is_idchar[\7fis_idchar\ 1948,21901
+unsigned char is_idstart[\7fis_idstart\ 1950,21996
+char is_hor_space[\7fis_hor_space\ 1953,22160
+initialize_random_junk \7f958,22259
+error \7f988,22915
+warning \7f993,22963
+lookup \7f999,23033
+\f
+tex-src/nonewline.tex,0
+\f
+php-src/sendmail.php,0
+\f
+a-src/empty.zz,0
--- /dev/null
- perl-src/htlmify-cystic,1443
+\f
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 11,0
+ function Body_Required\7fBody_Required/f\ 13,78
+ type Type_Specific_Data \7fType_Specific_Data/t\ 111,280
+ function "abs"\7fabs/f\ 119,504
+ type Barrier_Function_Pointer \7fBarrier_Function_Pointer/t\ 121,577
+ function "="\7f=/f\ 127,722
+ type usfreelock_ptr \7fusfreelock_ptr/t\ 130,803
+ function p \7fp/f\ 133,891
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 137,1054
+function p \7fp/f\ 139,1094
+package Pkg1 \7fPkg1/s\ 144,1203
+ type Private_T \7fPrivate_T/t\ 146,1220
+ package Inner1 \7fInner1/s\ 148,1250
+ procedure Private_T;\7fPrivate_T/p\ 149,1270
+ package Inner2 \7fInner2/s\ 152,1310
+ task Private_T;\7fPrivate_T/k\ 153,1330
+ type Public_T \7fPublic_T/t\ 156,1365
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 162,1450
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 164,1475
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 166,1514
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 168,1553
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 171,1622
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 172,1645
+ task type Task_Type \7fTask_Type/k\ 175,1694
+ type Private_T \7fPrivate_T/t\ 182,1786
+package body Pkg1 \7fPkg1/b\ 189,1882
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 191,1904
+ package body Inner1 \7fInner1/b\ 196,1956
+ procedure Private_T \7fPrivate_T/p\ 197,1981
+ package body Inner2 \7fInner2/b\ 1103,2054
+ task body Private_T \7fPrivate_T/b\ 1104,2079
+ task body Task_Type \7fTask_Type/b\ 1112,2181
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 1126,2367
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 1132,2445
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 1134,2496
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1140,2596
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1146,2663
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1147,2689
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1155,2778
+package Truc \7fTruc/s\ 1162,2887
+package Truc.Bidule \7fTruc.Bidule/s\ 1166,2929
+ protected Bidule \7fBidule/t\ 1168,2953
+ protected type Machin_T \7fMachin_T/t\ 1172,3007
+package body Truc.Bidule \7fTruc.Bidule/b\ 1178,3087
+ protected body Bidule \7fBidule/b\ 1179,3115
+ protected Machin_T \7fMachin_T/t\ 1186,3207
+\f
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives \7fSystem.Task_Primitives/b\ 164,2603
+ package RTE \7fRTE/s\ 169,2712
+ package TSL \7fTSL/s\ 170,2759
+ function To_void_ptr \7fTo_void_ptr/f\ 186,3287
+ function To_TCB_Ptr \7fTo_TCB_Ptr/f\ 189,3366
+ function pthread_mutexattr_setprotocol\7fpthread_mutexattr_setprotocol/f\ 192,3444
+ function pthread_mutexattr_setprio_ceiling\7fpthread_mutexattr_setprio_ceiling/f\ 199,3728
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1115,4302
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1122,4526
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 1131,4830
+ function Self \7fSelf/f\ 1160,5586
+ procedure Initialize_Lock\7fInitialize_Lock/p\ 1174,5958
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1210,6927
+ procedure Write_Lock \7fWrite_Lock/p\ 1226,7338
+ procedure Read_Lock \7fRead_Lock/p\ 1239,7700
+ procedure Unlock \7fUnlock/p\ 1246,7850
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1258,8160
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1286,8979
+ procedure Cond_Wait \7fCond_Wait/p\ 1300,9303
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1312,9661
+ procedure Cond_Signal \7fCond_Signal/p\ 1343,10510
+ procedure Set_Priority\7fSet_Priority/p\ 1355,10836
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1372,11243
+ function Get_Priority \7fGet_Priority/f\ 1385,11598
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1398,12023
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1412,12438
+ function To_Start_Addr \7fTo_Start_Addr/f\ 1426,12873
+ procedure Exit_LL_Task \7fExit_LL_Task/p\ 1491,14995
+ procedure Abort_Task \7fAbort_Task/p\ 1500,15158
+ procedure Test_Abort \7fTest_Abort/p\ 1518,15716
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1527,15878
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1557,16939
+ function Address_To_Call_State \7fAddress_To_Call_State/f\ 1562,17062
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1573,17351
+ procedure LL_Assert \7fLL_Assert/p\ 1599,18146
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1608,18299
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1630,19010
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1635,19129
+ procedure Clear \7fClear/p\ 1640,19236
+ procedure Test_And_Set \7fTest_And_Set/p\ 1645,19330
+ function Is_Set \7fIs_Set/f\ 1659,19676
+\f
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives \7fSystem.Task_Primitives/s\ 158,3169
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 162,3253
+ type Pre_Call_State \7fPre_Call_State/t\ 164,3331
+ type Task_Storage_Size \7fTask_Storage_Size/t\ 166,3378
+ type Machine_Exceptions \7fMachine_Exceptions/t\ 168,3433
+ type Error_Information \7fError_Information/t\ 170,3499
+ type Lock \7fLock/t\ 172,3569
+ type Condition_Variable \7fCondition_Variable/t\ 173,3594
+ type Task_Control_Block \7fTask_Control_Block/t\ 181,3955
+ type TCB_Ptr \7fTCB_Ptr/t\ 189,4241
+ function Address_To_TCB_Ptr \7fAddress_To_TCB_Ptr/f\ 193,4333
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 196,4425
+ function Self \7fSelf/f\ 1100,4602
+ procedure Initialize_Lock \7fInitialize_Lock/p\ 1103,4707
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1107,4879
+ procedure Write_Lock \7fWrite_Lock/p\ 1111,5034
+ procedure Read_Lock \7fRead_Lock/p\ 1118,5428
+ procedure Unlock \7fUnlock/p\ 1128,5995
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1135,6300
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1138,6413
+ procedure Cond_Wait \7fCond_Wait/p\ 1142,6591
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1155,7396
+ procedure Cond_Signal \7fCond_Signal/p\ 1164,7812
+ procedure Set_Priority \7fSet_Priority/p\ 1169,8040
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1173,8200
+ function Get_Priority \7fGet_Priority/f\ 1177,8348
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1181,8504
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1185,8647
+ procedure Exit_LL_Task;\7fExit_LL_Task/p\ 1198,9282
+ procedure Abort_Task \7fAbort_Task/p\ 1203,9516
+ procedure Test_Abort;\7fTest_Abort/p\ 1210,9878
+ type Abort_Handler_Pointer \7fAbort_Handler_Pointer/t\ 1217,10233
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1219,10312
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1226,10741
+ procedure LL_Assert \7fLL_Assert/p\ 1231,10983
+ type Proc \7fProc/t\ 1238,11240
+ type TAS_Cell \7fTAS_Cell/t\ 1242,11328
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1249,11670
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1255,11941
+ procedure Clear \7fClear/p\ 1260,12157
+ procedure Test_And_Set \7fTest_And_Set/p\ 1267,12462
+ function Is_Set \7fIs_Set/f\ 1275,12877
+ type Lock \7fLock/t\ 1283,13155
+ type Condition_Variable \7fCondition_Variable/t\ 1288,13267
+ type TAS_Cell \7fTAS_Cell/t\ 1293,13389
+\f
+ada-src/waroquiers.ada,1503
+package Pkg1 \7fPkg1/s\ 13,89
+ type Private_T \7fPrivate_T/t\ 15,106
+ package Inner1 \7fInner1/s\ 17,136
+ procedure Private_T;\7fPrivate_T/p\ 18,156
+ package Inner2 \7fInner2/s\ 111,196
+ task Private_T;\7fPrivate_T/k\ 112,216
+ type Public_T \7fPublic_T/t\ 115,251
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 121,336
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 123,361
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 125,400
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 127,439
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 130,508
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 131,531
+ task type Task_Type \7fTask_Type/k\ 134,580
+ type Private_T \7fPrivate_T/t\ 140,671
+package body Pkg1 \7fPkg1/b\ 146,766
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 148,788
+ package body Inner1 \7fInner1/b\ 153,840
+ procedure Private_T \7fPrivate_T/p\ 154,865
+ package body Inner2 \7fInner2/b\ 160,938
+ task body Private_T \7fPrivate_T/b\ 161,963
+ task body Task_Type \7fTask_Type/b\ 168,1064
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 182,1250
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 188,1328
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 190,1379
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 196,1479
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1100,1544
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1101,1570
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1107,1657
+package Truc \7fTruc/s\ 1112,1764
+package Truc.Bidule \7fTruc.Bidule/s\ 1116,1816
+ protected Bidule \7fBidule/t\ 1125,1964
+ protected type Machin_T \7fMachin_T/t\ 1131,2046
+package body Truc.Bidule \7fTruc.Bidule/b\ 1138,2153
+ protected body Bidule \7fBidule/b\ 1139,2181
+ protected body Machin_T \7fMachin_T/b\ 1146,2281
+\f
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;\7f43,1424
+Lisp_Object Vglobal_abbrev_table;\7f48,1569
+Lisp_Object Vfundamental_mode_abbrev_table;\7f52,1680
+int abbrevs_changed;\7f56,1781
+int abbrev_all_caps;\7f58,1803
+Lisp_Object Vabbrev_start_location;\7f63,1952
+Lisp_Object Vabbrev_start_location_buffer;\7f66,2041
+Lisp_Object Vlast_abbrev;\7f70,2150
+Lisp_Object Vlast_abbrev_text;\7f75,2319
+int last_abbrev_point;\7f79,2409
+Lisp_Object Vpre_abbrev_expand_hook,\7f83,2482
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;\7f83,2482
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,\7fmake-abbrev-table\ 185,2546
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,\7fclear-abbrev-table\ 192,2738
+DEFUN ("define-abbrev", Fdefine_abbrev,\7fdefine-abbrev\ 1107,3119
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,\7fdefine-global-abbrev\ 1149,4438
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,\7fdefine-mode-abbrev\ 1160,4809
+DEFUN ("abbrev-symbol", Fabbrev_symbol,\7fabbrev-symbol\ 1174,5277
+DEFUN ("abbrev-expansion", Fabbrev_expansion,\7fabbrev-expansion\ 1202,6241
+DEFUN ("expand-abbrev", Fexpand_abbrev,\7fexpand-abbrev\ 1218,6756
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,\7funexpand-abbrev\ 1389,11677
+write_abbrev \7f426,12884
+describe_abbrev \7f445,13319
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,\7finsert-abbrev-table-description\ 1466,13834
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,\7fdefine-abbrev-table\ 1506,14990
+syms_of_abbrev \7f540,16067
+\f
+c-src/torture.c,197
+(*tag1 \7ftag1\ 118,452
+#define notag2 \7f26,553
+(*tag2 \7ftag2\ 129,630
+(*tag3 \7ftag3\ 139,772
+#define notag4 \7f45,861
+(*tag4 \7ftag4\ 148,955
+tag5 \7f57,1081
+tag6 \7f66,1208
+int pp1(\7f74,1317
+pp2\7f87,1419
+pp3(\7f100,1518
+\f
+c-src/getopt.h,275
+#define _GETOPT_H \7f19,794
+struct option\7f73,2790
+ const char *name;\7fname\ 176,2819
+ char *name;\7fname\ 178,2845
+ int has_arg;\7f82,3002
+ int *flag;\7fflag\ 183,3017
+ int val;\7f84,3030
+#define no_argument \7f89,3117
+#define required_argument \7f90,3140
+#define optional_argument \7f91,3168
+\f
+c-src/etags.c,12045
+char pot_etags_version[\7fpot_etags_version\ 181,3470
+# undef DEBUG\7f84,3552
+# define DEBUG \7f85,3567
+# define DEBUG \7f87,3594
+# define NDEBUG \7f88,3617
+# define _GNU_SOURCE \7f94,3705
+# undef MSDOS\7f100,3876
+# undef WINDOWSNT\7f101,3890
+# define WINDOWSNT\7f102,3909
+# undef MSDOS\7f106,3968
+# define MSDOS \7f107,3982
+# define MSDOS \7f110,4032
+# define MAXPATHLEN \7f115,4111
+# undef HAVE_NTGUI\7f116,4141
+# undef DOS_NT\7f117,4160
+# define DOS_NT\7f118,4176
+# undef assert \7f135,4482
+# define assert(\7f136,4541
+# undef CTAGS\7f146,4857
+# define CTAGS \7f147,4872
+# define CTAGS \7f149,4898
+#define streq(\7f152,4927
+#define strcaseeq(\7f153,4996
+#define strneq(\7f154,5075
+#define strncaseeq(\7f155,5151
+#define CHARS \7f157,5238
+#define CHAR(\7f158,5278
+#define iswhite(\7f159,5329
+#define notinname(\7f160,5394
+#define begtoken(\7f161,5469
+#define intoken(\7f162,5542
+#define endtoken(\7f163,5614
+#define ISALNUM(\7f165,5684
+#define ISALPHA(\7f166,5722
+#define ISDIGIT(\7f167,5760
+#define ISLOWER(\7f168,5798
+#define lowcase(\7f170,5837
+#define xnew(\7f179,6015
+#define xrnew(\7f180,6083
+typedef void Lang_function \7f182,6164
+ const char *suffix;\7fsuffix\ 1186,6219
+ const char *command;\7fcommand\ 1187,6294
+} compressor;\7f188,6365
+ const char *name;\7fname\ 1192,6397
+ const char *help;\7fhelp\ 1193,6449
+ Lang_function *function;\7ffunction\ 1194,6508
+ const char **suffixes;\7fsuffixes\ 1195,6556
+ const char **filenames;\7ffilenames\ 1196,6633
+ const char **interpreters;\7finterpreters\ 1197,6702
+ bool metasource;\7f198,6771
+} language;\7f199,6835
+typedef struct fdesc\7f201,6848
+ struct fdesc *next;\7fnext\ 1203,6871
+ char *infname;\7finfname\ 1204,6920
+ char *infabsname;\7finfabsname\ 1205,6973
+ char *infabsdir;\7finfabsdir\ 1206,7038
+ char *taggedfname;\7ftaggedfname\ 1207,7091
+ language *lang;\7flang\ 1208,7149
+ char *prop;\7fprop\ 1209,7191
+ bool usecharno;\7f210,7249
+ bool written;\7f211,7311
+} fdesc;\7f212,7366
+typedef struct node_st\7f214,7376
+ struct node_st *left,\7fleft\ 1216,7428
+ struct node_st *left, *right;\7fright\ 1216,7428
+ fdesc *fdp;\7ffdp\ 1217,7486
+ char *name;\7fname\ 1218,7548
+ char *regex;\7fregex\ 1219,7580
+ bool valid;\7f220,7617
+ bool is_func;\7f221,7670
+ bool been_warned;\7f222,7733
+ int lno;\7f223,7801
+ long cno;\7f224,7842
+} node;\7f225,7894
+ long size;\7f236,8208
+ int len;\7f237,8221
+ char *buffer;\7fbuffer\ 1238,8232
+} linebuffer;\7f239,8248
+ at_language,\7f245,8344
+ at_regexp,\7f246,8393
+ at_filename,\7f247,8437
+ at_stdin,\7f248,8473
+ at_end \7f249,8516
+ } arg_type;\7f250,8557
+ language *lang;\7flang\ 1251,8593
+ char *what;\7fwhat\ 1252,8656
+} argument;\7f253,8698
+typedef struct regexp\7f256,8758
+ struct regexp *p_next;\7fp_next\ 1258,8782
+ language *lang;\7flang\ 1259,8837
+ char *pattern;\7fpattern\ 1260,8897
+ char *name;\7fname\ 1261,8940
+ struct re_pattern_buffer *pat;\7fpat\ 1262,8971
+ struct re_registers regs;\7f263,9031
+ bool error_signaled;\7f264,9078
+ bool force_explicit_name;\7f265,9141
+ bool ignore_case;\7f266,9206
+ bool multi_line;\7f267,9259
+} regexp;\7f268,9325
+static void error \7f311,10780
+# undef STDIN\7f408,15073
+#define STDIN \7f411,15095
+static compressor compressors[\7fcompressors\ 1457,17664
+static const char *Ada_suffixes \7fAda_suffixes\ 1473,17907
+static const char Ada_help \7f475,17977
+static const char *Asm_suffixes \7fAsm_suffixes\ 1493,18580
+static const char Asm_help \7f504,18976
+static const char *default_C_suffixes \7fdefault_C_suffixes\ 1512,19312
+static const char default_C_help \7f515,19413
+static const char default_C_help \7f523,19850
+static const char *Cplusplus_suffixes \7fCplusplus_suffixes\ 1535,20460
+static const char Cplusplus_help \7f540,20658
+static const char *Cjava_suffixes \7fCjava_suffixes\ 1549,21113
+static char Cjava_help \7f551,21172
+static const char *Cobol_suffixes \7fCobol_suffixes\ 1556,21337
+static char Cobol_help \7f558,21402
+static const char *Cstar_suffixes \7fCstar_suffixes\ 1562,21543
+static const char *Erlang_suffixes \7fErlang_suffixes\ 1565,21607
+static const char Erlang_help \7f567,21673
+const char *Forth_suffixes \7fForth_suffixes\ 1571,21799
+static const char Forth_help \7f573,21857
+static const char *Fortran_suffixes \7fFortran_suffixes\ 1577,22008
+static const char Fortran_help \7f579,22085
+static const char *HTML_suffixes \7fHTML_suffixes\ 1582,22190
+static const char HTML_help \7f584,22264
+static const char *Lisp_suffixes \7fLisp_suffixes\ 1589,22452
+static const char Lisp_help \7f591,22556
+static const char *Lua_suffixes \7fLua_suffixes\ 1598,22871
+static const char Lua_help \7f600,22934
+static const char *Makefile_filenames \7fMakefile_filenames\ 1603,23010
+static const char Makefile_help \7f605,23133
+static const char *Objc_suffixes \7fObjc_suffixes\ 1609,23277
+static const char Objc_help \7f613,23399
+static const char *Pascal_suffixes \7fPascal_suffixes\ 1619,23714
+static const char Pascal_help \7f621,23778
+static const char *Perl_suffixes \7fPerl_suffixes\ 1626,23966
+static const char *Perl_interpreters \7fPerl_interpreters\ 1628,24028
+static const char Perl_help \7f630,24100
+static const char *PHP_suffixes \7fPHP_suffixes\ 1637,24451
+static const char PHP_help \7f639,24523
+static const char *plain_C_suffixes \7fplain_C_suffixes\ 1643,24678
+static const char *PS_suffixes \7fPS_suffixes\ 1647,24762
+static const char PS_help \7f649,24848
+static const char *Prolog_suffixes \7fProlog_suffixes\ 1652,24931
+static const char Prolog_help \7f654,24993
+static const char *Python_suffixes \7fPython_suffixes\ 1658,25107
+static const char Python_help \7f660,25165
+static const char *Scheme_suffixes \7fScheme_suffixes\ 1665,25347
+static const char Scheme_help \7f667,25460
+static const char *TeX_suffixes \7fTeX_suffixes\ 1672,25683
+static const char TeX_help \7f674,25781
+static const char *Texinfo_suffixes \7fTexinfo_suffixes\ 1686,26316
+static const char Texinfo_help \7f688,26395
+static const char *Yacc_suffixes \7fYacc_suffixes\ 1691,26492
+static const char Yacc_help \7f693,26606
+static const char auto_help \7f699,26856
+static const char none_help \7f703,27020
+static const char no_lang_help \7f707,27143
+static language lang_names \7f718,27355
+print_language_names \7f753,29532
+# define EMACS_NAME \7f786,30755
+# define VERSION \7f789,30811
+print_version \7f792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP \7f804,31173
+print_help \7f808,31250
+main \7f981,37438
+get_compressor_from_suffix \7f1319,46217
+get_language_from_langname \7f1355,47158
+get_language_from_interpreter \7f1377,47545
+get_language_from_filename \7f1399,47976
+process_file_name \7f1433,48834
+process_file \7f1555,51665
+init \7f1632,54150
+find_entries \7f1656,54901
+make_tag \7f1814,59707
+pfnote \7f1856,60942
+free_tree \7f1917,62744
+free_fdesc \7f1935,63029
+add_node \7f1955,63472
+invalidate_nodes \7f2035,65537
+static int number_len \7f2068,66193
+total_size_of_entries \7f2087,66694
+put_entries \7f2107,67154
+#define C_EXT \7f2193,68995
+#define C_PLAIN \7f2194,69037
+#define C_PLPL \7f2195,69070
+#define C_STAR \7f2196,69104
+#define C_JAVA \7f2197,69137
+#define C_AUTO \7f2198,69172
+#define YACC \7f2199,69242
+enum sym_type\7f2204,69312
+ st_none,\7f2206,69328
+ st_C_objprot,\7f2207,69339
+ st_C_objprot, st_C_objimpl,\7f2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,\7f2207,69339
+ st_C_gnumacro,\7f2208,69382
+ st_C_ignore,\7f2209,69399
+ st_C_ignore, st_C_attribute,\7f2209,69399
+ st_C_javastruct,\7f2210,69430
+ st_C_operator,\7f2211,69449
+ st_C_class,\7f2212,69466
+ st_C_class, st_C_template,\7f2212,69466
+ st_C_struct,\7f2213,69495
+ st_C_struct, st_C_extern,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef\7f2213,69495
+struct C_stab_entry \7f2271,71278
+struct C_stab_entry { const char *name;\7fname\ 12271,71278
+struct C_stab_entry { const char *name; int c_ext;\7f2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type type;\7f2271,71278
+hash \7f2275,71409
+in_word_set \7f2321,72937
+ TOTAL_KEYWORDS \7f2325,73018
+ MIN_WORD_LENGTH \7f2326,73045
+ MAX_WORD_LENGTH \7f2327,73072
+ MIN_HASH_VALUE \7f2328,73100
+ MAX_HASH_VALUE \7f2329,73126
+C_symtype \7f2387,74985
+static bool inattribute;\7f2400,75234
+ fvnone,\7f2408,75435
+ fdefunkey,\7f2409,75466
+ fdefunname,\7f2410,75512
+ foperator,\7f2411,75556
+ fvnameseen,\7f2412,75613
+ fstartlist,\7f2413,75666
+ finlist,\7f2414,75722
+ flistseen,\7f2415,75765
+ fignore,\7f2416,75813
+ vignore \7f2417,75856
+} fvdef;\7f2418,75901
+static bool fvextern;\7f2420,75911
+ tnone,\7f2428,76089
+ tkeyseen,\7f2429,76119
+ ttypeseen,\7f2430,76160
+ tinbody,\7f2431,76199
+ tend,\7f2432,76238
+ tignore \7f2433,76279
+} typdef;\7f2434,76320
+ snone,\7f2443,76499
+ skeyseen,\7f2445,76575
+ stagseen,\7f2446,76620
+ scolonseen \7f2447,76661
+} structdef;\7f2448,76715
+static const char *objtag \7fobjtag\ 12453,76809
+ dnone,\7f2460,76942
+ dsharpseen,\7f2461,76972
+ ddefineseen,\7f2462,77025
+ dignorerest \7f2463,77070
+} definedef;\7f2464,77112
+ onone,\7f2472,77267
+ oprotocol,\7f2473,77297
+ oimplementation,\7f2474,77347
+ otagseen,\7f2475,77395
+ oparenseen,\7f2476,77431
+ ocatseen,\7f2477,77486
+ oinbody,\7f2478,77525
+ omethodsign,\7f2479,77568
+ omethodtag,\7f2480,77626
+ omethodcolon,\7f2481,77666
+ omethodparm,\7f2482,77709
+ oignore \7f2483,77755
+} objdef;\7f2484,77787
+static struct tok\7f2491,77944
+ char *line;\7fline\ 12493,77964
+ int offset;\7f2494,78014
+ int length;\7f2495,78067
+ bool valid;\7f2502,78352
+ bool named;\7f2505,78487
+ int lineno;\7f2506,78528
+ long linepos;\7f2507,78576
+} token;\7f2508,78626
+ char **cname;\7fcname\ 12519,78950
+ int *bracelev;\7fbracelev\ 12520,78993
+ int nl;\7f2521,79042
+ int size;\7f2522,79096
+} cstack;\7f2523,79136
+#define nestlev \7f2525,79264
+#define instruct \7f2527,79369
+pushclass_above \7f2531,79489
+popclass_above \7f2550,79948
+write_classname \7f2564,80162
+consider_token \7f2613,81341
+ long linepos;\7f2922,88499
+ linebuffer lb;\7f2923,88515
+} lbs[\7flbs\ 12924,88532
+#define current_lb_is_new \7f2926,88543
+#define switch_line_buffers(\7f2927,88588
+#define curlb \7f2929,88641
+#define newlb \7f2930,88672
+#define curlinepos \7f2931,88703
+#define newlinepos \7f2932,88744
+#define plainc \7f2934,88786
+#define cplpl \7f2935,88830
+#define cjava \7f2936,88861
+#define CNL_SAVE_DEFINEDEF(\7f2938,88905
+#define CNL(\7f2947,89117
+make_C_tag \7f2960,89375
+C_entries \7f2986,90194
+default_C_entries \7f3833,110156
+plain_C_entries \7f3840,110276
+Cplusplus_entries \7f3847,110364
+Cjava_entries \7f3854,110460
+Cstar_entries \7f3861,110550
+Yacc_entries \7f3868,110642
+#define LOOP_ON_INPUT_LINES(\7f3875,110720
+#define LOOKING_AT(\7f3884,111056
+#define LOOKING_AT_NOCASE(\7f3891,111461
+just_read_file \7f3901,111861
+F_takeprec \7f3914,112039
+F_getit \7f3937,112366
+Fortran_functions \7f3961,112840
+Ada_getit \7f4052,114669
+Ada_funcs \7f4115,116044
+Asm_labels \7f4228,118582
+Perl_functions \7f4261,119549
+Python_functions \7f4357,122057
+PHP_functions \7f4387,122684
+Cobol_paragraphs \7f4466,124471
+Makefile_targets \7f4494,125029
+Pascal_functions \7f4529,125950
+L_getit \7f4709,130318
+Lisp_functions \7f4725,130664
+Lua_functions \7f4785,131850
+PS_functions \7f4811,132385
+Forth_words \7f4841,133053
+Scheme_functions \7f4877,134092
+static linebuffer *TEX_toktab \7fTEX_toktab\ 14908,134781
+static const char *TEX_defenv \7fTEX_defenv\ 14912,134974
+static char TEX_esc \7f4920,135261
+static char TEX_opgrp \7f4921,135289
+static char TEX_clgrp \7f4922,135318
+TeX_commands \7f4928,135395
+#define TEX_LESC \7f4986,136652
+#define TEX_SESC \7f4987,136674
+TEX_mode \7f4992,136804
+TEX_decode_env \7f5026,137509
+Texinfo_nodes \7f5071,138554
+HTML_labels \7f5094,139013
+Prolog_functions \7f5219,142347
+prolog_skip_comment \7f5255,143128
+prolog_pr \7f5281,143736
+prolog_atom \7f5319,144628
+Erlang_functions \7f5379,145666
+erlang_func \7f5438,146965
+erlang_attribute \7f5476,147642
+erlang_atom \7f5496,148061
+scan_separators \7f5534,149080
+analyze_regex \7f5586,150460
+add_regex \7f5654,152050
+substitute \7f5767,154797
+free_regexps \7f5814,155837
+regex_tag_multiline \7f5836,156291
+nocase_tail \7f5913,158263
+get_tag \7f5928,158519
+readline_internal \7f5959,159455
+readline \7f6037,161296
+savestr \7f6230,167243
+savenstr \7f6240,167473
+skip_spaces \7f6249,167679
+skip_non_spaces \7f6258,167833
+skip_name \7f6267,167983
+fatal \7f6277,168156
+pfatal \7f6284,168253
+suggest_asking_for_help \7f6291,168332
+error \7f6300,168554
+concat \7f6313,168846
+etags_getcwd \7f6329,169259
+relative_filename \7f6350,169725
+absolute_filename \7f6389,170751
+absolute_dirname \7f6453,172416
+filename_is_absolute \7f6472,172845
+canonicalize_filename \7f6484,173096
+# define ISUPPER(\7f6491,173235
+linebuffer_init \7f6514,173656
+linebuffer_setlen \7f6524,173887
+xmalloc \7f6536,174148
+xrealloc \7f6545,174314
+\f
+c-src/exit.c,99
+ size_t n;\7f28,967
+ void EXFUN((*fn[\7ffn\ 129,981
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/exit.strange_suffix,99
+ size_t n;\7f28,967
+ void EXFUN((*fn[\7ffn\ 129,981
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/sysdep.h,491
+#define ENTRY(\7f21,870
+#define PSEUDO(\7f26,977
+ movl $SYS_##syscall_nam\7f$SYS_##syscall_na\ 131,1137
+ movl $SYS_##syscall_name, %eax;\7feax\ 131,1137
+ int $0x80;\7f32,1185
+ test %eax,\7feax\ 133,1215
+ test %eax, %eax;\7feax\ 133,1215
+ jl syscall_error;\7f34,1250
+#define XCHG_0 \7f47,1567
+#define XCHG_1 \7f48,1611
+#define XCHG_2 \7f49,1653
+#define XCHG_3 \7f50,1696
+#define XCHG_4 \7f51,1739
+#define XCHG_5 \7f52,1782
+#define r0 \7f54,1826
+#define r1 \7f55,1880
+#define scratch \7f56,1937
+#define MOVE(\7f57,2006
+\f
+c-src/tab.c,196
+static int count_words(\7f15,263
+static char *get_word(\7fget_word\ 135,553
+void tab_free(\7f59,966
+char **tab_fill(\7ftab_fill\ 170,1129
+int tab_delete_first(\7f91,1638
+int tab_count_words(\7f103,1820
+\f
+c-src/dostorture.c,198
+(*tag1 \7ftag1\ 118,468
+#define notag2 \7f26,577
+(*tag2 \7ftag2\ 129,657
+(*tag3 \7ftag3\ 139,809
+#define notag4 \7f45,904
+(*tag4 \7ftag4\ 148,1001
+tag5 \7f57,1136
+tag6 \7f66,1272
+int pp1(\7f74,1389
+pp2\7f87,1504
+pp3(\7f100,1616
+\f
+c-src/emacs/src/gmalloc.c,4207
+#define USE_PTHREAD\7f25,1002
+#undef get_current_dir_name\7f33,1126
+#undef malloc\7f64,2110
+#undef realloc\7f65,2124
+#undef calloc\7f66,2139
+#undef free\7f67,2153
+#define malloc \7f68,2165
+#define realloc \7f69,2188
+#define calloc \7f70,2213
+#define aligned_alloc \7f71,2236
+#define free \7f72,2273
+#define DUMPED \7f80,2472
+#define ALLOCATED_BEFORE_DUMPING(\7f81,2507
+extern void *malloc \7fmalloc\ 194,2718
+#define INT_BIT \7f124,3934
+#define BLOCKLOG \7f125,3977
+#define BLOCKSIZE \7f126,4018
+#define BLOCKIFY(\7f127,4052
+#define HEAP \7f131,4215
+#define FINAL_FREE_BLOCKS \7f135,4391
+ int type;\7f145,4676
+ size_t nfree;\7f150,4720
+ size_t first;\7f151,4777
+ } frag;\7f152,4834
+ ptrdiff_t size;\7f156,5055
+ } info;\7f157,5076
+ } busy;\7f158,5087
+ size_t size;\7f163,5215
+ size_t next;\7f164,5272
+ size_t prev;\7f165,5321
+ } free;\7f166,5374
+ } malloc_info;\7f167,5388
+#define BLOCK(\7f176,5620
+#define ADDRESS(\7f177,5682
+struct list\7f186,5939
+ struct list *next;\7fnext\ 1188,5955
+ struct list *prev;\7fprev\ 1189,5978
+struct alignlist\7f196,6153
+ struct alignlist *next;\7fnext\ 1198,6174
+ void *aligned;\7faligned\ 1199,6202
+ void *exact;\7fexact\ 1200,6270
+#define LOCK(\7f223,7064
+#define UNLOCK(\7f228,7195
+#define LOCK_ALIGNED_BLOCKS(\7f233,7329
+#define UNLOCK_ALIGNED_BLOCKS(\7f238,7484
+#define LOCK(\7f244,7649
+#define UNLOCK(\7f245,7664
+#define LOCK_ALIGNED_BLOCKS(\7f246,7681
+#define UNLOCK_ALIGNED_BLOCKS(\7f247,7711
+enum mcheck_status\7f283,9092
+ MCHECK_DISABLED \7f285,9115
+ MCHECK_OK,\7f286,9187
+ MCHECK_FREE,\7f287,9226
+ MCHECK_HEAD,\7f288,9270
+ MCHECK_TAIL \7f289,9334
+struct mstats\7f308,10153
+ size_t bytes_total;\7f310,10171
+ size_t chunks_used;\7f311,10225
+ size_t bytes_used;\7f312,10285
+ size_t chunks_free;\7f313,10351
+ size_t bytes_free;\7f314,10406
+char *_heapbase;\7f_heapbase\ 1355,11829
+malloc_info *_heapinfo;\7f_heapinfo\ 1358,11927
+static size_t heapsize;\7f361,11983
+size_t _heapindex;\7f364,12047
+size_t _heaplimit;\7f367,12109
+struct list _fraghead[\7f_fraghead\ 1370,12171
+size_t _chunks_used;\7f373,12229
+size_t _bytes_used;\7f374,12250
+size_t _chunks_free;\7f375,12270
+size_t _bytes_free;\7f376,12291
+int __malloc_initialized;\7f379,12340
+size_t __malloc_extra_blocks;\7f381,12367
+static int state_protected_p;\7f400,12912
+static size_t last_state_size;\7f401,12942
+static malloc_info *last_heapinfo;\7flast_heapinfo\ 1402,12973
+protect_malloc_state \7f405,13014
+#define PROTECT_MALLOC_STATE(\7f426,13627
+#define PROTECT_MALLOC_STATE(\7f429,13697
+align \7f435,13794
+get_contiguous_space \7f466,14616
+register_heapinfo \7f497,15325
+pthread_mutex_t _malloc_mutex \7f517,15879
+pthread_mutex_t _aligned_blocks_mutex \7f518,15938
+int _malloc_thread_enabled_p;\7f519,16005
+malloc_atfork_handler_prepare \7f522,16048
+malloc_atfork_handler_parent \7f529,16139
+malloc_atfork_handler_child \7f536,16233
+malloc_enable_thread \7f544,16375
+malloc_initialize_1 \7f563,16961
+__malloc_initialize \7f594,17793
+static int morecore_recursing;\7f604,17926
+morecore_nolock \7f609,18066
+_malloc_internal_nolock \7f722,21584
+_malloc_internal \7f920,28102
+malloc \7f932,28247
+_malloc \7f961,29140
+_free \7f967,29196
+_realloc \7f973,29240
+struct alignlist *_aligned_blocks \7f_aligned_blocks\ 11004,30345
+_free_internal_nolock \7f1009,30474
+_free_internal \7f1255,38476
+free \7f1265,38603
+weak_alias \7f1277,38799
+#define min(\7f1306,39813
+_realloc_internal_nolock \7f1319,40309
+_realloc_internal \7f1435,43563
+realloc \7f1447,43726
+calloc \7f1478,44894
+#define __sbrk \7f1513,46042
+__default_morecore \7f1525,46511
+aligned_alloc \7f1557,47522
+memalign \7f1647,49704
+posix_memalign \7f1656,49909
+static size_t pagesize;\7f1703,51317
+valloc \7f1706,51349
+#undef malloc\7f1715,51490
+#undef realloc\7f1716,51504
+#undef calloc\7f1717,51519
+#undef aligned_alloc\7f1718,51533
+#undef free\7f1719,51554
+hybrid_malloc \7f1736,52083
+hybrid_calloc \7f1744,52188
+hybrid_free \7f1752,52319
+hybrid_aligned_alloc \7f1765,52626
+hybrid_realloc \7f1780,52984
+hybrid_get_current_dir_name \7f1811,53797
+#define MAGICWORD \7f1854,55206
+#define MAGICFREE \7f1855,55261
+#define MAGICBYTE \7f1856,55316
+#define MALLOCFLOOD \7f1857,55348
+#define FREEFLOOD \7f1858,55382
+struct hdr\7f1860,55415
+ size_t size;\7f1862,55430
+ size_t magic;\7f1863,55484
+checkhdr \7f1867,55581
+freehook \7f1891,56022
+mallochook \7f1927,56804
+reallochook \7f1944,57143
+mabort \7f1978,57901
+static int mcheck_used \7f2012,58586
+mcheck \7f2015,58619
+mprobe \7f2035,59138
+\f
+c-src/emacs/src/regex.h,4485
+#define _REGEX_H \7f21,836
+typedef unsigned long reg_syntax_t;\7f43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS \7f47,1749
+#define RE_BK_PLUS_QM \7f52,1969
+#define RE_CHAR_CLASSES \7f58,2298
+#define RE_CONTEXT_INDEP_ANCHORS \7f72,3032
+#define RE_CONTEXT_INDEP_OPS \7f80,3458
+#define RE_CONTEXT_INVALID_OPS \7f84,3658
+#define RE_DOT_NEWLINE \7f88,3801
+#define RE_DOT_NOT_NULL \7f92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE \7f96,4082
+#define RE_INTERVALS \7f101,4292
+#define RE_LIMITED_OPS \7f105,4441
+#define RE_NEWLINE_ALT \7f109,4583
+#define RE_NO_BK_BRACES \7f114,4773
+#define RE_NO_BK_PARENS \7f118,4964
+#define RE_NO_BK_REFS \7f122,5120
+#define RE_NO_BK_VBAR \7f126,5316
+#define RE_NO_EMPTY_RANGES \7f132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD \7f136,5766
+#define RE_NO_POSIX_BACKTRACKING \7f140,5937
+#define RE_NO_GNU_OPS \7f144,6133
+#define RE_FRUGAL \7f147,6253
+#define RE_SHY_GROUPS \7f150,6360
+#define RE_NO_NEWLINE_ANCHOR \7f153,6468
+#define RE_DEBUG \7f161,6884
+#define RE_SYNTAX_EMACS \7f183,7684
+#define RE_SYNTAX_AWK \7f186,7780
+#define RE_SYNTAX_GNU_AWK \7f193,8084
+#define RE_SYNTAX_POSIX_AWK \7f197,8255
+#define RE_SYNTAX_GREP \7f201,8393
+#define RE_SYNTAX_EGREP \7f206,8549
+#define RE_SYNTAX_POSIX_EGREP \7f212,8765
+#define RE_SYNTAX_ED \7f216,8910
+#define RE_SYNTAX_SED \7f218,8954
+#define _RE_SYNTAX_POSIX_COMMON \7f221,9072
+#define RE_SYNTAX_POSIX_BASIC \7f225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \7f231,9508
+#define RE_SYNTAX_POSIX_EXTENDED \7f234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \7f242,9967
+# undef RE_DUP_MAX\7f253,10454
+#define RE_DUP_MAX \7f256,10540
+#define REG_EXTENDED \7f263,10762
+#define REG_ICASE \7f267,10886
+#define REG_NEWLINE \7f272,11070
+#define REG_NOSUB \7f276,11248
+#define REG_NOTBOL \7f286,11614
+#define REG_NOTEOL \7f289,11688
+ REG_ENOSYS \7f297,11859
+ REG_NOERROR \7f300,11941
+ REG_NOMATCH,\7f301,11976
+ REG_BADPAT,\7f305,12123
+ REG_ECOLLATE,\7f306,12162
+ REG_ECTYPE,\7f307,12203
+ REG_EESCAPE,\7f308,12255
+ REG_ESUBREG,\7f309,12298
+ REG_EBRACK,\7f310,12345
+ REG_EPAREN,\7f311,12391
+ REG_EBRACE,\7f312,12436
+ REG_BADBR,\7f313,12472
+ REG_ERANGE,\7f314,12519
+ REG_ESPACE,\7f315,12560
+ REG_BADRPT,\7f316,12601
+ REG_EEND,\7f319,12693
+ REG_ESIZE,\7f320,12728
+ REG_ERPAREN,\7f321,12790
+ REG_ERANGEX \7f322,12859
+} reg_errcode_t;\7f323,12911
+# define RE_TRANSLATE_TYPE \7f332,13273
+struct re_pattern_buffer\7f335,13315
+ unsigned char *buffer;\7fbuffer\ 1341,13538
+ size_t allocated;\7f344,13614
+ size_t used;\7f347,13686
+ reg_syntax_t syntax;\7f350,13769
+ char *fastmap;\7ffastmap\ 1355,13975
+ RE_TRANSLATE_TYPE translate;\7f361,14241
+ size_t re_nsub;\7f364,14329
+ unsigned can_be_null \7f370,14624
+#define REGS_UNALLOCATED \7f376,14889
+#define REGS_REALLOCATE \7f377,14916
+#define REGS_FIXED \7f378,14942
+ unsigned regs_allocated \7f379,14963
+ unsigned fastmap_accurate \7f383,15136
+ unsigned no_sub \7f387,15267
+ unsigned not_bol \7f391,15398
+ unsigned not_eol \7f394,15475
+ unsigned used_syntax \7f398,15655
+ unsigned multibyte \7f403,15805
+ unsigned target_multibyte \7f407,15941
+ int charset_unibyte;\7f410,16032
+typedef struct re_pattern_buffer regex_t;\7f416,16098
+typedef ssize_t regoff_t;\7f423,16492
+struct re_registers\7f428,16652
+ unsigned num_regs;\7f430,16674
+ regoff_t *start;\7fstart\ 1431,16695
+ regoff_t *end;\7fend\ 1432,16714
+# define RE_NREGS \7f440,16942
+ regoff_t rm_so;\7f449,17159
+ regoff_t rm_eo;\7f450,17239
+} regmatch_t;\7f451,17317
+# define _Restrict_ \7f540,20886
+# define _Restrict_ \7f542,20979
+# define _Restrict_\7f544,21018
+# define _Restrict_arr_ \7f555,21418
+# define _Restrict_arr_\7f557,21461
+# define CHAR_CLASS_MAX_LENGTH \7f593,22470
+# define CHAR_CLASS_MAX_LENGTH \7f597,22648
+typedef wctype_t re_wctype_t;\7f599,22692
+typedef wchar_t re_wchar_t;\7f600,22722
+# define re_wctype \7f601,22750
+# define re_iswctype \7f602,22776
+# define re_wctype_to_bit(\7f603,22806
+# define CHAR_CLASS_MAX_LENGTH \7f605,22844
+# define btowc(\7f606,22906
+typedef enum { RECC_ERROR \7f609,22953
+ RECC_ALNUM,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,\7f610,22984
+ RECC_GRAPH,\7f611,23027
+ RECC_GRAPH, RECC_PRINT,\7f611,23027
+ RECC_LOWER,\7f612,23059
+ RECC_LOWER, RECC_UPPER,\7f612,23059
+ RECC_PUNCT,\7f613,23091
+ RECC_PUNCT, RECC_CNTRL,\7f613,23091
+ RECC_DIGIT,\7f614,23123
+ RECC_DIGIT, RECC_XDIGIT,\7f614,23123
+ RECC_BLANK,\7f615,23156
+ RECC_BLANK, RECC_SPACE,\7f615,23156
+ RECC_MULTIBYTE,\7f616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,\7f616,23188
+ RECC_ASCII,\7f617,23227
+ RECC_ASCII, RECC_UNIBYTE\7f617,23227
+} re_wctype_t;\7f618,23260
+typedef int re_wchar_t;\7f623,23387
+\f
+c-src/emacs/src/keyboard.c,13949
+volatile int interrupt_input_blocked;\7f76,1808
+volatile bool pending_signals;\7f80,1944
+#define KBD_BUFFER_SIZE \7f82,1976
+KBOARD *initial_kboard;\7finitial_kboard\ 184,2006
+KBOARD *current_kboard;\7fcurrent_kboard\ 185,2030
+static KBOARD *all_kboards;\7fall_kboards\ 186,2054
+static bool single_kboard;\7f89,2154
+#define NUM_RECENT_KEYS \7f91,2182
+static int recent_keys_index;\7f94,2269
+static int total_keys;\7f97,2357
+static Lisp_Object recent_keys;\7f100,2443
+Lisp_Object this_command_keys;\7f107,2777
+ptrdiff_t this_command_key_count;\7f108,2808
+static bool this_command_key_count_reset;\7f112,2922
+static Lisp_Object raw_keybuf;\7f116,3074
+static int raw_keybuf_count;\7f117,3105
+#define GROW_RAW_KEYBUF \7f119,3135
+static ptrdiff_t this_single_command_key_start;\7f125,3350
+static ptrdiff_t before_command_key_count;\7f129,3498
+static ptrdiff_t before_command_echo_length;\7f130,3541
+sigjmp_buf return_to_command_loop;\7f135,3677
+static Lisp_Object recover_top_level_message;\7f138,3791
+static Lisp_Object regular_top_level_message;\7f143,3930
+static sys_jmp_buf getcjmp;\7f147,4031
+bool waiting_for_input;\7f150,4095
+static bool echoing;\7f154,4186
+static struct kboard *ok_to_echo_at_next_pause;\7fok_to_echo_at_next_pause\ 1159,4328
+struct kboard *echo_kboard;\7fecho_kboard\ 1166,4632
+Lisp_Object echo_message_buffer;\7f171,4744
+bool immediate_quit;\7f174,4837
+int quit_char;\7f192,5623
+EMACS_INT command_loop_level;\7f195,5680
+Lisp_Object unread_switch_frame;\7f204,6108
+static ptrdiff_t last_non_minibuf_size;\7f207,6216
+uintmax_t num_input_events;\7f210,6334
+static EMACS_INT last_auto_save;\7f214,6428
+static ptrdiff_t last_point_position;\7f217,6523
+Lisp_Object internal_last_event_frame;\7f228,7028
+static Lisp_Object read_key_sequence_cmd;\7f232,7168
+static Lisp_Object read_key_sequence_remapped;\7f233,7210
+static FILE *dribble;\7fdribble\ 1236,7310
+bool input_pending;\7f239,7368
+static bool input_was_pending;\7f287,10022
+static struct input_event kbd_buffer[\7fkbd_buffer\ 1291,10107
+static struct input_event *kbd_fetch_ptr;\7fkbd_fetch_ptr\ 1297,10386
+static struct input_event * volatile kbd_store_ptr;\7f302,10601
+unsigned timers_run;\7f320,11296
+struct timespec *input_available_clear_time;\7finput_available_clear_time\ 1324,11408
+bool interrupt_input;\7f328,11573
+bool interrupts_deferred;\7f331,11671
+static struct timespec timer_idleness_start_time;\7f335,11746
+static struct timespec timer_last_idleness_start_time;\7f340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW \7f346,12046
+#define READABLE_EVENTS_FILTER_EVENTS \7f347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES \7f348,12142
+kset_echo_string \7f392,14088
+kset_kbd_queue \7f397,14184
+kset_keyboard_translate_table \7f402,14276
+kset_last_prefix_arg \7f407,14399
+kset_last_repeatable_command \7f412,14504
+kset_local_function_key_map \7f417,14625
+kset_overriding_terminal_local_map \7f422,14744
+kset_real_last_command \7f427,14877
+kset_system_key_syms \7f432,14986
+echo_add_key \7f443,15249
+echo_char \7f527,17527
+echo_dash \7f541,17813
+echo_now \7f586,19140
+cancel_echoing \7f635,20614
+echo_length \7f648,20922
+echo_truncate \7f660,21253
+add_command_key \7f672,21582
+recursive_edit_1 \7f697,22406
+record_auto_save \7f742,23848
+force_auto_save_soon \7f751,24016
+DEFUN ("recursive-edit", Frecursive_edit,\7frecursive-edit\ 1759,24137
+recursive_edit_unwind \7f804,25747
+any_kboard_state \7f817,26013
+single_kboard_state \7f838,26665
+not_single_kboard_state \7f848,26803
+struct kboard_stack\7f858,27065
+ KBOARD *kboard;\7fkboard\ 1860,27087
+ struct kboard_stack *next;\7fnext\ 1861,27105
+static struct kboard_stack *kboard_stack;\7fkboard_stack\ 1864,27138
+push_kboard \7f867,27186
+pop_kboard \7f879,27375
+temporarily_switch_to_single_kboard \7f914,28263
+record_single_kboard_state \7f943,29437
+restore_kboard_configuration \7f952,29621
+cmd_error \7f970,30077
+cmd_error_internal \7f1024,31510
+DEFUN ("command-error-default-function", Fcommand_error_default_function,\7fcommand-error-default-function\ 11043,32030
+command_loop \7f1094,33916
+command_loop_2 \7f1134,35135
+top_level_2 \7f1146,35339
+top_level_1 \7f1152,35417
+DEFUN ("top-level", Ftop_level,\7ftop-level\ 11164,35787
+user_error \7f1183,36288
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit,\7fexit-recursive-edit\ 11189,36429
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit,\7fabort-recursive-edit\ 11201,36819
+tracking_off \7f1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,\7ftrack-mouse\ 11234,37816
+bool ignore_mouse_drag_p;\7f1256,38392
+some_mouse_moved \7f1259,38441
+Lisp_Object last_undo_boundary;\7f1287,39032
+command_loop_1 \7f1294,39273
+read_menu_command \7f1649,50889
+adjust_point_for_property \7f1678,51617
+safe_run_hooks_1 \7f1831,57339
+safe_run_hooks_error \7f1841,57569
+safe_run_hook_funcall \7f1878,58576
+safe_run_hooks \7f1893,59058
+int poll_suppress_count;\7f1908,59397
+static struct atimer *poll_timer;\7fpoll_timer\ 11915,59487
+poll_for_input_1 \7f1919,59589
+poll_for_input \7f1930,59789
+start_polling \7f1942,60053
+input_polling_used \7f1979,61091
+stop_polling \7f1994,61390
+set_poll_suppress_count \7f2009,61759
+bind_polling_period \7f2029,62141
+make_ctrl_char \7f2048,62492
+show_help_echo \7f2113,64455
+static Lisp_Object help_form_saved_window_configs;\7f2156,65638
+read_char_help_form_unwind \7f2158,65701
+#define STOP_POLLING \7f2166,65959
+#define RESUME_POLLING \7f2170,66084
+read_event_from_main_queue \7f2175,66229
+read_decoded_event_from_main_queue \7f2249,68417
+#define MAX_ENCODED_BYTES \7f2254,68664
+echo_keystrokes_p \7f2342,71556
+read_char \7f2376,72848
+record_menu_key \7f3225,98949
+help_char_p \7f3258,99674
+record_char \7f3273,99953
+save_getcjmp \7f3412,104235
+restore_getcjmp \7f3418,104326
+readable_events \7f3430,104697
+int stop_character EXTERNALLY_VISIBLE;\7f3497,106437
+event_to_kboard \7f3500,106493
+kbd_buffer_nr_stored \7f3522,107142
+kbd_buffer_store_event \7f3534,107483
+kbd_buffer_store_event_hold \7f3550,108025
+kbd_buffer_unget_event \7f3684,111617
+#define INPUT_EVENT_POS_MAX \7f3698,112018
+#define INPUT_EVENT_POS_MIN \7f3701,112147
+position_to_Time \7f3706,112287
+Time_to_position \7f3716,112514
+gen_help_event \7f3738,113171
+kbd_buffer_store_help_event \7f3756,113611
+discard_mouse_events \7f3773,113976
+kbd_buffer_events_waiting \7f3803,114711
+clear_event \7f3823,115068
+kbd_buffer_get_event \7f3836,115408
+process_special_events \7f4258,127881
+swallow_events \7f4322,129705
+timer_start_idle \7f4339,130098
+timer_stop_idle \7f4355,130576
+timer_resume_idle \7f4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;\7f4372,130912
+Lisp_Object pending_funcalls;\7f4377,131172
+decode_timer \7f4381,131293
+timer_check_2 \7f4414,132246
+timer_check \7f4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,\7fcurrent-idle-time\ 14607,137662
+static Lisp_Object accent_key_syms;\7f4625,138239
+static Lisp_Object func_key_syms;\7f4626,138275
+static Lisp_Object mouse_syms;\7f4627,138309
+static Lisp_Object wheel_syms;\7f4628,138340
+static Lisp_Object drag_n_drop_syms;\7f4629,138371
+static const int lispy_accent_codes[\7flispy_accent_codes\ 14634,138516
+static const char *const lispy_accent_keys[\7flispy_accent_keys\ 14741,139878
+#define FUNCTION_KEY_OFFSET \7f4766,140314
+const char *const lispy_function_keys[\7flispy_function_keys\ 14768,140347
+static const char *const lispy_multimedia_keys[\7flispy_multimedia_keys\ 14962,148901
+static const char *const lispy_kana_keys[\7flispy_kana_keys\ 15026,150135
+#define FUNCTION_KEY_OFFSET \7f5061,151751
+static const char *const lispy_function_keys[\7flispy_function_keys\ 15065,151894
+#define ISO_FUNCTION_KEY_OFFSET \7f5149,154429
+static const char *const iso_lispy_function_keys[\7fiso_lispy_function_keys\ 15151,154469
+static Lisp_Object Vlispy_mouse_stem;\7f5172,155328
+static const char *const lispy_wheel_names[\7flispy_wheel_names\ 15174,155367
+static const char *const lispy_drag_n_drop_names[\7flispy_drag_n_drop_names\ 15181,155619
+static short const scroll_bar_parts[\7fscroll_bar_parts\ 15189,155885
+static Lisp_Object button_down_location;\7f5210,156910
+static int last_mouse_button;\7f5215,157065
+static int last_mouse_x;\7f5216,157095
+static int last_mouse_y;\7f5217,157120
+static Time button_down_time;\7f5218,157145
+static int double_click_count;\7f5222,157229
+make_lispy_position \7f5228,157390
+toolkit_menubar_in_use \7f5456,163953
+make_scroll_bar_position \7f5469,164321
+make_lispy_event \7f5485,164967
+make_lispy_movement \7f6104,183531
+make_lispy_switch_frame \7f6131,184262
+make_lispy_focus_in \7f6137,184369
+make_lispy_focus_out \7f6145,184495
+parse_modifiers_uncached \7f6163,184945
+#define SINGLE_LETTER_MOD(\7f6185,185465
+#undef SINGLE_LETTER_MOD\7f6212,185906
+#define MULTI_LETTER_MOD(\7f6214,185932
+#undef MULTI_LETTER_MOD\7f6231,186400
+apply_modifiers_uncached \7f6273,187574
+static const char *const modifier_names[\7fmodifier_names\ 16319,189193
+#define NUM_MOD_NAMES \7f6325,189399
+static Lisp_Object modifier_symbols;\7f6327,189449
+lispy_modifier_list \7f6331,189586
+#define KEY_TO_CHAR(\7f6353,190252
+parse_modifiers \7f6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,\7fevent-symbol-parse-modifiers\ 16399,191517
+apply_modifiers \7f6422,192391
+reorder_modifiers \7f6491,194720
+modify_event_symbol \7f6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,\7fevent-convert-list\ 16628,199244
+parse_solitary_modifier \7f6695,201135
+#define SINGLE_LETTER_MOD(\7f6701,201258
+#define MULTI_LETTER_MOD(\7f6705,201343
+#undef SINGLE_LETTER_MOD\7f6763,202641
+#undef MULTI_LETTER_MOD\7f6764,202666
+lucid_event_type_list_p \7f6775,202889
+get_input_pending \7f6814,203960
+record_asynch_buffer_change \7f6834,204579
+gobble_input \7f6872,205702
+tty_read_avail_input \7f6967,208310
+handle_async_input \7f7149,214039
+process_pending_signals \7f7165,214359
+unblock_input_to \7f7177,214645
+unblock_input \7f7200,215277
+totally_unblock_input \7f7209,215445
+handle_input_available_signal \7f7217,215529
+deliver_input_available_signal \7f7226,215700
+struct user_signal_info\7f7235,215865
+ int sig;\7f7238,215915
+ char *name;\7fname\ 17241,215956
+ int npending;\7f7244,216007
+ struct user_signal_info *next;\7fnext\ 17246,216024
+static struct user_signal_info *user_signals \7fuser_signals\ 17250,216090
+add_user_signal \7f7253,216149
+handle_user_signal \7f7275,216598
+deliver_user_signal \7f7316,217558
+find_user_signal_name \7f7322,217659
+store_user_signal_events \7f7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;\7f7363,218416
+static Lisp_Object menu_bar_items_vector;\7f7368,218630
+static int menu_bar_items_index;\7f7369,218672
+static const char *separator_names[\7fseparator_names\ 17372,218707
+menu_separator_name_p \7f7393,219148
+menu_bar_items \7f7426,219852
+Lisp_Object item_properties;\7f7568,224603
+menu_bar_item \7f7571,224645
+menu_item_eval_property_1 \7f7647,227175
+eval_dyn \7f7658,227465
+menu_item_eval_property \7f7666,227675
+parse_menu_item \7f7686,228341
+static Lisp_Object tool_bar_items_vector;\7f7965,236336
+static Lisp_Object tool_bar_item_properties;\7f7970,236510
+static int ntool_bar_items;\7f7974,236606
+tool_bar_items \7f7990,237083
+process_tool_bar_item \7f8075,239892
+#define PROP(\7f8112,240969
+set_prop \7f8114,241038
+parse_tool_bar_item \7f8167,242453
+#undef PROP\7f8379,248844
+init_tool_bar_items \7f8387,248969
+append_tool_bar_item \7f8401,249261
+read_char_x_menu_prompt \7f8443,250771
+read_char_minibuf_menu_prompt \7f8503,252445
+#define PUSH_C_STR(\7f8527,253014
+follow_key \7f8726,258553
+active_maps \7f8733,258695
+typedef struct keyremap\7f8742,259021
+ Lisp_Object parent;\7f8745,259107
+ Lisp_Object map;\7f8748,259224
+ int start,\7f8753,259446
+ int start, end;\7f8753,259446
+} keyremap;\7f8754,259464
+access_keymap_keyremap \7f8764,259808
+keyremap_step \7f8811,261450
+test_undefined \7f8867,262934
+read_key_sequence \7f8916,264861
+read_key_sequence_vs \7f9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,\7fread-key-sequence\ 19885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,\7fread-key-sequence-vector\ 19938,299982
+detect_input_pending \7f9950,300488
+detect_input_pending_ignore_squeezables \7f9959,300654
+detect_input_pending_run_timers \7f9967,300870
+clear_input_pending \7f9985,301362
+requeued_events_pending_p \7f9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,\7finput-pending-p\ 110002,301813
+DEFUN ("recent-keys", Frecent_keys,\7frecent-keys\ 110024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,\7fthis-command-keys\ 110055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,\7fthis-command-keys-vector\ 110068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,\7fthis-single-command-keys\ 110080,304380
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,\7fthis-single-command-raw-keys\ 110096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,\7freset-this-command-lengths\ 110109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,\7fclear-this-command-keys\ 110136,306510
+DEFUN ("recursion-depth", Frecursion_depth,\7frecursion-depth\ 110158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,\7fopen-dribble-file\ 110169,307406
+DEFUN ("discard-input", Fdiscard_input,\7fdiscard-input\ 110203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,\7fsuspend-emacs\ 110225,308949
+stuff_buffered_input \7f10285,311045
+set_waiting_for_input \7f10323,312016
+clear_waiting_for_input \7f10337,312390
+handle_interrupt_signal \7f10351,312754
+deliver_interrupt_signal \7f10378,313642
+static int volatile force_quit_count;\7f10387,313932
+handle_interrupt \7f10401,314414
+quit_throw_to_read_char \7f10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,\7fset-input-interrupt-mode\ 110562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,\7fset-output-flow-control\ 110609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,\7fset-input-meta-mode\ 110643,321432
+DEFUN ("set-quit-char", Fset_quit_char,\7fset-quit-char\ 110694,322706
+DEFUN ("set-input-mode", Fset_input_mode,\7fset-input-mode\ 110729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,\7fcurrent-input-mode\ 110750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,\7fposn-at-x-y\ 110787,325837
+DEFUN ("posn-at-point", Fposn_at_point,\7fposn-at-point\ 110824,327060
+init_kboard \7f10861,328214
+allocate_kboard \7f10893,329284
+wipe_kboard \7f10909,329637
+delete_kboard \7f10917,329751
+init_keyboard \7f10942,330281
+struct event_head\7f11021,332696
+ short var;\7f11023,332716
+ short kind;\7f11024,332729
+static const struct event_head head_table[\7fhead_table\ 111027,332747
+syms_of_keyboard \7f11045,333577
+keys_of_keyboard \7f11841,367115
+mark_kboards \7f11916,370434
+\f
+c-src/emacs/src/lisp.h,25767
+#define EMACS_LISP_H\7f22,800
+#define DECLARE_GDB_SYM(\7f47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f49,1508
+# define DEFINE_GDB_SYMBOL_END(\7f50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f52,1625
+# define DEFINE_GDB_SYMBOL_END(\7f53,1702
+#undef min\7f57,1790
+#undef max\7f58,1801
+#define max(\7f59,1812
+#define min(\7f60,1854
+#define ARRAYELTS(\7f63,1936
+#define GCTYPEBITS \7f67,2079
+DEFINE_GDB_SYMBOL_BEGIN \7fGCTYPEBITS\ 166,2037
+# define NONPOINTER_BITS \7f78,2567
+# define NONPOINTER_BITS \7f80,2600
+typedef int EMACS_INT;\7f91,3023
+typedef unsigned int EMACS_UINT;\7f92,3046
+# define EMACS_INT_MAX \7f93,3079
+# define pI \7f94,3111
+typedef long int EMACS_INT;\7f96,3203
+typedef unsigned long EMACS_UINT;\7f97,3231
+# define EMACS_INT_MAX \7f98,3265
+# define pI \7f99,3298
+typedef long long int EMACS_INT;\7f103,3477
+typedef unsigned long long int EMACS_UINT;\7f104,3510
+# define EMACS_INT_MAX \7f105,3553
+# define pI \7f106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR \7f114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR \7f115,3840
+typedef size_t bits_word;\7f123,4165
+# define BITS_WORD_MAX \7f124,4191
+enum { BITS_PER_BITS_WORD \7f125,4223
+typedef unsigned char bits_word;\7f127,4290
+# define BITS_WORD_MAX \7f128,4323
+enum { BITS_PER_BITS_WORD \7f129,4386
+ BITS_PER_CHAR \7f136,4570
+ BITS_PER_SHORT \7f137,4605
+ BITS_PER_LONG \7f138,4657
+ BITS_PER_EMACS_INT \7f139,4712
+typedef intmax_t printmax_t;\7f148,5089
+typedef uintmax_t uprintmax_t;\7f149,5118
+# define pMd \7f150,5149
+# define pMu \7f151,5170
+typedef EMACS_INT printmax_t;\7f153,5197
+typedef EMACS_UINT uprintmax_t;\7f154,5227
+# define pMd \7f155,5259
+# define pMu \7f156,5278
+# define pD \7f165,5664
+# define pD \7f167,5709
+# define pD \7f169,5756
+# define pD \7f171,5779
+# define eassert(\7f200,7062
+# define eassume(\7f201,7140
+# define eassert(\7f208,7319
+# define eassume(\7f212,7450
+enum Lisp_Bits\7f239,8519
+#define GCALIGNMENT \7f243,8647
+ VALBITS \7f246,8742
+ INTTYPEBITS \7f249,8838
+ FIXNUM_BITS \7f252,8945
+#define VAL_MAX \7f263,9327
+#define USE_LSB_TAG \7f271,9777
+DEFINE_GDB_SYMBOL_BEGIN \7fUSE_LSB_TAG\ 1270,9733
+# define alignas(\7f281,10077
+# define GCALIGNED \7f288,10227
+# define GCALIGNED \7f290,10292
+# define lisp_h_XLI(\7f327,11642
+# define lisp_h_XIL(\7f328,11673
+# define lisp_h_XLI(\7f330,11724
+# define lisp_h_XIL(\7f331,11751
+#define lisp_h_CHECK_LIST_CONS(\7f333,11785
+#define lisp_h_CHECK_NUMBER(\7f334,11856
+#define lisp_h_CHECK_SYMBOL(\7f335,11927
+#define lisp_h_CHECK_TYPE(\7f336,11996
+#define lisp_h_CONSP(\7f338,12107
+#define lisp_h_EQ(\7f339,12156
+#define lisp_h_FLOATP(\7f340,12201
+#define lisp_h_INTEGERP(\7f341,12252
+#define lisp_h_MARKERP(\7f342,12333
+#define lisp_h_MISCP(\7f343,12408
+#define lisp_h_NILP(\7f344,12457
+#define lisp_h_SET_SYMBOL_VAL(\7f345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(\7f347,12607
+#define lisp_h_SYMBOL_VAL(\7f348,12671
+#define lisp_h_SYMBOLP(\7f350,12772
+#define lisp_h_VECTORLIKEP(\7f351,12825
+#define lisp_h_XCAR(\7f352,12886
+#define lisp_h_XCDR(\7f353,12924
+#define lisp_h_XCONS(\7f354,12964
+#define lisp_h_XHASH(\7f356,13059
+#define lisp_h_XPNTR(\7f357,13093
+# define lisp_h_check_cons_list(\7f360,13221
+# define lisp_h_make_number(\7f363,13289
+# define lisp_h_XFASTINT(\7f365,13392
+# define lisp_h_XINT(\7f366,13429
+# define lisp_h_XSYMBOL(\7f367,13478
+# define lisp_h_XTYPE(\7f371,13631
+# define lisp_h_XUNTAG(\7f372,13696
+# define XLI(\7f381,14086
+# define XIL(\7f382,14117
+# define CHECK_LIST_CONS(\7f383,14148
+# define CHECK_NUMBER(\7f384,14209
+# define CHECK_SYMBOL(\7f385,14258
+# define CHECK_TYPE(\7f386,14307
+# define CONSP(\7f387,14382
+# define EQ(\7f388,14417
+# define FLOATP(\7f389,14452
+# define INTEGERP(\7f390,14489
+# define MARKERP(\7f391,14530
+# define MISCP(\7f392,14569
+# define NILP(\7f393,14604
+# define SET_SYMBOL_VAL(\7f394,14637
+# define SYMBOL_CONSTANT_P(\7f395,14700
+# define SYMBOL_VAL(\7f396,14763
+# define SYMBOLP(\7f397,14812
+# define VECTORLIKEP(\7f398,14851
+# define XCAR(\7f399,14898
+# define XCDR(\7f400,14931
+# define XCONS(\7f401,14964
+# define XHASH(\7f402,14999
+# define XPNTR(\7f403,15034
+# define check_cons_list(\7f405,15097
+# define make_number(\7f408,15176
+# define XFASTINT(\7f409,15224
+# define XINT(\7f410,15266
+# define XSYMBOL(\7f411,15300
+# define XTYPE(\7f412,15340
+# define XUNTAG(\7f413,15376
+#define LISP_MACRO_DEFUN(\7f421,15672
+#define LISP_MACRO_DEFUN_VOID(\7f425,15845
+#define INTMASK \7f437,16289
+#define case_Lisp_Int \7f438,16342
+#define ENUM_BF(\7f445,16681
+#define ENUM_BF(\7f447,16722
+enum Lisp_Type\7f451,16763
+ Lisp_Symbol \7f454,16851
+ Lisp_Misc \7f458,16993
+ Lisp_Int0 \7f461,17067
+ Lisp_Int1 \7f462,17086
+ Lisp_String \7f466,17264
+ Lisp_Vectorlike \7f472,17543
+ Lisp_Cons \7f475,17632
+ Lisp_Float \7f477,17670
+enum Lisp_Misc_Type\7f485,18016
+ Lisp_Misc_Free \7f487,18040
+ Lisp_Misc_Marker,\7f488,18069
+ Lisp_Misc_Overlay,\7f489,18091
+ Lisp_Misc_Save_Value,\7f490,18114
+ Lisp_Misc_Finalizer,\7f491,18140
+ Lisp_Misc_Float,\7f494,18275
+ Lisp_Misc_Limit\7f496,18359
+enum Lisp_Fwd_Type\7f502,18543
+ Lisp_Fwd_Int,\7f504,18566
+ Lisp_Fwd_Bool,\7f505,18619
+ Lisp_Fwd_Obj,\7f506,18670
+ Lisp_Fwd_Buffer_Obj,\7f507,18729
+ Lisp_Fwd_Kboard_Obj \7f508,18800
+typedef struct { EMACS_INT i;\7f567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;\7f567,21781
+#define LISP_INITIALLY(\7f569,21827
+#undef CHECK_LISP_OBJECT_TYPE\7f571,21858
+enum CHECK_LISP_OBJECT_TYPE \7f572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f572,21888
+typedef EMACS_INT Lisp_Object;\7f577,22064
+#define LISP_INITIALLY(\7f578,22095
+enum CHECK_LISP_OBJECT_TYPE \7f579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f579,22125
+#define LISP_INITIALLY_ZERO \7f582,22226
+enum symbol_interned\7f639,24199
+ SYMBOL_UNINTERNED \7f641,24222
+ SYMBOL_INTERNED \7f642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY \7f643,24270
+enum symbol_redirect\7f646,24315
+ SYMBOL_PLAINVAL \7f648,24338
+ SYMBOL_VARALIAS \7f649,24362
+ SYMBOL_LOCALIZED \7f650,24386
+ SYMBOL_FORWARDED \7f651,24410
+struct Lisp_Symbol\7f654,24437
+ bool_bf gcmarkbit \7f656,24458
+ ENUM_BF \7f663,24793
+ Lisp_Object value;\7f687,25631
+ struct Lisp_Symbol *alias;\7falias\ 1688,25654
+ struct Lisp_Buffer_Local_Value *blv;\7fblv\ 1689,25685
+ union Lisp_Fwd *fwd;\7ffwd\ 1690,25726
+ } val;\7f691,25751
+ Lisp_Object function;\7f694,25823
+ Lisp_Object plist;\7f697,25885
+ struct Lisp_Symbol *next;\7fnext\ 1700,25974
+#define EXFUN(\7f707,26252
+#define DEFUN_ARGS_MANY \7f712,26446
+#define DEFUN_ARGS_UNEVALLED \7f713,26498
+#define DEFUN_ARGS_0 \7f714,26541
+#define DEFUN_ARGS_1 \7f715,26569
+#define DEFUN_ARGS_2 \7f716,26604
+#define DEFUN_ARGS_3 \7f717,26652
+#define DEFUN_ARGS_4 \7f718,26713
+#define DEFUN_ARGS_5 \7f719,26787
+#define DEFUN_ARGS_6 \7f721,26880
+#define DEFUN_ARGS_7 \7f723,26986
+#define DEFUN_ARGS_8 \7f725,27105
+#define TAG_PTR(\7f729,27296
+#define TAG_SYMOFFSET(\7f734,27543
+#define XLI_BUILTIN_LISPSYM(\7f741,27842
+#define DEFINE_LISP_SYMBOL(\7f746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS \7f755,28572
+LISP_MACRO_DEFUN \7f762,28777
+# define ARRAY_MARK_FLAG \7f768,29024
+# define PSEUDOVECTOR_FLAG \7f774,29267
+enum pvec_type\7f780,29568
+ PVEC_NORMAL_VECTOR,\7f782,29585
+ PVEC_FREE,\7f783,29607
+ PVEC_PROCESS,\7f784,29620
+ PVEC_FRAME,\7f785,29636
+ PVEC_WINDOW,\7f786,29650
+ PVEC_BOOL_VECTOR,\7f787,29665
+ PVEC_BUFFER,\7f788,29685
+ PVEC_HASH_TABLE,\7f789,29700
+ PVEC_TERMINAL,\7f790,29719
+ PVEC_WINDOW_CONFIGURATION,\7f791,29736
+ PVEC_SUBR,\7f792,29765
+ PVEC_OTHER,\7f793,29778
+ PVEC_COMPILED,\7f795,29856
+ PVEC_CHAR_TABLE,\7f796,29873
+ PVEC_SUB_CHAR_TABLE,\7f797,29892
+ PVEC_FONT \7f798,29915
+enum More_Lisp_Bits\7f801,29991
+ PSEUDOVECTOR_SIZE_BITS \7f808,30382
+ PSEUDOVECTOR_SIZE_MASK \7f809,30415
+ PSEUDOVECTOR_REST_BITS \7f813,30625
+ PSEUDOVECTOR_REST_MASK \7f814,30658
+ PSEUDOVECTOR_AREA_BITS \7f818,30823
+ PVEC_TYPE_MASK \7f819,30901
+# define VALMASK \7f829,31302
+DEFINE_GDB_SYMBOL_BEGIN \7fVALMASK\ 1828,31257
+#define MOST_POSITIVE_FIXNUM \7f834,31532
+#define MOST_NEGATIVE_FIXNUM \7f835,31592
+XINT \7f874,32684
+XFASTINT \7f889,33035
+XSYMBOL \7f899,33263
+XTYPE \7f910,33481
+XUNTAG \7f918,33661
+LISP_MACRO_DEFUN \7f927,33857
+LISP_MACRO_DEFUN \7f940,34242
+#define FIXNUM_OVERFLOW_P(\7f958,34855
+LISP_MACRO_DEFUN \7fFIXNUM_OVERFLOW_P\ 1952,34632
+LISP_MACRO_DEFUN \7f970,35171
+XSTRING \7f980,35391
+#define SYMBOL_INDEX(\7f988,35575
+XFLOAT \7f991,35636
+XPROCESS \7f1000,35778
+XWINDOW \7f1007,35895
+XTERMINAL \7f1014,36012
+XSUBR \7f1021,36134
+XBUFFER \7f1028,36245
+XCHAR_TABLE \7f1035,36369
+XSUB_CHAR_TABLE \7f1042,36506
+XBOOL_VECTOR \7f1049,36648
+make_lisp_ptr \7f1058,36827
+make_lisp_symbol \7f1066,37013
+builtin_lisp_symbol \7f1074,37197
+#define XSETINT(\7f1079,37279
+#define XSETFASTINT(\7f1080,37325
+#define XSETCONS(\7f1081,37375
+#define XSETVECTOR(\7f1082,37435
+#define XSETSTRING(\7f1083,37503
+#define XSETSYMBOL(\7f1084,37567
+#define XSETFLOAT(\7f1085,37621
+#define XSETMISC(\7f1086,37683
+#define XSETPVECTYPE(\7f1090,37772
+#define XSETPVECTYPESIZE(\7f1092,37888
+#define XSETPSEUDOVECTOR(\7f1099,38185
+#define XSETTYPED_PSEUDOVECTOR(\7f1105,38369
+#define XSETWINDOW_CONFIGURATION(\7f1110,38579
+#define XSETPROCESS(\7f1112,38675
+#define XSETWINDOW(\7f1113,38741
+#define XSETTERMINAL(\7f1114,38805
+#define XSETSUBR(\7f1115,38873
+#define XSETCOMPILED(\7f1116,38933
+#define XSETBUFFER(\7f1117,39001
+#define XSETCHAR_TABLE(\7f1118,39065
+#define XSETBOOL_VECTOR(\7f1119,39137
+#define XSETSUB_CHAR_TABLE(\7f1120,39211
+XINTPTR \7f1128,39581
+make_pointer_integer \7f1134,39661
+LISP_MACRO_DEFUN_VOID \7f1143,39826
+typedef struct interval *INTERVAL;\7fINTERVAL\ 11149,39987
+ Lisp_Object cdr;\7f1159,40162
+ struct Lisp_Cons *chain;\7fchain\ 11162,40236
+xcar_addr \7f1174,40760
+xcdr_addr \7f1179,40837
+LISP_MACRO_DEFUN \7f1185,40931
+XSETCDR \7f1198,41307
+CAR \7f1205,41457
+CDR \7f1212,41591
+CAR_SAFE \7f1221,41791
+CDR_SAFE \7f1226,41877
+STRING_MULTIBYTE \7f1243,42250
+#define STRING_BYTES_BOUND \7f1261,43057
+#define STRING_SET_UNIBYTE(\7f1265,43201
+#define STRING_SET_MULTIBYTE(\7f1275,43516
+SDATA \7f1286,43830
+SSDATA \7f1291,43908
+SREF \7f1297,44037
+SSET \7f1302,44128
+SCHARS \7f1307,44242
+STRING_BYTES \7f1316,44415
+SBYTES \7f1326,44595
+STRING_SET_CHARS \7f1331,44681
+struct vectorlike_header\7f1343,45232
+ ptrdiff_t size;\7f1364,46383
+struct Lisp_Vector\7f1369,46482
+ struct vectorlike_header header;\7f1371,46505
+ Lisp_Object contents[\7fcontents\ 11372,46542
+ ALIGNOF_STRUCT_LISP_VECTOR\7f1378,46681
+struct Lisp_Bool_Vector\7f1384,46864
+ struct vectorlike_header header;\7f1388,47012
+ EMACS_INT size;\7f1390,47086
+ bits_word data[\7fdata\ 11395,47319
+bool_vector_size \7f1399,47385
+bool_vector_data \7f1407,47523
+bool_vector_uchar_data \7f1413,47617
+bool_vector_words \7f1421,47803
+bool_vector_bytes \7f1428,47998
+bool_vector_bitref \7f1437,48238
+bool_vector_ref \7f1445,48478
+bool_vector_set \7f1453,48618
+ header_size \7f1471,49047
+ bool_header_size \7f1472,49106
+ word_size \7f1473,49171
+AREF \7f1479,49284
+aref_addr \7f1485,49391
+ASIZE \7f1491,49501
+ASET \7f1497,49583
+gc_aset \7f1504,49742
+enum { NIL_IS_ZERO \7f1515,50269
+memclear \7f1520,50464
+#define VECSIZE(\7f1531,50762
+#define PSEUDOVECSIZE(\7f1538,51047
+#define UNSIGNED_CMP(\7f1546,51480
+#define ASCII_CHAR_P(\7f1552,51734
+enum CHARTAB_SIZE_BITS\7f1565,52489
+ CHARTAB_SIZE_BITS_0 \7f1567,52516
+ CHARTAB_SIZE_BITS_1 \7f1568,52545
+ CHARTAB_SIZE_BITS_2 \7f1569,52574
+ CHARTAB_SIZE_BITS_3 \7f1570,52603
+struct Lisp_Char_Table\7f1575,52672
+ struct vectorlike_header header;\7f1581,52928
+ Lisp_Object defalt;\7f1585,53078
+ Lisp_Object parent;\7f1590,53280
+ Lisp_Object purpose;\7f1594,53398
+ Lisp_Object ascii;\7f1598,53564
+ Lisp_Object contents[\7fcontents\ 11600,53588
+ Lisp_Object extras[\7fextras\ 11603,53699
+struct Lisp_Sub_Char_Table\7f1606,53752
+ struct vectorlike_header header;\7f1610,53918
+ int depth;\7f1618,54341
+ int min_char;\7f1621,54417
+ Lisp_Object contents[\7fcontents\ 11624,54492
+CHAR_TABLE_REF_ASCII \7f1628,54566
+CHAR_TABLE_REF \7f1648,55113
+CHAR_TABLE_SET \7f1658,55402
+struct Lisp_Subr\7f1670,55786
+ struct vectorlike_header header;\7f1672,55807
+ Lisp_Object (*a0)\7fa0\ 11674,55856
+ Lisp_Object (*a1)\7fa1\ 11675,55888
+ Lisp_Object (*a2)\7fa2\ 11676,55927
+ Lisp_Object (*a3)\7fa3\ 11677,55979
+ Lisp_Object (*a4)\7fa4\ 11678,56044
+ Lisp_Object (*a5)\7fa5\ 11679,56122
+ Lisp_Object (*a6)\7fa6\ 11680,56213
+ Lisp_Object (*a7)\7fa7\ 11681,56317
+ Lisp_Object (*a8)\7fa8\ 11682,56434
+ Lisp_Object (*aUNEVALLED)\7faUNEVALLED\ 11683,56564
+ Lisp_Object (*aMANY)\7faMANY\ 11684,56616
+ } function;\7f1685,56671
+ short min_args,\7f1686,56687
+ short min_args, max_args;\7f1686,56687
+ const char *symbol_name;\7fsymbol_name\ 11687,56717
+ const char *intspec;\7fintspec\ 11688,56746
+ const char *doc;\7fdoc\ 11689,56771
+enum char_table_specials\7f1692,56798
+ CHAR_TABLE_STANDARD_SLOTS \7f1697,56993
+ SUB_CHAR_TABLE_OFFSET \7f1701,57214
+CHAR_TABLE_EXTRA_SLOTS \7f1707,57377
+LISP_MACRO_DEFUN \7f1723,57921
+SYMBOL_BLV \7f1732,58181
+SYMBOL_FWD \7f1738,58316
+LISP_MACRO_DEFUN_VOID \7f1744,58428
+SET_SYMBOL_BLV \7f1754,58691
+SET_SYMBOL_FWD \7f1760,58850
+SYMBOL_NAME \7f1767,59001
+SYMBOL_INTERNED_P \7f1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P \7f1783,59299
+#define DEFSYM(\7f1796,59809
+LISP_MACRO_DEFUN \7fDEFSYM\ 11792,59630
+struct hash_table_test\7f1805,60062
+ Lisp_Object name;\7f1808,60139
+ Lisp_Object user_hash_function;\7f1811,60206
+ Lisp_Object user_cmp_function;\7f1814,60297
+ bool (*cmpfn)\7fcmpfn\ 11817,60372
+ EMACS_UINT (*hashfn)\7fhashfn\ 11820,60486
+struct Lisp_Hash_Table\7f1823,60555
+ struct vectorlike_header header;\7f1826,60649
+ Lisp_Object weak;\7f1830,60783
+ Lisp_Object rehash_size;\7f1835,61007
+ Lisp_Object rehash_threshold;\7f1839,61129
+ Lisp_Object hash;\7f1843,61260
+ Lisp_Object next;\7f1848,61490
+ Lisp_Object next_free;\7f1851,61560
+ Lisp_Object index;\7f1856,61771
+ ptrdiff_t count;\7f1863,62041
+ Lisp_Object key_and_value;\7f1868,62240
+ struct hash_table_test test;\7f1871,62314
+ struct Lisp_Hash_Table *next_weak;\7fnext_weak\ 11875,62457
+XHASH_TABLE \7f1880,62531
+#define XSET_HASH_TABLE(\7f1885,62602
+HASH_TABLE_P \7f1889,62703
+HASH_KEY \7f1896,62860
+HASH_VALUE \7f1903,63040
+HASH_NEXT \7f1911,63254
+HASH_HASH \7f1918,63431
+HASH_INDEX \7f1926,63677
+HASH_TABLE_SIZE \7f1933,63826
+enum DEFAULT_HASH_SIZE \7f1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE \7f1940,63956
+static double const DEFAULT_REHASH_THRESHOLD \7f1946,64176
+static double const DEFAULT_REHASH_SIZE \7f1950,64299
+sxhash_combine \7f1956,64465
+SXHASH_REDUCE \7f1964,64648
+struct Lisp_Misc_Any \7f1971,64806
+ ENUM_BF \7f1973,64866
+struct Lisp_Marker\7f1978,64980
+ ENUM_BF \7f1980,65001
+struct Lisp_Overlay\7f2021,66841
+ ENUM_BF \7f2034,67349
+ SAVE_UNUSED,\7f2047,67644
+ SAVE_INTEGER,\7f2048,67661
+ SAVE_FUNCPOINTER,\7f2049,67679
+ SAVE_POINTER,\7f2050,67701
+ SAVE_OBJECT\7f2051,67719
+enum { SAVE_SLOT_BITS \7f2055,67804
+enum { SAVE_VALUE_SLOTS \7f2058,67901
+enum { SAVE_TYPE_BITS \7f2062,68009
+enum Lisp_Save_Type\7f2064,68075
+ SAVE_TYPE_INT_INT \7f2066,68099
+ SAVE_TYPE_INT_INT_INT\7f2067,68172
+ SAVE_TYPE_OBJ_OBJ \7f2069,68262
+ SAVE_TYPE_OBJ_OBJ_OBJ \7f2070,68333
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ\7f2071,68414
+ SAVE_TYPE_PTR_INT \7f2073,68509
+ SAVE_TYPE_PTR_OBJ \7f2074,68582
+ SAVE_TYPE_PTR_PTR \7f2075,68654
+ SAVE_TYPE_FUNCPTR_PTR_OBJ\7f2076,68727
+ SAVE_TYPE_MEMORY \7f2080,68885
+typedef void (*voidfuncptr)\7fvoidfuncptr\ 12108,69839
+struct Lisp_Save_Value\7f2110,69876
+ ENUM_BF \7f2112,69903
+ void *pointer;\7fpointer\ 12125,70558
+ voidfuncptr funcpointer;\7f2126,70579
+ ptrdiff_t integer;\7f2127,70610
+ Lisp_Object object;\7f2128,70635
+ } data[\7fdata\ 12129,70661
+save_type \7f2134,70755
+XSAVE_POINTER \7f2143,70985
+set_save_pointer \7f2149,71147
+XSAVE_FUNCPOINTER \7f2155,71329
+XSAVE_INTEGER \7f2164,71549
+set_save_integer \7f2170,71711
+XSAVE_OBJECT \7f2179,71932
+struct Lisp_Finalizer\7f2186,72109
+ struct Lisp_Misc_Any base;\7f2188,72135
+ struct Lisp_Finalizer *prev;\7fprev\ 12191,72223
+ struct Lisp_Finalizer *next;\7fnext\ 12192,72256
+ Lisp_Object function;\7f2197,72493
+struct Lisp_Free\7f2201,72584
+ ENUM_BF \7f2203,72605
+union Lisp_Misc\7f2212,72885
+ struct Lisp_Misc_Any u_any;\7f2214,72905
+ struct Lisp_Free u_free;\7f2215,72976
+ struct Lisp_Marker u_marker;\7f2216,73005
+ struct Lisp_Overlay u_overlay;\7f2217,73038
+ struct Lisp_Save_Value u_save_value;\7f2218,73073
+ struct Lisp_Finalizer u_finalizer;\7f2219,73114
+XMISC \7f2223,73184
+XMISCANY \7f2229,73273
+XMISCTYPE \7f2236,73382
+XMARKER \7f2242,73470
+XOVERLAY \7f2249,73585
+XSAVE_VALUE \7f2256,73706
+XFINALIZER \7f2263,73835
+struct Lisp_Intfwd\7f2274,74120
+ enum Lisp_Fwd_Type type;\7f2276,74143
+ EMACS_INT *intvar;\7fintvar\ 12277,74193
+struct Lisp_Boolfwd\7f2284,74414
+ enum Lisp_Fwd_Type type;\7f2286,74438
+ bool *boolvar;\7fboolvar\ 12287,74489
+struct Lisp_Objfwd\7f2294,74705
+ enum Lisp_Fwd_Type type;\7f2296,74728
+ Lisp_Object *objvar;\7fobjvar\ 12297,74778
+struct Lisp_Buffer_Objfwd\7f2302,74937
+ enum Lisp_Fwd_Type type;\7f2304,74967
+ int offset;\7f2305,75024
+ Lisp_Object predicate;\7f2307,75116
+struct Lisp_Buffer_Local_Value\7f2334,76473
+ bool_bf local_if_set \7f2338,76618
+ bool_bf frame_local \7f2341,76800
+ bool_bf found \7f2344,76942
+ union Lisp_Fwd *fwd;\7ffwd\ 12346,77044
+ Lisp_Object where;\7f2348,77187
+ Lisp_Object defcell;\7f2351,77313
+ Lisp_Object valcell;\7f2357,77617
+struct Lisp_Kboard_Objfwd\7f2362,77732
+ enum Lisp_Fwd_Type type;\7f2364,77762
+ int offset;\7f2365,77819
+union Lisp_Fwd\7f2368,77841
+ struct Lisp_Intfwd u_intfwd;\7f2370,77860
+ struct Lisp_Boolfwd u_boolfwd;\7f2371,77893
+ struct Lisp_Objfwd u_objfwd;\7f2372,77928
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;\7f2373,77961
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;\7f2374,78008
+XFWDTYPE \7f2378,78087
+XBUFFER_OBJFWD \7f2384,78183
+struct Lisp_Float\7f2391,78319
+ double data;\7f2395,78357
+ struct Lisp_Float *chain;\7fchain\ 12396,78376
+ } u;\7f2397,78408
+XFLOAT_DATA \7f2401,78437
+ IEEE_FLOATING_POINT\7f2415,78946
+#define _UCHAR_T\7f2423,79269
+typedef unsigned char UCHAR;\7f2424,79286
+enum Lisp_Compiled\7f2429,79369
+ COMPILED_ARGLIST \7f2431,79392
+ COMPILED_BYTECODE \7f2432,79418
+ COMPILED_CONSTANTS \7f2433,79445
+ COMPILED_STACK_DEPTH \7f2434,79473
+ COMPILED_DOC_STRING \7f2435,79503
+ COMPILED_INTERACTIVE \7f2436,79532
+enum char_bits\7f2443,79834
+ CHAR_ALT \7f2445,79853
+ CHAR_SUPER \7f2446,79879
+ CHAR_HYPER \7f2447,79907
+ CHAR_SHIFT \7f2448,79935
+ CHAR_CTL \7f2449,79963
+ CHAR_META \7f2450,79989
+ CHAR_MODIFIER_MASK \7f2452,80017
+ CHARACTERBITS \7f2457,80212
+LISP_MACRO_DEFUN \7f2462,80270
+NATNUMP \7f2470,80412
+RANGED_INTEGERP \7f2476,80493
+#define TYPE_RANGED_INTEGERP(\7f2481,80615
+LISP_MACRO_DEFUN \7f2486,80800
+VECTORP \7f2500,81273
+OVERLAYP \7f2505,81376
+SAVE_VALUEP \7f2510,81475
+FINALIZERP \7f2516,81581
+AUTOLOADP \7f2522,81685
+BUFFER_OBJFWDP \7f2528,81776
+PSEUDOVECTOR_TYPEP \7f2534,81874
+PSEUDOVECTORP \7f2542,82127
+WINDOW_CONFIGURATIONP \7f2558,82479
+PROCESSP \7f2564,82589
+WINDOWP \7f2570,82673
+TERMINALP \7f2576,82755
+SUBRP \7f2582,82841
+COMPILEDP \7f2588,82919
+BUFFERP \7f2594,83005
+CHAR_TABLE_P \7f2600,83087
+SUB_CHAR_TABLE_P \7f2606,83178
+BOOL_VECTOR_P \7f2612,83277
+FRAMEP \7f2618,83370
+IMAGEP \7f2625,83487
+ARRAYP \7f2632,83592
+CHECK_LIST \7f2638,83711
+LISP_MACRO_DEFUN_VOID \7f2643,83792
+CHECK_STRING_CAR \7f2653,84089
+CHECK_CONS \7f2658,84193
+CHECK_VECTOR \7f2663,84273
+CHECK_BOOL_VECTOR \7f2668,84359
+CHECK_VECTOR_OR_STRING \7f2674,84536
+CHECK_ARRAY \7f2683,84710
+CHECK_BUFFER \7f2688,84818
+CHECK_WINDOW \7f2693,84904
+CHECK_PROCESS \7f2699,85010
+CHECK_NATNUM \7f2705,85106
+#define CHECK_RANGED_INTEGER(\7f2710,85183
+#define CHECK_TYPE_RANGED_INTEGER(\7f2721,85566
+#define CHECK_NUMBER_COERCE_MARKER(\7f2729,85836
+XFLOATINT \7f2738,86089
+CHECK_NUMBER_OR_FLOAT \7f2744,86160
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(\7f2749,86259
+CHECK_NUMBER_CAR \7f2760,86669
+CHECK_NUMBER_CDR \7f2768,86791
+#define DEFUN(\7f2803,88386
+#define DEFUN(\7f2812,88854
+FUNCTIONP \7f2822,89209
+enum maxargs\7f2831,89404
+ MANY \7f2833,89421
+ UNEVALLED \7f2834,89436
+#define CALLMANY(\7f2838,89539
+#define CALLN(\7f2844,89892
+#define DEFVAR_LISP(\7f2869,91097
+#define DEFVAR_LISP_NOPRO(\7f2874,91269
+#define DEFVAR_BOOL(\7f2879,91451
+#define DEFVAR_INT(\7f2884,91624
+#define DEFVAR_BUFFER_DEFAULTS(\7f2890,91795
+#define DEFVAR_KBOARD(\7f2896,91999
+typedef jmp_buf sys_jmp_buf;\7f2906,92323
+# define sys_setjmp(\7f2907,92352
+# define sys_longjmp(\7f2908,92387
+typedef sigjmp_buf sys_jmp_buf;\7f2910,92459
+# define sys_setjmp(\7f2911,92491
+# define sys_longjmp(\7f2912,92531
+typedef jmp_buf sys_jmp_buf;\7f2916,92690
+# define sys_setjmp(\7f2917,92719
+# define sys_longjmp(\7f2918,92753
+enum specbind_tag \7f2943,93805
+ SPECPDL_UNWIND,\7f2944,93825
+ SPECPDL_UNWIND_PTR,\7f2945,93894
+ SPECPDL_UNWIND_INT,\7f2946,93945
+ SPECPDL_UNWIND_VOID,\7f2947,93993
+ SPECPDL_BACKTRACE,\7f2948,94047
+ SPECPDL_LET,\7f2949,94105
+ SPECPDL_LET_LOCAL,\7f2951,94235
+ SPECPDL_LET_DEFAULT \7f2952,94292
+union specbinding\7f2955,94364
+ ENUM_BF \7f2957,94386
+ ENUM_BF \7f2959,94443
+ ENUM_BF \7f2964,94573
+ ENUM_BF \7f2969,94696
+ ENUM_BF \7f2974,94814
+ ENUM_BF \7f2978,94919
+ ENUM_BF \7f2983,95094
+enum handlertype \7f3021,96410
+enum handlertype { CATCHER,\7f3021,96410
+enum handlertype { CATCHER, CONDITION_CASE \7f3021,96410
+struct handler\7f3023,96457
+ enum handlertype type;\7f3025,96474
+ Lisp_Object tag_or_ch;\7f3026,96499
+ Lisp_Object val;\7f3027,96524
+ struct handler *next;\7fnext\ 13028,96543
+ struct handler *nextfree;\7fnextfree\ 13029,96567
+ Lisp_Object *bytecode_top;\7fbytecode_top\ 13036,96925
+ int bytecode_dest;\7f3037,96954
+ struct gcpro *gcpro;\7fgcpro\ 13042,97191
+ sys_jmp_buf jmp;\7f3044,97221
+ EMACS_INT lisp_eval_depth;\7f3045,97240
+ ptrdiff_t pdlcount;\7f3046,97269
+ int poll_suppress_count;\7f3047,97291
+ int interrupt_input_blocked;\7f3048,97318
+ struct byte_stack *byte_stack;\7fbyte_stack\ 13049,97349
+#define PUSH_HANDLER(\7f3053,97446
+#define QUIT \7f3101,99223
+#define QUITP \7f3112,99473
+struct gcpro\7f3132,100316
+ struct gcpro *next;\7fnext\ 13134,100331
+ volatile Lisp_Object *var;\7fvar\ 13137,100400
+ ptrdiff_t nvars;\7f3140,100482
+ const char *name;\7fname\ 13144,100567
+ int lineno;\7f3147,100623
+ int idx;\7f3150,100684
+ int level;\7f3153,100720
+#define GC_USE_GCPROS_AS_BEFORE \7f3171,101297
+#define GC_MAKE_GCPROS_NOOPS \7f3172,101332
+#define GC_MARK_STACK_CHECK_GCPROS \7f3173,101364
+#define GC_USE_GCPROS_CHECK_ZOMBIES \7f3174,101401
+#define GC_MARK_STACK \7f3177,101462
+#define BYTE_MARK_STACK \7f3181,101562
+#define GCPRO1(\7f3190,101833
+#define GCPRO2(\7f3191,101873
+#define GCPRO3(\7f3192,101939
+#define GCPRO4(\7f3194,102034
+#define GCPRO5(\7f3196,102154
+#define GCPRO6(\7f3198,102299
+#define GCPRO7(\7f3201,102474
+#define UNGCPRO \7f3202,102553
+#define GCPRO1(\7f3208,102653
+#define GCPRO2(\7f3212,102775
+#define GCPRO3(\7f3217,102967
+#define GCPRO4(\7f3223,103229
+#define GCPRO5(\7f3230,103560
+#define GCPRO6(\7f3238,103961
+#define GCPRO7(\7f3247,104431
+#define UNGCPRO \7f3257,104971
+#define GCPRO1(\7f3263,105065
+#define GCPRO2(\7f3269,105299
+#define GCPRO3(\7f3278,105717
+#define GCPRO4(\7f3289,106274
+#define GCPRO5(\7f3302,106972
+#define GCPRO6(\7f3317,107812
+#define GCPRO7(\7f3334,108793
+#define UNGCPRO \7f3353,109916
+#define RETURN_UNGCPRO(\7f3363,110183
+vcopy \7f3384,110657
+set_hash_key_slot \7f3393,110932
+set_hash_value_slot \7f3399,111071
+set_symbol_function \7f3408,111306
+set_symbol_plist \7f3414,111421
+set_symbol_next \7f3420,111524
+blv_found \7f3428,111697
+set_overlay_plist \7f3437,111880
+string_intervals \7f3445,112031
+set_string_intervals \7f3453,112153
+set_char_table_defalt \7f3462,112355
+set_char_table_purpose \7f3467,112467
+set_char_table_extras \7f3475,112636
+set_char_table_contents \7f3482,112845
+set_sub_char_table_contents \7f3489,113040
+enum Arith_Comparison \7f3497,113303
+ ARITH_EQUAL,\7f3498,113327
+ ARITH_NOTEQUAL,\7f3499,113342
+ ARITH_LESS,\7f3500,113360
+ ARITH_GRTR,\7f3501,113374
+ ARITH_LESS_OR_EQUAL,\7f3502,113388
+ ARITH_GRTR_OR_EQUAL\7f3503,113411
+#define INTEGER_TO_CONS(\7f3511,113762
+#define CONS_TO_INTEGER(\7f3529,114625
+enum { NEXT_ALMOST_PRIME_LIMIT \7f3573,116329
+extern EMACS_INT next_almost_prime \7f3574,116368
+enum constype \7f3739,123820
+enum constype {CONSTYPE_HEAP,\7fCONSTYPE_HEAP\ 13739,123820
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}\7fCONSTYPE_PURE\ 13739,123820
+list2i \7f3745,124010
+list3i \7f3751,124119
+list4i \7f3757,124258
+extern Lisp_Object make_formatted_string \7f3767,124634
+build_pure_c_string \7f3792,125662
+build_string \7f3801,125867
+make_uninit_vector \7f3820,126438
+make_uninit_sub_char_table \7f3833,126657
+#define ALLOCATE_PSEUDOVECTOR(\7f3850,127201
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(\7f3858,127537
+INLINE void \7f3890,128943
+extern void *r_alloc \7fr_alloc\ 13895,129064
+#define FLOAT_TO_STRING_BUFSIZE \7f3927,130527
+intern \7f3968,132134
+intern_c_string \7f3974,132222
+extern _Noreturn void error \7f4034,135601
+fast_string_match_ignore_case \7f4136,140089
+INLINE void fixup_locale \7f4241,143854
+INLINE void synchronize_system_messages_locale \7f4242,143889
+INLINE void synchronize_system_time_locale \7f4243,143946
+#define IS_DAEMON \7f4257,144419
+#define DAEMON_RUNNING \7f4258,144459
+#define IS_DAEMON \7f4261,144558
+#define DAEMON_RUNNING \7f4262,144603
+# define WAIT_READING_MAX \7f4281,145422
+# define WAIT_READING_MAX \7f4283,145494
+extern _Noreturn void emacs_abort \7f4374,148386
+egetenv \7f4532,152809
+#define eabs(\7f4545,153305
+#define make_fixnum_or_float(\7f4550,153438
+enum MAX_ALLOCA \7f4556,153689
+enum MAX_ALLOCA { MAX_ALLOCA \7f4556,153689
+extern void *record_xmalloc \7frecord_xmalloc\ 14558,153734
+#define USE_SAFE_ALLOCA \7f4560,153800
+#define AVAIL_ALLOCA(\7f4564,153933
+#define SAFE_ALLOCA(\7f4568,154044
+#define SAFE_NALLOCA(\7f4576,154385
+#define SAFE_ALLOCA_STRING(\7f4590,154861
+#define SAFE_FREE(\7f4598,155113
+#define SAFE_ALLOCA_LISP(\7f4625,155691
+# define USE_STACK_LISP_OBJECTS \7f4652,156813
+# undef USE_STACK_LISP_OBJECTS\7f4658,156979
+# define USE_STACK_LISP_OBJECTS \7f4659,157010
+enum { defined_GC_CHECK_STRING_BYTES \7f4663,157085
+enum { defined_GC_CHECK_STRING_BYTES \7f4665,157138
+union Aligned_Cons\7f4670,157272
+ struct Lisp_Cons s;\7f4672,157293
+ double d;\7f4673,157315
+ double d; intmax_t i;\7f4673,157315
+ double d; intmax_t i; void *p;\7fp\ 14673,157315
+union Aligned_String\7f4676,157352
+ struct Lisp_String s;\7f4678,157375
+ double d;\7f4679,157399
+ double d; intmax_t i;\7f4679,157399
+ double d; intmax_t i; void *p;\7fp\ 14679,157399
+ USE_STACK_CONS \7f4689,157707
+ USE_STACK_STRING \7f4691,157813
+#define STACK_CONS(\7f4699,158150
+#define AUTO_CONS_EXPR(\7f4701,158247
+#define AUTO_CONS(\7f4709,158610
+#define AUTO_LIST1(\7f4710,158681
+#define AUTO_LIST2(\7f4712,158789
+#define AUTO_LIST3(\7f4716,158944
+#define AUTO_LIST4(\7f4720,159119
+# define verify_ascii(\7f4732,159510
+#define AUTO_STRING(\7f4740,159818
+#define FOR_EACH_TAIL(\7f4752,160282
+#define FOR_EACH_ALIST_VALUE(\7f4766,160773
+maybe_gc \7f4774,161060
+functionp \7f4784,161299
+\f
+c-src/machsyscalls.c,23
+#define SYSCALL(\7f6,113
+\f
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,\7f1,0
+SYSCALL (mach_reply_port,\7f13,314
+SYSCALL (mach_thread_self,\7f18,377
+SYSCALL (mach_task_self,\7f23,441
+SYSCALL (mach_host_self,\7f28,503
+\f
+c-src/h.h,2394
+ ELEM_I/\7fELEM_I\ 13,15
+} Fails_t;\7f5,85
+typedef void Lang_function \7f6,96
+typedef struct tpcmd\7f8,147
+#define ggg \7f10,170
+ } arg;\7f13,198
+tpcmd;\7f15,209
+typedef struct foobar2_ \7f16,216
+ fu int (*funcptr)\7ffuncptr\ 117,242
+ long foo;\7f18,279
+ char bar;\7f19,293
+} foobar2;\7f20,307
+ DEVICE_SWP,\7f23,333
+ DEVICE_LAST\7f24,349
+} bsp_DevId;\7f25,365
+ struct constant_args \7f27,394
+ unsigned int burst;\7f28,419
+ } constant;\7f29,443
+} args;\7f30,457
+typedef int *regset;\7fregset\ 131,465
+typedef int INT;\7f32,486
+typedef union abc\7f33,503
+ int def;\7f35,523
+} ghi1;\7f36,534
+typedef union abc \7f37,542
+ int def;\7f38,562
+} ghi2;\7f39,573
+typedef struct a \7f40,581
+} b;\7f41,600
+#define c(\7f42,605
+typedef struct an_extern_linkage *an_extern_linkage_ptr;\7fan_extern_linkage_ptr\ 143,619
+typedef struct an_extern_linkage \7f44,676
+ kind;\7f46,733
+ is_explicit;\7f49,812
+ a_byte_boolean is_curly_brace_form;\7f54,1009
+} an_extern_linkage;\7f56,1054
+typedef struct pollfd pfdset[\7fpfdset\ 157,1075
+typedef union rtunion_def\7f58,1119
+ int rtint;\7f60,1149
+ char *rtstr;\7frtstr\ 161,1164
+ struct rtx_def *rtx;\7frtx\ 162,1181
+ } womboid \7f63,1206
+typedef union rtunion_def\7f64,1220
+ int rtint;\7f68,1250
+ char *rtstr;\7frtstr\ 169,1263
+ struct rtx_def *rtxp;\7frtxp\ 170,1278
+ struct rtx_def rtxnp;\7f71,1302
+womboid\7f75,1330
+enum {dog,\7fdog\ 181,1416
+enum {dog, cat}\7fcat\ 181,1416
+enum {dog, cat} animals;\7f81,1416
+typedef void (_CALLBACK_ *signal_handler)\7fsignal_handler\ 182,1441
+typedef void (_CALLBACK_ *signal_handler1)\7fsignal_handler1\ 183,1489
+/* comment */ #define ANSIC\7f84,1538
+ #define ANSIC\7f85,1566
+typedef void (proc)\7f87,1588
+typedef void OperatorFun(\7f88,1612
+typedef int f(\7f89,1648
+struct my_struct \7f91,1691
+typedef struct my_struct my_typedef;\7f93,1713
+typedef RETSIGTYPE (*signal_handler_t)\7fsignal_handler_t\ 194,1750
+ Date 04 May 87 235311 PDT \7f96,1802
+typedef unsigned char unchar;\7f99,1880
+typedef int X,\7f100,1910
+typedef int X, Y,\7f100,1910
+typedef int X, Y, Z;\7f100,1910
+typedef mio mao;\7f101,1931
+typedef struct a \7f103,1966
+typedef struct a { } b;\7f103,1966
+typedef struct b\7f104,1990
+} c;\7f106,2009
+int extvar;\7f109,2053
+#define tag1\7f110,2065
+#define aaaaaa \7f111,2078
+#define bbbbbb\\7fbbbbbb\ 1113,2102
+#define cccccccccc\7f115,2125
+#define enter_critical_section \7f116,2144
+#define exit_critical_to_previous \7f117,2199
+#define UNDEFINED\7f118,2259
+struct re_pattern_buffer \7f119,2277
+struct re_pattern_buffer { unsigned char *buffer;\7fbuffer\ 1119,2277
+\f
+cp-src/c.C,2849
+template <typename ipc3dIslandHierarchy,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,\7f1,0
+class CMultiChannelCSC19_3D\7f2,151
+ ipc3dLinkControlSetup setup;\7f5,190
+ ipc3dCSC19<\7fipc3dCSC19\ 16,227
+ ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl> mcCSC;\7f6,227
+ advTimer cscInitTime;\7f7,388
+ advTimer cscSegmentationTime;\7f8,418
+ advTimer outputTime;\7f9,456
+ void execute(\7f11,493
+int main \7f25,1026
+double base \7f26,1088
+typedef struct s1 \7f32,1251
+ int counter;\7f33,1271
+} t1;\7f34,1287
+struct s2 \7f35,1293
+ int counter;\7f36,1305
+typedef struct s2 t2;\7f38,1324
+class A \7f39,1346
+ enum { rosso,\7f40,1356
+ enum { rosso, giallo,\7f40,1356
+ enum { rosso, giallo, verde \7f40,1356
+ enum { rosso, giallo, verde } colori;\7f40,1356
+const A& A::operator+(\7foperator+\ 143,1431
+void operator+(\7f44,1467
+void operator -(\7foperator -\ 145,1495
+void operator int(\7foperator int\ 146,1524
+A<int>* f(\7f48,1556
+int f(\7f49,1571
+int A<int>::f(\7ff\ 150,1590
+A<float,B<int> > A<B<float>,int>::f(\7ff\ 151,1618
+template <class C, int n> class AT \7f52,1668
+template <class C, int n> class AT { C t[\7ft\ 152,1668
+class AU \7f53,1716
+class AU { T x;\7f53,1716
+class B<\7fB\ 154,1735
+class B<int> { void f(\7f54,1735
+const A::B::T& abt \7f55,1766
+class A \7f56,1792
+class A { class B \7f56,1792
+class A \7f57,1827
+ A operator+(\7f59,1861
+is_muldiv_operation(\7f61,1888
+domain foo \7f68,1956
+ void f(\7f69,1969
+void A::A(\7fA\ 172,1990
+struct A \7f73,2005
+struct B \7f74,2023
+void B::B(\7fB\ 175,2042
+void BE_Node::BE_Node(\7fBE_Node\ 176,2057
+class BE_Node \7f77,2084
+struct foo \7f79,2103
+ int x;\7f80,2116
+class test \7f86,2157
+ int f(\7f87,2170
+ int ff(\7f89,2232
+ int g(\7f90,2255
+class AST_Root \7f92,2279
+AST_ConcreteType::AST_ConcreteType(\7f99,2394
+AST_Array::AST_Array(\7f107,2533
+ void f(\7f115,2734
+struct A \7f117,2754
+A::~A(\7f~A\ 1120,2778
+struct B \7f122,2790
+ ~B(\7f123,2801
+enum {dog,\7fdog\ 1126,2818
+enum {dog, cat}\7fcat\ 1126,2818
+enum {dog, cat} animals;\7f126,2818
+struct {int teats;\7f127,2843
+struct {int teats;} cow;\7f127,2843
+class Boo \7f129,2869
+ enum {dog,\7fdog\ 1130,2881
+ enum {dog, cat}\7fcat\ 1130,2881
+ enum {dog, cat} animals;\7f130,2881
+ struct {int treats;\7f131,2910
+ struct {int treats;} cow;\7f131,2910
+ int i,\7f132,2940
+ int i,a,\7f132,2940
+ int i,a,b;\7f132,2940
+ foo(\7f133,2955
+ Boo(\7f137,2996
+Boo::Boo(\7f141,3071
+typedef int should_see_this_one_enclosed_in_extern_C;\7f149,3156
+typedef int (*should_see_this_function_pointer)\7fshould_see_this_function_pointer\ 1153,3229
+typedef int should_see_this_array_type[\7fshould_see_this_array_type\ 1156,3311
+\f
+cp-src/x.cc,63
+class XX\7f1,0
+XX::foo(\7ffoo\ 19,60
+XX::bar(\7fbar\ 115,95
+main(\7f21,126
+\f
+cp-src/burton.cpp,124
+::dummy::dummy test::dummy1(\7fdummy1\ 11,0
+::dummy::dummy test::dummy2(\7fdummy2\ 16,64
+::dummy::dummy test::dummy3(\7fdummy3\ 111,143
+\f
+cp-src/functions.cpp,778
+void Date::setDate \7fsetDate\ 15,148
+void Date::plus \7fplus\ 132,939
+void Date::minus \7fminus\ 142,1229
+void Date::shift \7fshift\ 152,1407
+Date & Date::operator = \7foperator =\ 162,1628
+Date & Date::operator += \7foperator +=\ 169,1789
+Date & Date::operator -= \7foperator -=\ 178,1939
+Date & Date::operator ++ \7foperator ++\ 187,2080
+Date & Date::operator -- \7foperator --\ 196,2216
+int Date::operator - \7foperator -\ 1104,2331
+int Date::operator < \7foperator <\ 1112,2483
+int Date::operator > \7foperator >\ 1116,2557
+int Date::operator == \7foperator ==\ 1120,2631
+ostream& operator << \7foperator <<\ 1124,2707
+istream& operator >> \7foperator >>\ 1133,2943
+bool isLeap \7f159,3543
+bool isHoliday \7f163,3629
+void asort(\7f173,3865
+void ReadVacation \7f186,4064
+void Debug \7f201,4523
+int WorkingDays(\7f211,4867
+Date StartDay(\7f226,5129
+\f
+cp-src/MDiagArray2.h,482
+#define octave_MDiagArray2_h \7f29,870
+#undef LTGT\7f35,967
+#define LTGT\7f39,1031
+#define LTGT \7f42,1051
+class MDiagArray2 \7f78,2022
+ MDiagArray2 \7f82,2077
+ MDiagArray2 \7f86,2154
+ MDiagArray2 \7f87,2198
+ MDiagArray2 \7f88,2254
+ MDiagArray2 \7f89,2329
+ MDiagArray2 \7f90,2387
+ MDiagArray2 \7f91,2450
+ ~MDiagArray2 \7f93,2515
+ MDiagArray2<T>& operator = \7foperator =\ 195,2542
+ operator MArray2<T> \7foperator MArray2<T>\ 1101,2667
+#undef LTGT\7f144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(\7f146,3887
+\f
+cp-src/Range.h,381
+#define octave_Range_h \7f24,765
+Range\7f35,891
+ Range \7f39,909
+ Range \7f42,995
+ Range \7f46,1130
+ Range \7f50,1248
+ double base \7f54,1376
+ double limit \7f55,1425
+ double inc \7f56,1475
+ int nelem \7f57,1523
+ void set_base \7f68,1728
+ void set_limit \7f69,1774
+ void set_inc \7f70,1821
+ double rng_base;\7f79,2023
+ double rng_limit;\7f80,2042
+ double rng_inc;\7f81,2062
+ int rng_nelem;\7f83,2081
+\f
+cp-src/screen.cpp,228
+unsigned char cursor_x,\7f15,548
+unsigned char cursor_x, cursor_y;\7f15,548
+static union REGS regs;\7f16,582
+void goto_xy(\7f18,607
+void hide_cursor(\7f27,774
+void cursor_position(\7f32,836
+void clear_screen(\7f41,997
+void write_xyc(\7f55,1247
+\f
+cp-src/screen.hpp,414
+#define __COLORS\7f9,401
+enum COLORS \7f11,419
+ BLACK,\7f12,433
+ BLUE,\7f13,471
+ GREEN,\7f14,481
+ CYAN,\7f15,492
+ RED,\7f16,502
+ MAGENTA,\7f17,511
+ BROWN,\7f18,524
+ LIGHTGRAY,\7f19,535
+ DARKGRAY,\7f20,550
+ LIGHTBLUE,\7f21,589
+ LIGHTGREEN,\7f22,604
+ LIGHTCYAN,\7f23,620
+ LIGHTRED,\7f24,635
+ LIGHTMAGENTA,\7f25,649
+ YELLOW,\7f26,667
+ WHITE\7f27,679
+#define SCREEN_FP(\7f31,700
+#define SCREEN_START \7f33,795
+\f
+cp-src/conway.cpp,288
+#define max(\7f12,357
+#define min(\7f13,393
+const int num_rows \7f15,430
+const int num_columns \7f16,470
+class site *field_of_play[\7ffield_of_play\ 118,499
+int site::total_surrounding(\7ftotal_surrounding\ 120,550
+void display(\7f37,958
+void glider(\7f50,1239
+void traffic_light(\7f59,1478
+void main(\7f67,1633
+\f
+cp-src/conway.hpp,271
+class site:\7fsite\ 15,235
+ char x,\7f7,269
+ char x, y,\7f7,269
+ char x, y, alive,\7f7,269
+ char x, y, alive, next_alive;\7f7,269
+ site(\7f10,344
+ char read(\7f12,410
+ void set(\7f13,444
+ void clear(\7f14,478
+ void compute_next_state(\7f15,514
+ void step(\7f22,717
+\f
+cp-src/clheir.cpp,359
+const int max_num_generic_objects \7f9,298
+generic_object * object_registry[\7fobject_registry\ 110,340
+void init_registry(\7f12,400
+void step_everybody(\7f19,527
+void discrete_location::clear_neighbors(\7fclear_neighbors\ 131,852
+generic_object::generic_object(\7fgeneric_object\ 136,981
+generic_object::~generic_object(\7f~generic_object\ 148,1255
+void agent::move(\7fmove\ 153,1353
+\f
+cp-src/clheir.hpp,682
+class generic_object\7f13,520
+ int where_in_registry;\7f15,547
+ virtual void compute_next_state(\7f21,843
+ virtual void step(\7f22,889
+const int max_num_directions \7f31,1220
+class location:\7flocation\ 133,1290
+ location(\7f43,1643
+class irregular_location:\7firregular_location\ 147,1687
+ double x,\7f49,1735
+ double x, y,\7f49,1735
+ double x, y, z;\7f49,1735
+ irregular_location(\7f51,1763
+class discrete_location:\7fdiscrete_location\ 156,1890
+ int x,\7f58,1937
+ int x, y,\7f58,1937
+ int x, y, z;\7f58,1937
+ class location *neighbors[\7fneighbors\ 159,1954
+ discrete_location(\7f62,2045
+ void assign_neighbor(\7f66,2185
+class agent:\7fagent\ 175,2509
+ location *where;\7fwhere\ 177,2550
+\f
+cp-src/fail.C,330
+struct A \7f7,263
+ struct B \7f8,274
+ struct C \7f9,289
+ int x;\7f10,305
+ C(\7f11,318
+ operator int(\7foperator int\ 112,342
+ typedef C T;\7f14,389
+ typedef B T2;\7f16,414
+class A \7f23,453
+ class B \7f24,463
+ class C \7f25,474
+ int f(\7f26,488
+int A::B::f(\7ff\ 131,521
+main(\7f37,571
+ class D \7f41,622
+ D(\7f43,659
+ int x;\7f44,694
+\f
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch \7f1,0
+(defalias 'pending-delete-mode \7fpending-delete-mode\ 15,102
+(defalias (quote explicitly-quoted-pending-delete-mode)\7f8,175
+\f
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name \7f34,1034
+(defgroup etags \7f43,1498
+(defcustom tags-case-fold-search \7f47,1566
+(defcustom tags-table-list \7f59,2051
+(defcustom tags-compression-info-list\7f69,2449
+(defcustom tags-add-tables \7f88,3231
+(defcustom tags-revert-without-query \7f98,3627
+(defvar tags-table-computed-list \7f103,3778
+(defvar tags-table-computed-list-for \7f112,4262
+(defvar tags-table-list-pointer \7f117,4510
+(defvar tags-table-list-started-at \7f121,4701
+(defvar tags-table-set-list \7f124,4821
+(defcustom find-tag-hook \7f129,5000
+(defcustom find-tag-default-function \7f137,5263
+(define-obsolete-variable-alias 'find-tag-marker-ring-length\7ffind-tag-marker-ring-length\ 1145,5602
+(defcustom tags-tag-face \7f148,5699
+(defcustom tags-apropos-verbose \7f154,5834
+(defcustom tags-apropos-additional-actions \7f160,5998
+(defvaralias 'find-tag-marker-ring \7ffind-tag-marker-ring\ 1183,6917
+(defvar default-tags-table-function \7f189,7097
+(defvar tags-location-ring \7f194,7323
+(defvar tags-table-files \7f201,7599
+(defvar tags-completion-table \7f206,7766
+(defvar tags-included-tables \7f209,7858
+(defvar next-file-list \7f212,7953
+(defvar tags-table-format-functions \7f217,8059
+(defvar file-of-tag-function \7f224,8440
+(defvar tags-table-files-function \7f228,8634
+(defvar tags-completion-table-function \7f230,8745
+(defvar snarf-tag-function \7f232,8840
+(defvar goto-tag-location-function \7f236,9049
+(defvar find-tag-regexp-search-function \7f239,9222
+(defvar find-tag-regexp-tag-order \7f241,9343
+(defvar find-tag-regexp-next-line-after-failure-p \7f243,9452
+(defvar find-tag-search-function \7f245,9572
+(defvar find-tag-tag-order \7f247,9679
+(defvar find-tag-next-line-after-failure-p \7f249,9774
+(defvar list-tags-function \7f251,9880
+(defvar tags-apropos-function \7f253,9968
+(defvar tags-included-tables-function \7f255,10062
+(defvar verify-tags-table-function \7f257,10181
+(defun initialize-new-tags-table \7f260,10292
+(defun tags-table-mode \7f276,10980
+(defun visit-tags-table \7f285,11245
+(defun tags-table-check-computed-list \7f321,12783
+(defun tags-table-extend-computed-list \7f360,14654
+(defun tags-expand-table-name \7f400,16367
+(defun tags-table-list-member \7f409,16710
+(defun tags-verify-table \7f421,17182
+(defun tags-table-including \7f470,19302
+(defun tags-next-table \7f522,21346
+(defun visit-tags-table-buffer \7f543,22203
+(defun tags-reset-tags-tables \7f712,28513
+(defun file-of-tag \7f731,29170
+(defun tags-table-files \7f740,29519
+(defun tags-included-tables \7f749,29869
+(defun tags-completion-table \7f755,30115
+(defun tags-lazy-completion-table \7f783,31309
+(defun tags-completion-at-point-function \7f799,31944
+(defun find-tag-tag \7f818,32694
+(defvar last-tag \7f837,33367
+(defun find-tag-interactive \7f840,33426
+(defvar find-tag-history \7f852,33841
+(defun find-tag-noselect \7f860,34011
+(defun find-tag \7f932,37125
+(defun find-tag-other-window \7f959,38341
+(defun find-tag-other-frame \7f1000,40269
+(defun find-tag-regexp \7f1025,41443
+(defalias 'pop-tag-mark \7fpop-tag-mark\ 11049,42605
+(defvar tag-lines-already-matched \7f1052,42656
+(defun find-tag-in-order \7f1055,42763
+(defun tag-find-file-of-tag-noselect \7f1167,47109
+(defun tag-find-file-of-tag \7f1200,48955
+(defun etags-recognize-tags-table \7f1208,49181
+(defun etags-verify-tags-table \7f1241,50812
+(defun etags-file-of-tag \7f1246,51010
+(defun etags-tags-completion-table \7f1256,51345
+(defun etags-snarf-tag \7f1286,52551
+(defun etags-goto-tag-location \7f1324,54120
+(defun etags-list-tags \7f1388,56563
+(defmacro tags-with-face \7f1423,57838
+(defun etags-tags-apropos-additional \7f1431,58171
+(defun etags-tags-apropos \7f1465,59408
+(defun etags-tags-table-files \7f1527,61617
+(defun etags-tags-included-tables \7f1542,62053
+(defun tags-recognize-empty-tags-table \7f1559,62593
+(defun tag-exact-file-name-match-p \7f1587,63739
+(defun tag-file-name-match-p \7f1596,64132
+(defun tag-exact-match-p \7f1609,64688
+(defun tag-implicit-name-match-p \7f1620,65256
+(defun tag-symbol-match-p \7f1633,65856
+(defun tag-word-match-p \7f1643,66292
+(defun tag-partial-file-name-match-p \7f1652,66690
+(defun tag-any-match-p \7f1662,67134
+(defun tag-re-match-p \7f1667,67318
+(defcustom tags-loop-revert-buffers \7f1675,67567
+(defun next-file \7f1685,67976
+(defvar tags-loop-operate \7f1760,70890
+(defvar tags-loop-scan\7f1763,70984
+(defun tags-loop-eval \7f1771,71313
+(defun tags-loop-continue \7f1782,71642
+(defun tags-search \7f1850,73948
+(defun tags-query-replace \7f1871,74774
+(defun tags-complete-tags-table-file \7f1896,75998
+(defun list-tags \7f1906,76377
+(defun tags-apropos \7f1934,77330
+(define-button-type 'tags-select-tags-table\7ftags-select-tags-table\ 11957,78156
+(defun select-tags-table \7f1964,78395
+(defvar select-tags-table-mode-map \7f2019,80522
+(define-derived-mode select-tags-table-mode \7f2030,80905
+(defun select-tags-table-select \7f2034,81089
+(defun select-tags-table-quit \7f2043,81455
+(defun complete-tag \7f2049,81610
+(defconst etags--xref-limit \7f2074,82551
+(defvar etags-xref-find-definitions-tag-order \7f2076,82586
+(defun etags-xref-find \7f2082,82876
+(defun etags--xref-find-definitions \7f2096,83405
+(defclass xref-etags-location \7f2129,85119
+(defun xref-make-etags-location \7f2135,85342
+(cl-defmethod xref-location-marker \7f2139,85497
+(cl-defmethod xref-location-line \7f2146,85741
+\f
+erl-src/gs_dialog.erl,98
+-define(VERSION\7f2,32
+behaviour_info(\7f51,2177
+show(\7f124,5458
+dialog_loop(\7f219,9529
+test(\7f252,10806
+\f
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+forth-src/test-forth.fth,408
+: a-forth-word \7f20,301
+99 constant a-forth-constant!\7f22,343
+55 value a-forth-value?\7f23,373
+create :a-forth-dictionary-entry\7f24,397
+defer #a-defer-word\7f27,460
+: (another-forth-word)\7f(another-forth-word\ 129,481
+ 9 field >field1\7f36,582
+ 5 field >field2\7f37,605
+constant (a-forth-constant\7f(a-forth-constant\ 138,628
+2000 buffer: #some-storage\7f41,657
+code assemby-code-word \7f43,685
+: a-forth-word \7f50,870
+\f
+go-src/test.go,48
+package main\7f1,0
+func say(\7f5,28
+func main(\7f9,72
+\f
+go-src/test1.go,172
+package main\7f1,0
+type plus \7f5,28
+type str \7f9,65
+type intNumber \7f13,99
+func (s str) PrintAdd(\7f17,136
+func (n intNumber) PrintAdd(\7f21,189
+func test(\7f25,248
+func main(\7f29,285
+\f
+html-src/softwarelibero.html,200
+Cos'è il software libero?\7f4,38
+Licenze d'uso di un programma\7flicenze\ 165,2500
+Sfatiamo alcuni miti\7f138,6118
+Il movimento open source\7foss\ 1191,8037
+Impatto pratico del software libero\7fimpatto\ 1231,10066
+\f
+html-src/index.shtml,104
+ \7f8,281
+In evidenza\7f15,447
+Comunicati e iniziative\7f32,976
+Ultime notizie dall'associazione\7f63,2030
+\f
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms\7f7,277
+Description\7falgorithms\ 110,481
+Generating the Data\7fgenalgorithm\ 148,1995
+Convolutionally\7fconalgorithm\ 155,2512
+Next\7fstatetable\ 1262,11587
+Output\7foutputtable\ 1350,13915
+Mapping the Channel Symbols\7fmapping\ 1433,16213
+Adding Noise to the\7faddnoise\ 1439,16607
+Quantizing the Received\7fquantizing\ 1469,19100
+\f
+html-src/software.html,439
+Francesco Potortì Software Page\7f9,280
+Software that I wrote for supporting my research activity\7fsimulation\ 136,1398
+MTG\7fmtg\ 141,1482
+Fracas\7ffracas\ 165,2624
+GaliLEO\7fgalileo\ 1101,4232
+Leasqr\7fleasqr\ 1114,4677
+Free software that I wrote for the GNU project or for my personal or work\7fgnu\ 1142,6065
+Etags\7fetags\ 1148,6180
+checkiso\7f161,6729
+cgrep\7f178,7547
+debian-bug.el\7fdebian-bug\ 1190,7979
+tcpdump\7f205,8564
+Links to interesting software\7flinks\ 1216,8891
+\f
+lua-src/allegro.lua,400
+local function get_layer_by_name \7f7,175
+local function count_layers \7f33,621
+function GetLayerByName \7f54,980
+function GetUniqueLayerName \7f65,1204
+function SelectLayer \7f76,1415
+function NewLayer \7f86,1773
+function NewLayerSet \7f144,3226
+function RemoveLayer \7f170,3750
+function MoveLayerTop \7f211,4767
+function MoveLayerBottom \7f223,5079
+function MoveLayerBefore \7f236,5457
+function MoveLayerAfter \7f258,6090
+\f
+lua-src/test.lua,442
+function Rectangle.getPos \7f2,15
+function Rectangle.getPos \7fgetPos\ 12,15
+function Circle.getPos \7f6,61
+function Circle.getPos \7fgetPos\ 16,61
+function Cube.data.getFoo \7f10,102
+function Cube.data.getFoo \7fgetFoo\ 110,102
+function Square.something:Bar \7f14,148
+function Square.something:Bar \7fBar\ 114,148
+ function test.me_22a(\7f22,241
+ function test.me_22a(\7fme_22a\ 122,241
+ local function test.me22b \7f25,297
+ local function test.me22b \7fme22b\ 125,297
+\f
+make-src/Makefile,2175
+LATEST=\7f1,0
+RELEASELIST=\7f2,10
+ADASRC=\7f4,104
+ASRC=\7f5,171
+CSRC=\7f6,197
+CPSRC=\7f10,423
+ELSRC=\7f13,614
+ERLSRC=\7f14,661
+FORTHSRC=\7f15,702
+FSRC=\7f16,726
+HTMLSRC=\7f17,776
+JAVASRC=\7f18,844
+LUASRC=\7f19,907
+MAKESRC=\7f20,926
+OBJCSRC=\7f21,943
+OBJCPPSRC=\7f22,999
+PASSRC=\7f23,1035
+PERLSRC=\7f24,1053
+PHPSRC=\7f25,1108
+PSSRC=\7f26,1156
+PROLSRC=\7f27,1173
+PYTSRC=\7f28,1210
+TEXSRC=\7f29,1227
+YSRC=\7f30,1282
+SRCS=\7f31,1325
+NONSRCS=\7f35,1577
+VHDLFLAGS=\7f37,1624
+COBOLFLAGS=\7f38,1827
+POSTSCRIPTFLAGS=\7f39,1889
+TCLFLAGS=\7f40,1943
+GETOPTOBJS=\7f42,2002
+RXINCLUDE=\7f43,2034
+REGEXOBJS=\7f44,2056
+CHECKOBJS=\7f46,2075
+CHECKFLAGS=\7f47,2105
+OBJS=\7f48,2145
+CPPFLAGS=\7f49,2190
+LDFLAGS=\7f50,2259
+WARNINGS=\7f51,2282
+CFLAGS=\7f52,2466
+FASTCFLAGS=\7f55,2530
+FASTCFLAGSWARN=\7f56,2591
+FILTER=\7f58,2641
+REGEX=\7f59,2695
+xx=\7f60,2741
+MAKE:\7fMAKE\ 162,2790
+RUN=\7f63,2825
+RUN=\7f64,2865
+OPTIONS=\7f65,2870
+ARGS=\7f66,2922
+infiles \7f68,2940
+quiettest:\7fquiettest\ 170,3002
+test:\7ftest\ 179,3409
+${CHECKOBJS}:\7f${CHECKOBJS}\ 188,3805
+checker:\7fchecker\ 190,3849
+standalone:\7fstandalone\ 196,4062
+prof:\7fprof\ 1101,4168
+fastetags:\7ffastetags\ 1104,4198
+fastctags:\7ffastctags\ 1108,4322
+staticetags:\7fstaticetags\ 1112,4446
+rsynctofly:\7frsynctofly\ 1116,4608
+rsyncfromfly:\7frsyncfromfly\ 1119,4698
+web ftp publish:\7fweb ftp publish\ 1122,4794
+release distrib:\7frelease distrib\ 1129,5115
+tags:\7ftags\ 1134,5255
+clean:\7fclean\ 1136,5267
+srclist:\7fsrclist\ 1139,5302
+regexfile:\7fregexfile\ 1143,5391
+/home/www/pub/etags.c.gz:\7f/home/www/pub/etags.c.gz\ 1149,5566
+/home/www/pub/software/unix/etags.tar.gz:\7f/home/www/pub/software/unix/etags.tar.gz\ 1156,5825
+regex.o:\7fregex.o\ 1159,6031
+getopt.o:\7fgetopt.o\ 1162,6086
+getopt1.o:\7fgetopt1.o\ 1165,6147
+etags:\7fetags\ 1168,6210
+ctags:\7fctags\ 1171,6299
+man manpage:\7fman manpage\ 1174,6396
+etags.1.man:\7fetags.1.man\ 1176,6422
+maintaining.info:\7fmaintaining.info\ 1179,6475
+TAGS:\7fTAGS\ 1182,6557
+%ediff:\7f%ediff\ 1185,6587
+oediff:\7foediff\ 1188,6677
+%cdiff:\7f%cdiff\ 1191,6764
+xdiff:\7fxdiff\ 1194,6854
+ETAGS:\7fETAGS\ 1197,6942
+ETAGS%:\7fETAGS%\ 1200,7012
+ETAGS13 ETAGS14 ETAGS15:\7fETAGS13 ETAGS14 ETAGS15\ 1203,7084
+ETAGS12:\7fETAGS12\ 1206,7216
+OTAGS:\7fOTAGS\ 1209,7304
+CTAGS:\7fCTAGS\ 1212,7369
+CTAGS%:\7fCTAGS%\ 1215,7443
+CTAGS13 CTAGS14 CTAGS15:\7fCTAGS13 CTAGS14 CTAGS15\ 1218,7545
+EXTAGS:\7fEXTAGS\ 1221,7680
+.PRECIOUS:\7f.PRECIOUS\ 1224,7838
+FRC:\7fFRC\ 1226,7894
+\f
+objc-src/Subprocess.h,98
+#define Subprocess \7f41,1217
+#define BUFFERSIZE \7f43,1267
+@interface Subprocess:\7fSubprocess\ 145,1292
+\f
+objc-src/Subprocess.m,446
+#define PTY_TEMPLATE \7f20,494
+#define PTY_LENGTH \7f21,528
+@interface Subprocess(Private)\7f32,737
+- childDidExit\7f39,851
+- fdHandler:\7ffdHandler\ 167,1589
+showError \7f98,2360
+fdHandler \7f112,2785
+getptys \7f119,2907
+- init:\7finit\ 1183,4815
+ andStdErr:\7finit\ 1197,5147
+- send:(const char *)string withNewline:\7fsend\ 1300,7436
+- send:\7fsend\ 1308,7599
+- terminateInput\7f314,7689
+- terminate:\7fterminate\ 1321,7810
+- setDelegate:\7fsetDelegate\ 1332,7961
+- delegate\7f338,8031
+\f
+objc-src/PackInsp.h,109
+#define NUMSTATS \7f36,1101
+#define TYPESTOSTAT \7f37,1120
+@interface PackageInspector:\7fPackageInspector\ 139,1172
+\f
+objc-src/PackInsp.m,1322
+static const char RCSid[\7fRCSid\ 130,1032
+#define VERSION \7f34,1116
+# define DEBUG \7f37,1155
+#define LISTCONTENTS \7f39,1181
+#define OPENBUTTON \7f47,1352
+#define LISTCONTENTSBUTTON \7f48,1449
+#define LISTDESCRIPTIONBUTTON \7f49,1562
+#define STATE_UNINSTALLED \7f52,1687
+#define STATE_INSTALLED \7f53,1807
+#define STATE_COMPRESSD \7f54,1948
+#define SIZEFORMAT \7f57,2152
+#define KBYTES \7f58,2362
+#define MBYTES \7f59,2473
+#define LOCALIZE(\7f61,2585
+#define LOCALIZE_ARCH(\7f62,2668
++new\7fnew\ 167,2802
+-showInfo:\7fshowInfo\ 193,3417
+-revert:\7frevert\ 1107,3737
+-ok:\7fok\ 1136,4297
+-load\7fload\ 1143,4424
+#define LOOKUP(\7f156,4826
+#undef LOOKUP\7f176,5694
+-loadKeyValuesFrom:(const char *)type inTable:\7floadKeyValuesFrom\ 1186,5852
+-loadContentsOf:(const char *)type inTable:\7floadContentsOf\ 1238,7079
+-loadImage\7floadImage\ 1257,7552
+#define STAT_EQ(\7f275,7940
+-(BOOL)shouldLoad\7f280,8116
+-toggleDescription\7ftoggleDescription\ 1301,8626
+-(const char *)getPath:(char *)buf forType:\7fgetPath\ 1317,8899
+-setRevertButtonTitle\7fsetRevertButtonTitle\ 1333,9320
+-(const char *)formatSize:(const char *)size inBuf:\7fformatSize\ 1344,9525
+#define WORKING \7f368,10045
+-(void)getArchs\7f370,10100
+-(void)addArchs:\7faddArchs\ 1385,10520
+-subprocess:(Subprocess *)sender output:\7fsubprocess\ 1428,11351
+-subprocessDone:\7fsubprocessDone\ 1436,11484
+static void openInWorkspace(\7f446,11634
+-open:\7fopen\ 1464,12063
+\f
+objcpp-src/SimpleCalc.H,41
+@interface SimpleCalc:\7fSimpleCalc\ 114,400
+\f
+objcpp-src/SimpleCalc.M,445
+- init\7f52,1747
+- appendToDisplay:\7fappendToDisplay\ 160,1933
+- registerAction:\7fregisterAction\ 170,2210
+- decimalKey:\7fdecimalKey\ 177,2348
+- numberKeys:\7fnumberKeys\ 191,2661
+- equalsKey:\7fequalsKey\ 1112,3192
+- operationKeys:\7foperationKeys\ 1131,3680
+- clearKey:\7fclearKey\ 1153,4301
+- clearAllKey:\7fclearAllKey\ 1160,4410
+- appDidInit:\7fappDidInit\ 1168,4591
+- windowWillClose:\7fwindowWillClose\ 1178,4882
+- infoPanel:\7finfoPanel\ 1186,5132
+- helpPanel:\7fhelpPanel\ 1198,5482
+\f
+pas-src/common.pas,1875
+procedure InitializeStringPackage;\7f26,527
+function newtextstring;\7f34,874
+procedure disposetextstring;\7f52,1404
+function ConcatT;\7f78,2066
+function AppendTextString;\7f112,3238
+function CopyTextString;\7f132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;\7f151,4505
+procedure append_string;\7f172,5166
+function To_Upper;\7f186,5462
+function To_Lower;\7f194,5617
+function EmptyNmStr(\7f209,6213
+function chartonmstr;\7f219,6436
+function LowerCaseNmStr;\7f230,6682
+function concatenatenamestrings;\7f242,7007
+procedure writenamestring;\7f263,7517
+function IsControlChar;\7f277,7928
+function namestringequal;\7f283,8079
+function NameStringLess;\7f302,8539
+function IsControlCharName(\7f343,9710
+function SubString;\7f358,10208
+function SkipChars;\7f379,10791
+function RemoveUnderlineControl;\7f397,11311
+procedure First100Chars;\7f427,12162
+procedure SkipSpaces;\7f462,13298
+function SkipBlanks;\7f477,13782
+function stripname;\7f505,14595
+function Locate;\7f522,15039
+function NameHasChar;\7f543,15581
+function integertonmstr;\7f561,16134
+function NmStrToInteger;\7f585,16901
+function AddNullToNmStr;\7f600,17317
+function ValToNmStr;\7f611,17585
+function ChangeFileType;\7f625,18037
+function StripPath;\7f647,18734
+function ReprOfChar;\7f675,19343
+procedure ExtractCommentInfo;\7f702,20749
+procedure INSERT_TREE_NODE;\7f784,24053
+function GetNameList;\7f920,27926
+procedure DisposeANameList(\7f925,28010
+procedure DisposeNameList;\7f938,28340
+function GetNewNameListNode;\7f943,28409
+function insertname;\7f972,29051
+procedure InitNameList;\7f988,29471
+procedure InitNameStringPool;\7f998,29767
+procedure NewNameString;\7f1004,29867
+procedure ReleaseNameString;\7f1022,30232
+procedure SDTrefStringToRec \7f1045,30741
+procedure SDTrefSkipSpaces;\7f1059,31092
+function SDTrefIsEnd \7f1070,31323
+function SDTrefGetInteger \7f1082,31529
+procedure SDTrefRecToString \7f1303,37546
+function NmStrToErrStr;\7f1497,42305
+function ErrStrToNmStr;\7f1509,42557
+function GetTextRef;\7f1529,43112
+\f
+php-src/lce_functions.php,2864
+ define("LCE_FUNCTIONS"\7fLCE_FUNCTIONS\ 14,38
+ define("LCE_UNKNOWN"\7fLCE_UNKNOWN\ 19,145
+ define("LCE_WS"\7fLCE_WS\ 111,194
+ define("LCE_COMMENT"\7fLCE_COMMENT\ 113,244
+ define("LCE_COMMENT_USER"\7fLCE_COMMENT_USER\ 115,303
+ define("LCE_COMMENT_TOOL"\7fLCE_COMMENT_TOOL\ 117,366
+ define("LCE_MSGID"\7fLCE_MSGID\ 119,430
+ define("LCE_MSGSTR"\7fLCE_MSGSTR\ 121,488
+ define("LCE_TEXT"\7fLCE_TEXT\ 123,541
+ define("STATE_ABORT"\7fSTATE_ABORT\ 125,567
+ define("STATE_OK"\7fSTATE_OK\ 126,595
+ define("STATE_LOOP"\7fSTATE_LOOP\ 127,620
+ class POEntryAD \7f29,648
+ function validate(\7f31,683
+ function checkQuotation(\7f59,1384
+ class CommentAD \7f70,1639
+ var $prefix;\7f72,1674
+ function CommentAD(\7f73,1693
+ function validate(\7f83,1944
+ class POEntry \7f105,2410
+ var $msgid;\7f107,2454
+ var $msgstr;\7f108,2472
+ var $user_comment;\7f109,2491
+ var $sys_comment;\7f110,2516
+ var $unk_comment;\7f111,2540
+ var $msgid_lc \7f113,2565
+ var $msgstr_lc \7f114,2590
+ var $user_comment_lc \7f115,2616
+ var $sys_comment_lc \7f116,2648
+ var $unk_comment_lc \7f117,2679
+ function POEntry(\7f119,2711
+ function lineCount(\7f135,3255
+ function serializeToVars(\7f141,3365
+ function write(\7f151,3800
+ class POReader \7f163,4178
+ var $msgid;\7f165,4223
+ var $msgstr;\7f166,4241
+ var $user_comment;\7f167,4260
+ var $sys_comment;\7f168,4285
+ var $unk_comment;\7f169,4309
+ var $state;\7f170,4333
+ var $ignore_ws;\7f171,4351
+ var $po_entries;\7f172,4373
+ var $poe_num;\7f173,4396
+ var $filename;\7f174,4416
+ var $domain;\7f175,4437
+ function gettext(\7f177,4457
+ function parseFromVars(\7f189,4705
+ function serializeToVars(\7f215,5331
+ function POReader(\7f229,5613
+ function read(\7f243,5983
+ function write(\7f259,6307
+ function isComment(\7f277,6645
+ function comment(\7f284,6822
+ function msgid(\7f304,7247
+ function msgstr(\7f320,7574
+ function start(\7f340,8232
+ function createPOEntries(\7f360,8644
+ function stripLine(\7f394,9472
+ function printClassification(\7f421,10056
+ function classifyLine(\7f432,10301
+ function getTextDomains(\7f471,11094
+ class PORManager \7f498,11756
+ var $por_a;\7f500,11803
+ function PORManager(\7f502,11822
+ function addPOReader(\7f507,11896
+ function &getPOReader(\7fgetPOReader\ 1512,11992
+ function getDomainNames(\7f517,12081
+ function &loadPORManager(\7floadPORManager\ 1523,12174
+ function fileJoin(\7f536,12436
+ function lce_bindtextdomain(\7f557,12839
+ function lce_textdomain(\7f614,14530
+ function lce_gettext(\7f620,14641
+ function lce_dgettext(\7f626,14767
+ function lce(\7f634,14966
+ function lce_bindtextdomain(\7f651,15488
+ function lce_textdomain(\7f656,15592
+ function lce_gettext(\7f661,15674
+ function lce_dgettext(\7f666,15755
+ function lce(\7f670,15855
+ function lce_geteditcode(\7f676,15898
+\f
+php-src/ptest.php,135
+define("TEST"\7fTEST\ 11,0
+test \7f4,26
+ var $member;\7f8,71
+ var $memassign=\7f9,85
+ var $memassign_space \7f10,110
+ var $test\7f12,176
+foo(\7f16,200
+\f
- sub read_toc \7fmain::read_toc\ 1165,3917
++perl-src/htlmify-cystic,1197
+my @section_name;\7fsection_name\ 112,236
+my @appendix_name;\7fappendix_name\ 113,254
+my @section_toc;\7fsection_toc\ 115,274
+my @appendix_toc;\7fappendix_toc\ 116,291
+my $new_tag \7fnew_tag\ 118,310
+my $appendix;\7fappendix\ 124,409
+my $section;\7fsection\ 125,423
+my $subsection;\7fsubsection\ 126,436
+my $subsubsection;\7fsubsubsection\ 127,452
+my $this_file_toc \7fthis_file_toc\ 129,472
+my %file_tocs;\7ffile_tocs\ 130,496
+my @output_files \7foutput_files\ 132,512
+my $file_index \7ffile_index\ 133,535
+my $output_file;\7foutput_file\ 135,556
+my $line;\7fline\ 137,574
+my $subsection_marker;\7fsubsection_marker\ 1161,3883
+my $new;\7fnew\ 1163,3907
- sub finish_subsubsections \7fmain::finish_subsubsections\ 1302,7805
- sub finish_subsections \7fmain::finish_subsections\ 1309,7987
- sub finish_sections \7fmain::finish_sections\ 1320,8310
- sub finish_appendices \7fmain::finish_appendices\ 1331,8599
- sub section_url_base \7fmain::section_url_base\ 1337,8724
- sub section_url_name \7fmain::section_url_name\ 1342,8922
- sub section_url \7fmain::section_url\ 1355,9284
++sub read_toc \7f165,3917
+ my $entry \7fentry\ 1218,5621
+ my $entry \7fentry\ 1234,6077
+ my $entry \7fentry\ 1245,6351
+ my $entry \7fentry\ 1252,6536
+ my $entry \7fentry\ 1268,7010
+ my $entry \7fentry\ 1276,7204
+ my $entry \7fentry\ 1281,7328
+ my $entry \7fentry\ 1296,7698
- sub section_href \7fmain::section_href\ 1364,9452
- sub section_name \7fmain::section_name\ 1368,9551
- sub toc_line \7fmain::toc_line\ 1372,9655
- sub file_end \7fmain::file_end\ 1375,9750
++sub finish_subsubsections \7f302,7805
++sub finish_subsections \7f309,7987
++sub finish_sections \7f320,8310
++sub finish_appendices \7f331,8599
++sub section_url_base \7f337,8724
++sub section_url_name \7f342,8922
++sub section_url \7f355,9284
+ my $name \7fname\ 1357,9336
- perl-src/yagrip.pl,258
- sub getopt \7fmain::getopt\ 17,156
++sub section_href \7f364,9452
++sub section_name \7f368,9551
++sub toc_line \7f372,9655
++sub file_end \7f375,9750
+\f
- sub usage \7fmain::usage\ 138,856
++perl-src/yagrip.pl,233
++sub getopt \7f7,156
+ local($_,$flag,$opt,$f,$r,@temp)\7f($_,$flag,$opt,$f,$r,@temp\ 18,169
- perl-src/kai-test.pl,244
- sub f1 \7fmain::f1\ 12,16
- sub main::f2 \7f6,50
++sub usage \7f38,856
+ local($prog,$_,@list)\7f($prog,$_,@list\ 139,868
+ local($string,$flag,@string,@temp,@last)\7f($string,$flag,@string,@temp,@last\ 140,897
+\f
- sub f3 \7fFoo::f3\ 112,104
- sub Bar::f4 \7f16,138
++perl-src/kai-test.pl,203
++sub f1 \7f2,16
++sub main::f2 \7ff2\ 16,50
+package Foo;\7f10,90
- sub f5 \7fBar::f5\ 122,191
++sub f3 \7f12,104
++sub Bar::f4 \7ff4\ 116,138
+package Bar;\7f20,177
- sub f6 \7fFoo::Bar::f6\ 128,244
++sub f5 \7f22,191
+package Foo::Bar;\7f26,225
- sub f7 \7fmain::f7\ 134,293
++sub f6 \7f28,244
+package main;\7f32,278
++sub f7 \7f34,293
+\f
+ps-src/rfc1245.ps,2478
+/FMversion \7f12,311
+/FrameDict \7f17,500
+/FMVERSION \7f47,1307
+/FMLOCAL \7f56,1494
+/FMDOCUMENT \7f73,1766
+/FMBEGINPAGE \7f95,2279
+/FMENDPAGE \7f109,2516
+/FMDEFINEFONT \7f115,2582
+/FMNORMALIZEGRAPHICS \7f126,2725
+/FMBEGINEPSF \7f142,2955
+/FMENDEPSF \7f153,3207
+/setmanualfeed \7f158,3283
+/max \7f163,3386
+/min \7f164,3426
+/inch \7f165,3466
+/pagedimen \7f166,3485
+/setpapername \7f172,3629
+/papersize \7f190,4214
+/manualpapersize \7f211,4789
+/desperatepapersize \7f230,5211
+/savematrix \7f239,5370
+/restorematrix \7f242,5425
+/dmatrix \7f245,5475
+/dpi \7f246,5495
+/freq \7f248,5583
+/sangle \7f249,5658
+/DiacriticEncoding \7f250,5717
+/.notdef \7f251,5738
+/.notdef \7f252,5801
+/.notdef \7f253,5864
+/.notdef \7f254,5927
+/.notdef \7f255,5990
+/numbersign \7f256,6051
+/parenright \7f257,6115
+/two \7f258,6184
+/less \7f259,6251
+/L \7f260,6320
+/bracketright \7f261,6389
+/i \7f262,6459
+/braceright \7f263,6529
+/Ntilde \7f264,6598
+/atilde \7f265,6668
+/iacute \7f266,6733
+/ocircumflex \7f267,6797
+/udieresis \7f268,6858
+/paragraph \7f269,6919
+/dieresis \7f270,6983
+/yen \7f271,7050
+/ordfeminine \7f272,7109
+/exclamdown \7f273,7171
+/guillemotleft \7f274,7230
+/Otilde \7f275,7296
+/quoteleft \7f276,7357
+/fraction \7f277,7420
+/periodcentered \7f278,7490
+/Acircumflex \7f279,7549
+/Icircumflex \7f280,7610
+/Uacute \7f281,7680
+/breve \7f282,7746
+/ReEncode \7f284,7814
+/graymode \7f300,8020
+/setpattern \7f310,8184
+/grayness \7f331,8725
+/normalize \7f394,9873
+/dnormalize \7f397,9942
+/lnormalize \7f400,10014
+/H \7f403,10104
+/Z \7f406,10147
+/X \7f409,10176
+/V \7f412,10219
+/N \7f415,10260
+/M \7f418,10286
+/E \7f419,10315
+/D \7f420,10336
+/O \7f421,10358
+/L \7f423,10394
+/Y \7f430,10489
+/R \7f439,10588
+/RR \7f450,10696
+/C \7f467,10959
+/U \7f473,11004
+/F \7f477,11039
+/T \7f481,11084
+/RF \7f484,11115
+/TF \7f488,11164
+/P \7f495,11219
+/PF \7f499,11270
+/S \7f506,11344
+/SF \7f510,11384
+/B \7f517,11446
+/BF \7f521,11505
+/W \7f538,11714
+/G \7f573,12382
+/A \7f582,12525
+/BEGINPRINTCODE \7f606,12918
+/ENDPRINTCODE \7f615,13131
+/gn \7f620,13259
+/cfs \7f631,13384
+/ic \7f636,13473
+/ms \7f658,14285
+/ip \7f668,14395
+/wh \7f678,14492
+/bl \7f684,14607
+/s1 \7f690,14722
+/fl \7f691,14739
+/hx \7f698,14887
+/wbytes \7f709,15055
+/BEGINBITMAPBWc \7f713,15147
+/BEGINBITMAPGRAYc \7f716,15198
+/BEGINBITMAP2BITc \7f719,15251
+/COMMONBITMAPc \7f722,15304
+/BEGINBITMAPBW \7f739,15660
+/BEGINBITMAPGRAY \7f742,15709
+/BEGINBITMAP2BIT \7f745,15760
+/COMMONBITMAP \7f748,15811
+/Fmcc \7f765,16156
+/ngrayt \7f773,16371
+/nredt \7f774,16393
+/nbluet \7f775,16414
+/ngreent \7f776,16436
+/colorsetup \7f787,16603
+/fakecolorsetup \7f814,17370
+/BITMAPCOLOR \7f826,17636
+/BITMAPCOLORc \7f839,17926
+/BITMAPGRAY \7f855,18275
+/BITMAPGRAYc \7f858,18335
+/ENDBITMAP \7f861,18397
+/fillprocs \7f868,18497
+\f
+prol-src/ordsets.prolog,525
+is_ordset(\7f47,1310
+list_to_ord_set(\7f63,1688
+ord_add_element(\7f71,1867
+ord_del_element(\7f85,2344
+ord_disjoint(\7f100,2783
+ord_intersect(\7f108,2953
+ord_intersection(\7f126,3552
+ord_intersection3(\7f130,3691
+ord_intersection(\7f150,4531
+ord_intersection4(\7f154,4703
+ord_intersection(\7f176,5664
+ord_intersection2(\7f181,5812
+ord_member(\7f200,6318
+ord_seteq(\7f216,6683
+ord_setproduct(\7f225,6971
+ord_subset(\7f240,7377
+ord_subtract(\7f257,7861
+ord_symdiff(\7f265,8054
+ord_union(\7f288,8887
+ord_union4(\7f303,9352
+ord_union(\7f324,10171
+ord_union_all(\7f329,10313
+\f
+prol-src/natded.prolog,2319
+expandmng(\7f100,2879
+normalize(\7f116,3359
+fresh_vars(\7f125,3716
+subst(\7f138,4134
+normalize_fresh(\7f159,4660
+reduce_subterm(\7f171,5112
+reduce(\7f185,5559
+free_var(\7f196,5903
+free_for(\7f209,6246
+compile_lex(\7f231,6875
+consult_lex:-\7fconsult_lex\ 1248,7384
+lex(\7f259,7754
+expandsyn(\7f267,8068
+bas_syn(\7f292,8897
+compile_empty:-\7fcompile_empty\ 1310,9376
+complete(\7f328,10055
+add_active(\7f340,10527
+parse(\7f353,10949
+derived_analyses(\7f364,11341
+build(\7f378,11965
+buildact(\7f392,12521
+mapsyn(\7f412,13542
+add_edge(\7f434,14278
+findcats(\7f447,14758
+normalize_tree(\7f465,15478
+normalize_trees(\7f475,15856
+expandmng_tree(\7f486,16248
+expandmng_trees(\7f496,16614
+cat(\7f511,17013
+subtree(\7f644,21266
+hypothetical_mem(\7f653,21565
+make_coor(\7f667,22130
+start_up:-\7fstart_up\ 1688,23013
+tokenizeatom(\7f710,23921
+tokenize(\7f720,24348
+isoperator(\7f752,25377
+isoptab(\7f756,25431
+specialsymbol(\7f765,25756
+sstab(\7f771,25861
+parse_cgi(\7f787,26347
+keyvalseq(\7f792,26510
+andkeyvalseq(\7f796,26609
+keyval(\7f799,26688
+valseq(\7f807,26920
+plusvalseq(\7f810,27007
+val(\7f816,27109
+argvals(\7f824,27426
+commaargvals(\7f828,27503
+atomval(\7f833,27578
+atom(\7f836,27640
+action(\7f846,28004
+keyvalcgi(\7f864,28649
+keyvalscgi(\7f865,28670
+outsyn(\7f868,28726
+act(\7f876,29060
+actout(\7f901,29906
+texttreelist(\7f912,30089
+htmltreelist(\7f918,30190
+fitchtreelist(\7f924,30304
+pp_html_table_tree(\7f938,30759
+pp_html_tree(\7f949,31113
+pp_html_trees(\7f988,32381
+pp_html_table_fitch_tree(\7f999,32769
+pp_html_fitch_tree(\7f1017,33672
+removeexp(\7f1129,39002
+splitexp(\7f1142,39490
+pp_exp(\7f1155,39990
+map_word(\7f1168,40249
+pp_exps(\7f1180,40474
+pp_tree(\7f1188,40777
+pp_trees(\7f1216,41807
+pp_word_list(\7f1225,42128
+pp_word(\7f1231,42262
+pp_word_list_rest(\7f1238,42569
+pp_cat(\7f1248,42929
+pp_syn(\7f1255,43196
+pp_syn_paren(\7f1276,43899
+pp_paren(\7f1293,44377
+pp_syn_back(\7f1300,44661
+pp_bas_cat(\7f1311,45001
+writecat(\7f1322,45409
+writesubs(\7f1351,46455
+writesups(\7f1361,46757
+writelistsubs(\7f1371,47090
+pp_lam(\7f1380,47408
+pp_lam_bracket(\7f1398,48022
+pp_lam_paren(\7f1407,48338
+pp_rule(\7f1429,49238
+member(\7f1447,49866
+append_list(\7f1451,49919
+append(\7f1456,50010
+at_least_one_member(\7f1460,50076
+numbervars(\7f1464,50171
+reverse(\7f1467,50209
+select(\7f1471,50290
+select_last(\7f1475,50357
+cat_atoms(\7f1479,50436
+writelist(\7f1485,50524
+write_lex_cat(\7f1492,50676
+writebreaklex(\7f1500,50988
+write_lex(\7f1513,51265
+writebreak(\7f1521,51541
+tt:-\7ftt\ 11531,51713
+mt:-\7fmt\ 11534,51784
+cmt:-\7fcmt\ 11537,51878
+\f
+pyt-src/server.py,1438
+class Controls:\7fControls\ 117,358
+ def __init__(\7f18,374
+ def __repr__(\7f24,590
+ def __str__(\7f34,871
+class Server:\7fServer\ 137,934
+ def __init__(\7f38,948
+ def dump(\7f73,2198
+ def __repr__(\7f125,3896
+ def __str__(\7f128,3945
+class User:\7fUser\ 1131,4014
+ def __init__(\7f132,4026
+ def __repr__(\7f172,5445
+ def __str__(\7f206,6883
+def flag2str(\7f223,7212
+class LabeledEntry(\7f232,7442
+ def bind(\7f234,7525
+ def focus_set(\7f236,7584
+ def __init__(\7f238,7629
+def ButtonBar(\7f245,7909
+def helpwin(\7f255,8280
+class ListEdit(\7f267,8707
+ def __init__(\7f269,8808
+ def handleList(\7f303,10042
+ def handleNew(\7f306,10094
+ def editItem(\7f314,10426
+ def deleteItem(\7f320,10596
+def ConfirmQuit(\7f326,10760
+class ControlEdit(\7f375,12377
+ def PostControls(\7f376,12403
+ def GatherControls(\7f421,13530
+class ServerEdit(\7f512,16264
+ def __init__(\7f513,16289
+ def post(\7f525,16629
+ def gather(\7f543,17191
+ def nosave(\7f547,17304
+ def save(\7f551,17408
+ def refreshPort(\7f556,17509
+ def createWidgets(\7f561,17663
+ def edituser(\7f631,20708
+class UserEdit(\7f645,20921
+ def __init__(\7f646,20944
+ def post(\7f658,21283
+ def gather(\7f676,21841
+ def nosave(\7f680,21950
+ def save(\7f684,22052
+ def createWidgets(\7f689,22151
+class Configure(\7f760,24879
+ def __init__(\7f761,24916
+ def MakeDispose(\7f772,25211
+ def MakeSitelist(\7f786,25706
+ def editsite(\7f794,25949
+ def save(\7f797,26022
+ def nosave(\7f807,26310
+\f
+ruby-src/test.rb,637
+module ModuleExample\7f1,0
+ class ClassExample\7f2,21
+ def instance_method\7f3,44
+ def ClassExample.class_method\7fclass_method\ 16,121
+ def instance_method_exclamation!\7f9,206
+ def instance_method_question?\7f12,310
+ def instance_method_equals=\7finstance_method_equals=\ 115,408
+ def `(\7f18,502
+ def +(\7f21,592
+ def [](\7f24,640
+ def []=(\7f[]=\ 127,690
+ def <<(\7f30,752
+ def ==(\7f==\ 133,802
+ def <=(\7f<=\ 136,872
+ def <=>(\7f<=>\ 139,943
+ def ===(\7f===\ 142,990
+ def module_instance_method\7f46,1051
+ def ModuleExample.module_class_method\7fmodule_class_method\ 149,1131
+\f
+ruby-src/test1.ru,935
+class A\7f1,0
+ def a(\7f2,8
+ def b(\7f5,38
+module A\7f9,57
+ class B\7f10,66
+ ABC \7f11,76
+ Def_ \7f12,88
+ Xyzzy \7f13,106
+ def foo!\7f15,121
+ def self._bar?(\7f_bar?\ 118,143
+ def qux=(\7fqux=\ 122,194
+ attr_reader :foo\7ffoo\ 126,233
+ attr_reader :read1 \7fread1\ 127,254
+ attr_reader :read1 , :read2;\7fread2\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1,\7fwrite1=\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1, :write2\7fwrite2=\ 127,254
+ attr_writer :bar,\7fbar=\ 128,316
+ :baz,\7fbaz=\ 129,338
+ :more\7fmore=\ 130,360
+ attr_accessor :tee\7ftee\ 131,382
+ attr_accessor :tee\7ftee=\ 131,382
+ alias_method :qux,\7fqux\ 132,405
+ alias_method :xyz,\7fxyz\ 133,456
+ :tee ; attr_reader :subtle\7fsubtle\ 134,479
+ attr_reader(:foo1,\7ffoo1\ 135,523
+ attr_reader(:foo1, :bar1,\7fbar1\ 135,523
+ :qux1)\7fqux1\ 136,563
+ alias_method ( :foo2,\7ffoo2\ 137,586
+A::Constant \7fConstant\ 142,655
+\f
+tex-src/testenv.tex,52
+\newcommand{\nm}\7f\nm\ 14,77
+\section{blah}\7fblah\ 18,139
+\f
+tex-src/gzip.texi,303
+@node Top,\7f62,2139
+@node Copying,\7f80,2652
+@node Overview,\7f83,2705
+@node Sample,\7f166,7272
+@node Invoking gzip,\7fInvoking gzip\ 1210,8828
+@node Advanced usage,\7fAdvanced usage\ 1357,13495
+@node Environment,\7f420,15207
+@node Tapes,\7f437,15768
+@node Problems,\7f460,16767
+@node Concept Index,\7fConcept Index\ 1473,17287
+\f
+tex-src/texinfo.tex,30627
+\def\texinfoversion{\7f\texinfoversion\ 126,1027
+\def\tie{\7f\tie\ 149,1518
+\def\gloggingall{\7f\gloggingall\ 172,2268
+\def\loggingall{\7f\loggingall\ 173,2337
+\def\onepageout#1{\7f\onepageout\ 199,3274
+\def\croppageout#1{\7f\croppageout\ 1115,4024
+\def\cropmarks{\7f\cropmarks\ 1142,5084
+\def\pagebody#1{\7f\pagebody\ 1144,5131
+\def\ewtop{\7f\ewtop\ 1157,5586
+\def\nstop{\7f\nstop\ 1158,5650
+\def\ewbot{\7f\ewbot\ 1160,5733
+\def\nsbot{\7f\nsbot\ 1161,5797
+\def\parsearg #1{\7f\parsearg\ 1170,6096
+\def\parseargx{\7f\parseargx\ 1172,6174
+\def\parseargline{\7f\parseargline\ 1182,6414
+\def\flushcr{\7f\flushcr\ 1186,6535
+\newif\ifENV \ENVfalse \def\inENV{\7f\inENV\ 1190,6734
+\def\ENVcheck{\7f\ENVcheck\ 1191,6798
+\outer\def\begin{\7f\begin\ 1198,7045
+\def\beginxxx #1{\7f\beginxxx\ 1200,7083
+\def\end{\7f\end\ 1208,7338
+\def\endxxx #1{\7f\endxxx\ 1210,7366
+\def\errorE#1{\7f\errorE\ 1216,7555
+\def\singlespace{\7f\singlespace\ 1222,7749
+\def\@{\7f\@\ 1232,7972
+\def\`{\7f\`\ 1236,8072
+\def\'{\7f\'\ 1237,8084
+\def\mylbrace {\7f\mylbrace\ 1241,8132
+\def\myrbrace {\7f\myrbrace\ 1242,8165
+\def\:{\7f\:\ 1247,8279
+\def\*{\7f\*\ 1250,8333
+\def\.{\7f\.\ 1253,8409
+\def\w#1{\7f\w\ 1258,8640
+\def\group{\7f\group\ 1268,9123
+ \def\Egroup{\7f\Egroup\ 1273,9287
+\def\need{\7f\need\ 1289,9729
+\def\needx#1{\7f\needx\ 1300,10006
+\def\dots{\7f\dots\ 1339,11392
+\def\page{\7f\page\ 1343,11456
+\def\exdent{\7f\exdent\ 1353,11783
+\def\exdentyyy #1{\7f\exdentyyy\ 1354,11816
+\def\nofillexdent{\7f\nofillexdent\ 1357,11960
+\def\nofillexdentyyy #1{\7f\nofillexdentyyy\ 1358,12005
+\def\include{\7f\include\ 1365,12189
+\def\includezzz #1{\7f\includezzz\ 1366,12224
+\def\thisfile{\7f\thisfile\ 1369,12275
+\def\center{\7f\center\ 1373,12338
+\def\centerzzz #1{\7f\centerzzz\ 1374,12371
+\def\sp{\7f\sp\ 1380,12513
+\def\spxxx #1{\7f\spxxx\ 1381,12538
+\def\comment{\7f\comment\ 1387,12712
+\def\commentxxx #1{\7f\commentxxx\ 1390,12809
+\def\ignoresections{\7f\ignoresections\ 1396,12978
+\let\chapter=\relax\7f=\relax\ 1397,13000
+\let\section=\relax\7f=\relax\ 1406,13245
+\let\subsection=\relax\7f=\relax\ 1409,13306
+\let\subsubsection=\relax\7f=\relax\ 1410,13329
+\let\appendix=\relax\7f=\relax\ 1411,13355
+\let\appendixsec=\relax\7fsec=\relax\ 1412,13376
+\let\appendixsection=\relax\7fsection=\relax\ 1413,13400
+\let\appendixsubsec=\relax\7fsubsec=\relax\ 1414,13428
+\let\appendixsubsection=\relax\7fsubsection=\relax\ 1415,13455
+\let\appendixsubsubsec=\relax\7fsubsubsec=\relax\ 1416,13486
+\let\appendixsubsubsection=\relax\7fsubsubsection=\relax\ 1417,13516
+\def\ignore{\7f\ignore\ 1423,13618
+\long\def\ignorexxx #1\end ignore{\7f\ignorexxx\ 1427,13758
+\def\direntry{\7f\direntry\ 1429,13817
+\long\def\direntryxxx #1\end direntry{\7f\direntryxxx\ 1430,13856
+\def\ifset{\7f\ifset\ 1434,13966
+\def\ifsetxxx #1{\7f\ifsetxxx\ 1436,14024
+\def\Eifset{\7f\Eifset\ 1440,14151
+\def\ifsetfail{\7f\ifsetfail\ 1441,14165
+\long\def\ifsetfailxxx #1\end ifset{\7f\ifsetfailxxx\ 1442,14221
+\def\ifclear{\7f\ifclear\ 1444,14282
+\def\ifclearxxx #1{\7f\ifclearxxx\ 1446,14344
+\def\Eifclear{\7f\Eifclear\ 1450,14475
+\def\ifclearfail{\7f\ifclearfail\ 1451,14491
+\long\def\ifclearfailxxx #1\end ifclear{\7f\ifclearfailxxx\ 1452,14551
+\def\set{\7f\set\ 1456,14702
+\def\setxxx #1{\7f\setxxx\ 1457,14729
+\def\clear{\7f\clear\ 1460,14791
+\def\clearxxx #1{\7f\clearxxx\ 1461,14822
+\def\iftex{\7f\iftex\ 1466,14939
+\def\Eiftex{\7f\Eiftex\ 1467,14952
+\def\ifinfo{\7f\ifinfo\ 1468,14966
+\long\def\ifinfoxxx #1\end ifinfo{\7f\ifinfoxxx\ 1469,15016
+\long\def\menu #1\end menu{\7f\menu\ 1471,15075
+\def\asis#1{\7f\asis\ 1472,15104
+\def\math#1{\7f\math\ 1485,15647
+\def\node{\7f\node\ 1487,15691
+\def\nodezzz#1{\7f\nodezzz\ 1488,15729
+\def\nodexxx[#1,#2]{\7f\nodexxx[\ 1489,15760
+\def\donoderef{\7f\donoderef\ 1492,15822
+\def\unnumbnoderef{\7f\unnumbnoderef\ 1496,15943
+\def\appendixnoderef{\7f\appendixnoderef\ 1500,16074
+\expandafter\expandafter\expandafter\appendixsetref{\7fsetref\ 1501,16120
+\let\refill=\relax\7fill=\relax\ 1504,16209
+\def\setfilename{\7f\setfilename\ 1509,16423
+\outer\def\bye{\7f\bye\ 1518,16669
+\def\inforef #1{\7f\inforef\ 1520,16725
+\def\inforefzzz #1,#2,#3,#4**{\7f\inforefzzz\ 1521,16763
+\def\losespace #1{\7f\losespace\ 1523,16860
+\def\sf{\7f\sf\ 1532,17064
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\7fbf=cmbx10\ 1558,17859
+\font\deftt=cmtt10 scaled \magstep1\7ftt=cmtt10\ 1559,17905
+\def\df{\7f\df\ 1560,17941
+\def\resetmathfonts{\7f\resetmathfonts\ 1635,20535
+\def\textfonts{\7f\textfonts\ 1648,21124
+\def\chapfonts{\7f\chapfonts\ 1653,21339
+\def\secfonts{\7f\secfonts\ 1658,21555
+\def\subsecfonts{\7f\subsecfonts\ 1663,21760
+\def\indexfonts{\7f\indexfonts\ 1668,21977
+\def\smartitalicx{\7f\smartitalicx\ 1691,22709
+\def\smartitalic#1{\7f\smartitalic\ 1692,22785
+\let\cite=\smartitalic\7f=\smartitalic\ 1698,22930
+\def\b#1{\7f\b\ 1700,22954
+\def\t#1{\7f\t\ 1703,22989
+\def\samp #1{\7f\samp\ 1706,23141
+\def\key #1{\7f\key\ 1707,23174
+\def\ctrl #1{\7f\ctrl\ 1708,23235
+\def\tclose#1{\7f\tclose\ 1716,23437
+\def\ {\7f\\ 1720,23603
+\def\xkey{\7f\xkey\ 1728,23872
+\def\kbdfoo#1#2#3\par{\7f\kbdfoo\ 1729,23888
+\def\dmn#1{\7f\dmn\ 1738,24189
+\def\kbd#1{\7f\kbd\ 1740,24216
+\def\l#1{\7f\l\ 1742,24273
+\def\r#1{\7f\r\ 1744,24302
+\def\sc#1{\7f\sc\ 1746,24370
+\def\ii#1{\7f\ii\ 1747,24413
+\def\titlefont#1{\7f\titlefont\ 1755,24646
+\def\titlepage{\7f\titlepage\ 1761,24749
+ \def\subtitlefont{\7f\subtitlefont\ 1766,24976
+ \def\authorfont{\7f\authorfont\ 1768,25060
+ \def\title{\7f\title\ 1774,25270
+ \def\titlezzz##1{\7f\titlezzz\ 1775,25305
+ \def\subtitle{\7f\subtitle\ 1783,25620
+ \def\subtitlezzz##1{\7f\subtitlezzz\ 1784,25661
+ \def\author{\7f\author\ 1787,25779
+ \def\authorzzz##1{\7f\authorzzz\ 1788,25816
+ \def\page{\7f\page\ 1794,26107
+\def\Etitlepage{\7f\Etitlepage\ 1804,26276
+\def\finishtitlepage{\7f\finishtitlepage\ 1817,26664
+\def\evenheading{\7f\evenheading\ 1846,27672
+\def\oddheading{\7f\oddheading\ 1847,27715
+\def\everyheading{\7f\everyheading\ 1848,27756
+\def\evenfooting{\7f\evenfooting\ 1850,27802
+\def\oddfooting{\7f\oddfooting\ 1851,27845
+\def\everyfooting{\7f\everyfooting\ 1852,27886
+\def\headings #1 {\7f\headings\ 1893,29578
+\def\HEADINGSoff{\7f\HEADINGSoff\ 1895,29627
+\def\HEADINGSdouble{\7f\HEADINGSdouble\ 1904,30054
+\def\HEADINGSsingle{\7f\HEADINGSsingle\ 1914,30374
+\def\HEADINGSon{\7f\HEADINGSon\ 1922,30595
+\def\HEADINGSafter{\7f\HEADINGSafter\ 1924,30629
+\def\HEADINGSdoublex{\7f\HEADINGSdoublex\ 1926,30724
+\def\HEADINGSsingleafter{\7f\HEADINGSsingleafter\ 1933,30912
+\def\HEADINGSsinglex{\7f\HEADINGSsinglex\ 1934,30973
+\def\today{\7f\today\ 1943,31248
+\def\thistitle{\7f\thistitle\ 1958,31793
+\def\settitle{\7f\settitle\ 1959,31818
+\def\settitlezzz #1{\7f\settitlezzz\ 1960,31855
+\def\internalBitem{\7f\internalBitem\ 1992,32785
+\def\internalBitemx{\7f\internalBitemx\ 1993,32835
+\def\internalBxitem "#1"{\7f\internalBxitem\ 1995,32880
+\def\internalBxitemx "#1"{\7f\internalBxitemx\ 1996,32960
+\def\internalBkitem{\7f\internalBkitem\ 1998,33035
+\def\internalBkitemx{\7f\internalBkitemx\ 1999,33087
+\def\kitemzzz #1{\7f\kitemzzz\ 11001,33134
+\def\xitemzzz #1{\7f\xitemzzz\ 11004,33236
+\def\itemzzz #1{\7f\itemzzz\ 11007,33339
+\def\item{\7f\item\ 11037,34410
+\def\itemx{\7f\itemx\ 11038,34461
+\def\kitem{\7f\kitem\ 11039,34514
+\def\kitemx{\7f\kitemx\ 11040,34567
+\def\xitem{\7f\xitem\ 11041,34622
+\def\xitemx{\7f\xitemx\ 11042,34675
+\def\description{\7f\description\ 11045,34785
+\def\table{\7f\table\ 11047,34835
+\def\ftable{\7f\ftable\ 11052,34979
+\def\Eftable{\7f\Eftable\ 11056,35125
+\def\vtable{\7f\vtable\ 11059,35194
+\def\Evtable{\7f\Evtable\ 11063,35340
+\def\dontindex #1{\7f\dontindex\ 11066,35409
+\def\fnitemindex #1{\7f\fnitemindex\ 11067,35429
+\def\vritemindex #1{\7f\vritemindex\ 11068,35474
+\def\tablez #1#2#3#4#5#6{\7f\tablez\ 11074,35623
+\def\Edescription{\7f\Edescription\ 11077,35681
+\def\itemfont{\7f\itemfont\ 11082,35883
+\def\Etable{\7f\Etable\ 11090,36109
+\def\itemize{\7f\itemize\ 11103,36433
+\def\itemizezzz #1{\7f\itemizezzz\ 11105,36469
+\def\itemizey #1#2{\7f\itemizey\ 11110,36564
+\def#2{\7f1119,36810
+\def\itemcontents{\7f\itemcontents\ 11120,36851
+\def\bullet{\7f\bullet\ 11123,36899
+\def\minus{\7f\minus\ 11124,36926
+\def\frenchspacing{\7f\frenchspacing\ 11128,37034
+\def\splitoff#1#2\endmark{\7f\splitoff\ 11134,37259
+\def\enumerate{\7f\enumerate\ 11140,37489
+\def\enumeratezzz #1{\7f\enumeratezzz\ 11141,37528
+\def\enumeratey #1 #2\endenumeratey{\7f\enumeratey\ 11142,37581
+ \def\thearg{\7f\thearg\ 11146,37728
+ \ifx\thearg\empty \def\thearg{\7f\thearg\ 11147,37747
+\def\numericenumerate{\7f\numericenumerate\ 11184,39081
+\def\lowercaseenumerate{\7f\lowercaseenumerate\ 11190,39211
+\def\uppercaseenumerate{\7f\uppercaseenumerate\ 11203,39558
+\def\startenumeration#1{\7f\startenumeration\ 11219,40048
+\def\alphaenumerate{\7f\alphaenumerate\ 11227,40230
+\def\capsenumerate{\7f\capsenumerate\ 11228,40265
+\def\Ealphaenumerate{\7f\Ealphaenumerate\ 11229,40299
+\def\Ecapsenumerate{\7f\Ecapsenumerate\ 11230,40333
+\def\itemizeitem{\7f\itemizeitem\ 11234,40413
+\def\newindex #1{\7f\newindex\ 11259,41270
+\def\defindex{\7f\defindex\ 11268,41559
+\def\newcodeindex #1{\7f\newcodeindex\ 11272,41667
+\def\defcodeindex{\7f\defcodeindex\ 11279,41927
+\def\synindex #1 #2 {\7f\synindex\ 11283,42107
+\def\syncodeindex #1 #2 {\7f\syncodeindex\ 11292,42447
+\def\doindex#1{\7f\doindex\ 11309,43126
+\def\singleindexer #1{\7f\singleindexer\ 11310,43185
+\def\docodeindex#1{\7f\docodeindex\ 11313,43297
+\def\singlecodeindexer #1{\7f\singlecodeindexer\ 11314,43364
+\def\indexdummies{\7f\indexdummies\ 11316,43422
+\def\_{\7f\_\ 11317,43442
+\def\w{\7f\w\ 11318,43470
+\def\bf{\7f\bf\ 11319,43497
+\def\rm{\7f\rm\ 11320,43526
+\def\sl{\7f\sl\ 11321,43555
+\def\sf{\7f\sf\ 11322,43584
+\def\tt{\7f\tt\ 11323,43612
+\def\gtr{\7f\gtr\ 11324,43640
+\def\less{\7f\less\ 11325,43670
+\def\hat{\7f\hat\ 11326,43702
+\def\char{\7f\char\ 11327,43732
+\def\TeX{\7f\TeX\ 11328,43764
+\def\dots{\7f\dots\ 11329,43794
+\def\copyright{\7f\copyright\ 11330,43827
+\def\tclose##1{\7f\tclose\ 11331,43870
+\def\code##1{\7f\code\ 11332,43915
+\def\samp##1{\7f\samp\ 11333,43956
+\def\t##1{\7f\t\ 11334,43997
+\def\r##1{\7f\r\ 11335,44032
+\def\i##1{\7f\i\ 11336,44067
+\def\b##1{\7f\b\ 11337,44102
+\def\cite##1{\7f\cite\ 11338,44137
+\def\key##1{\7f\key\ 11339,44178
+\def\file##1{\7f\file\ 11340,44217
+\def\var##1{\7f\var\ 11341,44258
+\def\kbd##1{\7f\kbd\ 11342,44297
+\def\indexdummyfont#1{\7f\indexdummyfont\ 11347,44453
+\def\indexdummytex{\7f\indexdummytex\ 11348,44479
+\def\indexdummydots{\7f\indexdummydots\ 11349,44503
+\def\indexnofonts{\7f\indexnofonts\ 11351,44529
+\let\w=\indexdummyfont\7fdummyfont\ 11352,44549
+\let\t=\indexdummyfont\7fdummyfont\ 11353,44572
+\let\r=\indexdummyfont\7fdummyfont\ 11354,44595
+\let\i=\indexdummyfont\7fdummyfont\ 11355,44618
+\let\b=\indexdummyfont\7fdummyfont\ 11356,44641
+\let\emph=\indexdummyfont\7fdummyfont\ 11357,44664
+\let\strong=\indexdummyfont\7fdummyfont\ 11358,44690
+\let\cite=\indexdummyfont\7f=\indexdummyfont\ 11359,44718
+\let\sc=\indexdummyfont\7fdummyfont\ 11360,44744
+\let\tclose=\indexdummyfont\7fdummyfont\ 11364,44916
+\let\code=\indexdummyfont\7fdummyfont\ 11365,44944
+\let\file=\indexdummyfont\7fdummyfont\ 11366,44970
+\let\samp=\indexdummyfont\7fdummyfont\ 11367,44996
+\let\kbd=\indexdummyfont\7fdummyfont\ 11368,45022
+\let\key=\indexdummyfont\7fdummyfont\ 11369,45047
+\let\var=\indexdummyfont\7fdummyfont\ 11370,45072
+\let\TeX=\indexdummytex\7fdummytex\ 11371,45097
+\let\dots=\indexdummydots\7fdummydots\ 11372,45121
+\let\indexbackslash=0 %overridden during \printindex.\7fbackslash=0\ 11382,45373
+\def\doind #1#2{\7f\doind\ 11384,45429
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11386,45472
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11389,45612
+{\indexnofonts\7fnofonts\ 11394,45874
+\def\dosubind #1#2#3{\7f\dosubind\ 11405,46185
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11407,46233
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11410,46337
+{\indexnofonts\7fnofonts\ 11414,46491
+\def\findex {\7f\findex\ 11443,47422
+\def\kindex {\7f\kindex\ 11444,47445
+\def\cindex {\7f\cindex\ 11445,47468
+\def\vindex {\7f\vindex\ 11446,47491
+\def\tindex {\7f\tindex\ 11447,47514
+\def\pindex {\7f\pindex\ 11448,47537
+\def\cindexsub {\7f\cindexsub\ 11450,47561
+\def\printindex{\7f\printindex\ 11462,47888
+\def\doprintindex#1{\7f\doprintindex\ 11464,47929
+ \def\indexbackslash{\7f\indexbackslash\ 11481,48414
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\7ffonts\rm\ 11482,48453
+\def\initial #1{\7f\initial\ 11517,49525
+\def\entry #1#2{\7f\entry\ 11523,49732
+ \null\nobreak\indexdotfill % Have leaders before the page number.\7fdotfill\ 11540,50379
+\def\indexdotfill{\7f\indexdotfill\ 11549,50707
+\def\primary #1{\7f\primary\ 11552,50813
+\def\secondary #1#2{\7f\secondary\ 11556,50895
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\7fdotfill\ 11559,50977
+\newbox\partialpage\7fialpage\ 11566,51150
+\def\begindoublecolumns{\7f\begindoublecolumns\ 11572,51308
+ \output={\global\setbox\partialpage=\7fialpage=\ 11573,51344
+\def\enddoublecolumns{\7f\enddoublecolumns\ 11577,51532
+\def\doublecolumnout{\7f\doublecolumnout\ 11580,51617
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11581,51686
+\def\pagesofar{\7f\pagesofar\ 11584,51864
+\def\balancecolumns{\7f\balancecolumns\ 11588,52101
+ \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\7fialpage\ 11594,52272
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11600,52533
+\newcount \appendixno \appendixno = `\@\7fno\ 11627,53438
+\def\appendixletter{\7f\appendixletter\ 11628,53479
+\def\opencontents{\7f\opencontents\ 11632,53582
+\def\thischapter{\7f\thischapter\ 11637,53763
+\def\seccheck#1{\7f\seccheck\ 11638,53801
+\def\chapternofonts{\7f\chapternofonts\ 11643,53905
+\def\result{\7f\result\ 11646,53980
+\def\equiv{\7f\equiv\ 11647,54015
+\def\expansion{\7f\expansion\ 11648,54048
+\def\print{\7f\print\ 11649,54089
+\def\TeX{\7f\TeX\ 11650,54122
+\def\dots{\7f\dots\ 11651,54151
+\def\copyright{\7f\copyright\ 11652,54182
+\def\tt{\7f\tt\ 11653,54223
+\def\bf{\7f\bf\ 11654,54250
+\def\w{\7f\w\ 11655,54278
+\def\less{\7f\less\ 11656,54303
+\def\gtr{\7f\gtr\ 11657,54334
+\def\hat{\7f\hat\ 11658,54363
+\def\char{\7f\char\ 11659,54392
+\def\tclose##1{\7f\tclose\ 11660,54423
+\def\code##1{\7f\code\ 11661,54467
+\def\samp##1{\7f\samp\ 11662,54507
+\def\r##1{\7f\r\ 11663,54547
+\def\b##1{\7f\b\ 11664,54581
+\def\key##1{\7f\key\ 11665,54615
+\def\file##1{\7f\file\ 11666,54653
+\def\kbd##1{\7f\kbd\ 11667,54693
+\def\i##1{\7f\i\ 11669,54801
+\def\cite##1{\7f\cite\ 11670,54835
+\def\var##1{\7f\var\ 11671,54875
+\def\emph##1{\7f\emph\ 11672,54913
+\def\dfn##1{\7f\dfn\ 11673,54953
+\def\thischaptername{\7f\thischaptername\ 11676,54994
+\outer\def\chapter{\7f\chapter\ 11677,55033
+\def\chapterzzz #1{\7f\chapterzzz\ 11678,55074
+{\chapternofonts%\7fnofonts%\ 11687,55470
+\global\let\section = \numberedsec\7f=\ 11692,55623
+\global\let\subsection = \numberedsubsec\7f=\ 11693,55658
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11694,55699
+\outer\def\appendix{\7f\appendix\ 11697,55750
+\def\appendixzzz #1{\7f\appendixzzz\ 11698,55793
+\global\advance \appendixno by 1 \message{\7fno\ 11700,55870
+\chapmacro {#1}{Appendix \appendixletter}\7fletter\ 11701,55939
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\7fletter:\ 11704,56032
+{\chapternofonts%\7fnofonts%\ 11705,56104
+ {#1}{Appendix \appendixletter}\7fletter\ 11707,56160
+\appendixnoderef %\7fnoderef\ 11710,56260
+\global\let\section = \appendixsec\7f=\ 11711,56279
+\global\let\subsection = \appendixsubsec\7f=\ 11712,56314
+\global\let\subsubsection = \appendixsubsubsec\7f=\ 11713,56355
+\outer\def\top{\7f\top\ 11716,56406
+\outer\def\unnumbered{\7f\unnumbered\ 11717,56446
+\def\unnumberedzzz #1{\7f\unnumberedzzz\ 11718,56493
+{\chapternofonts%\7fnofonts%\ 11722,56656
+\global\let\section = \unnumberedsec\7f=\ 11727,56806
+\global\let\subsection = \unnumberedsubsec\7f=\ 11728,56843
+\global\let\subsubsection = \unnumberedsubsubsec\7f=\ 11729,56886
+\outer\def\numberedsec{\7f\numberedsec\ 11732,56939
+\def\seczzz #1{\7f\seczzz\ 11733,56980
+{\chapternofonts%\7fnofonts%\ 11736,57136
+\outer\def\appendixsection{\7f\appendixsection\ 11745,57322
+\outer\def\appendixsec{\7f\appendixsec\ 11746,57379
+\def\appendixsectionzzz #1{\7f\appendixsectionzzz\ 11747,57432
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}\7fletter\ 11749,57544
+{\chapternofonts%\7fnofonts%\ 11750,57612
+{#1}{\appendixletter}\7fletter\ 11752,57668
+\appendixnoderef %\7fnoderef\ 11755,57768
+\outer\def\unnumberedsec{\7f\unnumberedsec\ 11759,57808
+\def\unnumberedseczzz #1{\7f\unnumberedseczzz\ 11760,57861
+{\chapternofonts%\7fnofonts%\ 11762,57956
+\outer\def\numberedsubsec{\7f\numberedsubsec\ 11770,58124
+\def\numberedsubseczzz #1{\7f\numberedsubseczzz\ 11771,58179
+{\chapternofonts%\7fnofonts%\ 11774,58358
+\outer\def\appendixsubsec{\7f\appendixsubsec\ 11783,58562
+\def\appendixsubseczzz #1{\7f\appendixsubseczzz\ 11784,58617
+\subsecheading {#1}{\appendixletter}\7fletter\ 11786,58739
+{\chapternofonts%\7fnofonts%\ 11787,58804
+{#1}{\appendixletter}\7fletter\ 11789,58863
+\appendixnoderef %\7fnoderef\ 11792,58978
+\outer\def\unnumberedsubsec{\7f\unnumberedsubsec\ 11796,59018
+\def\unnumberedsubseczzz #1{\7f\unnumberedsubseczzz\ 11797,59077
+{\chapternofonts%\7fnofonts%\ 11799,59178
+\outer\def\numberedsubsubsec{\7f\numberedsubsubsec\ 11807,59349
+\def\numberedsubsubseczzz #1{\7f\numberedsubsubseczzz\ 11808,59410
+{\chapternofonts%\7fnofonts%\ 11812,59607
+\outer\def\appendixsubsubsec{\7f\appendixsubsubsec\ 11823,59840
+\def\appendixsubsubseczzz #1{\7f\appendixsubsubseczzz\ 11824,59901
+ {\appendixletter}\7fletter\ 11827,60040
+{\chapternofonts%\7fnofonts%\ 11828,60106
+ {\appendixletter}\7fletter\ 11830,60171
+\appendixnoderef %\7fnoderef\ 11834,60305
+\outer\def\unnumberedsubsubsec{\7f\unnumberedsubsubsec\ 11838,60345
+\def\unnumberedsubsubseczzz #1{\7f\unnumberedsubsubseczzz\ 11839,60410
+{\chapternofonts%\7fnofonts%\ 11841,60517
+\def\infotop{\7f\infotop\ 11851,60846
+\def\infounnumbered{\7f\infounnumbered\ 11852,60884
+\def\infounnumberedsec{\7f\infounnumberedsec\ 11853,60929
+\def\infounnumberedsubsec{\7f\infounnumberedsubsec\ 11854,60980
+\def\infounnumberedsubsubsec{\7f\infounnumberedsubsubsec\ 11855,61037
+\def\infoappendix{\7f\infoappendix\ 11857,61101
+\def\infoappendixsec{\7f\infoappendixsec\ 11858,61142
+\def\infoappendixsubsec{\7f\infoappendixsubsec\ 11859,61189
+\def\infoappendixsubsubsec{\7f\infoappendixsubsubsec\ 11860,61242
+\def\infochapter{\7f\infochapter\ 11862,61302
+\def\infosection{\7f\infosection\ 11863,61341
+\def\infosubsection{\7f\infosubsection\ 11864,61380
+\def\infosubsubsection{\7f\infosubsubsection\ 11865,61425
+\global\let\section = \numberedsec\7f=\ 11870,61662
+\global\let\subsection = \numberedsubsec\7f=\ 11871,61697
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11872,61738
+\def\majorheading{\7f\majorheading\ 11886,62245
+\def\majorheadingzzz #1{\7f\majorheadingzzz\ 11887,62290
+\def\chapheading{\7f\chapheading\ 11893,62523
+\def\chapheadingzzz #1{\7f\chapheadingzzz\ 11894,62566
+\def\heading{\7f\heading\ 11899,62761
+\def\subheading{\7f\subheading\ 11901,62798
+\def\subsubheading{\7f\subsubheading\ 11903,62841
+\def\dobreak#1#2{\7f\dobreak\ 11910,63118
+\def\setchapterstyle #1 {\7f\setchapterstyle\ 11912,63196
+\def\chapbreak{\7f\chapbreak\ 11919,63451
+\def\chappager{\7f\chappager\ 11920,63501
+\def\chapoddpage{\7f\chapoddpage\ 11921,63539
+\def\setchapternewpage #1 {\7f\setchapternewpage\ 11923,63618
+\def\CHAPPAGoff{\7f\CHAPPAGoff\ 11925,63675
+\def\CHAPPAGon{\7f\CHAPPAGon\ 11929,63769
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11932,63860
+\def\CHAPPAGodd{\7f\CHAPPAGodd\ 11934,63902
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11937,63998
+\def\CHAPFplain{\7f\CHAPFplain\ 11941,64052
+\def\chfplain #1#2{\7f\chfplain\ 11945,64144
+\def\unnchfplain #1{\7f\unnchfplain\ 11956,64367
+\def\unnchfopen #1{\7f\unnchfopen\ 11964,64596
+\def\chfopen #1#2{\7f\chfopen\ 11970,64804
+\def\CHAPFopen{\7f\CHAPFopen\ 11975,64948
+\def\subsecheadingbreak{\7f\subsecheadingbreak\ 11982,65166
+\def\secheadingbreak{\7f\secheadingbreak\ 11985,65295
+\def\secheading #1#2#3{\7f\secheading\ 11993,65577
+\def\plainsecheading #1{\7f\plainsecheading\ 11994,65633
+\def\secheadingi #1{\7f\secheadingi\ 11995,65676
+\def\subsecheading #1#2#3#4{\7f\subsecheading\ 12006,66044
+\def\subsecheadingi #1{\7f\subsecheadingi\ 12007,66111
+\def\subsubsecfonts{\7f\subsubsecfonts\ 12014,66408
+\def\subsubsecheading #1#2#3#4#5{\7f\subsubsecheading\ 12017,66531
+\def\subsubsecheadingi #1{\7f\subsubsecheadingi\ 12018,66609
+\def\startcontents#1{\7f\startcontents\ 12032,67081
+ \unnumbchapmacro{#1}\def\thischapter{\7f\thischapter\ 12040,67354
+\outer\def\contents{\7f\contents\ 12049,67713
+\outer\def\summarycontents{\7f\summarycontents\ 12057,67857
+ \def\secentry ##1##2##3##4{\7f\secentry\ 12067,68228
+ \def\unnumbsecentry ##1##2{\7f\unnumbsecentry\ 12068,68263
+ \def\subsecentry ##1##2##3##4##5{\7f\subsecentry\ 12069,68298
+ \def\unnumbsubsecentry ##1##2{\7f\unnumbsubsecentry\ 12070,68339
+ \def\subsubsecentry ##1##2##3##4##5##6{\7f\subsubsecentry\ 12071,68377
+ \def\unnumbsubsubsecentry ##1##2{\7f\unnumbsubsubsecentry\ 12072,68424
+\def\chapentry#1#2#3{\7f\chapentry\ 12085,68858
+\def\shortchapentry#1#2#3{\7f\shortchapentry\ 12088,68975
+ {#2\labelspace #1}\7fspace\ 12091,69085
+\def\unnumbchapentry#1#2{\7f\unnumbchapentry\ 12094,69139
+\def\shortunnumberedentry#1#2{\7f\shortunnumberedentry\ 12095,69186
+\def\secentry#1#2#3#4{\7f\secentry\ 12102,69350
+\def\unnumbsecentry#1#2{\7f\unnumbsecentry\ 12103,69409
+\def\subsecentry#1#2#3#4#5{\7f\subsecentry\ 12106,69470
+\def\unnumbsubsecentry#1#2{\7f\unnumbsubsecentry\ 12107,69540
+\def\subsubsecentry#1#2#3#4#5#6{\7f\subsubsecentry\ 12110,69614
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\7fspace\ 12111,69648
+\def\unnumbsubsubsecentry#1#2{\7f\unnumbsubsubsecentry\ 12112,69699
+\def\dochapentry#1#2{\7f\dochapentry\ 12123,70073
+\def\dosecentry#1#2{\7f\dosecentry\ 12138,70678
+\def\dosubsecentry#1#2{\7f\dosubsecentry\ 12145,70856
+\def\dosubsubsecentry#1#2{\7f\dosubsubsecentry\ 12152,71041
+\def\labelspace{\7f\labelspace\ 12160,71292
+\def\dopageno#1{\7f\dopageno\ 12162,71327
+\def\doshortpageno#1{\7f\doshortpageno\ 12163,71353
+\def\chapentryfonts{\7f\chapentryfonts\ 12165,71385
+\def\secentryfonts{\7f\secentryfonts\ 12166,71420
+\def\point{\7f\point\ 12192,72379
+\def\result{\7f\result\ 12194,72400
+\def\expansion{\7f\expansion\ 12195,72473
+\def\print{\7f\print\ 12196,72544
+\def\equiv{\7f\equiv\ 12198,72611
+\def\error{\7f\error\ 12218,73384
+\def\tex{\7f\tex\ 12224,73613
+\def\@{\7f\@\ 12242,73996
+\gdef\sepspaces{\def {\ }}}\7f\\ 12265,74728
+\def\aboveenvbreak{\7f\aboveenvbreak\ 12268,74810
+\def\afterenvbreak{\7f\afterenvbreak\ 12272,74976
+\def\ctl{\7f\ctl\ 12286,75487
+\def\ctr{\7f\ctr\ 12287,75559
+\def\cbl{\7f\cbl\ 12288,75598
+\def\cbr{\7f\cbr\ 12289,75638
+\def\carttop{\7f\carttop\ 12290,75677
+\def\cartbot{\7f\cartbot\ 12293,75785
+\long\def\cartouche{\7f\cartouche\ 12299,75925
+\def\Ecartouche{\7f\Ecartouche\ 12326,76713
+\def\lisp{\7f\lisp\ 12338,76848
+\def\Elisp{\7f\Elisp\ 12348,77195
+\def\next##1{\7f\next\ 12360,77521
+\def\Eexample{\7f\Eexample\ 12364,77563
+\def\Esmallexample{\7f\Esmallexample\ 12367,77610
+\def\smalllispx{\7f\smalllispx\ 12373,77788
+\def\Esmalllisp{\7f\Esmalllisp\ 12383,78142
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\7ffonts\ 12396,78498
+\def\next##1{\7f\next\ 12397,78555
+\def\display{\7f\display\ 12401,78635
+\def\Edisplay{\7f\Edisplay\ 12410,78954
+\def\next##1{\7f\next\ 12422,79265
+\def\format{\7f\format\ 12426,79368
+\def\Eformat{\7f\Eformat\ 12434,79664
+\def\next##1{\7f\next\ 12437,79753
+\def\flushleft{\7f\flushleft\ 12441,79805
+\def\Eflushleft{\7f\Eflushleft\ 12451,80176
+\def\next##1{\7f\next\ 12454,80269
+\def\flushright{\7f\flushright\ 12456,80291
+\def\Eflushright{\7f\Eflushright\ 12466,80663
+\def\next##1{\7f\next\ 12470,80794
+\def\quotation{\7f\quotation\ 12474,80852
+\def\Equotation{\7f\Equotation\ 12480,81044
+\def\setdeffont #1 {\7f\setdeffont\ 12493,81442
+\newskip\defbodyindent \defbodyindent=.4in\7fbodyindent\ 12495,81488
+\newskip\defargsindent \defargsindent=50pt\7fargsindent\ 12496,81531
+\newskip\deftypemargin \deftypemargin=12pt\7ftypemargin\ 12497,81574
+\newskip\deflastargmargin \deflastargmargin=18pt\7flastargmargin\ 12498,81617
+\def\activeparens{\7f\activeparens\ 12503,81815
+\def\opnr{\7f\opnr\ 12529,83027
+\def\lbrb{\7f\lbrb\ 12530,83092
+\def\defname #1#2{\7f\defname\ 12536,83293
+\advance\dimen2 by -\defbodyindent\7fbodyindent\ 12540,83411
+\advance\dimen3 by -\defbodyindent\7fbodyindent\ 12542,83465
+\setbox0=\hbox{\hskip \deflastargmargin{\7flastargmargin\ 12544,83519
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\7fargsindent\ 12546,83661
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %\7fargsindent\ 12547,83736
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\7ftypemargin\ 12554,84105
+\advance\leftskip by -\defbodyindent\7fbodyindent\ 12557,84239
+\exdentamount=\defbodyindent\7fbodyindent\ 12558,84276
+\def\defparsebody #1#2#3{\7f\defparsebody\ 12568,84635
+\def#1{\7f2572,84819
+\def#2{\7f2573,84855
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12575,84927
+\exdentamount=\defbodyindent\7fbodyindent\ 12576,85001
+\def\defmethparsebody #1#2#3#4 {\7f\defmethparsebody\ 12581,85105
+\def#1{\7f2585,85266
+\def#2##1 {\7f2586,85302
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12588,85385
+\exdentamount=\defbodyindent\7fbodyindent\ 12589,85459
+\def\defopparsebody #1#2#3#4#5 {\7f\defopparsebody\ 12592,85544
+\def#1{\7f2596,85705
+\def#2##1 ##2 {\7f2597,85741
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12600,85841
+\exdentamount=\defbodyindent\7fbodyindent\ 12601,85915
+\def\defvarparsebody #1#2#3{\7f\defvarparsebody\ 12608,86186
+\def#1{\7f2612,86373
+\def#2{\7f2613,86409
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12615,86468
+\exdentamount=\defbodyindent\7fbodyindent\ 12616,86542
+\def\defvrparsebody #1#2#3#4 {\7f\defvrparsebody\ 12621,86633
+\def#1{\7f2625,86792
+\def#2##1 {\7f2626,86828
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12628,86898
+\exdentamount=\defbodyindent\7fbodyindent\ 12629,86972
+\def\defopvarparsebody #1#2#3#4#5 {\7f\defopvarparsebody\ 12632,87044
+\def#1{\7f2636,87208
+\def#2##1 ##2 {\7f2637,87244
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12640,87331
+\exdentamount=\defbodyindent\7fbodyindent\ 12641,87405
+\def\defunargs #1{\7f\defunargs\ 12664,88165
+\def\deftypefunargs #1{\7f\deftypefunargs\ 12676,88547
+\def\deffn{\7f\deffn\ 12690,88929
+\def\deffnheader #1#2#3{\7f\deffnheader\ 12692,88986
+\begingroup\defname {\7fname\ 12693,89034
+\def\defun{\7f\defun\ 12699,89179
+\def\defunheader #1#2{\7f\defunheader\ 12701,89232
+\begingroup\defname {\7fname\ 12702,89307
+\defunargs {\7funargs\ 12703,89343
+\def\deftypefun{\7f\deftypefun\ 12709,89491
+\def\deftypefunheader #1#2{\7f\deftypefunheader\ 12712,89613
+\def\deftypefunheaderx #1#2 #3\relax{\7f\deftypefunheaderx\ 12714,89722
+\begingroup\defname {\7fname\ 12716,89814
+\deftypefunargs {\7ftypefunargs\ 12717,89860
+\def\deftypefn{\7f\deftypefn\ 12723,90031
+\def\deftypefnheader #1#2#3{\7f\deftypefnheader\ 12726,90180
+\def\deftypefnheaderx #1#2#3 #4\relax{\7f\deftypefnheaderx\ 12728,90316
+\begingroup\defname {\7fname\ 12730,90409
+\deftypefunargs {\7ftypefunargs\ 12731,90449
+\def\defmac{\7f\defmac\ 12737,90570
+\def\defmacheader #1#2{\7f\defmacheader\ 12739,90627
+\begingroup\defname {\7fname\ 12740,90703
+\defunargs {\7funargs\ 12741,90736
+\def\defspec{\7f\defspec\ 12747,90860
+\def\defspecheader #1#2{\7f\defspecheader\ 12749,90921
+\begingroup\defname {\7fname\ 12750,90998
+\defunargs {\7funargs\ 12751,91038
+\def\deffnx #1 {\7f\deffnx\ 12758,91233
+\def\defunx #1 {\7f\defunx\ 12759,91290
+\def\defmacx #1 {\7f\defmacx\ 12760,91347
+\def\defspecx #1 {\7f\defspecx\ 12761,91406
+\def\deftypefnx #1 {\7f\deftypefnx\ 12762,91467
+\def\deftypeunx #1 {\7f\deftypeunx\ 12763,91532
+\def\defop #1 {\7f\defop\ 12769,91678
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\7fopparsebody\Edefop\defopx\defopheader\defoptype\ 12770,91713
+\def\defopheader #1#2#3{\7f\defopheader\ 12772,91767
+\begingroup\defname {\7fname\ 12774,91856
+\defunargs {\7funargs\ 12775,91902
+\def\defmethod{\7f\defmethod\ 12780,91963
+\def\defmethodheader #1#2#3{\7f\defmethodheader\ 12782,92036
+\begingroup\defname {\7fname\ 12784,92124
+\defunargs {\7funargs\ 12785,92164
+\def\defcv #1 {\7f\defcv\ 12790,92238
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\ 12791,92273
+\def\defcvarheader #1#2#3{\7f\defcvarheader\ 12793,92332
+\begingroup\defname {\7fname\ 12795,92418
+\defvarargs {\7fvarargs\ 12796,92464
+\def\defivar{\7f\defivar\ 12801,92537
+\def\defivarheader #1#2#3{\7f\defivarheader\ 12803,92600
+\begingroup\defname {\7fname\ 12805,92686
+\defvarargs {\7fvarargs\ 12806,92737
+\def\defopx #1 {\7f\defopx\ 12812,92886
+\def\defmethodx #1 {\7f\defmethodx\ 12813,92943
+\def\defcvx #1 {\7f\defcvx\ 12814,93008
+\def\defivarx #1 {\7f\defivarx\ 12815,93065
+\def\defvarargs #1{\7f\defvarargs\ 12822,93336
+\def\defvr{\7f\defvr\ 12828,93480
+\def\defvrheader #1#2#3{\7f\defvrheader\ 12830,93535
+\begingroup\defname {\7fname\ 12831,93583
+\def\defvar{\7f\defvar\ 12835,93668
+\def\defvarheader #1#2{\7f\defvarheader\ 12837,93728
+\begingroup\defname {\7fname\ 12838,93799
+\defvarargs {\7fvarargs\ 12839,93835
+\def\defopt{\7f\defopt\ 12844,93901
+\def\defoptheader #1#2{\7f\defoptheader\ 12846,93961
+\begingroup\defname {\7fname\ 12847,94032
+\defvarargs {\7fvarargs\ 12848,94071
+\def\deftypevar{\7f\deftypevar\ 12853,94128
+\def\deftypevarheader #1#2{\7f\deftypevarheader\ 12856,94244
+\begingroup\defname {\7fname\ 12858,94327
+\def\deftypevr{\7f\deftypevr\ 12865,94501
+\def\deftypevrheader #1#2#3{\7f\deftypevrheader\ 12867,94572
+\begingroup\defname {\7fname\ 12868,94624
+\def\defvrx #1 {\7f\defvrx\ 12876,94861
+\def\defvarx #1 {\7f\defvarx\ 12877,94918
+\def\defoptx #1 {\7f\defoptx\ 12878,94977
+\def\deftypevarx #1 {\7f\deftypevarx\ 12879,95036
+\def\deftypevrx #1 {\7f\deftypevrx\ 12880,95103
+\def\deftpargs #1{\7f\deftpargs\ 12885,95252
+\def\deftp{\7f\deftp\ 12889,95332
+\def\deftpheader #1#2#3{\7f\deftpheader\ 12891,95387
+\begingroup\defname {\7fname\ 12892,95435
+\def\deftpx #1 {\7f\deftpx\ 12897,95594
+\def\setref#1{\7f\setref\ 12908,95915
+\def\unnumbsetref#1{\7f\unnumbsetref\ 12913,96029
+\def\appendixsetref#1{\7f\appendixsetref\ 12918,96136
+\def\pxref#1{\7f\pxref\ 12929,96547
+\def\xref#1{\7f\xref\ 12930,96583
+\def\ref#1{\7f\ref\ 12931,96618
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\7f\xrefX[\ 12932,96648
+\def\printedmanual{\7f\printedmanual\ 12933,96691
+\def\printednodename{\7f\printednodename\ 12934,96729
+\def\printednodename{\7f\printednodename\ 12939,96854
+section ``\printednodename'' in \cite{\printedmanual}\7f\printedmanual\ 12954,97487
+\refx{\7fx\ 12957,97565
+\def\dosetq #1#2{\7f\dosetq\ 12965,97785
+\def\internalsetq #1#2{\7f\internalsetq\ 12973,98043
+\def\Ypagenumber{\7f\Ypagenumber\ 12977,98144
+\def\Ytitle{\7f\Ytitle\ 12979,98170
+\def\Ynothing{\7f\Ynothing\ 12981,98197
+\def\Ysectionnumberandtype{\7f\Ysectionnumberandtype\ 12983,98214
+\def\Yappendixletterandtype{\7f\Yappendixletterandtype\ 12992,98530
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\7fno\ 12993,98560
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\7fno.\the\secno\ 12994,98615
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\7fno.\the\secno.\the\subsecno\ 12996,98719
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\7fno.\the\secno.\the\subsecno.\the\subsubsecno\ 12998,98790
+ \def\linenumber{\7f\linenumber\ 13009,99129
+\def\refx#1#2{\7f\refx\ 13015,99313
+\def\xrdef #1#2{\7f\xrdef\ 13037,99939
+\def\readauxfile{\7f\readauxfile\ 13040,100024
+\def\supereject{\7f\supereject\ 13110,101805
+\footstrut\parindent=\defaultparindent\hang\textindent{\7faultparindent\hang\textindent\ 13131,102490
+\def\openindices{\7f\openindices\ 13139,102676
+\newdimen\defaultparindent \defaultparindent = 15pt\7faultparindent\ 13151,102901
+\parindent = \defaultparindent\7faultparindent\ 13152,102953
+\def\smallbook{\7f\smallbook\ 13175,103677
+\global\def\Esmallexample{\7f\Esmallexample\ 13192,104104
+\def\afourpaper{\7f\afourpaper\ 13196,104195
+\def\finalout{\7f\finalout\ 13224,105003
+\def\normaldoublequote{\7f\normaldoublequote\ 13235,105264
+\def\normaltilde{\7f\normaltilde\ 13236,105290
+\def\normalcaret{\7f\normalcaret\ 13237,105310
+\def\normalunderscore{\7f\normalunderscore\ 13238,105330
+\def\normalverticalbar{\7f\normalverticalbar\ 13239,105355
+\def\normalless{\7f\normalless\ 13240,105381
+\def\normalgreater{\7f\normalgreater\ 13241,105400
+\def\normalplus{\7f\normalplus\ 13242,105422
+\def\ifusingtt#1#2{\7f\ifusingtt\ 13253,105914
+\def\activedoublequote{\7f\activedoublequote\ 13261,106242
+\def~{\7f~\ 13264,106328
+\def^{\7f^\ 13267,106389
+\def_{\7f_\ 13270,106428
+\def\_{\7f\_\ 13272,106502
+\def\lvvmode{\7f\lvvmode\ 13279,106839
+\def|{\7f|\ 13282,106889
+\def<{\7f<\ 13285,106952
+\def>{\7f>\ 13288,107009
+\def+{\7f+\ 13290,107047
+\def\turnoffactive{\7f\turnoffactive\ 13296,107208
+\global\def={\7f=\ 13307,107494
+\def\normalbackslash{\7f\normalbackslash\ 13321,107876
+\f
+c-src/c.c,76
+T f(\7f1,0
+}T i;\7f2,14
+void bar(\7f5,69
+int foobar(\7f6,94
+interface_locate(\7f9,131
+\f
+c.c,1963
+my_printf \7f135,
+void fatala \7f138,
+max \7f141,
+struct bar \7f143,
+ char z;\7f144,
+ struct foo f;\7f145,
+__attribute__ ((always_inline)) max \7f147,
+struct foo\7f150,
+ char a;\7f152,
+ int x[\7fx\ 1153,
+char stack[\7fstack\ 1155,
+struct S \7f156,
+struct S { short f[\7ff\ 1156,
+ int *__ip;\7f__ip\ 1159,
+ union wait *__up;\7f__up\ 1160,
+} wait_status_ptr_t \7f161,
+Some_Class A \7f162,
+typedef T1 T3 \7f163,
+T3 z \7f164,
+typedef int more_aligned_int \7f165,
+struct S __attribute__ ((vector_size (16))) foo;\7f166,
+int foo \7f167,
+char *__attribute__((aligned(8))) *f;\7ff\ 1168,
+int i \7f169,
+extern void foobar \7f170,
+typedef struct cacheLRUEntry_s\7f172,
+ U16 next;\7f174,
+ U16 prev;\7f175,
+__attribute__ ((packed)) cacheLRUEntry_t;\7f177,
+struct foo \7f178,
+ int x;\7f179,
+ char a,\7f180,
+ char a, b,\7f180,
+ char a, b, c,\7f180,
+ char a, b, c, d;\7f180,
+ f1 \7f183,
+void f2 \7f184,
+int x \7f188,
+struct foo \7f189,
+struct foo { int x[\7fx\ 1189,
+short array[\7farray\ 1190,
+int f\7f193,
+DEAFUN \7f196,
+XDEFUN \7f203,
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,\7fx-get-selection-internal\ 1206,
+ Fx_get_selection_internal,\7fx-get-selection-internal\ 1212,
+ Fy_get_selection_internal,\7fy-get-selection-internal\ 1216,
+defun_func1(\7f218,
+DEFUN_func2(\7f220,
+typedef int bool;\7f222,
+bool funcboo \7f223,
+struct my_struct \7f226,
+typedef struct my_struct my_typedef;\7f228,
+int bla \7f229,
+a(\7f234,
+int func1\7f237,
+static struct cca_control init_control \7f239,
+static tpcmd rbtp \7f240,
+static byte ring1 \7f241,
+static byte ring2 \7f242,
+request request \7f243,
+int func2 \7f246,
+ aaa;\7f249,
+ bbb;\7f251,
+struct sss1 \7f252,
+struct sss2\7f253,
+ struct ss3\7f255,
+struct a b;\7f259,
+struct aa *b;\7fb\ 1260,
+ **b;\7fb\ 1262,
+caccacacca \7f263,
+a \7f267,
+ typedef struct aa \7f269,
+ typedef struct aa {} aaa;\7f269,
+static void inita \7f271,
+node *lasta \7flasta\ 1272,
+b \7f273,
+ typedef int bb;\7f275,
+static void initb \7f277,
+node *lastb \7flastb\ 1278,
+typedef enum { REG_ENOSYS \7f279,
+typedef enum { REG_ENOSYS = -1, aa \7f279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;\7f279,
+\f
+c-src/a/b/b.c,18
+#define this \7f1,0
+\f
+../c/c.web,20
+#define questo \7f34,
+\f
+y-src/parse.y,738
+#define obstack_chunk_alloc \7f46,1116
+#define obstack_chunk_free \7f47,1154
+VOIDSTAR parse_hash;\7f63,1405
+unsigned char fnin[\7ffnin\ 167,1524
+#define YYSTYPE \7f71,1622
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,1653
+YYSTYPE parse_return;\7f73,1683
+char *instr;\7finstr\ 180,1795
+int parse_error \7f81,1808
+line:\7fline\ 186,1867
+exp:\7fexp\ 194,1980
+exp_list:\7fexp_list\ 1262,5647
+range_exp:\7frange_exp\ 1268,5745
+range_exp_list:\7frange_exp_list\ 1272,5775
+cell:\7fcell\ 1278,5893
+yyerror FUN1(\7f285,5940
+make_list FUN2(\7f292,6020
+#define ERROR \7f303,6220
+yylex FUN0(\7f314,6397
+parse_cell_or_range FUN2(\7f586,11763
+#define CK_ABS_R(\7f670,13205
+#define CK_REL_R(\7f674,13284
+#define CK_ABS_C(\7f679,13413
+#define CK_REL_C(\7f683,13492
+#define MAYBEREL(\7f688,13621
+str_to_col FUN1(\7f846,16822
+\f
+y-src/parse.c,520
+#define YYBISON \7f4,64
+# define NE \7f6,114
+# define LE \7f7,130
+# define GE \7f8,146
+# define NEG \7f9,162
+# define L_CELL \7f10,179
+# define L_RANGE \7f11,199
+# define L_VAR \7f12,220
+# define L_CONST \7f13,239
+# define L_FN0 \7f14,260
+# define L_FN1 \7f15,279
+# define L_FN2 \7f16,298
+# define L_FN3 \7f17,317
+# define L_FN4 \7f18,336
+# define L_FNN \7f19,355
+# define L_FN1R \7f20,374
+# define L_FN2R \7f21,394
+# define L_FN3R \7f22,414
+# define L_FN4R \7f23,434
+# define L_FNNR \7f24,454
+# define L_LE \7f25,474
+# define L_NE \7f26,492
+# define L_GE \7f27,510
+\f
+parse.y,1181
+#define obstack_chunk_alloc \7f46,
+#define obstack_chunk_free \7f47,
+VOIDSTAR parse_hash;\7f63,
+unsigned char fnin[\7ffnin\ 167,
+#define YYSTYPE \7f71,
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,
+YYSTYPE parse_return;\7f73,
+char *instr;\7finstr\ 180,
+int parse_error \7f81,
+#define YYSTYPE \7f85,
+# define YYDEBUG \7f88,
+#define YYFINAL \7f93,
+#define YYFLAG \7f94,
+#define YYNTBASE \7f95,
+#define YYTRANSLATE(\7f98,
+static const char yytranslate[\7fyytranslate\ 1101,
+static const short yyprhs[\7fyyprhs\ 1134,
+static const short yyrhs[\7fyyrhs\ 1142,
+static const short yyrline[\7fyyrline\ 1171,
+static const char *const yytname[\7fyytname\ 1185,
+static const short yyr1[\7fyyr1\ 1197,
+static const short yyr2[\7fyyr2\ 1207,
+static const short yydefact[\7fyydefact\ 1219,
+static const short yydefgoto[\7fyydefgoto\ 1237,
+static const short yypact[\7fyypact\ 1242,
+static const short yypgoto[\7fyypgoto\ 1260,
+#define YYLAST \7f266,
+static const short yytable[\7fyytable\ 1269,
+static const short yycheck[\7fyycheck\ 1330,
+yyerror FUN1(\7f285,
+make_list FUN2(\7f292,
+#define ERROR \7f303,
+yylex FUN0(\7f314,
+parse_cell_or_range FUN2(\7f586,
+#define CK_ABS_R(\7f670,
+#define CK_REL_R(\7f674,
+#define CK_ABS_C(\7f679,
+#define CK_REL_C(\7f683,
+#define MAYBEREL(\7f688,
+str_to_col FUN1(\7f846,
+\f
+/usr/share/bison/bison.simple,2168
+# define YYSTD(\7f40,
+# define YYSTD(\7f42,
+# define YYSTACK_ALLOC \7f50,
+# define YYSIZE_T \7f51,
+# define YYSTACK_ALLOC \7f55,
+# define YYSIZE_T \7f56,
+# define YYSTACK_ALLOC \7f59,
+# define YYSTACK_FREE(\7f67,
+# define YYSIZE_T \7f71,
+# define YYSIZE_T \7f75,
+# define YYSTACK_ALLOC \7f78,
+# define YYSTACK_FREE \7f79,
+union yyalloc\7f83,
+ short yyss;\7f85,
+ YYSTYPE yyvs;\7f86,
+ YYLTYPE yyls;\7f88,
+# define YYSTACK_GAP_MAX \7f93,
+# define YYSTACK_BYTES(\7f98,
+# define YYSTACK_BYTES(\7f102,
+# define YYSTACK_RELOCATE(\7f112,
+# define YYSIZE_T \7f128,
+# define YYSIZE_T \7f131,
+# define YYSIZE_T \7f136,
+# define YYSIZE_T \7f140,
+# define YYSIZE_T \7f145,
+#define yyerrok \7f148,
+#define yyclearin \7f149,
+#define YYEMPTY \7f150,
+#define YYEOF \7f151,
+#define YYACCEPT \7f152,
+#define YYABORT \7f153,
+#define YYERROR \7f154,
+#define YYFAIL \7f158,
+#define YYRECOVERING(\7f159,
+#define YYBACKUP(\7f160,
+#define YYTERROR \7f177,
+#define YYERRCODE \7f178,
+# define YYLLOC_DEFAULT(\7f189,
+# define YYLEX \7f200,
+# define YYLEX \7f202,
+# define YYLEX \7f206,
+# define YYLEX \7f208,
+# define YYLEX \7f212,
+# define YYFPRINTF \7f225,
+# define YYDPRINTF(\7f228,
+int yydebug;\7f237,
+# define YYDPRINTF(\7f239,
+# define YYINITDEPTH \7f244,
+# undef YYMAXDEPTH\7f255,
+# define YYMAXDEPTH \7f259,
+# define yymemcpy \7f264,
+yymemcpy \7f271,
+# define yystrlen \7f293,
+yystrlen \7f298,
+# define yystpcpy \7f316,
+yystpcpy \7f322,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/atest.y,9
+exp \7f2,3
+\f
+y-src/cccp.c,303
+#define YYBISON \7f4,63
+# define INT \7f6,113
+# define CHAR \7f7,130
+# define NAME \7f8,148
+# define ERROR \7f9,166
+# define OR \7f10,185
+# define AND \7f11,201
+# define EQUAL \7f12,218
+# define NOTEQUAL \7f13,237
+# define LEQ \7f14,259
+# define GEQ \7f15,276
+# define LSH \7f16,293
+# define RSH \7f17,310
+# define UNARY \7f18,327
+\f
+cccp.y,2106
+typedef unsigned char U_CHAR;\7f38,
+struct arglist \7f41,
+ struct arglist *next;\7fnext\ 142,
+ U_CHAR *name;\7fname\ 143,
+ int length;\7f44,
+ int argno;\7f45,
+#define NULL \7f51,
+#define GENERIC_PTR \7f56,
+#define GENERIC_PTR \7f58,
+#define NULL_PTR \7f63,
+int expression_value;\7f68,
+static jmp_buf parse_return_error;\7f70,
+static int keyword_parsing \7f73,
+#define CHAR_TYPE_SIZE \7f87,
+#define INT_TYPE_SIZE \7f91,
+#define LONG_TYPE_SIZE \7f95,
+#define WCHAR_TYPE_SIZE \7f99,
+#define possible_sum_sign(\7f104,
+ struct constant \7f113,
+ struct constant {long value;\7f113,
+ struct constant {long value; int unsignedp;\7f113,
+ struct constant {long value; int unsignedp;} integer;\7f113,
+ struct name \7f114,
+ struct name {U_CHAR *address;\7faddress\ 1114,
+ struct name {U_CHAR *address; int length;\7f114,
+ struct name {U_CHAR *address; int length;} name;\7f114,
+ struct arglist *keywords;\7fkeywords\ 1115,
+ int voidval;\7f116,
+ char *sval;\7fsval\ 1117,
+} yystype;\7f118,
+# define YYSTYPE \7f119,
+# define YYDEBUG \7f122,
+#define YYFINAL \7f127,
+#define YYFLAG \7f128,
+#define YYNTBASE \7f129,
+#define YYTRANSLATE(\7f132,
+static const char yytranslate[\7fyytranslate\ 1135,
+static const short yyprhs[\7fyyprhs\ 1167,
+static const short yyrhs[\7fyyrhs\ 1174,
+static const short yyrline[\7fyyrline\ 1195,
+static const char *const yytname[\7fyytname\ 1208,
+static const short yyr1[\7fyyr1\ 1219,
+static const short yyr2[\7fyyr2\ 1228,
+static const short yydefact[\7fyydefact\ 1239,
+static const short yydefgoto[\7fyydefgoto\ 1251,
+static const short yypact[\7fyypact\ 1256,
+static const short yypgoto[\7fyypgoto\ 1268,
+#define YYLAST \7f274,
+static const short yytable[\7fyytable\ 1277,
+static const short yycheck[\7fyycheck\ 1301,
+static char *lexptr;\7flexptr\ 1332,
+parse_number \7f341,
+struct token \7f437,
+ char *operator;\7foperator\ 1438,
+ int token;\7f439,
+static struct token tokentab2[\7ftokentab2\ 1442,
+yylex \7f459,
+parse_escape \7f740,
+yyerror \7f836,
+integer_overflow \7f844,
+left_shift \7f851,
+right_shift \7f873,
+parse_c_expression \7f893,
+main \7f923,
+unsigned char is_idchar[\7fis_idchar\ 1948,
+unsigned char is_idstart[\7fis_idstart\ 1950,
+char is_hor_space[\7fis_hor_space\ 1953,
+initialize_random_junk \7f958,
+error \7f988,
+warning \7f993,
+lookup \7f999,
+\f
+/usr/share/bison/bison.simple,2168
+# define YYSTD(\7f41,
+# define YYSTD(\7f43,
+# define YYSTACK_ALLOC \7f51,
+# define YYSIZE_T \7f52,
+# define YYSTACK_ALLOC \7f56,
+# define YYSIZE_T \7f57,
+# define YYSTACK_ALLOC \7f60,
+# define YYSTACK_FREE(\7f68,
+# define YYSIZE_T \7f72,
+# define YYSIZE_T \7f76,
+# define YYSTACK_ALLOC \7f79,
+# define YYSTACK_FREE \7f80,
+union yyalloc\7f84,
+ short yyss;\7f86,
+ YYSTYPE yyvs;\7f87,
+ YYLTYPE yyls;\7f89,
+# define YYSTACK_GAP_MAX \7f94,
+# define YYSTACK_BYTES(\7f99,
+# define YYSTACK_BYTES(\7f103,
+# define YYSTACK_RELOCATE(\7f113,
+# define YYSIZE_T \7f129,
+# define YYSIZE_T \7f132,
+# define YYSIZE_T \7f137,
+# define YYSIZE_T \7f141,
+# define YYSIZE_T \7f146,
+#define yyerrok \7f149,
+#define yyclearin \7f150,
+#define YYEMPTY \7f151,
+#define YYEOF \7f152,
+#define YYACCEPT \7f153,
+#define YYABORT \7f154,
+#define YYERROR \7f155,
+#define YYFAIL \7f159,
+#define YYRECOVERING(\7f160,
+#define YYBACKUP(\7f161,
+#define YYTERROR \7f178,
+#define YYERRCODE \7f179,
+# define YYLLOC_DEFAULT(\7f190,
+# define YYLEX \7f201,
+# define YYLEX \7f203,
+# define YYLEX \7f207,
+# define YYLEX \7f209,
+# define YYLEX \7f213,
+# define YYFPRINTF \7f226,
+# define YYDPRINTF(\7f229,
+int yydebug;\7f238,
+# define YYDPRINTF(\7f240,
+# define YYINITDEPTH \7f245,
+# undef YYMAXDEPTH\7f256,
+# define YYMAXDEPTH \7f260,
+# define yymemcpy \7f265,
+yymemcpy \7f272,
+# define yystrlen \7f294,
+yystrlen \7f299,
+# define yystpcpy \7f317,
+yystpcpy \7f323,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/cccp.y,1696
+typedef unsigned char U_CHAR;\7f38,1201
+struct arglist \7f41,1301
+ struct arglist *next;\7fnext\ 142,1318
+ U_CHAR *name;\7fname\ 143,1342
+ int length;\7f44,1358
+ int argno;\7f45,1372
+#define NULL \7f51,1468
+#define GENERIC_PTR \7f56,1578
+#define GENERIC_PTR \7f58,1611
+#define NULL_PTR \7f63,1670
+int expression_value;\7f68,1743
+static jmp_buf parse_return_error;\7f70,1766
+static int keyword_parsing \7f73,1865
+#define CHAR_TYPE_SIZE \7f87,2162
+#define INT_TYPE_SIZE \7f91,2229
+#define LONG_TYPE_SIZE \7f95,2296
+#define WCHAR_TYPE_SIZE \7f99,2365
+#define possible_sum_sign(\7f104,2556
+ struct constant \7f112,2733
+ struct constant {long value;\7f112,2733
+ struct constant {long value; int unsignedp;\7f112,2733
+ struct constant {long value; int unsignedp;} integer;\7f112,2733
+ struct name \7f113,2789
+ struct name {U_CHAR *address;\7faddress\ 1113,2789
+ struct name {U_CHAR *address; int length;\7f113,2789
+ struct name {U_CHAR *address; int length;} name;\7f113,2789
+ struct arglist *keywords;\7fkeywords\ 1114,2840
+ int voidval;\7f115,2868
+ char *sval;\7fsval\ 1116,2883
+start \7f143,3226
+exp1 \7f148,3330
+exp \7f156,3505
+exp \7f185,4295
+keywords \7f306,7835
+static char *lexptr;\7flexptr\ 1332,8579
+parse_number \7f341,8842
+struct token \7f437,11038
+ char *operator;\7foperator\ 1438,11053
+ int token;\7f439,11071
+static struct token tokentab2[\7ftokentab2\ 1442,11088
+yylex \7f459,11367
+parse_escape \7f740,17718
+yyerror \7f836,19599
+integer_overflow \7f844,19690
+left_shift \7f851,19804
+right_shift \7f873,20194
+parse_c_expression \7f893,20732
+main \7f923,21483
+unsigned char is_idchar[\7fis_idchar\ 1948,21901
+unsigned char is_idstart[\7fis_idstart\ 1950,21996
+char is_hor_space[\7fis_hor_space\ 1953,22160
+initialize_random_junk \7f958,22259
+error \7f988,22915
+warning \7f993,22963
+lookup \7f999,23033
+\f
+tex-src/nonewline.tex,0
+\f
+php-src/sendmail.php,0
+\f
+c-src/fail.c,0
+\f
+a-src/empty.zz,0
--- /dev/null
- perl-src/htlmify-cystic,1443
+\f
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 11,0
+ function Body_Required\7fBody_Required/f\ 13,78
+ type Type_Specific_Data \7fType_Specific_Data/t\ 111,280
+ function "abs"\7fabs/f\ 119,504
+ type Barrier_Function_Pointer \7fBarrier_Function_Pointer/t\ 121,577
+ function "="\7f=/f\ 127,722
+ type usfreelock_ptr \7fusfreelock_ptr/t\ 130,803
+ function p \7fp/f\ 133,891
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 137,1054
+function p \7fp/f\ 139,1094
+package Pkg1 \7fPkg1/s\ 144,1203
+ type Private_T \7fPrivate_T/t\ 146,1220
+ package Inner1 \7fInner1/s\ 148,1250
+ procedure Private_T;\7fPrivate_T/p\ 149,1270
+ package Inner2 \7fInner2/s\ 152,1310
+ task Private_T;\7fPrivate_T/k\ 153,1330
+ type Public_T \7fPublic_T/t\ 156,1365
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 162,1450
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 164,1475
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 166,1514
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 168,1553
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 171,1622
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 172,1645
+ task type Task_Type \7fTask_Type/k\ 175,1694
+ type Private_T \7fPrivate_T/t\ 182,1786
+package body Pkg1 \7fPkg1/b\ 189,1882
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 191,1904
+ package body Inner1 \7fInner1/b\ 196,1956
+ procedure Private_T \7fPrivate_T/p\ 197,1981
+ package body Inner2 \7fInner2/b\ 1103,2054
+ task body Private_T \7fPrivate_T/b\ 1104,2079
+ task body Task_Type \7fTask_Type/b\ 1112,2181
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 1126,2367
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 1132,2445
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 1134,2496
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1140,2596
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1146,2663
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1147,2689
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1155,2778
+package Truc \7fTruc/s\ 1162,2887
+package Truc.Bidule \7fTruc.Bidule/s\ 1166,2929
+ protected Bidule \7fBidule/t\ 1168,2953
+ protected type Machin_T \7fMachin_T/t\ 1172,3007
+package body Truc.Bidule \7fTruc.Bidule/b\ 1178,3087
+ protected body Bidule \7fBidule/b\ 1179,3115
+ protected Machin_T \7fMachin_T/t\ 1186,3207
+\f
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives \7fSystem.Task_Primitives/b\ 164,2603
+ package RTE \7fRTE/s\ 169,2712
+ package TSL \7fTSL/s\ 170,2759
+ function To_void_ptr \7fTo_void_ptr/f\ 186,3287
+ function To_TCB_Ptr \7fTo_TCB_Ptr/f\ 189,3366
+ function pthread_mutexattr_setprotocol\7fpthread_mutexattr_setprotocol/f\ 192,3444
+ function pthread_mutexattr_setprio_ceiling\7fpthread_mutexattr_setprio_ceiling/f\ 199,3728
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1115,4302
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1122,4526
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 1131,4830
+ function Self \7fSelf/f\ 1160,5586
+ procedure Initialize_Lock\7fInitialize_Lock/p\ 1174,5958
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1210,6927
+ procedure Write_Lock \7fWrite_Lock/p\ 1226,7338
+ procedure Read_Lock \7fRead_Lock/p\ 1239,7700
+ procedure Unlock \7fUnlock/p\ 1246,7850
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1258,8160
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1286,8979
+ procedure Cond_Wait \7fCond_Wait/p\ 1300,9303
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1312,9661
+ procedure Cond_Signal \7fCond_Signal/p\ 1343,10510
+ procedure Set_Priority\7fSet_Priority/p\ 1355,10836
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1372,11243
+ function Get_Priority \7fGet_Priority/f\ 1385,11598
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1398,12023
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1412,12438
+ function To_Start_Addr \7fTo_Start_Addr/f\ 1426,12873
+ procedure Exit_LL_Task \7fExit_LL_Task/p\ 1491,14995
+ procedure Abort_Task \7fAbort_Task/p\ 1500,15158
+ procedure Test_Abort \7fTest_Abort/p\ 1518,15716
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1527,15878
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1557,16939
+ function Address_To_Call_State \7fAddress_To_Call_State/f\ 1562,17062
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1573,17351
+ procedure LL_Assert \7fLL_Assert/p\ 1599,18146
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1608,18299
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1630,19010
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1635,19129
+ procedure Clear \7fClear/p\ 1640,19236
+ procedure Test_And_Set \7fTest_And_Set/p\ 1645,19330
+ function Is_Set \7fIs_Set/f\ 1659,19676
+\f
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives \7fSystem.Task_Primitives/s\ 158,3169
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 162,3253
+ type Pre_Call_State \7fPre_Call_State/t\ 164,3331
+ type Task_Storage_Size \7fTask_Storage_Size/t\ 166,3378
+ type Machine_Exceptions \7fMachine_Exceptions/t\ 168,3433
+ type Error_Information \7fError_Information/t\ 170,3499
+ type Lock \7fLock/t\ 172,3569
+ type Condition_Variable \7fCondition_Variable/t\ 173,3594
+ type Task_Control_Block \7fTask_Control_Block/t\ 181,3955
+ type TCB_Ptr \7fTCB_Ptr/t\ 189,4241
+ function Address_To_TCB_Ptr \7fAddress_To_TCB_Ptr/f\ 193,4333
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 196,4425
+ function Self \7fSelf/f\ 1100,4602
+ procedure Initialize_Lock \7fInitialize_Lock/p\ 1103,4707
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1107,4879
+ procedure Write_Lock \7fWrite_Lock/p\ 1111,5034
+ procedure Read_Lock \7fRead_Lock/p\ 1118,5428
+ procedure Unlock \7fUnlock/p\ 1128,5995
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1135,6300
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1138,6413
+ procedure Cond_Wait \7fCond_Wait/p\ 1142,6591
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1155,7396
+ procedure Cond_Signal \7fCond_Signal/p\ 1164,7812
+ procedure Set_Priority \7fSet_Priority/p\ 1169,8040
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1173,8200
+ function Get_Priority \7fGet_Priority/f\ 1177,8348
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1181,8504
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1185,8647
+ procedure Exit_LL_Task;\7fExit_LL_Task/p\ 1198,9282
+ procedure Abort_Task \7fAbort_Task/p\ 1203,9516
+ procedure Test_Abort;\7fTest_Abort/p\ 1210,9878
+ type Abort_Handler_Pointer \7fAbort_Handler_Pointer/t\ 1217,10233
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1219,10312
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1226,10741
+ procedure LL_Assert \7fLL_Assert/p\ 1231,10983
+ type Proc \7fProc/t\ 1238,11240
+ type TAS_Cell \7fTAS_Cell/t\ 1242,11328
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1249,11670
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1255,11941
+ procedure Clear \7fClear/p\ 1260,12157
+ procedure Test_And_Set \7fTest_And_Set/p\ 1267,12462
+ function Is_Set \7fIs_Set/f\ 1275,12877
+ type Lock \7fLock/t\ 1283,13155
+ type Condition_Variable \7fCondition_Variable/t\ 1288,13267
+ type TAS_Cell \7fTAS_Cell/t\ 1293,13389
+\f
+ada-src/waroquiers.ada,1503
+package Pkg1 \7fPkg1/s\ 13,89
+ type Private_T \7fPrivate_T/t\ 15,106
+ package Inner1 \7fInner1/s\ 17,136
+ procedure Private_T;\7fPrivate_T/p\ 18,156
+ package Inner2 \7fInner2/s\ 111,196
+ task Private_T;\7fPrivate_T/k\ 112,216
+ type Public_T \7fPublic_T/t\ 115,251
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 121,336
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 123,361
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 125,400
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 127,439
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 130,508
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 131,531
+ task type Task_Type \7fTask_Type/k\ 134,580
+ type Private_T \7fPrivate_T/t\ 140,671
+package body Pkg1 \7fPkg1/b\ 146,766
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 148,788
+ package body Inner1 \7fInner1/b\ 153,840
+ procedure Private_T \7fPrivate_T/p\ 154,865
+ package body Inner2 \7fInner2/b\ 160,938
+ task body Private_T \7fPrivate_T/b\ 161,963
+ task body Task_Type \7fTask_Type/b\ 168,1064
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 182,1250
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 188,1328
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 190,1379
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 196,1479
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1100,1544
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1101,1570
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1107,1657
+package Truc \7fTruc/s\ 1112,1764
+package Truc.Bidule \7fTruc.Bidule/s\ 1116,1816
+ protected Bidule \7fBidule/t\ 1125,1964
+ protected type Machin_T \7fMachin_T/t\ 1131,2046
+package body Truc.Bidule \7fTruc.Bidule/b\ 1138,2153
+ protected body Bidule \7fBidule/b\ 1139,2181
+ protected body Machin_T \7fMachin_T/b\ 1146,2281
+\f
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;\7f43,1424
+Lisp_Object Vglobal_abbrev_table;\7f48,1569
+Lisp_Object Vfundamental_mode_abbrev_table;\7f52,1680
+int abbrevs_changed;\7f56,1781
+int abbrev_all_caps;\7f58,1803
+Lisp_Object Vabbrev_start_location;\7f63,1952
+Lisp_Object Vabbrev_start_location_buffer;\7f66,2041
+Lisp_Object Vlast_abbrev;\7f70,2150
+Lisp_Object Vlast_abbrev_text;\7f75,2319
+int last_abbrev_point;\7f79,2409
+Lisp_Object Vpre_abbrev_expand_hook,\7f83,2482
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;\7f83,2482
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,\7fmake-abbrev-table\ 185,2546
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,\7fclear-abbrev-table\ 192,2738
+DEFUN ("define-abbrev", Fdefine_abbrev,\7fdefine-abbrev\ 1107,3119
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,\7fdefine-global-abbrev\ 1149,4438
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,\7fdefine-mode-abbrev\ 1160,4809
+DEFUN ("abbrev-symbol", Fabbrev_symbol,\7fabbrev-symbol\ 1174,5277
+DEFUN ("abbrev-expansion", Fabbrev_expansion,\7fabbrev-expansion\ 1202,6241
+DEFUN ("expand-abbrev", Fexpand_abbrev,\7fexpand-abbrev\ 1218,6756
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,\7funexpand-abbrev\ 1389,11677
+write_abbrev \7f426,12884
+describe_abbrev \7f445,13319
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,\7finsert-abbrev-table-description\ 1466,13834
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,\7fdefine-abbrev-table\ 1506,14990
+syms_of_abbrev \7f540,16067
+ DEFVAR_LISP ("abbrev-table-name-list"\7f542,16087
+ DEFVAR_LISP ("global-abbrev-table"\7f548,16349
+ DEFVAR_LISP ("fundamental-mode-abbrev-table"\7f555,16671
+ DEFVAR_LISP ("last-abbrev"\7f561,17013
+ DEFVAR_LISP ("last-abbrev-text"\7f564,17136
+ DEFVAR_INT ("last-abbrev-location"\7f568,17294
+ DEFVAR_LISP ("abbrev-start-location"\7f575,17493
+ DEFVAR_LISP ("abbrev-start-location-buffer"\7f581,17770
+ DEFVAR_PER_BUFFER ("local-abbrev-table"\7f586,18034
+ DEFVAR_BOOL ("abbrevs-changed"\7f589,18177
+ DEFVAR_BOOL ("abbrev-all-caps"\7f594,18380
+ DEFVAR_LISP ("pre-abbrev-expand-hook"\7f598,18536
+ DEFVAR_LISP ("abbrev-table-name-list",\7f\1\ 1542,16087
+ DEFVAR_LISP ("global-abbrev-table",\7f\1\ 1548,16349
+ DEFVAR_LISP ("fundamental-mode-abbrev-table",\7f\1\ 1555,16671
+ DEFVAR_LISP ("last-abbrev",\7f\1\ 1561,17013
+ DEFVAR_LISP ("last-abbrev-text",\7f\1\ 1564,17136
+ DEFVAR_INT ("last-abbrev-location",\7f\1\ 1568,17294
+ DEFVAR_LISP ("abbrev-start-location",\7f\1\ 1575,17493
+ DEFVAR_LISP ("abbrev-start-location-buffer",\7f\1\ 1581,17770
+ DEFVAR_PER_BUFFER ("local-abbrev-table",\7f\1\ 1586,18034
+ DEFVAR_BOOL ("abbrevs-changed",\7f\1\ 1589,18177
+ DEFVAR_BOOL ("abbrev-all-caps",\7f\1\ 1594,18380
+ DEFVAR_LISP ("pre-abbrev-expand-hook",\7f\1\ 1598,18536
+\f
+c-src/torture.c,197
+(*tag1 \7ftag1\ 118,452
+#define notag2 \7f26,553
+(*tag2 \7ftag2\ 129,630
+(*tag3 \7ftag3\ 139,772
+#define notag4 \7f45,861
+(*tag4 \7ftag4\ 148,955
+tag5 \7f57,1081
+tag6 \7f66,1208
+int pp1(\7f74,1317
+pp2\7f87,1419
+pp3(\7f100,1518
+\f
+c-src/getopt.h,147
+#define _GETOPT_H \7f19,794
+struct option\7f73,2790
+#define no_argument \7f89,3117
+#define required_argument \7f90,3140
+#define optional_argument \7f91,3168
+\f
+c-src/etags.c,10045
+char pot_etags_version[\7fpot_etags_version\ 181,3470
+# undef DEBUG\7f84,3552
+# define DEBUG \7f85,3567
+# define DEBUG \7f87,3594
+# define NDEBUG \7f88,3617
+# define _GNU_SOURCE \7f94,3705
+# undef MSDOS\7f100,3876
+# undef WINDOWSNT\7f101,3890
+# define WINDOWSNT\7f102,3909
+# undef MSDOS\7f106,3968
+# define MSDOS \7f107,3982
+# define MSDOS \7f110,4032
+# define MAXPATHLEN \7f115,4111
+# undef HAVE_NTGUI\7f116,4141
+# undef DOS_NT\7f117,4160
+# define DOS_NT\7f118,4176
+# undef assert \7f135,4482
+# define assert(\7f136,4541
+# undef CTAGS\7f146,4857
+# define CTAGS \7f147,4872
+# define CTAGS \7f149,4898
+#define streq(\7f152,4927
+#define strcaseeq(\7f153,4996
+#define strneq(\7f154,5075
+#define strncaseeq(\7f155,5151
+#define CHARS \7f157,5238
+#define CHAR(\7f158,5278
+#define iswhite(\7f159,5329
+#define notinname(\7f160,5394
+#define begtoken(\7f161,5469
+#define intoken(\7f162,5542
+#define endtoken(\7f163,5614
+#define ISALNUM(\7f165,5684
+#define ISALPHA(\7f166,5722
+#define ISDIGIT(\7f167,5760
+#define ISLOWER(\7f168,5798
+#define lowcase(\7f170,5837
+#define xnew(\7f179,6015
+#define xrnew(\7f180,6083
+typedef void Lang_function \7f182,6164
+} compressor;\7f188,6365
+} language;\7f199,6835
+typedef struct fdesc\7f201,6848
+} fdesc;\7f212,7366
+typedef struct node_st\7f214,7376
+} node;\7f225,7894
+} linebuffer;\7f239,8248
+ at_language,\7f245,8344
+ at_regexp,\7f246,8393
+ at_filename,\7f247,8437
+ at_stdin,\7f248,8473
+ at_end \7f249,8516
+} argument;\7f253,8698
+typedef struct regexp\7f256,8758
+} regexp;\7f268,9325
+static void error \7f311,10780
+# undef STDIN\7f408,15073
+#define STDIN \7f411,15095
+static compressor compressors[\7fcompressors\ 1457,17664
+static const char *Ada_suffixes \7fAda_suffixes\ 1473,17907
+static const char Ada_help \7f475,17977
+static const char *Asm_suffixes \7fAsm_suffixes\ 1493,18580
+static const char Asm_help \7f504,18976
+static const char *default_C_suffixes \7fdefault_C_suffixes\ 1512,19312
+static const char default_C_help \7f515,19413
+static const char default_C_help \7f523,19850
+static const char *Cplusplus_suffixes \7fCplusplus_suffixes\ 1535,20460
+static const char Cplusplus_help \7f540,20658
+static const char *Cjava_suffixes \7fCjava_suffixes\ 1549,21113
+static char Cjava_help \7f551,21172
+static const char *Cobol_suffixes \7fCobol_suffixes\ 1556,21337
+static char Cobol_help \7f558,21402
+static const char *Cstar_suffixes \7fCstar_suffixes\ 1562,21543
+static const char *Erlang_suffixes \7fErlang_suffixes\ 1565,21607
+static const char Erlang_help \7f567,21673
+const char *Forth_suffixes \7fForth_suffixes\ 1571,21799
+static const char Forth_help \7f573,21857
+static const char *Fortran_suffixes \7fFortran_suffixes\ 1577,22008
+static const char Fortran_help \7f579,22085
+static const char *HTML_suffixes \7fHTML_suffixes\ 1582,22190
+static const char HTML_help \7f584,22264
+static const char *Lisp_suffixes \7fLisp_suffixes\ 1589,22452
+static const char Lisp_help \7f591,22556
+static const char *Lua_suffixes \7fLua_suffixes\ 1598,22871
+static const char Lua_help \7f600,22934
+static const char *Makefile_filenames \7fMakefile_filenames\ 1603,23010
+static const char Makefile_help \7f605,23133
+static const char *Objc_suffixes \7fObjc_suffixes\ 1609,23277
+static const char Objc_help \7f613,23399
+static const char *Pascal_suffixes \7fPascal_suffixes\ 1619,23714
+static const char Pascal_help \7f621,23778
+static const char *Perl_suffixes \7fPerl_suffixes\ 1626,23966
+static const char *Perl_interpreters \7fPerl_interpreters\ 1628,24028
+static const char Perl_help \7f630,24100
+static const char *PHP_suffixes \7fPHP_suffixes\ 1637,24451
+static const char PHP_help \7f639,24523
+static const char *plain_C_suffixes \7fplain_C_suffixes\ 1643,24678
+static const char *PS_suffixes \7fPS_suffixes\ 1647,24762
+static const char PS_help \7f649,24848
+static const char *Prolog_suffixes \7fProlog_suffixes\ 1652,24931
+static const char Prolog_help \7f654,24993
+static const char *Python_suffixes \7fPython_suffixes\ 1658,25107
+static const char Python_help \7f660,25165
+static const char *Scheme_suffixes \7fScheme_suffixes\ 1665,25347
+static const char Scheme_help \7f667,25460
+static const char *TeX_suffixes \7fTeX_suffixes\ 1672,25683
+static const char TeX_help \7f674,25781
+static const char *Texinfo_suffixes \7fTexinfo_suffixes\ 1686,26316
+static const char Texinfo_help \7f688,26395
+static const char *Yacc_suffixes \7fYacc_suffixes\ 1691,26492
+static const char Yacc_help \7f693,26606
+static const char auto_help \7f699,26856
+static const char none_help \7f703,27020
+static const char no_lang_help \7f707,27143
+static language lang_names \7f718,27355
+print_language_names \7f753,29532
+# define EMACS_NAME \7f786,30755
+# define VERSION \7f789,30811
+print_version \7f792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP \7f804,31173
+print_help \7f808,31250
+main \7f981,37438
+get_compressor_from_suffix \7f1319,46217
+get_language_from_langname \7f1355,47158
+get_language_from_interpreter \7f1377,47545
+get_language_from_filename \7f1399,47976
+process_file_name \7f1433,48834
+process_file \7f1555,51665
+init \7f1632,54150
+find_entries \7f1656,54901
+make_tag \7f1814,59707
+pfnote \7f1856,60942
+free_tree \7f1917,62744
+free_fdesc \7f1935,63029
+add_node \7f1955,63472
+invalidate_nodes \7f2035,65537
+static int number_len \7f2068,66193
+total_size_of_entries \7f2087,66694
+put_entries \7f2107,67154
+#define C_EXT \7f2193,68995
+#define C_PLAIN \7f2194,69037
+#define C_PLPL \7f2195,69070
+#define C_STAR \7f2196,69104
+#define C_JAVA \7f2197,69137
+#define C_AUTO \7f2198,69172
+#define YACC \7f2199,69242
+enum sym_type\7f2204,69312
+ st_none,\7f2206,69328
+ st_C_objprot,\7f2207,69339
+ st_C_objprot, st_C_objimpl,\7f2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,\7f2207,69339
+ st_C_gnumacro,\7f2208,69382
+ st_C_ignore,\7f2209,69399
+ st_C_ignore, st_C_attribute,\7f2209,69399
+ st_C_javastruct,\7f2210,69430
+ st_C_operator,\7f2211,69449
+ st_C_class,\7f2212,69466
+ st_C_class, st_C_template,\7f2212,69466
+ st_C_struct,\7f2213,69495
+ st_C_struct, st_C_extern,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef\7f2213,69495
+struct C_stab_entry \7f2271,71278
+hash \7f2275,71409
+in_word_set \7f2321,72937
+ TOTAL_KEYWORDS \7f2325,73018
+ MIN_WORD_LENGTH \7f2326,73045
+ MAX_WORD_LENGTH \7f2327,73072
+ MIN_HASH_VALUE \7f2328,73100
+ MAX_HASH_VALUE \7f2329,73126
+C_symtype \7f2387,74985
+static bool inattribute;\7f2400,75234
+ fvnone,\7f2408,75435
+ fdefunkey,\7f2409,75466
+ fdefunname,\7f2410,75512
+ foperator,\7f2411,75556
+ fvnameseen,\7f2412,75613
+ fstartlist,\7f2413,75666
+ finlist,\7f2414,75722
+ flistseen,\7f2415,75765
+ fignore,\7f2416,75813
+ vignore \7f2417,75856
+} fvdef;\7f2418,75901
+static bool fvextern;\7f2420,75911
+ tnone,\7f2428,76089
+ tkeyseen,\7f2429,76119
+ ttypeseen,\7f2430,76160
+ tinbody,\7f2431,76199
+ tend,\7f2432,76238
+ tignore \7f2433,76279
+} typdef;\7f2434,76320
+ snone,\7f2443,76499
+ skeyseen,\7f2445,76575
+ stagseen,\7f2446,76620
+ scolonseen \7f2447,76661
+} structdef;\7f2448,76715
+static const char *objtag \7fobjtag\ 12453,76809
+ dnone,\7f2460,76942
+ dsharpseen,\7f2461,76972
+ ddefineseen,\7f2462,77025
+ dignorerest \7f2463,77070
+} definedef;\7f2464,77112
+ onone,\7f2472,77267
+ oprotocol,\7f2473,77297
+ oimplementation,\7f2474,77347
+ otagseen,\7f2475,77395
+ oparenseen,\7f2476,77431
+ ocatseen,\7f2477,77486
+ oinbody,\7f2478,77525
+ omethodsign,\7f2479,77568
+ omethodtag,\7f2480,77626
+ omethodcolon,\7f2481,77666
+ omethodparm,\7f2482,77709
+ oignore \7f2483,77755
+} objdef;\7f2484,77787
+static struct tok\7f2491,77944
+} token;\7f2508,78626
+} cstack;\7f2523,79136
+#define nestlev \7f2525,79264
+#define instruct \7f2527,79369
+pushclass_above \7f2531,79489
+popclass_above \7f2550,79948
+write_classname \7f2564,80162
+consider_token \7f2613,81341
+} lbs[\7flbs\ 12924,88532
+#define current_lb_is_new \7f2926,88543
+#define switch_line_buffers(\7f2927,88588
+#define curlb \7f2929,88641
+#define newlb \7f2930,88672
+#define curlinepos \7f2931,88703
+#define newlinepos \7f2932,88744
+#define plainc \7f2934,88786
+#define cplpl \7f2935,88830
+#define cjava \7f2936,88861
+#define CNL_SAVE_DEFINEDEF(\7f2938,88905
+#define CNL(\7f2947,89117
+make_C_tag \7f2960,89375
+C_entries \7f2986,90194
+default_C_entries \7f3833,110156
+plain_C_entries \7f3840,110276
+Cplusplus_entries \7f3847,110364
+Cjava_entries \7f3854,110460
+Cstar_entries \7f3861,110550
+Yacc_entries \7f3868,110642
+#define LOOP_ON_INPUT_LINES(\7f3875,110720
+#define LOOKING_AT(\7f3884,111056
+#define LOOKING_AT_NOCASE(\7f3891,111461
+just_read_file \7f3901,111861
+F_takeprec \7f3914,112039
+F_getit \7f3937,112366
+Fortran_functions \7f3961,112840
+Ada_getit \7f4052,114669
+Ada_funcs \7f4115,116044
+Asm_labels \7f4228,118582
+Perl_functions \7f4261,119549
+Python_functions \7f4357,122057
+PHP_functions \7f4387,122684
+Cobol_paragraphs \7f4466,124471
+Makefile_targets \7f4494,125029
+Pascal_functions \7f4529,125950
+L_getit \7f4709,130318
+Lisp_functions \7f4725,130664
+Lua_functions \7f4785,131850
+PS_functions \7f4811,132385
+Forth_words \7f4841,133053
+Scheme_functions \7f4877,134092
+static linebuffer *TEX_toktab \7fTEX_toktab\ 14908,134781
+static const char *TEX_defenv \7fTEX_defenv\ 14912,134974
+static char TEX_esc \7f4920,135261
+static char TEX_opgrp \7f4921,135289
+static char TEX_clgrp \7f4922,135318
+TeX_commands \7f4928,135395
+#define TEX_LESC \7f4986,136652
+#define TEX_SESC \7f4987,136674
+TEX_mode \7f4992,136804
+TEX_decode_env \7f5026,137509
+Texinfo_nodes \7f5071,138554
+HTML_labels \7f5094,139013
+Prolog_functions \7f5219,142347
+prolog_skip_comment \7f5255,143128
+prolog_pr \7f5281,143736
+prolog_atom \7f5319,144628
+Erlang_functions \7f5379,145666
+erlang_func \7f5438,146965
+erlang_attribute \7f5476,147642
+erlang_atom \7f5496,148061
+scan_separators \7f5534,149080
+analyze_regex \7f5586,150460
+add_regex \7f5654,152050
+substitute \7f5767,154797
+free_regexps \7f5814,155837
+regex_tag_multiline \7f5836,156291
+nocase_tail \7f5913,158263
+get_tag \7f5928,158519
+readline_internal \7f5959,159455
+readline \7f6037,161296
+savestr \7f6230,167243
+savenstr \7f6240,167473
+skip_spaces \7f6249,167679
+skip_non_spaces \7f6258,167833
+skip_name \7f6267,167983
+fatal \7f6277,168156
+pfatal \7f6284,168253
+suggest_asking_for_help \7f6291,168332
+error \7f6300,168554
+concat \7f6313,168846
+etags_getcwd \7f6329,169259
+relative_filename \7f6350,169725
+absolute_filename \7f6389,170751
+absolute_dirname \7f6453,172416
+filename_is_absolute \7f6472,172845
+canonicalize_filename \7f6484,173096
+# define ISUPPER(\7f6491,173235
+linebuffer_init \7f6514,173656
+linebuffer_setlen \7f6524,173887
+xmalloc \7f6536,174148
+xrealloc \7f6545,174314
+\f
+c-src/exit.c,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/exit.strange_suffix,47
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/sysdep.h,491
+#define ENTRY(\7f21,870
+#define PSEUDO(\7f26,977
+ movl $SYS_##syscall_nam\7f$SYS_##syscall_na\ 131,1137
+ movl $SYS_##syscall_name, %eax;\7feax\ 131,1137
+ int $0x80;\7f32,1185
+ test %eax,\7feax\ 133,1215
+ test %eax, %eax;\7feax\ 133,1215
+ jl syscall_error;\7f34,1250
+#define XCHG_0 \7f47,1567
+#define XCHG_1 \7f48,1611
+#define XCHG_2 \7f49,1653
+#define XCHG_3 \7f50,1696
+#define XCHG_4 \7f51,1739
+#define XCHG_5 \7f52,1782
+#define r0 \7f54,1826
+#define r1 \7f55,1880
+#define scratch \7f56,1937
+#define MOVE(\7f57,2006
+\f
+c-src/tab.c,196
+static int count_words(\7f15,263
+static char *get_word(\7fget_word\ 135,553
+void tab_free(\7f59,966
+char **tab_fill(\7ftab_fill\ 170,1129
+int tab_delete_first(\7f91,1638
+int tab_count_words(\7f103,1820
+\f
+c-src/dostorture.c,198
+(*tag1 \7ftag1\ 118,468
+#define notag2 \7f26,577
+(*tag2 \7ftag2\ 129,657
+(*tag3 \7ftag3\ 139,809
+#define notag4 \7f45,904
+(*tag4 \7ftag4\ 148,1001
+tag5 \7f57,1136
+tag6 \7f66,1272
+int pp1(\7f74,1389
+pp2\7f87,1504
+pp3(\7f100,1616
+\f
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD\7f25,1002
+#undef get_current_dir_name\7f33,1126
+#undef malloc\7f64,2110
+#undef realloc\7f65,2124
+#undef calloc\7f66,2139
+#undef free\7f67,2153
+#define malloc \7f68,2165
+#define realloc \7f69,2188
+#define calloc \7f70,2213
+#define aligned_alloc \7f71,2236
+#define free \7f72,2273
+#define DUMPED \7f80,2472
+#define ALLOCATED_BEFORE_DUMPING(\7f81,2507
+extern void *malloc \7fmalloc\ 194,2718
+#define INT_BIT \7f124,3934
+#define BLOCKLOG \7f125,3977
+#define BLOCKSIZE \7f126,4018
+#define BLOCKIFY(\7f127,4052
+#define HEAP \7f131,4215
+#define FINAL_FREE_BLOCKS \7f135,4391
+ } malloc_info;\7f167,5388
+#define BLOCK(\7f176,5620
+#define ADDRESS(\7f177,5682
+struct list\7f186,5939
+struct alignlist\7f196,6153
+#define LOCK(\7f223,7064
+#define UNLOCK(\7f228,7195
+#define LOCK_ALIGNED_BLOCKS(\7f233,7329
+#define UNLOCK_ALIGNED_BLOCKS(\7f238,7484
+#define LOCK(\7f244,7649
+#define UNLOCK(\7f245,7664
+#define LOCK_ALIGNED_BLOCKS(\7f246,7681
+#define UNLOCK_ALIGNED_BLOCKS(\7f247,7711
+enum mcheck_status\7f283,9092
+ MCHECK_DISABLED \7f285,9115
+ MCHECK_OK,\7f286,9187
+ MCHECK_FREE,\7f287,9226
+ MCHECK_HEAD,\7f288,9270
+ MCHECK_TAIL \7f289,9334
+struct mstats\7f308,10153
+char *_heapbase;\7f_heapbase\ 1355,11829
+malloc_info *_heapinfo;\7f_heapinfo\ 1358,11927
+static size_t heapsize;\7f361,11983
+size_t _heapindex;\7f364,12047
+size_t _heaplimit;\7f367,12109
+struct list _fraghead[\7f_fraghead\ 1370,12171
+size_t _chunks_used;\7f373,12229
+size_t _bytes_used;\7f374,12250
+size_t _chunks_free;\7f375,12270
+size_t _bytes_free;\7f376,12291
+int __malloc_initialized;\7f379,12340
+size_t __malloc_extra_blocks;\7f381,12367
+static int state_protected_p;\7f400,12912
+static size_t last_state_size;\7f401,12942
+static malloc_info *last_heapinfo;\7flast_heapinfo\ 1402,12973
+protect_malloc_state \7f405,13014
+#define PROTECT_MALLOC_STATE(\7f426,13627
+#define PROTECT_MALLOC_STATE(\7f429,13697
+align \7f435,13794
+get_contiguous_space \7f466,14616
+register_heapinfo \7f497,15325
+pthread_mutex_t _malloc_mutex \7f517,15879
+pthread_mutex_t _aligned_blocks_mutex \7f518,15938
+int _malloc_thread_enabled_p;\7f519,16005
+malloc_atfork_handler_prepare \7f522,16048
+malloc_atfork_handler_parent \7f529,16139
+malloc_atfork_handler_child \7f536,16233
+malloc_enable_thread \7f544,16375
+malloc_initialize_1 \7f563,16961
+__malloc_initialize \7f594,17793
+static int morecore_recursing;\7f604,17926
+morecore_nolock \7f609,18066
+_malloc_internal_nolock \7f722,21584
+_malloc_internal \7f920,28102
+malloc \7f932,28247
+_malloc \7f961,29140
+_free \7f967,29196
+_realloc \7f973,29240
+struct alignlist *_aligned_blocks \7f_aligned_blocks\ 11004,30345
+_free_internal_nolock \7f1009,30474
+_free_internal \7f1255,38476
+free \7f1265,38603
+weak_alias \7f1277,38799
+#define min(\7f1306,39813
+_realloc_internal_nolock \7f1319,40309
+_realloc_internal \7f1435,43563
+realloc \7f1447,43726
+calloc \7f1478,44894
+#define __sbrk \7f1513,46042
+__default_morecore \7f1525,46511
+aligned_alloc \7f1557,47522
+memalign \7f1647,49704
+posix_memalign \7f1656,49909
+static size_t pagesize;\7f1703,51317
+valloc \7f1706,51349
+#undef malloc\7f1715,51490
+#undef realloc\7f1716,51504
+#undef calloc\7f1717,51519
+#undef aligned_alloc\7f1718,51533
+#undef free\7f1719,51554
+hybrid_malloc \7f1736,52083
+hybrid_calloc \7f1744,52188
+hybrid_free \7f1752,52319
+hybrid_aligned_alloc \7f1765,52626
+hybrid_realloc \7f1780,52984
+hybrid_get_current_dir_name \7f1811,53797
+#define MAGICWORD \7f1854,55206
+#define MAGICFREE \7f1855,55261
+#define MAGICBYTE \7f1856,55316
+#define MALLOCFLOOD \7f1857,55348
+#define FREEFLOOD \7f1858,55382
+struct hdr\7f1860,55415
+checkhdr \7f1867,55581
+freehook \7f1891,56022
+mallochook \7f1927,56804
+reallochook \7f1944,57143
+mabort \7f1978,57901
+static int mcheck_used \7f2012,58586
+mcheck \7f2015,58619
+mprobe \7f2035,59138
+\f
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H \7f21,836
+typedef unsigned long reg_syntax_t;\7f43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS \7f47,1749
+#define RE_BK_PLUS_QM \7f52,1969
+#define RE_CHAR_CLASSES \7f58,2298
+#define RE_CONTEXT_INDEP_ANCHORS \7f72,3032
+#define RE_CONTEXT_INDEP_OPS \7f80,3458
+#define RE_CONTEXT_INVALID_OPS \7f84,3658
+#define RE_DOT_NEWLINE \7f88,3801
+#define RE_DOT_NOT_NULL \7f92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE \7f96,4082
+#define RE_INTERVALS \7f101,4292
+#define RE_LIMITED_OPS \7f105,4441
+#define RE_NEWLINE_ALT \7f109,4583
+#define RE_NO_BK_BRACES \7f114,4773
+#define RE_NO_BK_PARENS \7f118,4964
+#define RE_NO_BK_REFS \7f122,5120
+#define RE_NO_BK_VBAR \7f126,5316
+#define RE_NO_EMPTY_RANGES \7f132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD \7f136,5766
+#define RE_NO_POSIX_BACKTRACKING \7f140,5937
+#define RE_NO_GNU_OPS \7f144,6133
+#define RE_FRUGAL \7f147,6253
+#define RE_SHY_GROUPS \7f150,6360
+#define RE_NO_NEWLINE_ANCHOR \7f153,6468
+#define RE_DEBUG \7f161,6884
+#define RE_SYNTAX_EMACS \7f183,7684
+#define RE_SYNTAX_AWK \7f186,7780
+#define RE_SYNTAX_GNU_AWK \7f193,8084
+#define RE_SYNTAX_POSIX_AWK \7f197,8255
+#define RE_SYNTAX_GREP \7f201,8393
+#define RE_SYNTAX_EGREP \7f206,8549
+#define RE_SYNTAX_POSIX_EGREP \7f212,8765
+#define RE_SYNTAX_ED \7f216,8910
+#define RE_SYNTAX_SED \7f218,8954
+#define _RE_SYNTAX_POSIX_COMMON \7f221,9072
+#define RE_SYNTAX_POSIX_BASIC \7f225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \7f231,9508
+#define RE_SYNTAX_POSIX_EXTENDED \7f234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \7f242,9967
+# undef RE_DUP_MAX\7f253,10454
+#define RE_DUP_MAX \7f256,10540
+#define REG_EXTENDED \7f263,10762
+#define REG_ICASE \7f267,10886
+#define REG_NEWLINE \7f272,11070
+#define REG_NOSUB \7f276,11248
+#define REG_NOTBOL \7f286,11614
+#define REG_NOTEOL \7f289,11688
+ REG_ENOSYS \7f297,11859
+ REG_NOERROR \7f300,11941
+ REG_NOMATCH,\7f301,11976
+ REG_BADPAT,\7f305,12123
+ REG_ECOLLATE,\7f306,12162
+ REG_ECTYPE,\7f307,12203
+ REG_EESCAPE,\7f308,12255
+ REG_ESUBREG,\7f309,12298
+ REG_EBRACK,\7f310,12345
+ REG_EPAREN,\7f311,12391
+ REG_EBRACE,\7f312,12436
+ REG_BADBR,\7f313,12472
+ REG_ERANGE,\7f314,12519
+ REG_ESPACE,\7f315,12560
+ REG_BADRPT,\7f316,12601
+ REG_EEND,\7f319,12693
+ REG_ESIZE,\7f320,12728
+ REG_ERPAREN,\7f321,12790
+ REG_ERANGEX \7f322,12859
+} reg_errcode_t;\7f323,12911
+# define RE_TRANSLATE_TYPE \7f332,13273
+struct re_pattern_buffer\7f335,13315
+#define REGS_UNALLOCATED \7f376,14889
+#define REGS_REALLOCATE \7f377,14916
+#define REGS_FIXED \7f378,14942
+typedef struct re_pattern_buffer regex_t;\7f416,16098
+typedef ssize_t regoff_t;\7f423,16492
+struct re_registers\7f428,16652
+# define RE_NREGS \7f440,16942
+} regmatch_t;\7f451,17317
+# define _Restrict_ \7f540,20886
+# define _Restrict_ \7f542,20979
+# define _Restrict_\7f544,21018
+# define _Restrict_arr_ \7f555,21418
+# define _Restrict_arr_\7f557,21461
+# define CHAR_CLASS_MAX_LENGTH \7f593,22470
+# define CHAR_CLASS_MAX_LENGTH \7f597,22648
+typedef wctype_t re_wctype_t;\7f599,22692
+typedef wchar_t re_wchar_t;\7f600,22722
+# define re_wctype \7f601,22750
+# define re_iswctype \7f602,22776
+# define re_wctype_to_bit(\7f603,22806
+# define CHAR_CLASS_MAX_LENGTH \7f605,22844
+# define btowc(\7f606,22906
+typedef enum { RECC_ERROR \7f609,22953
+ RECC_ALNUM,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,\7f610,22984
+ RECC_GRAPH,\7f611,23027
+ RECC_GRAPH, RECC_PRINT,\7f611,23027
+ RECC_LOWER,\7f612,23059
+ RECC_LOWER, RECC_UPPER,\7f612,23059
+ RECC_PUNCT,\7f613,23091
+ RECC_PUNCT, RECC_CNTRL,\7f613,23091
+ RECC_DIGIT,\7f614,23123
+ RECC_DIGIT, RECC_XDIGIT,\7f614,23123
+ RECC_BLANK,\7f615,23156
+ RECC_BLANK, RECC_SPACE,\7f615,23156
+ RECC_MULTIBYTE,\7f616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,\7f616,23188
+ RECC_ASCII,\7f617,23227
+ RECC_ASCII, RECC_UNIBYTE\7f617,23227
+} re_wctype_t;\7f618,23260
+typedef int re_wchar_t;\7f623,23387
+\f
+c-src/emacs/src/keyboard.c,20957
+volatile int interrupt_input_blocked;\7f76,1808
+volatile bool pending_signals;\7f80,1944
+#define KBD_BUFFER_SIZE \7f82,1976
+KBOARD *initial_kboard;\7finitial_kboard\ 184,2006
+KBOARD *current_kboard;\7fcurrent_kboard\ 185,2030
+static KBOARD *all_kboards;\7fall_kboards\ 186,2054
+static bool single_kboard;\7f89,2154
+#define NUM_RECENT_KEYS \7f91,2182
+static int recent_keys_index;\7f94,2269
+static int total_keys;\7f97,2357
+static Lisp_Object recent_keys;\7f100,2443
+Lisp_Object this_command_keys;\7f107,2777
+ptrdiff_t this_command_key_count;\7f108,2808
+static bool this_command_key_count_reset;\7f112,2922
+static Lisp_Object raw_keybuf;\7f116,3074
+static int raw_keybuf_count;\7f117,3105
+#define GROW_RAW_KEYBUF \7f119,3135
+static ptrdiff_t this_single_command_key_start;\7f125,3350
+static ptrdiff_t before_command_key_count;\7f129,3498
+static ptrdiff_t before_command_echo_length;\7f130,3541
+sigjmp_buf return_to_command_loop;\7f135,3677
+static Lisp_Object recover_top_level_message;\7f138,3791
+static Lisp_Object regular_top_level_message;\7f143,3930
+static sys_jmp_buf getcjmp;\7f147,4031
+bool waiting_for_input;\7f150,4095
+static bool echoing;\7f154,4186
+static struct kboard *ok_to_echo_at_next_pause;\7fok_to_echo_at_next_pause\ 1159,4328
+struct kboard *echo_kboard;\7fecho_kboard\ 1166,4632
+Lisp_Object echo_message_buffer;\7f171,4744
+bool immediate_quit;\7f174,4837
+int quit_char;\7f192,5623
+EMACS_INT command_loop_level;\7f195,5680
+Lisp_Object unread_switch_frame;\7f204,6108
+static ptrdiff_t last_non_minibuf_size;\7f207,6216
+uintmax_t num_input_events;\7f210,6334
+static EMACS_INT last_auto_save;\7f214,6428
+static ptrdiff_t last_point_position;\7f217,6523
+Lisp_Object internal_last_event_frame;\7f228,7028
+static Lisp_Object read_key_sequence_cmd;\7f232,7168
+static Lisp_Object read_key_sequence_remapped;\7f233,7210
+static FILE *dribble;\7fdribble\ 1236,7310
+bool input_pending;\7f239,7368
+static bool input_was_pending;\7f287,10022
+static struct input_event kbd_buffer[\7fkbd_buffer\ 1291,10107
+static struct input_event *kbd_fetch_ptr;\7fkbd_fetch_ptr\ 1297,10386
+static struct input_event * volatile kbd_store_ptr;\7f302,10601
+unsigned timers_run;\7f320,11296
+struct timespec *input_available_clear_time;\7finput_available_clear_time\ 1324,11408
+bool interrupt_input;\7f328,11573
+bool interrupts_deferred;\7f331,11671
+static struct timespec timer_idleness_start_time;\7f335,11746
+static struct timespec timer_last_idleness_start_time;\7f340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW \7f346,12046
+#define READABLE_EVENTS_FILTER_EVENTS \7f347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES \7f348,12142
+kset_echo_string \7f392,14088
+kset_kbd_queue \7f397,14184
+kset_keyboard_translate_table \7f402,14276
+kset_last_prefix_arg \7f407,14399
+kset_last_repeatable_command \7f412,14504
+kset_local_function_key_map \7f417,14625
+kset_overriding_terminal_local_map \7f422,14744
+kset_real_last_command \7f427,14877
+kset_system_key_syms \7f432,14986
+echo_add_key \7f443,15249
+echo_char \7f527,17527
+echo_dash \7f541,17813
+echo_now \7f586,19140
+cancel_echoing \7f635,20614
+echo_length \7f648,20922
+echo_truncate \7f660,21253
+add_command_key \7f672,21582
+recursive_edit_1 \7f697,22406
+record_auto_save \7f742,23848
+force_auto_save_soon \7f751,24016
+DEFUN ("recursive-edit", Frecursive_edit,\7frecursive-edit\ 1759,24137
+recursive_edit_unwind \7f804,25747
+any_kboard_state \7f817,26013
+single_kboard_state \7f838,26665
+not_single_kboard_state \7f848,26803
+struct kboard_stack\7f858,27065
+static struct kboard_stack *kboard_stack;\7fkboard_stack\ 1864,27138
+push_kboard \7f867,27186
+pop_kboard \7f879,27375
+temporarily_switch_to_single_kboard \7f914,28263
+record_single_kboard_state \7f943,29437
+restore_kboard_configuration \7f952,29621
+cmd_error \7f970,30077
+cmd_error_internal \7f1024,31510
+DEFUN ("command-error-default-function", Fcommand_error_default_function,\7fcommand-error-default-function\ 11043,32030
+command_loop \7f1094,33916
+command_loop_2 \7f1134,35135
+top_level_2 \7f1146,35339
+top_level_1 \7f1152,35417
+DEFUN ("top-level", Ftop_level,\7ftop-level\ 11164,35787
+user_error \7f1183,36288
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit,\7fexit-recursive-edit\ 11189,36429
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit,\7fabort-recursive-edit\ 11201,36819
+tracking_off \7f1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,\7ftrack-mouse\ 11234,37816
+bool ignore_mouse_drag_p;\7f1256,38392
+some_mouse_moved \7f1259,38441
+Lisp_Object last_undo_boundary;\7f1287,39032
+command_loop_1 \7f1294,39273
+read_menu_command \7f1649,50889
+adjust_point_for_property \7f1678,51617
+safe_run_hooks_1 \7f1831,57339
+safe_run_hooks_error \7f1841,57569
+safe_run_hook_funcall \7f1878,58576
+safe_run_hooks \7f1893,59058
+int poll_suppress_count;\7f1908,59397
+static struct atimer *poll_timer;\7fpoll_timer\ 11915,59487
+poll_for_input_1 \7f1919,59589
+poll_for_input \7f1930,59789
+start_polling \7f1942,60053
+input_polling_used \7f1979,61091
+stop_polling \7f1994,61390
+set_poll_suppress_count \7f2009,61759
+bind_polling_period \7f2029,62141
+make_ctrl_char \7f2048,62492
+show_help_echo \7f2113,64455
+static Lisp_Object help_form_saved_window_configs;\7f2156,65638
+read_char_help_form_unwind \7f2158,65701
+#define STOP_POLLING \7f2166,65959
+#define RESUME_POLLING \7f2170,66084
+read_event_from_main_queue \7f2175,66229
+read_decoded_event_from_main_queue \7f2249,68417
+#define MAX_ENCODED_BYTES \7f2254,68664
+echo_keystrokes_p \7f2342,71556
+read_char \7f2376,72848
+record_menu_key \7f3225,98949
+help_char_p \7f3258,99674
+record_char \7f3273,99953
+save_getcjmp \7f3412,104235
+restore_getcjmp \7f3418,104326
+readable_events \7f3430,104697
+int stop_character EXTERNALLY_VISIBLE;\7f3497,106437
+event_to_kboard \7f3500,106493
+kbd_buffer_nr_stored \7f3522,107142
+kbd_buffer_store_event \7f3534,107483
+kbd_buffer_store_event_hold \7f3550,108025
+kbd_buffer_unget_event \7f3684,111617
+#define INPUT_EVENT_POS_MAX \7f3698,112018
+#define INPUT_EVENT_POS_MIN \7f3701,112147
+position_to_Time \7f3706,112287
+Time_to_position \7f3716,112514
+gen_help_event \7f3738,113171
+kbd_buffer_store_help_event \7f3756,113611
+discard_mouse_events \7f3773,113976
+kbd_buffer_events_waiting \7f3803,114711
+clear_event \7f3823,115068
+kbd_buffer_get_event \7f3836,115408
+process_special_events \7f4258,127881
+swallow_events \7f4322,129705
+timer_start_idle \7f4339,130098
+timer_stop_idle \7f4355,130576
+timer_resume_idle \7f4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;\7f4372,130912
+Lisp_Object pending_funcalls;\7f4377,131172
+decode_timer \7f4381,131293
+timer_check_2 \7f4414,132246
+timer_check \7f4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,\7fcurrent-idle-time\ 14607,137662
+static Lisp_Object accent_key_syms;\7f4625,138239
+static Lisp_Object func_key_syms;\7f4626,138275
+static Lisp_Object mouse_syms;\7f4627,138309
+static Lisp_Object wheel_syms;\7f4628,138340
+static Lisp_Object drag_n_drop_syms;\7f4629,138371
+static const int lispy_accent_codes[\7flispy_accent_codes\ 14634,138516
+static const char *const lispy_accent_keys[\7flispy_accent_keys\ 14741,139878
+#define FUNCTION_KEY_OFFSET \7f4766,140314
+const char *const lispy_function_keys[\7flispy_function_keys\ 14768,140347
+static const char *const lispy_multimedia_keys[\7flispy_multimedia_keys\ 14962,148901
+static const char *const lispy_kana_keys[\7flispy_kana_keys\ 15026,150135
+#define FUNCTION_KEY_OFFSET \7f5061,151751
+static const char *const lispy_function_keys[\7flispy_function_keys\ 15065,151894
+#define ISO_FUNCTION_KEY_OFFSET \7f5149,154429
+static const char *const iso_lispy_function_keys[\7fiso_lispy_function_keys\ 15151,154469
+static Lisp_Object Vlispy_mouse_stem;\7f5172,155328
+static const char *const lispy_wheel_names[\7flispy_wheel_names\ 15174,155367
+static const char *const lispy_drag_n_drop_names[\7flispy_drag_n_drop_names\ 15181,155619
+static short const scroll_bar_parts[\7fscroll_bar_parts\ 15189,155885
+static Lisp_Object button_down_location;\7f5210,156910
+static int last_mouse_button;\7f5215,157065
+static int last_mouse_x;\7f5216,157095
+static int last_mouse_y;\7f5217,157120
+static Time button_down_time;\7f5218,157145
+static int double_click_count;\7f5222,157229
+make_lispy_position \7f5228,157390
+toolkit_menubar_in_use \7f5456,163953
+make_scroll_bar_position \7f5469,164321
+make_lispy_event \7f5485,164967
+make_lispy_movement \7f6104,183531
+make_lispy_switch_frame \7f6131,184262
+make_lispy_focus_in \7f6137,184369
+make_lispy_focus_out \7f6145,184495
+parse_modifiers_uncached \7f6163,184945
+#define SINGLE_LETTER_MOD(\7f6185,185465
+#undef SINGLE_LETTER_MOD\7f6212,185906
+#define MULTI_LETTER_MOD(\7f6214,185932
+#undef MULTI_LETTER_MOD\7f6231,186400
+apply_modifiers_uncached \7f6273,187574
+static const char *const modifier_names[\7fmodifier_names\ 16319,189193
+#define NUM_MOD_NAMES \7f6325,189399
+static Lisp_Object modifier_symbols;\7f6327,189449
+lispy_modifier_list \7f6331,189586
+#define KEY_TO_CHAR(\7f6353,190252
+parse_modifiers \7f6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,\7fevent-symbol-parse-modifiers\ 16399,191517
+apply_modifiers \7f6422,192391
+reorder_modifiers \7f6491,194720
+modify_event_symbol \7f6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,\7fevent-convert-list\ 16628,199244
+parse_solitary_modifier \7f6695,201135
+#define SINGLE_LETTER_MOD(\7f6701,201258
+#define MULTI_LETTER_MOD(\7f6705,201343
+#undef SINGLE_LETTER_MOD\7f6763,202641
+#undef MULTI_LETTER_MOD\7f6764,202666
+lucid_event_type_list_p \7f6775,202889
+get_input_pending \7f6814,203960
+record_asynch_buffer_change \7f6834,204579
+gobble_input \7f6872,205702
+tty_read_avail_input \7f6967,208310
+handle_async_input \7f7149,214039
+process_pending_signals \7f7165,214359
+unblock_input_to \7f7177,214645
+unblock_input \7f7200,215277
+totally_unblock_input \7f7209,215445
+handle_input_available_signal \7f7217,215529
+deliver_input_available_signal \7f7226,215700
+struct user_signal_info\7f7235,215865
+static struct user_signal_info *user_signals \7fuser_signals\ 17250,216090
+add_user_signal \7f7253,216149
+handle_user_signal \7f7275,216598
+deliver_user_signal \7f7316,217558
+find_user_signal_name \7f7322,217659
+store_user_signal_events \7f7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;\7f7363,218416
+static Lisp_Object menu_bar_items_vector;\7f7368,218630
+static int menu_bar_items_index;\7f7369,218672
+static const char *separator_names[\7fseparator_names\ 17372,218707
+menu_separator_name_p \7f7393,219148
+menu_bar_items \7f7426,219852
+Lisp_Object item_properties;\7f7568,224603
+menu_bar_item \7f7571,224645
+menu_item_eval_property_1 \7f7647,227175
+eval_dyn \7f7658,227465
+menu_item_eval_property \7f7666,227675
+parse_menu_item \7f7686,228341
+static Lisp_Object tool_bar_items_vector;\7f7965,236336
+static Lisp_Object tool_bar_item_properties;\7f7970,236510
+static int ntool_bar_items;\7f7974,236606
+tool_bar_items \7f7990,237083
+process_tool_bar_item \7f8075,239892
+#define PROP(\7f8112,240969
+set_prop \7f8114,241038
+parse_tool_bar_item \7f8167,242453
+#undef PROP\7f8379,248844
+init_tool_bar_items \7f8387,248969
+append_tool_bar_item \7f8401,249261
+read_char_x_menu_prompt \7f8443,250771
+read_char_minibuf_menu_prompt \7f8503,252445
+#define PUSH_C_STR(\7f8527,253014
+follow_key \7f8726,258553
+active_maps \7f8733,258695
+typedef struct keyremap\7f8742,259021
+} keyremap;\7f8754,259464
+access_keymap_keyremap \7f8764,259808
+keyremap_step \7f8811,261450
+test_undefined \7f8867,262934
+read_key_sequence \7f8916,264861
+read_key_sequence_vs \7f9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,\7fread-key-sequence\ 19885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,\7fread-key-sequence-vector\ 19938,299982
+detect_input_pending \7f9950,300488
+detect_input_pending_ignore_squeezables \7f9959,300654
+detect_input_pending_run_timers \7f9967,300870
+clear_input_pending \7f9985,301362
+requeued_events_pending_p \7f9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,\7finput-pending-p\ 110002,301813
+DEFUN ("recent-keys", Frecent_keys,\7frecent-keys\ 110024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,\7fthis-command-keys\ 110055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,\7fthis-command-keys-vector\ 110068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,\7fthis-single-command-keys\ 110080,304380
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,\7fthis-single-command-raw-keys\ 110096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,\7freset-this-command-lengths\ 110109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,\7fclear-this-command-keys\ 110136,306510
+DEFUN ("recursion-depth", Frecursion_depth,\7frecursion-depth\ 110158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,\7fopen-dribble-file\ 110169,307406
+DEFUN ("discard-input", Fdiscard_input,\7fdiscard-input\ 110203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,\7fsuspend-emacs\ 110225,308949
+stuff_buffered_input \7f10285,311045
+set_waiting_for_input \7f10323,312016
+clear_waiting_for_input \7f10337,312390
+handle_interrupt_signal \7f10351,312754
+deliver_interrupt_signal \7f10378,313642
+static int volatile force_quit_count;\7f10387,313932
+handle_interrupt \7f10401,314414
+quit_throw_to_read_char \7f10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,\7fset-input-interrupt-mode\ 110562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,\7fset-output-flow-control\ 110609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,\7fset-input-meta-mode\ 110643,321432
+DEFUN ("set-quit-char", Fset_quit_char,\7fset-quit-char\ 110694,322706
+DEFUN ("set-input-mode", Fset_input_mode,\7fset-input-mode\ 110729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,\7fcurrent-input-mode\ 110750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,\7fposn-at-x-y\ 110787,325837
+DEFUN ("posn-at-point", Fposn_at_point,\7fposn-at-point\ 110824,327060
+init_kboard \7f10861,328214
+allocate_kboard \7f10893,329284
+wipe_kboard \7f10909,329637
+delete_kboard \7f10917,329751
+init_keyboard \7f10942,330281
+struct event_head\7f11021,332696
+static const struct event_head head_table[\7fhead_table\ 111027,332747
+syms_of_keyboard \7f11045,333577
+ DEFVAR_LISP ("internal--top-level-message"\7f11058,333972
+ DEFVAR_LISP ("last-command-event"\7f11312,342173
+ DEFVAR_LISP ("last-nonmenu-event"\7f11315,342297
+ DEFVAR_LISP ("last-input-event"\7f11321,342636
+ DEFVAR_LISP ("unread-command-events"\7f11324,342730
+ DEFVAR_LISP ("unread-post-input-method-events"\7f11332,343190
+ DEFVAR_LISP ("unread-input-method-events"\7f11338,343529
+ DEFVAR_LISP ("meta-prefix-char"\7f11346,343898
+ DEFVAR_KBOARD ("last-command"\7f11351,344106
+ DEFVAR_KBOARD ("real-last-command"\7f11368,344787
+ DEFVAR_KBOARD ("last-repeatable-command"\7f11372,344973
+ DEFVAR_LISP ("this-command"\7f11378,345261
+ DEFVAR_LISP ("real-this-command"\7f11384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated"\7f11388,345680
+ DEFVAR_LISP ("this-original-command"\7f11396,346123
+ DEFVAR_INT ("auto-save-interval"\7f11403,346520
+ DEFVAR_LISP ("auto-save-timeout"\7f11408,346734
+ DEFVAR_LISP ("echo-keystrokes"\7f11415,347079
+ DEFVAR_INT ("polling-period"\7f11421,347350
+ DEFVAR_LISP ("double-click-time"\7f11428,347693
+ DEFVAR_INT ("double-click-fuzz"\7f11435,348029
+ DEFVAR_INT ("num-input-keys"\7f11446,348519
+ DEFVAR_INT ("num-nonmacro-input-events"\7f11452,348794
+ DEFVAR_LISP ("last-event-frame"\7f11457,349032
+ DEFVAR_LISP ("tty-erase-char"\7f11463,349311
+ DEFVAR_LISP ("help-char"\7f11466,349434
+ DEFVAR_LISP ("help-event-list"\7f11472,349717
+ DEFVAR_LISP ("help-form"\7f11477,349928
+ DEFVAR_LISP ("prefix-help-command"\7f11483,350176
+ DEFVAR_LISP ("top-level"\7f11489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table"\7f11495,350675
+ DEFVAR_BOOL ("cannot-suspend"\7f11511,351488
+ DEFVAR_BOOL ("menu-prompting"\7f11516,351715
+ DEFVAR_LISP ("menu-prompt-more-char"\7f11526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers"\7f11531,352391
+ DEFVAR_LISP ("deactivate-mark"\7f11545,353117
+ DEFVAR_LISP ("pre-command-hook"\7f11553,353486
+ DEFVAR_LISP ("post-command-hook"\7f11560,353841
+ DEFVAR_LISP ("echo-area-clear-hook"\7f11568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag"\7f11574,354419
+ DEFVAR_LISP ("menu-bar-final-items"\7f11578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression"\7f11583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map"\7f11589,355230
+ DEFVAR_LISP ("overriding-local-map"\7f11598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag"\7f11607,356103
+ DEFVAR_LISP ("special-event-map"\7f11613,356442
+ DEFVAR_LISP ("track-mouse"\7f11617,356630
+ DEFVAR_KBOARD ("system-key-alist"\7f11620,356757
+ DEFVAR_KBOARD ("local-function-key-map"\7f11629,357138
+ DEFVAR_KBOARD ("input-decode-map"\7f11658,358597
+ DEFVAR_LISP ("function-key-map"\7f11675,359385
+ DEFVAR_LISP ("key-translation-map"\7f11683,359801
+ DEFVAR_LISP ("deferred-action-list"\7f11689,360145
+ DEFVAR_LISP ("deferred-action-function"\7f11694,360393
+ DEFVAR_LISP ("delayed-warnings-list"\7f11700,360692
+ DEFVAR_LISP ("timer-list"\7f11708,361100
+ DEFVAR_LISP ("timer-idle-list"\7f11712,361252
+ DEFVAR_LISP ("input-method-function"\7f11716,361415
+ DEFVAR_LISP ("input-method-previous-message"\7f11737,362384
+ DEFVAR_LISP ("show-help-function"\7f11744,362745
+ DEFVAR_LISP ("disable-point-adjustment"\7f11749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment"\7f11761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout"\7f11770,363893
+ DEFVAR_LISP ("throw-on-input"\7f11775,364171
+ DEFVAR_LISP ("command-error-function"\7f11781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons"\7f11790,364909
+ DEFVAR_LISP ("select-active-regions"\7f11798,365236
+ DEFVAR_LISP ("saved-region-selection"\7f11807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands"\7f11815,366013
+ DEFVAR_LISP ("debug-on-event"\7f11825,366554
+keys_of_keyboard \7f11841,367115
+mark_kboards \7f11916,370434
+ DEFVAR_LISP ("internal--top-level-message",\7f\1\ 111058,333972
+ DEFVAR_LISP ("last-command-event",\7f\1\ 111312,342173
+ DEFVAR_LISP ("last-nonmenu-event",\7f\1\ 111315,342297
+ DEFVAR_LISP ("last-input-event",\7f\1\ 111321,342636
+ DEFVAR_LISP ("unread-command-events",\7f\1\ 111324,342730
+ DEFVAR_LISP ("unread-post-input-method-events",\7f\1\ 111332,343190
+ DEFVAR_LISP ("unread-input-method-events",\7f\1\ 111338,343529
+ DEFVAR_LISP ("meta-prefix-char",\7f\1\ 111346,343898
+ DEFVAR_KBOARD ("last-command",\7f\1\ 111351,344106
+ DEFVAR_KBOARD ("real-last-command",\7f\1\ 111368,344787
+ DEFVAR_KBOARD ("last-repeatable-command",\7f\1\ 111372,344973
+ DEFVAR_LISP ("this-command",\7f\1\ 111378,345261
+ DEFVAR_LISP ("real-this-command",\7f\1\ 111384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated",\7f\1\ 111388,345680
+ DEFVAR_LISP ("this-original-command",\7f\1\ 111396,346123
+ DEFVAR_INT ("auto-save-interval",\7f\1\ 111403,346520
+ DEFVAR_LISP ("auto-save-timeout",\7f\1\ 111408,346734
+ DEFVAR_LISP ("echo-keystrokes",\7f\1\ 111415,347079
+ DEFVAR_INT ("polling-period",\7f\1\ 111421,347350
+ DEFVAR_LISP ("double-click-time",\7f\1\ 111428,347693
+ DEFVAR_INT ("double-click-fuzz",\7f\1\ 111435,348029
+ DEFVAR_INT ("num-input-keys",\7f\1\ 111446,348519
+ DEFVAR_INT ("num-nonmacro-input-events",\7f\1\ 111452,348794
+ DEFVAR_LISP ("last-event-frame",\7f\1\ 111457,349032
+ DEFVAR_LISP ("tty-erase-char",\7f\1\ 111463,349311
+ DEFVAR_LISP ("help-char",\7f\1\ 111466,349434
+ DEFVAR_LISP ("help-event-list",\7f\1\ 111472,349717
+ DEFVAR_LISP ("help-form",\7f\1\ 111477,349928
+ DEFVAR_LISP ("prefix-help-command",\7f\1\ 111483,350176
+ DEFVAR_LISP ("top-level",\7f\1\ 111489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table",\7f\1\ 111495,350675
+ DEFVAR_BOOL ("cannot-suspend",\7f\1\ 111511,351488
+ DEFVAR_BOOL ("menu-prompting",\7f\1\ 111516,351715
+ DEFVAR_LISP ("menu-prompt-more-char",\7f\1\ 111526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers",\7f\1\ 111531,352391
+ DEFVAR_LISP ("deactivate-mark",\7f\1\ 111545,353117
+ DEFVAR_LISP ("pre-command-hook",\7f\1\ 111553,353486
+ DEFVAR_LISP ("post-command-hook",\7f\1\ 111560,353841
+ DEFVAR_LISP ("echo-area-clear-hook",\7f\1\ 111568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\7f\1\ 111574,354419
+ DEFVAR_LISP ("menu-bar-final-items",\7f\1\ 111578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression",\7f\1\ 111583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map",\7f\1\ 111589,355230
+ DEFVAR_LISP ("overriding-local-map",\7f\1\ 111598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag",\7f\1\ 111607,356103
+ DEFVAR_LISP ("special-event-map",\7f\1\ 111613,356442
+ DEFVAR_LISP ("track-mouse",\7f\1\ 111617,356630
+ DEFVAR_KBOARD ("system-key-alist",\7f\1\ 111620,356757
+ DEFVAR_KBOARD ("local-function-key-map",\7f\1\ 111629,357138
+ DEFVAR_KBOARD ("input-decode-map",\7f\1\ 111658,358597
+ DEFVAR_LISP ("function-key-map",\7f\1\ 111675,359385
+ DEFVAR_LISP ("key-translation-map",\7f\1\ 111683,359801
+ DEFVAR_LISP ("deferred-action-list",\7f\1\ 111689,360145
+ DEFVAR_LISP ("deferred-action-function",\7f\1\ 111694,360393
+ DEFVAR_LISP ("delayed-warnings-list",\7f\1\ 111700,360692
+ DEFVAR_LISP ("timer-list",\7f\1\ 111708,361100
+ DEFVAR_LISP ("timer-idle-list",\7f\1\ 111712,361252
+ DEFVAR_LISP ("input-method-function",\7f\1\ 111716,361415
+ DEFVAR_LISP ("input-method-previous-message",\7f\1\ 111737,362384
+ DEFVAR_LISP ("show-help-function",\7f\1\ 111744,362745
+ DEFVAR_LISP ("disable-point-adjustment",\7f\1\ 111749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment",\7f\1\ 111761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout",\7f\1\ 111770,363893
+ DEFVAR_LISP ("throw-on-input",\7f\1\ 111775,364171
+ DEFVAR_LISP ("command-error-function",\7f\1\ 111781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons",\7f\1\ 111790,364909
+ DEFVAR_LISP ("select-active-regions",\7f\1\ 111798,365236
+ DEFVAR_LISP ("saved-region-selection",\7f\1\ 111807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands",\7f\1\ 111815,366013
+ DEFVAR_LISP ("debug-on-event",\7f\1\ 111825,366554
+\f
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H\7f22,800
+#define DECLARE_GDB_SYM(\7f47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f49,1508
+# define DEFINE_GDB_SYMBOL_END(\7f50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f52,1625
+# define DEFINE_GDB_SYMBOL_END(\7f53,1702
+#undef min\7f57,1790
+#undef max\7f58,1801
+#define max(\7f59,1812
+#define min(\7f60,1854
+#define ARRAYELTS(\7f63,1936
+#define GCTYPEBITS \7f67,2079
+DEFINE_GDB_SYMBOL_BEGIN \7fGCTYPEBITS\ 166,2037
+# define NONPOINTER_BITS \7f78,2567
+# define NONPOINTER_BITS \7f80,2600
+typedef int EMACS_INT;\7f91,3023
+typedef unsigned int EMACS_UINT;\7f92,3046
+# define EMACS_INT_MAX \7f93,3079
+# define pI \7f94,3111
+typedef long int EMACS_INT;\7f96,3203
+typedef unsigned long EMACS_UINT;\7f97,3231
+# define EMACS_INT_MAX \7f98,3265
+# define pI \7f99,3298
+typedef long long int EMACS_INT;\7f103,3477
+typedef unsigned long long int EMACS_UINT;\7f104,3510
+# define EMACS_INT_MAX \7f105,3553
+# define pI \7f106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR \7f114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR \7f115,3840
+typedef size_t bits_word;\7f123,4165
+# define BITS_WORD_MAX \7f124,4191
+enum { BITS_PER_BITS_WORD \7f125,4223
+typedef unsigned char bits_word;\7f127,4290
+# define BITS_WORD_MAX \7f128,4323
+enum { BITS_PER_BITS_WORD \7f129,4386
+ BITS_PER_CHAR \7f136,4570
+ BITS_PER_SHORT \7f137,4605
+ BITS_PER_LONG \7f138,4657
+ BITS_PER_EMACS_INT \7f139,4712
+typedef intmax_t printmax_t;\7f148,5089
+typedef uintmax_t uprintmax_t;\7f149,5118
+# define pMd \7f150,5149
+# define pMu \7f151,5170
+typedef EMACS_INT printmax_t;\7f153,5197
+typedef EMACS_UINT uprintmax_t;\7f154,5227
+# define pMd \7f155,5259
+# define pMu \7f156,5278
+# define pD \7f165,5664
+# define pD \7f167,5709
+# define pD \7f169,5756
+# define pD \7f171,5779
+# define eassert(\7f200,7062
+# define eassume(\7f201,7140
+# define eassert(\7f208,7319
+# define eassume(\7f212,7450
+enum Lisp_Bits\7f239,8519
+#define GCALIGNMENT \7f243,8647
+ VALBITS \7f246,8742
+ INTTYPEBITS \7f249,8838
+ FIXNUM_BITS \7f252,8945
+#define VAL_MAX \7f263,9327
+#define USE_LSB_TAG \7f271,9777
+DEFINE_GDB_SYMBOL_BEGIN \7fUSE_LSB_TAG\ 1270,9733
+# define alignas(\7f281,10077
+# define GCALIGNED \7f288,10227
+# define GCALIGNED \7f290,10292
+# define lisp_h_XLI(\7f327,11642
+# define lisp_h_XIL(\7f328,11673
+# define lisp_h_XLI(\7f330,11724
+# define lisp_h_XIL(\7f331,11751
+#define lisp_h_CHECK_LIST_CONS(\7f333,11785
+#define lisp_h_CHECK_NUMBER(\7f334,11856
+#define lisp_h_CHECK_SYMBOL(\7f335,11927
+#define lisp_h_CHECK_TYPE(\7f336,11996
+#define lisp_h_CONSP(\7f338,12107
+#define lisp_h_EQ(\7f339,12156
+#define lisp_h_FLOATP(\7f340,12201
+#define lisp_h_INTEGERP(\7f341,12252
+#define lisp_h_MARKERP(\7f342,12333
+#define lisp_h_MISCP(\7f343,12408
+#define lisp_h_NILP(\7f344,12457
+#define lisp_h_SET_SYMBOL_VAL(\7f345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(\7f347,12607
+#define lisp_h_SYMBOL_VAL(\7f348,12671
+#define lisp_h_SYMBOLP(\7f350,12772
+#define lisp_h_VECTORLIKEP(\7f351,12825
+#define lisp_h_XCAR(\7f352,12886
+#define lisp_h_XCDR(\7f353,12924
+#define lisp_h_XCONS(\7f354,12964
+#define lisp_h_XHASH(\7f356,13059
+#define lisp_h_XPNTR(\7f357,13093
+# define lisp_h_check_cons_list(\7f360,13221
+# define lisp_h_make_number(\7f363,13289
+# define lisp_h_XFASTINT(\7f365,13392
+# define lisp_h_XINT(\7f366,13429
+# define lisp_h_XSYMBOL(\7f367,13478
+# define lisp_h_XTYPE(\7f371,13631
+# define lisp_h_XUNTAG(\7f372,13696
+# define XLI(\7f381,14086
+# define XIL(\7f382,14117
+# define CHECK_LIST_CONS(\7f383,14148
+# define CHECK_NUMBER(\7f384,14209
+# define CHECK_SYMBOL(\7f385,14258
+# define CHECK_TYPE(\7f386,14307
+# define CONSP(\7f387,14382
+# define EQ(\7f388,14417
+# define FLOATP(\7f389,14452
+# define INTEGERP(\7f390,14489
+# define MARKERP(\7f391,14530
+# define MISCP(\7f392,14569
+# define NILP(\7f393,14604
+# define SET_SYMBOL_VAL(\7f394,14637
+# define SYMBOL_CONSTANT_P(\7f395,14700
+# define SYMBOL_VAL(\7f396,14763
+# define SYMBOLP(\7f397,14812
+# define VECTORLIKEP(\7f398,14851
+# define XCAR(\7f399,14898
+# define XCDR(\7f400,14931
+# define XCONS(\7f401,14964
+# define XHASH(\7f402,14999
+# define XPNTR(\7f403,15034
+# define check_cons_list(\7f405,15097
+# define make_number(\7f408,15176
+# define XFASTINT(\7f409,15224
+# define XINT(\7f410,15266
+# define XSYMBOL(\7f411,15300
+# define XTYPE(\7f412,15340
+# define XUNTAG(\7f413,15376
+#define LISP_MACRO_DEFUN(\7f421,15672
+#define LISP_MACRO_DEFUN_VOID(\7f425,15845
+#define INTMASK \7f437,16289
+#define case_Lisp_Int \7f438,16342
+#define ENUM_BF(\7f445,16681
+#define ENUM_BF(\7f447,16722
+enum Lisp_Type\7f451,16763
+ Lisp_Symbol \7f454,16851
+ Lisp_Misc \7f458,16993
+ Lisp_Int0 \7f461,17067
+ Lisp_Int1 \7f462,17086
+ Lisp_String \7f466,17264
+ Lisp_Vectorlike \7f472,17543
+ Lisp_Cons \7f475,17632
+ Lisp_Float \7f477,17670
+enum Lisp_Misc_Type\7f485,18016
+ Lisp_Misc_Free \7f487,18040
+ Lisp_Misc_Marker,\7f488,18069
+ Lisp_Misc_Overlay,\7f489,18091
+ Lisp_Misc_Save_Value,\7f490,18114
+ Lisp_Misc_Finalizer,\7f491,18140
+ Lisp_Misc_Float,\7f494,18275
+ Lisp_Misc_Limit\7f496,18359
+enum Lisp_Fwd_Type\7f502,18543
+ Lisp_Fwd_Int,\7f504,18566
+ Lisp_Fwd_Bool,\7f505,18619
+ Lisp_Fwd_Obj,\7f506,18670
+ Lisp_Fwd_Buffer_Obj,\7f507,18729
+ Lisp_Fwd_Kboard_Obj \7f508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;\7f567,21781
+#define LISP_INITIALLY(\7f569,21827
+#undef CHECK_LISP_OBJECT_TYPE\7f571,21858
+enum CHECK_LISP_OBJECT_TYPE \7f572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f572,21888
+typedef EMACS_INT Lisp_Object;\7f577,22064
+#define LISP_INITIALLY(\7f578,22095
+enum CHECK_LISP_OBJECT_TYPE \7f579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f579,22125
+#define LISP_INITIALLY_ZERO \7f582,22226
+enum symbol_interned\7f639,24199
+ SYMBOL_UNINTERNED \7f641,24222
+ SYMBOL_INTERNED \7f642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY \7f643,24270
+enum symbol_redirect\7f646,24315
+ SYMBOL_PLAINVAL \7f648,24338
+ SYMBOL_VARALIAS \7f649,24362
+ SYMBOL_LOCALIZED \7f650,24386
+ SYMBOL_FORWARDED \7f651,24410
+struct Lisp_Symbol\7f654,24437
+ ENUM_BF \7f663,24793
+#define EXFUN(\7f707,26252
+#define DEFUN_ARGS_MANY \7f712,26446
+#define DEFUN_ARGS_UNEVALLED \7f713,26498
+#define DEFUN_ARGS_0 \7f714,26541
+#define DEFUN_ARGS_1 \7f715,26569
+#define DEFUN_ARGS_2 \7f716,26604
+#define DEFUN_ARGS_3 \7f717,26652
+#define DEFUN_ARGS_4 \7f718,26713
+#define DEFUN_ARGS_5 \7f719,26787
+#define DEFUN_ARGS_6 \7f721,26880
+#define DEFUN_ARGS_7 \7f723,26986
+#define DEFUN_ARGS_8 \7f725,27105
+#define TAG_PTR(\7f729,27296
+#define TAG_SYMOFFSET(\7f734,27543
+#define XLI_BUILTIN_LISPSYM(\7f741,27842
+#define DEFINE_LISP_SYMBOL(\7f746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS \7f755,28572
+LISP_MACRO_DEFUN \7f762,28777
+# define ARRAY_MARK_FLAG \7f768,29024
+# define PSEUDOVECTOR_FLAG \7f774,29267
+enum pvec_type\7f780,29568
+ PVEC_NORMAL_VECTOR,\7f782,29585
+ PVEC_FREE,\7f783,29607
+ PVEC_PROCESS,\7f784,29620
+ PVEC_FRAME,\7f785,29636
+ PVEC_WINDOW,\7f786,29650
+ PVEC_BOOL_VECTOR,\7f787,29665
+ PVEC_BUFFER,\7f788,29685
+ PVEC_HASH_TABLE,\7f789,29700
+ PVEC_TERMINAL,\7f790,29719
+ PVEC_WINDOW_CONFIGURATION,\7f791,29736
+ PVEC_SUBR,\7f792,29765
+ PVEC_OTHER,\7f793,29778
+ PVEC_COMPILED,\7f795,29856
+ PVEC_CHAR_TABLE,\7f796,29873
+ PVEC_SUB_CHAR_TABLE,\7f797,29892
+ PVEC_FONT \7f798,29915
+enum More_Lisp_Bits\7f801,29991
+ PSEUDOVECTOR_SIZE_BITS \7f808,30382
+ PSEUDOVECTOR_SIZE_MASK \7f809,30415
+ PSEUDOVECTOR_REST_BITS \7f813,30625
+ PSEUDOVECTOR_REST_MASK \7f814,30658
+ PSEUDOVECTOR_AREA_BITS \7f818,30823
+ PVEC_TYPE_MASK \7f819,30901
+# define VALMASK \7f829,31302
+DEFINE_GDB_SYMBOL_BEGIN \7fVALMASK\ 1828,31257
+#define MOST_POSITIVE_FIXNUM \7f834,31532
+#define MOST_NEGATIVE_FIXNUM \7f835,31592
+XINT \7f874,32684
+XFASTINT \7f889,33035
+XSYMBOL \7f899,33263
+XTYPE \7f910,33481
+XUNTAG \7f918,33661
+LISP_MACRO_DEFUN \7f927,33857
+LISP_MACRO_DEFUN \7f940,34242
+#define FIXNUM_OVERFLOW_P(\7f958,34855
+LISP_MACRO_DEFUN \7fFIXNUM_OVERFLOW_P\ 1952,34632
+LISP_MACRO_DEFUN \7f970,35171
+XSTRING \7f980,35391
+#define SYMBOL_INDEX(\7f988,35575
+XFLOAT \7f991,35636
+XPROCESS \7f1000,35778
+XWINDOW \7f1007,35895
+XTERMINAL \7f1014,36012
+XSUBR \7f1021,36134
+XBUFFER \7f1028,36245
+XCHAR_TABLE \7f1035,36369
+XSUB_CHAR_TABLE \7f1042,36506
+XBOOL_VECTOR \7f1049,36648
+make_lisp_ptr \7f1058,36827
+make_lisp_symbol \7f1066,37013
+builtin_lisp_symbol \7f1074,37197
+#define XSETINT(\7f1079,37279
+#define XSETFASTINT(\7f1080,37325
+#define XSETCONS(\7f1081,37375
+#define XSETVECTOR(\7f1082,37435
+#define XSETSTRING(\7f1083,37503
+#define XSETSYMBOL(\7f1084,37567
+#define XSETFLOAT(\7f1085,37621
+#define XSETMISC(\7f1086,37683
+#define XSETPVECTYPE(\7f1090,37772
+#define XSETPVECTYPESIZE(\7f1092,37888
+#define XSETPSEUDOVECTOR(\7f1099,38185
+#define XSETTYPED_PSEUDOVECTOR(\7f1105,38369
+#define XSETWINDOW_CONFIGURATION(\7f1110,38579
+#define XSETPROCESS(\7f1112,38675
+#define XSETWINDOW(\7f1113,38741
+#define XSETTERMINAL(\7f1114,38805
+#define XSETSUBR(\7f1115,38873
+#define XSETCOMPILED(\7f1116,38933
+#define XSETBUFFER(\7f1117,39001
+#define XSETCHAR_TABLE(\7f1118,39065
+#define XSETBOOL_VECTOR(\7f1119,39137
+#define XSETSUB_CHAR_TABLE(\7f1120,39211
+XINTPTR \7f1128,39581
+make_pointer_integer \7f1134,39661
+LISP_MACRO_DEFUN_VOID \7f1143,39826
+typedef struct interval *INTERVAL;\7fINTERVAL\ 11149,39987
+xcar_addr \7f1174,40760
+xcdr_addr \7f1179,40837
+LISP_MACRO_DEFUN \7f1185,40931
+XSETCDR \7f1198,41307
+CAR \7f1205,41457
+CDR \7f1212,41591
+CAR_SAFE \7f1221,41791
+CDR_SAFE \7f1226,41877
+STRING_MULTIBYTE \7f1243,42250
+#define STRING_BYTES_BOUND \7f1261,43057
+#define STRING_SET_UNIBYTE(\7f1265,43201
+#define STRING_SET_MULTIBYTE(\7f1275,43516
+SDATA \7f1286,43830
+SSDATA \7f1291,43908
+SREF \7f1297,44037
+SSET \7f1302,44128
+SCHARS \7f1307,44242
+STRING_BYTES \7f1316,44415
+SBYTES \7f1326,44595
+STRING_SET_CHARS \7f1331,44681
+struct vectorlike_header\7f1343,45232
+struct Lisp_Vector\7f1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR\7f1378,46681
+struct Lisp_Bool_Vector\7f1384,46864
+bool_vector_size \7f1399,47385
+bool_vector_data \7f1407,47523
+bool_vector_uchar_data \7f1413,47617
+bool_vector_words \7f1421,47803
+bool_vector_bytes \7f1428,47998
+bool_vector_bitref \7f1437,48238
+bool_vector_ref \7f1445,48478
+bool_vector_set \7f1453,48618
+ header_size \7f1471,49047
+ bool_header_size \7f1472,49106
+ word_size \7f1473,49171
+AREF \7f1479,49284
+aref_addr \7f1485,49391
+ASIZE \7f1491,49501
+ASET \7f1497,49583
+gc_aset \7f1504,49742
+enum { NIL_IS_ZERO \7f1515,50269
+memclear \7f1520,50464
+#define VECSIZE(\7f1531,50762
+#define PSEUDOVECSIZE(\7f1538,51047
+#define UNSIGNED_CMP(\7f1546,51480
+#define ASCII_CHAR_P(\7f1552,51734
+enum CHARTAB_SIZE_BITS\7f1565,52489
+ CHARTAB_SIZE_BITS_0 \7f1567,52516
+ CHARTAB_SIZE_BITS_1 \7f1568,52545
+ CHARTAB_SIZE_BITS_2 \7f1569,52574
+ CHARTAB_SIZE_BITS_3 \7f1570,52603
+struct Lisp_Char_Table\7f1575,52672
+struct Lisp_Sub_Char_Table\7f1606,53752
+CHAR_TABLE_REF_ASCII \7f1628,54566
+CHAR_TABLE_REF \7f1648,55113
+CHAR_TABLE_SET \7f1658,55402
+struct Lisp_Subr\7f1670,55786
+enum char_table_specials\7f1692,56798
+ CHAR_TABLE_STANDARD_SLOTS \7f1697,56993
+ SUB_CHAR_TABLE_OFFSET \7f1701,57214
+CHAR_TABLE_EXTRA_SLOTS \7f1707,57377
+LISP_MACRO_DEFUN \7f1723,57921
+SYMBOL_BLV \7f1732,58181
+SYMBOL_FWD \7f1738,58316
+LISP_MACRO_DEFUN_VOID \7f1744,58428
+SET_SYMBOL_BLV \7f1754,58691
+SET_SYMBOL_FWD \7f1760,58850
+SYMBOL_NAME \7f1767,59001
+SYMBOL_INTERNED_P \7f1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P \7f1783,59299
+#define DEFSYM(\7f1796,59809
+LISP_MACRO_DEFUN \7fDEFSYM\ 11792,59630
+struct hash_table_test\7f1805,60062
+struct Lisp_Hash_Table\7f1823,60555
+XHASH_TABLE \7f1880,62531
+#define XSET_HASH_TABLE(\7f1885,62602
+HASH_TABLE_P \7f1889,62703
+HASH_KEY \7f1896,62860
+HASH_VALUE \7f1903,63040
+HASH_NEXT \7f1911,63254
+HASH_HASH \7f1918,63431
+HASH_INDEX \7f1926,63677
+HASH_TABLE_SIZE \7f1933,63826
+enum DEFAULT_HASH_SIZE \7f1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE \7f1940,63956
+static double const DEFAULT_REHASH_THRESHOLD \7f1946,64176
+static double const DEFAULT_REHASH_SIZE \7f1950,64299
+sxhash_combine \7f1956,64465
+SXHASH_REDUCE \7f1964,64648
+struct Lisp_Misc_Any \7f1971,64806
+ ENUM_BF \7f1973,64866
+struct Lisp_Marker\7f1978,64980
+ ENUM_BF \7f1980,65001
+struct Lisp_Overlay\7f2021,66841
+ ENUM_BF \7f2034,67349
+ SAVE_UNUSED,\7f2047,67644
+ SAVE_INTEGER,\7f2048,67661
+ SAVE_FUNCPOINTER,\7f2049,67679
+ SAVE_POINTER,\7f2050,67701
+ SAVE_OBJECT\7f2051,67719
+enum { SAVE_SLOT_BITS \7f2055,67804
+enum { SAVE_VALUE_SLOTS \7f2058,67901
+enum { SAVE_TYPE_BITS \7f2062,68009
+enum Lisp_Save_Type\7f2064,68075
+ SAVE_TYPE_INT_INT \7f2066,68099
+ SAVE_TYPE_INT_INT_INT\7f2067,68172
+ SAVE_TYPE_OBJ_OBJ \7f2069,68262
+ SAVE_TYPE_OBJ_OBJ_OBJ \7f2070,68333
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ\7f2071,68414
+ SAVE_TYPE_PTR_INT \7f2073,68509
+ SAVE_TYPE_PTR_OBJ \7f2074,68582
+ SAVE_TYPE_PTR_PTR \7f2075,68654
+ SAVE_TYPE_FUNCPTR_PTR_OBJ\7f2076,68727
+ SAVE_TYPE_MEMORY \7f2080,68885
+typedef void (*voidfuncptr)\7fvoidfuncptr\ 12108,69839
+struct Lisp_Save_Value\7f2110,69876
+ ENUM_BF \7f2112,69903
+save_type \7f2134,70755
+XSAVE_POINTER \7f2143,70985
+set_save_pointer \7f2149,71147
+XSAVE_FUNCPOINTER \7f2155,71329
+XSAVE_INTEGER \7f2164,71549
+set_save_integer \7f2170,71711
+XSAVE_OBJECT \7f2179,71932
+struct Lisp_Finalizer\7f2186,72109
+struct Lisp_Free\7f2201,72584
+ ENUM_BF \7f2203,72605
+union Lisp_Misc\7f2212,72885
+XMISC \7f2223,73184
+XMISCANY \7f2229,73273
+XMISCTYPE \7f2236,73382
+XMARKER \7f2242,73470
+XOVERLAY \7f2249,73585
+XSAVE_VALUE \7f2256,73706
+XFINALIZER \7f2263,73835
+struct Lisp_Intfwd\7f2274,74120
+struct Lisp_Boolfwd\7f2284,74414
+struct Lisp_Objfwd\7f2294,74705
+struct Lisp_Buffer_Objfwd\7f2302,74937
+struct Lisp_Buffer_Local_Value\7f2334,76473
+struct Lisp_Kboard_Objfwd\7f2362,77732
+union Lisp_Fwd\7f2368,77841
+XFWDTYPE \7f2378,78087
+XBUFFER_OBJFWD \7f2384,78183
+struct Lisp_Float\7f2391,78319
+XFLOAT_DATA \7f2401,78437
+ IEEE_FLOATING_POINT\7f2415,78946
+#define _UCHAR_T\7f2423,79269
+typedef unsigned char UCHAR;\7f2424,79286
+enum Lisp_Compiled\7f2429,79369
+ COMPILED_ARGLIST \7f2431,79392
+ COMPILED_BYTECODE \7f2432,79418
+ COMPILED_CONSTANTS \7f2433,79445
+ COMPILED_STACK_DEPTH \7f2434,79473
+ COMPILED_DOC_STRING \7f2435,79503
+ COMPILED_INTERACTIVE \7f2436,79532
+enum char_bits\7f2443,79834
+ CHAR_ALT \7f2445,79853
+ CHAR_SUPER \7f2446,79879
+ CHAR_HYPER \7f2447,79907
+ CHAR_SHIFT \7f2448,79935
+ CHAR_CTL \7f2449,79963
+ CHAR_META \7f2450,79989
+ CHAR_MODIFIER_MASK \7f2452,80017
+ CHARACTERBITS \7f2457,80212
+LISP_MACRO_DEFUN \7f2462,80270
+NATNUMP \7f2470,80412
+RANGED_INTEGERP \7f2476,80493
+#define TYPE_RANGED_INTEGERP(\7f2481,80615
+LISP_MACRO_DEFUN \7f2486,80800
+VECTORP \7f2500,81273
+OVERLAYP \7f2505,81376
+SAVE_VALUEP \7f2510,81475
+FINALIZERP \7f2516,81581
+AUTOLOADP \7f2522,81685
+BUFFER_OBJFWDP \7f2528,81776
+PSEUDOVECTOR_TYPEP \7f2534,81874
+PSEUDOVECTORP \7f2542,82127
+WINDOW_CONFIGURATIONP \7f2558,82479
+PROCESSP \7f2564,82589
+WINDOWP \7f2570,82673
+TERMINALP \7f2576,82755
+SUBRP \7f2582,82841
+COMPILEDP \7f2588,82919
+BUFFERP \7f2594,83005
+CHAR_TABLE_P \7f2600,83087
+SUB_CHAR_TABLE_P \7f2606,83178
+BOOL_VECTOR_P \7f2612,83277
+FRAMEP \7f2618,83370
+IMAGEP \7f2625,83487
+ARRAYP \7f2632,83592
+CHECK_LIST \7f2638,83711
+LISP_MACRO_DEFUN_VOID \7f2643,83792
+CHECK_STRING_CAR \7f2653,84089
+CHECK_CONS \7f2658,84193
+CHECK_VECTOR \7f2663,84273
+CHECK_BOOL_VECTOR \7f2668,84359
+CHECK_VECTOR_OR_STRING \7f2674,84536
+CHECK_ARRAY \7f2683,84710
+CHECK_BUFFER \7f2688,84818
+CHECK_WINDOW \7f2693,84904
+CHECK_PROCESS \7f2699,85010
+CHECK_NATNUM \7f2705,85106
+#define CHECK_RANGED_INTEGER(\7f2710,85183
+#define CHECK_TYPE_RANGED_INTEGER(\7f2721,85566
+#define CHECK_NUMBER_COERCE_MARKER(\7f2729,85836
+XFLOATINT \7f2738,86089
+CHECK_NUMBER_OR_FLOAT \7f2744,86160
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(\7f2749,86259
+CHECK_NUMBER_CAR \7f2760,86669
+CHECK_NUMBER_CDR \7f2768,86791
+#define DEFUN(\7f2803,88386
+#define DEFUN(\7f2812,88854
+FUNCTIONP \7f2822,89209
+enum maxargs\7f2831,89404
+ MANY \7f2833,89421
+ UNEVALLED \7f2834,89436
+#define CALLMANY(\7f2838,89539
+#define CALLN(\7f2844,89892
+#define DEFVAR_LISP(\7f2869,91097
+#define DEFVAR_LISP_NOPRO(\7f2874,91269
+#define DEFVAR_BOOL(\7f2879,91451
+#define DEFVAR_INT(\7f2884,91624
+#define DEFVAR_BUFFER_DEFAULTS(\7f2890,91795
+#define DEFVAR_KBOARD(\7f2896,91999
+typedef jmp_buf sys_jmp_buf;\7f2906,92323
+# define sys_setjmp(\7f2907,92352
+# define sys_longjmp(\7f2908,92387
+typedef sigjmp_buf sys_jmp_buf;\7f2910,92459
+# define sys_setjmp(\7f2911,92491
+# define sys_longjmp(\7f2912,92531
+typedef jmp_buf sys_jmp_buf;\7f2916,92690
+# define sys_setjmp(\7f2917,92719
+# define sys_longjmp(\7f2918,92753
+enum specbind_tag \7f2943,93805
+ SPECPDL_UNWIND,\7f2944,93825
+ SPECPDL_UNWIND_PTR,\7f2945,93894
+ SPECPDL_UNWIND_INT,\7f2946,93945
+ SPECPDL_UNWIND_VOID,\7f2947,93993
+ SPECPDL_BACKTRACE,\7f2948,94047
+ SPECPDL_LET,\7f2949,94105
+ SPECPDL_LET_LOCAL,\7f2951,94235
+ SPECPDL_LET_DEFAULT \7f2952,94292
+union specbinding\7f2955,94364
+ ENUM_BF \7f2957,94386
+ ENUM_BF \7f2959,94443
+ ENUM_BF \7f2964,94573
+ ENUM_BF \7f2969,94696
+ ENUM_BF \7f2974,94814
+ ENUM_BF \7f2978,94919
+ ENUM_BF \7f2983,95094
+enum handlertype \7f3021,96410
+enum handlertype { CATCHER,\7f3021,96410
+enum handlertype { CATCHER, CONDITION_CASE \7f3021,96410
+struct handler\7f3023,96457
+#define PUSH_HANDLER(\7f3053,97446
+#define QUIT \7f3101,99223
+#define QUITP \7f3112,99473
+struct gcpro\7f3132,100316
+#define GC_USE_GCPROS_AS_BEFORE \7f3171,101297
+#define GC_MAKE_GCPROS_NOOPS \7f3172,101332
+#define GC_MARK_STACK_CHECK_GCPROS \7f3173,101364
+#define GC_USE_GCPROS_CHECK_ZOMBIES \7f3174,101401
+#define GC_MARK_STACK \7f3177,101462
+#define BYTE_MARK_STACK \7f3181,101562
+#define GCPRO1(\7f3190,101833
+#define GCPRO2(\7f3191,101873
+#define GCPRO3(\7f3192,101939
+#define GCPRO4(\7f3194,102034
+#define GCPRO5(\7f3196,102154
+#define GCPRO6(\7f3198,102299
+#define GCPRO7(\7f3201,102474
+#define UNGCPRO \7f3202,102553
+#define GCPRO1(\7f3208,102653
+#define GCPRO2(\7f3212,102775
+#define GCPRO3(\7f3217,102967
+#define GCPRO4(\7f3223,103229
+#define GCPRO5(\7f3230,103560
+#define GCPRO6(\7f3238,103961
+#define GCPRO7(\7f3247,104431
+#define UNGCPRO \7f3257,104971
+#define GCPRO1(\7f3263,105065
+#define GCPRO2(\7f3269,105299
+#define GCPRO3(\7f3278,105717
+#define GCPRO4(\7f3289,106274
+#define GCPRO5(\7f3302,106972
+#define GCPRO6(\7f3317,107812
+#define GCPRO7(\7f3334,108793
+#define UNGCPRO \7f3353,109916
+#define RETURN_UNGCPRO(\7f3363,110183
+vcopy \7f3384,110657
+set_hash_key_slot \7f3393,110932
+set_hash_value_slot \7f3399,111071
+set_symbol_function \7f3408,111306
+set_symbol_plist \7f3414,111421
+set_symbol_next \7f3420,111524
+blv_found \7f3428,111697
+set_overlay_plist \7f3437,111880
+string_intervals \7f3445,112031
+set_string_intervals \7f3453,112153
+set_char_table_defalt \7f3462,112355
+set_char_table_purpose \7f3467,112467
+set_char_table_extras \7f3475,112636
+set_char_table_contents \7f3482,112845
+set_sub_char_table_contents \7f3489,113040
+enum Arith_Comparison \7f3497,113303
+ ARITH_EQUAL,\7f3498,113327
+ ARITH_NOTEQUAL,\7f3499,113342
+ ARITH_LESS,\7f3500,113360
+ ARITH_GRTR,\7f3501,113374
+ ARITH_LESS_OR_EQUAL,\7f3502,113388
+ ARITH_GRTR_OR_EQUAL\7f3503,113411
+#define INTEGER_TO_CONS(\7f3511,113762
+#define CONS_TO_INTEGER(\7f3529,114625
+enum { NEXT_ALMOST_PRIME_LIMIT \7f3573,116329
+extern EMACS_INT next_almost_prime \7f3574,116368
+enum constype \7f3739,123820
+enum constype {CONSTYPE_HEAP,\7fCONSTYPE_HEAP\ 13739,123820
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}\7fCONSTYPE_PURE\ 13739,123820
+list2i \7f3745,124010
+list3i \7f3751,124119
+list4i \7f3757,124258
+extern Lisp_Object make_formatted_string \7f3767,124634
+build_pure_c_string \7f3792,125662
+build_string \7f3801,125867
+make_uninit_vector \7f3820,126438
+make_uninit_sub_char_table \7f3833,126657
+#define ALLOCATE_PSEUDOVECTOR(\7f3850,127201
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(\7f3858,127537
+INLINE void \7f3890,128943
+extern void *r_alloc \7fr_alloc\ 13895,129064
+#define FLOAT_TO_STRING_BUFSIZE \7f3927,130527
+intern \7f3968,132134
+intern_c_string \7f3974,132222
+extern _Noreturn void error \7f4034,135601
+fast_string_match_ignore_case \7f4136,140089
+INLINE void fixup_locale \7f4241,143854
+INLINE void synchronize_system_messages_locale \7f4242,143889
+INLINE void synchronize_system_time_locale \7f4243,143946
+#define IS_DAEMON \7f4257,144419
+#define DAEMON_RUNNING \7f4258,144459
+#define IS_DAEMON \7f4261,144558
+#define DAEMON_RUNNING \7f4262,144603
+# define WAIT_READING_MAX \7f4281,145422
+# define WAIT_READING_MAX \7f4283,145494
+extern _Noreturn void emacs_abort \7f4374,148386
+egetenv \7f4532,152809
+#define eabs(\7f4545,153305
+#define make_fixnum_or_float(\7f4550,153438
+enum MAX_ALLOCA \7f4556,153689
+enum MAX_ALLOCA { MAX_ALLOCA \7f4556,153689
+extern void *record_xmalloc \7frecord_xmalloc\ 14558,153734
+#define USE_SAFE_ALLOCA \7f4560,153800
+#define AVAIL_ALLOCA(\7f4564,153933
+#define SAFE_ALLOCA(\7f4568,154044
+#define SAFE_NALLOCA(\7f4576,154385
+#define SAFE_ALLOCA_STRING(\7f4590,154861
+#define SAFE_FREE(\7f4598,155113
+#define SAFE_ALLOCA_LISP(\7f4625,155691
+# define USE_STACK_LISP_OBJECTS \7f4652,156813
+# undef USE_STACK_LISP_OBJECTS\7f4658,156979
+# define USE_STACK_LISP_OBJECTS \7f4659,157010
+enum { defined_GC_CHECK_STRING_BYTES \7f4663,157085
+enum { defined_GC_CHECK_STRING_BYTES \7f4665,157138
+union Aligned_Cons\7f4670,157272
+union Aligned_String\7f4676,157352
+ USE_STACK_CONS \7f4689,157707
+ USE_STACK_STRING \7f4691,157813
+#define STACK_CONS(\7f4699,158150
+#define AUTO_CONS_EXPR(\7f4701,158247
+#define AUTO_CONS(\7f4709,158610
+#define AUTO_LIST1(\7f4710,158681
+#define AUTO_LIST2(\7f4712,158789
+#define AUTO_LIST3(\7f4716,158944
+#define AUTO_LIST4(\7f4720,159119
+# define verify_ascii(\7f4732,159510
+#define AUTO_STRING(\7f4740,159818
+#define FOR_EACH_TAIL(\7f4752,160282
+#define FOR_EACH_ALIST_VALUE(\7f4766,160773
+maybe_gc \7f4774,161060
+functionp \7f4784,161299
+\f
+c-src/machsyscalls.c,23
+#define SYSCALL(\7f6,113
+\f
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,\7f1,0
+SYSCALL (mach_reply_port,\7f13,314
+SYSCALL (mach_thread_self,\7f18,377
+SYSCALL (mach_task_self,\7f23,441
+SYSCALL (mach_host_self,\7f28,503
+\f
+c-src/h.h,1850
+ ELEM_I/\7fELEM_I\ 13,15
+} Fails_t;\7f5,85
+typedef void Lang_function \7f6,96
+typedef struct tpcmd\7f8,147
+#define ggg \7f10,170
+tpcmd;\7f15,209
+typedef struct foobar2_ \7f16,216
+} foobar2;\7f20,307
+ DEVICE_SWP,\7f23,333
+ DEVICE_LAST\7f24,349
+} bsp_DevId;\7f25,365
+ struct constant_args \7f27,394
+} args;\7f30,457
+typedef int *regset;\7fregset\ 131,465
+typedef int INT;\7f32,486
+typedef union abc\7f33,503
+} ghi1;\7f36,534
+typedef union abc \7f37,542
+} ghi2;\7f39,573
+typedef struct a \7f40,581
+} b;\7f41,600
+#define c(\7f42,605
+typedef struct an_extern_linkage *an_extern_linkage_ptr;\7fan_extern_linkage_ptr\ 143,619
+typedef struct an_extern_linkage \7f44,676
+} an_extern_linkage;\7f56,1054
+typedef struct pollfd pfdset[\7fpfdset\ 157,1075
+typedef union rtunion_def\7f58,1119
+ } womboid \7f63,1206
+typedef union rtunion_def\7f64,1220
+womboid\7f75,1330
+enum {dog,\7fdog\ 181,1416
+enum {dog, cat}\7fcat\ 181,1416
+enum {dog, cat} animals;\7f81,1416
+typedef void (_CALLBACK_ *signal_handler)\7fsignal_handler\ 182,1441
+typedef void (_CALLBACK_ *signal_handler1)\7fsignal_handler1\ 183,1489
+/* comment */ #define ANSIC\7f84,1538
+ #define ANSIC\7f85,1566
+typedef void (proc)\7f87,1588
+typedef void OperatorFun(\7f88,1612
+typedef int f(\7f89,1648
+struct my_struct \7f91,1691
+typedef struct my_struct my_typedef;\7f93,1713
+typedef RETSIGTYPE (*signal_handler_t)\7fsignal_handler_t\ 194,1750
+ Date 04 May 87 235311 PDT \7f96,1802
+typedef unsigned char unchar;\7f99,1880
+typedef int X,\7f100,1910
+typedef int X, Y,\7f100,1910
+typedef int X, Y, Z;\7f100,1910
+typedef mio mao;\7f101,1931
+typedef struct a \7f103,1966
+typedef struct a { } b;\7f103,1966
+typedef struct b\7f104,1990
+} c;\7f106,2009
+int extvar;\7f109,2053
+#define tag1\7f110,2065
+#define aaaaaa \7f111,2078
+#define bbbbbb\\7fbbbbbb\ 1113,2102
+#define cccccccccc\7f115,2125
+#define enter_critical_section \7f116,2144
+#define exit_critical_to_previous \7f117,2199
+#define UNDEFINED\7f118,2259
+struct re_pattern_buffer \7f119,2277
+\f
+cp-src/c.C,2094
+template <typename ipc3dIslandHierarchy,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,\7f1,0
+class CMultiChannelCSC19_3D\7f2,151
+ void execute(\7f11,493
+int main \7f25,1026
+double base \7f26,1088
+typedef struct s1 \7f32,1251
+} t1;\7f34,1287
+struct s2 \7f35,1293
+typedef struct s2 t2;\7f38,1324
+class A \7f39,1346
+ enum { rosso,\7f40,1356
+ enum { rosso, giallo,\7f40,1356
+ enum { rosso, giallo, verde \7f40,1356
+const A& A::operator+(\7foperator+\ 143,1431
+void operator+(\7f44,1467
+void operator -(\7foperator -\ 145,1495
+void operator int(\7foperator int\ 146,1524
+A<int>* f(\7f48,1556
+int f(\7f49,1571
+int A<int>::f(\7ff\ 150,1590
+A<float,B<int> > A<B<float>,int>::f(\7ff\ 151,1618
+template <class C, int n> class AT \7f52,1668
+class AU \7f53,1716
+class B<\7fB\ 154,1735
+class B<int> { void f(\7f54,1735
+const A::B::T& abt \7f55,1766
+class A \7f56,1792
+class A { class B \7f56,1792
+class A \7f57,1827
+ A operator+(\7f59,1861
+is_muldiv_operation(\7f61,1888
+domain foo \7f68,1956
+ void f(\7f69,1969
+void A::A(\7fA\ 172,1990
+struct A \7f73,2005
+struct B \7f74,2023
+void B::B(\7fB\ 175,2042
+void BE_Node::BE_Node(\7fBE_Node\ 176,2057
+class BE_Node \7f77,2084
+struct foo \7f79,2103
+class test \7f86,2157
+ int f(\7f87,2170
+ int ff(\7f89,2232
+ int g(\7f90,2255
+class AST_Root \7f92,2279
+AST_ConcreteType::AST_ConcreteType(\7f99,2394
+AST_Array::AST_Array(\7f107,2533
+ void f(\7f115,2734
+struct A \7f117,2754
+A::~A(\7f~A\ 1120,2778
+struct B \7f122,2790
+ ~B(\7f123,2801
+enum {dog,\7fdog\ 1126,2818
+enum {dog, cat}\7fcat\ 1126,2818
+enum {dog, cat} animals;\7f126,2818
+struct {int teats;} cow;\7f127,2843
+class Boo \7f129,2869
+ enum {dog,\7fdog\ 1130,2881
+ enum {dog, cat}\7fcat\ 1130,2881
+ foo(\7f133,2955
+ Boo(\7f137,2996
+Boo::Boo(\7f141,3071
+typedef int should_see_this_one_enclosed_in_extern_C;\7f149,3156
+typedef int (*should_see_this_function_pointer)\7fshould_see_this_function_pointer\ 1153,3229
+typedef int should_see_this_array_type[\7fshould_see_this_array_type\ 1156,3311
+\f
+cp-src/x.cc,63
+class XX\7f1,0
+XX::foo(\7ffoo\ 19,60
+XX::bar(\7fbar\ 115,95
+main(\7f21,126
+\f
+cp-src/burton.cpp,124
+::dummy::dummy test::dummy1(\7fdummy1\ 11,0
+::dummy::dummy test::dummy2(\7fdummy2\ 16,64
+::dummy::dummy test::dummy3(\7fdummy3\ 111,143
+\f
+cp-src/functions.cpp,778
+void Date::setDate \7fsetDate\ 15,148
+void Date::plus \7fplus\ 132,939
+void Date::minus \7fminus\ 142,1229
+void Date::shift \7fshift\ 152,1407
+Date & Date::operator = \7foperator =\ 162,1628
+Date & Date::operator += \7foperator +=\ 169,1789
+Date & Date::operator -= \7foperator -=\ 178,1939
+Date & Date::operator ++ \7foperator ++\ 187,2080
+Date & Date::operator -- \7foperator --\ 196,2216
+int Date::operator - \7foperator -\ 1104,2331
+int Date::operator < \7foperator <\ 1112,2483
+int Date::operator > \7foperator >\ 1116,2557
+int Date::operator == \7foperator ==\ 1120,2631
+ostream& operator << \7foperator <<\ 1124,2707
+istream& operator >> \7foperator >>\ 1133,2943
+bool isLeap \7f159,3543
+bool isHoliday \7f163,3629
+void asort(\7f173,3865
+void ReadVacation \7f186,4064
+void Debug \7f201,4523
+int WorkingDays(\7f211,4867
+Date StartDay(\7f226,5129
+\f
+cp-src/MDiagArray2.h,482
+#define octave_MDiagArray2_h \7f29,870
+#undef LTGT\7f35,967
+#define LTGT\7f39,1031
+#define LTGT \7f42,1051
+class MDiagArray2 \7f78,2022
+ MDiagArray2 \7f82,2077
+ MDiagArray2 \7f86,2154
+ MDiagArray2 \7f87,2198
+ MDiagArray2 \7f88,2254
+ MDiagArray2 \7f89,2329
+ MDiagArray2 \7f90,2387
+ MDiagArray2 \7f91,2450
+ ~MDiagArray2 \7f93,2515
+ MDiagArray2<T>& operator = \7foperator =\ 195,2542
+ operator MArray2<T> \7foperator MArray2<T>\ 1101,2667
+#undef LTGT\7f144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(\7f146,3887
+\f
+cp-src/Range.h,275
+#define octave_Range_h \7f24,765
+Range\7f35,891
+ Range \7f39,909
+ Range \7f42,995
+ Range \7f46,1130
+ Range \7f50,1248
+ double base \7f54,1376
+ double limit \7f55,1425
+ double inc \7f56,1475
+ int nelem \7f57,1523
+ void set_base \7f68,1728
+ void set_limit \7f69,1774
+ void set_inc \7f70,1821
+\f
+cp-src/screen.cpp,228
+unsigned char cursor_x,\7f15,548
+unsigned char cursor_x, cursor_y;\7f15,548
+static union REGS regs;\7f16,582
+void goto_xy(\7f18,607
+void hide_cursor(\7f27,774
+void cursor_position(\7f32,836
+void clear_screen(\7f41,997
+void write_xyc(\7f55,1247
+\f
+cp-src/screen.hpp,414
+#define __COLORS\7f9,401
+enum COLORS \7f11,419
+ BLACK,\7f12,433
+ BLUE,\7f13,471
+ GREEN,\7f14,481
+ CYAN,\7f15,492
+ RED,\7f16,502
+ MAGENTA,\7f17,511
+ BROWN,\7f18,524
+ LIGHTGRAY,\7f19,535
+ DARKGRAY,\7f20,550
+ LIGHTBLUE,\7f21,589
+ LIGHTGREEN,\7f22,604
+ LIGHTCYAN,\7f23,620
+ LIGHTRED,\7f24,635
+ LIGHTMAGENTA,\7f25,649
+ YELLOW,\7f26,667
+ WHITE\7f27,679
+#define SCREEN_FP(\7f31,700
+#define SCREEN_START \7f33,795
+\f
+cp-src/conway.cpp,288
+#define max(\7f12,357
+#define min(\7f13,393
+const int num_rows \7f15,430
+const int num_columns \7f16,470
+class site *field_of_play[\7ffield_of_play\ 118,499
+int site::total_surrounding(\7ftotal_surrounding\ 120,550
+void display(\7f37,958
+void glider(\7f50,1239
+void traffic_light(\7f59,1478
+void main(\7f67,1633
+\f
+cp-src/conway.hpp,164
+class site:\7fsite\ 15,235
+ site(\7f10,344
+ char read(\7f12,410
+ void set(\7f13,444
+ void clear(\7f14,478
+ void compute_next_state(\7f15,514
+ void step(\7f22,717
+\f
+cp-src/clheir.cpp,359
+const int max_num_generic_objects \7f9,298
+generic_object * object_registry[\7fobject_registry\ 110,340
+void init_registry(\7f12,400
+void step_everybody(\7f19,527
+void discrete_location::clear_neighbors(\7fclear_neighbors\ 131,852
+generic_object::generic_object(\7fgeneric_object\ 136,981
+generic_object::~generic_object(\7f~generic_object\ 148,1255
+void agent::move(\7fmove\ 153,1353
+\f
+cp-src/clheir.hpp,423
+class generic_object\7f13,520
+ virtual void compute_next_state(\7f21,843
+ virtual void step(\7f22,889
+const int max_num_directions \7f31,1220
+class location:\7flocation\ 133,1290
+ location(\7f43,1643
+class irregular_location:\7firregular_location\ 147,1687
+ irregular_location(\7f51,1763
+class discrete_location:\7fdiscrete_location\ 156,1890
+ discrete_location(\7f62,2045
+ void assign_neighbor(\7f66,2185
+class agent:\7fagent\ 175,2509
+\f
+cp-src/fail.C,294
+struct A \7f7,263
+ struct B \7f8,274
+ struct C \7f9,289
+ C(\7f11,318
+ operator int(\7foperator int\ 112,342
+ typedef C T;\7f14,389
+ typedef B T2;\7f16,414
+class A \7f23,453
+ class B \7f24,463
+ class C \7f25,474
+ int f(\7f26,488
+int A::B::f(\7ff\ 131,521
+main(\7f37,571
+ class D \7f41,622
+ D(\7f43,659
+\f
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch \7f1,0
+(defalias 'pending-delete-mode \7fpending-delete-mode\ 15,102
+(defalias (quote explicitly-quoted-pending-delete-mode)\7f8,175
+\f
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name \7f34,1034
+(defgroup etags \7f43,1498
+(defcustom tags-case-fold-search \7f47,1566
+(defcustom tags-table-list \7f59,2051
+(defcustom tags-compression-info-list\7f69,2449
+(defcustom tags-add-tables \7f88,3231
+(defcustom tags-revert-without-query \7f98,3627
+(defvar tags-table-computed-list \7f103,3778
+(defvar tags-table-computed-list-for \7f112,4262
+(defvar tags-table-list-pointer \7f117,4510
+(defvar tags-table-list-started-at \7f121,4701
+(defvar tags-table-set-list \7f124,4821
+(defcustom find-tag-hook \7f129,5000
+(defcustom find-tag-default-function \7f137,5263
+(define-obsolete-variable-alias 'find-tag-marker-ring-length\7ffind-tag-marker-ring-length\ 1145,5602
+(defcustom tags-tag-face \7f148,5699
+(defcustom tags-apropos-verbose \7f154,5834
+(defcustom tags-apropos-additional-actions \7f160,5998
+(defvaralias 'find-tag-marker-ring \7ffind-tag-marker-ring\ 1183,6917
+(defvar default-tags-table-function \7f189,7097
+(defvar tags-location-ring \7f194,7323
+(defvar tags-table-files \7f201,7599
+(defvar tags-completion-table \7f206,7766
+(defvar tags-included-tables \7f209,7858
+(defvar next-file-list \7f212,7953
+(defvar tags-table-format-functions \7f217,8059
+(defvar file-of-tag-function \7f224,8440
+(defvar tags-table-files-function \7f228,8634
+(defvar tags-completion-table-function \7f230,8745
+(defvar snarf-tag-function \7f232,8840
+(defvar goto-tag-location-function \7f236,9049
+(defvar find-tag-regexp-search-function \7f239,9222
+(defvar find-tag-regexp-tag-order \7f241,9343
+(defvar find-tag-regexp-next-line-after-failure-p \7f243,9452
+(defvar find-tag-search-function \7f245,9572
+(defvar find-tag-tag-order \7f247,9679
+(defvar find-tag-next-line-after-failure-p \7f249,9774
+(defvar list-tags-function \7f251,9880
+(defvar tags-apropos-function \7f253,9968
+(defvar tags-included-tables-function \7f255,10062
+(defvar verify-tags-table-function \7f257,10181
+(defun initialize-new-tags-table \7f260,10292
+(defun tags-table-mode \7f276,10980
+(defun visit-tags-table \7f285,11245
+(defun tags-table-check-computed-list \7f321,12783
+(defun tags-table-extend-computed-list \7f360,14654
+(defun tags-expand-table-name \7f400,16367
+(defun tags-table-list-member \7f409,16710
+(defun tags-verify-table \7f421,17182
+(defun tags-table-including \7f470,19302
+(defun tags-next-table \7f522,21346
+(defun visit-tags-table-buffer \7f543,22203
+(defun tags-reset-tags-tables \7f712,28513
+(defun file-of-tag \7f731,29170
+(defun tags-table-files \7f740,29519
+(defun tags-included-tables \7f749,29869
+(defun tags-completion-table \7f755,30115
+(defun tags-lazy-completion-table \7f783,31309
+(defun tags-completion-at-point-function \7f799,31944
+(defun find-tag-tag \7f818,32694
+(defvar last-tag \7f837,33367
+(defun find-tag-interactive \7f840,33426
+(defvar find-tag-history \7f852,33841
+(defun find-tag-noselect \7f860,34011
+(defun find-tag \7f932,37125
+(defun find-tag-other-window \7f959,38341
+(defun find-tag-other-frame \7f1000,40269
+(defun find-tag-regexp \7f1025,41443
+(defalias 'pop-tag-mark \7fpop-tag-mark\ 11049,42605
+(defvar tag-lines-already-matched \7f1052,42656
+(defun find-tag-in-order \7f1055,42763
+(defun tag-find-file-of-tag-noselect \7f1167,47109
+(defun tag-find-file-of-tag \7f1200,48955
+(defun etags-recognize-tags-table \7f1208,49181
+(defun etags-verify-tags-table \7f1241,50812
+(defun etags-file-of-tag \7f1246,51010
+(defun etags-tags-completion-table \7f1256,51345
+(defun etags-snarf-tag \7f1286,52551
+(defun etags-goto-tag-location \7f1324,54120
+(defun etags-list-tags \7f1388,56563
+(defmacro tags-with-face \7f1423,57838
+(defun etags-tags-apropos-additional \7f1431,58171
+(defun etags-tags-apropos \7f1465,59408
+(defun etags-tags-table-files \7f1527,61617
+(defun etags-tags-included-tables \7f1542,62053
+(defun tags-recognize-empty-tags-table \7f1559,62593
+(defun tag-exact-file-name-match-p \7f1587,63739
+(defun tag-file-name-match-p \7f1596,64132
+(defun tag-exact-match-p \7f1609,64688
+(defun tag-implicit-name-match-p \7f1620,65256
+(defun tag-symbol-match-p \7f1633,65856
+(defun tag-word-match-p \7f1643,66292
+(defun tag-partial-file-name-match-p \7f1652,66690
+(defun tag-any-match-p \7f1662,67134
+(defun tag-re-match-p \7f1667,67318
+(defcustom tags-loop-revert-buffers \7f1675,67567
+(defun next-file \7f1685,67976
+(defvar tags-loop-operate \7f1760,70890
+(defvar tags-loop-scan\7f1763,70984
+(defun tags-loop-eval \7f1771,71313
+(defun tags-loop-continue \7f1782,71642
+(defun tags-search \7f1850,73948
+(defun tags-query-replace \7f1871,74774
+(defun tags-complete-tags-table-file \7f1896,75998
+(defun list-tags \7f1906,76377
+(defun tags-apropos \7f1934,77330
+(define-button-type 'tags-select-tags-table\7ftags-select-tags-table\ 11957,78156
+(defun select-tags-table \7f1964,78395
+(defvar select-tags-table-mode-map \7f2019,80522
+(define-derived-mode select-tags-table-mode \7f2030,80905
+(defun select-tags-table-select \7f2034,81089
+(defun select-tags-table-quit \7f2043,81455
+(defun complete-tag \7f2049,81610
+(defconst etags--xref-limit \7f2074,82551
+(defvar etags-xref-find-definitions-tag-order \7f2076,82586
+(defun etags-xref-find \7f2082,82876
+(defun etags--xref-find-definitions \7f2096,83405
+(defclass xref-etags-location \7f2129,85119
+(defun xref-make-etags-location \7f2135,85342
+(cl-defmethod xref-location-marker \7f2139,85497
+(cl-defmethod xref-location-line \7f2146,85741
+\f
+erl-src/gs_dialog.erl,98
+-define(VERSION\7f2,32
+behaviour_info(\7f51,2177
+show(\7f124,5458
+dialog_loop(\7f219,9529
+test(\7f252,10806
+\f
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+forth-src/test-forth.fth,408
+: a-forth-word \7f20,301
+99 constant a-forth-constant!\7f22,343
+55 value a-forth-value?\7f23,373
+create :a-forth-dictionary-entry\7f24,397
+defer #a-defer-word\7f27,460
+: (another-forth-word)\7f(another-forth-word\ 129,481
+ 9 field >field1\7f36,582
+ 5 field >field2\7f37,605
+constant (a-forth-constant\7f(a-forth-constant\ 138,628
+2000 buffer: #some-storage\7f41,657
+code assemby-code-word \7f43,685
+: a-forth-word \7f50,870
+\f
+go-src/test.go,48
+package main\7f1,0
+func say(\7f5,28
+func main(\7f9,72
+\f
+go-src/test1.go,119
+package main\7f1,0
+func (s str) PrintAdd(\7f17,136
+func (n intNumber) PrintAdd(\7f21,189
+func test(\7f25,248
+func main(\7f29,285
+\f
+html-src/softwarelibero.html,200
+Cos'è il software libero?\7f4,38
+Licenze d'uso di un programma\7flicenze\ 165,2500
+Sfatiamo alcuni miti\7f138,6118
+Il movimento open source\7foss\ 1191,8037
+Impatto pratico del software libero\7fimpatto\ 1231,10066
+\f
+html-src/index.shtml,104
+ \7f8,281
+In evidenza\7f15,447
+Comunicati e iniziative\7f32,976
+Ultime notizie dall'associazione\7f63,2030
+\f
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms\7f7,277
+Description\7falgorithms\ 110,481
+Generating the Data\7fgenalgorithm\ 148,1995
+Convolutionally\7fconalgorithm\ 155,2512
+Next\7fstatetable\ 1262,11587
+Output\7foutputtable\ 1350,13915
+Mapping the Channel Symbols\7fmapping\ 1433,16213
+Adding Noise to the\7faddnoise\ 1439,16607
+Quantizing the Received\7fquantizing\ 1469,19100
+\f
+html-src/software.html,439
+Francesco Potortì Software Page\7f9,280
+Software that I wrote for supporting my research activity\7fsimulation\ 136,1398
+MTG\7fmtg\ 141,1482
+Fracas\7ffracas\ 165,2624
+GaliLEO\7fgalileo\ 1101,4232
+Leasqr\7fleasqr\ 1114,4677
+Free software that I wrote for the GNU project or for my personal or work\7fgnu\ 1142,6065
+Etags\7fetags\ 1148,6180
+checkiso\7f161,6729
+cgrep\7f178,7547
+debian-bug.el\7fdebian-bug\ 1190,7979
+tcpdump\7f205,8564
+Links to interesting software\7flinks\ 1216,8891
+\f
+lua-src/allegro.lua,400
+local function get_layer_by_name \7f7,175
+local function count_layers \7f33,621
+function GetLayerByName \7f54,980
+function GetUniqueLayerName \7f65,1204
+function SelectLayer \7f76,1415
+function NewLayer \7f86,1773
+function NewLayerSet \7f144,3226
+function RemoveLayer \7f170,3750
+function MoveLayerTop \7f211,4767
+function MoveLayerBottom \7f223,5079
+function MoveLayerBefore \7f236,5457
+function MoveLayerAfter \7f258,6090
+\f
+lua-src/test.lua,442
+function Rectangle.getPos \7f2,15
+function Rectangle.getPos \7fgetPos\ 12,15
+function Circle.getPos \7f6,61
+function Circle.getPos \7fgetPos\ 16,61
+function Cube.data.getFoo \7f10,102
+function Cube.data.getFoo \7fgetFoo\ 110,102
+function Square.something:Bar \7f14,148
+function Square.something:Bar \7fBar\ 114,148
+ function test.me_22a(\7f22,241
+ function test.me_22a(\7fme_22a\ 122,241
+ local function test.me22b \7f25,297
+ local function test.me22b \7fme22b\ 125,297
+\f
+make-src/Makefile,2175
+LATEST=\7f1,0
+RELEASELIST=\7f2,10
+ADASRC=\7f4,104
+ASRC=\7f5,171
+CSRC=\7f6,197
+CPSRC=\7f10,423
+ELSRC=\7f13,614
+ERLSRC=\7f14,661
+FORTHSRC=\7f15,702
+FSRC=\7f16,726
+HTMLSRC=\7f17,776
+JAVASRC=\7f18,844
+LUASRC=\7f19,907
+MAKESRC=\7f20,926
+OBJCSRC=\7f21,943
+OBJCPPSRC=\7f22,999
+PASSRC=\7f23,1035
+PERLSRC=\7f24,1053
+PHPSRC=\7f25,1108
+PSSRC=\7f26,1156
+PROLSRC=\7f27,1173
+PYTSRC=\7f28,1210
+TEXSRC=\7f29,1227
+YSRC=\7f30,1282
+SRCS=\7f31,1325
+NONSRCS=\7f35,1577
+VHDLFLAGS=\7f37,1624
+COBOLFLAGS=\7f38,1827
+POSTSCRIPTFLAGS=\7f39,1889
+TCLFLAGS=\7f40,1943
+GETOPTOBJS=\7f42,2002
+RXINCLUDE=\7f43,2034
+REGEXOBJS=\7f44,2056
+CHECKOBJS=\7f46,2075
+CHECKFLAGS=\7f47,2105
+OBJS=\7f48,2145
+CPPFLAGS=\7f49,2190
+LDFLAGS=\7f50,2259
+WARNINGS=\7f51,2282
+CFLAGS=\7f52,2466
+FASTCFLAGS=\7f55,2530
+FASTCFLAGSWARN=\7f56,2591
+FILTER=\7f58,2641
+REGEX=\7f59,2695
+xx=\7f60,2741
+MAKE:\7fMAKE\ 162,2790
+RUN=\7f63,2825
+RUN=\7f64,2865
+OPTIONS=\7f65,2870
+ARGS=\7f66,2922
+infiles \7f68,2940
+quiettest:\7fquiettest\ 170,3002
+test:\7ftest\ 179,3409
+${CHECKOBJS}:\7f${CHECKOBJS}\ 188,3805
+checker:\7fchecker\ 190,3849
+standalone:\7fstandalone\ 196,4062
+prof:\7fprof\ 1101,4168
+fastetags:\7ffastetags\ 1104,4198
+fastctags:\7ffastctags\ 1108,4322
+staticetags:\7fstaticetags\ 1112,4446
+rsynctofly:\7frsynctofly\ 1116,4608
+rsyncfromfly:\7frsyncfromfly\ 1119,4698
+web ftp publish:\7fweb ftp publish\ 1122,4794
+release distrib:\7frelease distrib\ 1129,5115
+tags:\7ftags\ 1134,5255
+clean:\7fclean\ 1136,5267
+srclist:\7fsrclist\ 1139,5302
+regexfile:\7fregexfile\ 1143,5391
+/home/www/pub/etags.c.gz:\7f/home/www/pub/etags.c.gz\ 1149,5566
+/home/www/pub/software/unix/etags.tar.gz:\7f/home/www/pub/software/unix/etags.tar.gz\ 1156,5825
+regex.o:\7fregex.o\ 1159,6031
+getopt.o:\7fgetopt.o\ 1162,6086
+getopt1.o:\7fgetopt1.o\ 1165,6147
+etags:\7fetags\ 1168,6210
+ctags:\7fctags\ 1171,6299
+man manpage:\7fman manpage\ 1174,6396
+etags.1.man:\7fetags.1.man\ 1176,6422
+maintaining.info:\7fmaintaining.info\ 1179,6475
+TAGS:\7fTAGS\ 1182,6557
+%ediff:\7f%ediff\ 1185,6587
+oediff:\7foediff\ 1188,6677
+%cdiff:\7f%cdiff\ 1191,6764
+xdiff:\7fxdiff\ 1194,6854
+ETAGS:\7fETAGS\ 1197,6942
+ETAGS%:\7fETAGS%\ 1200,7012
+ETAGS13 ETAGS14 ETAGS15:\7fETAGS13 ETAGS14 ETAGS15\ 1203,7084
+ETAGS12:\7fETAGS12\ 1206,7216
+OTAGS:\7fOTAGS\ 1209,7304
+CTAGS:\7fCTAGS\ 1212,7369
+CTAGS%:\7fCTAGS%\ 1215,7443
+CTAGS13 CTAGS14 CTAGS15:\7fCTAGS13 CTAGS14 CTAGS15\ 1218,7545
+EXTAGS:\7fEXTAGS\ 1221,7680
+.PRECIOUS:\7f.PRECIOUS\ 1224,7838
+FRC:\7fFRC\ 1226,7894
+\f
+objc-src/Subprocess.h,98
+#define Subprocess \7f41,1217
+#define BUFFERSIZE \7f43,1267
+@interface Subprocess:\7fSubprocess\ 145,1292
+\f
+objc-src/Subprocess.m,446
+#define PTY_TEMPLATE \7f20,494
+#define PTY_LENGTH \7f21,528
+@interface Subprocess(Private)\7f32,737
+- childDidExit\7f39,851
+- fdHandler:\7ffdHandler\ 167,1589
+showError \7f98,2360
+fdHandler \7f112,2785
+getptys \7f119,2907
+- init:\7finit\ 1183,4815
+ andStdErr:\7finit\ 1197,5147
+- send:(const char *)string withNewline:\7fsend\ 1300,7436
+- send:\7fsend\ 1308,7599
+- terminateInput\7f314,7689
+- terminate:\7fterminate\ 1321,7810
+- setDelegate:\7fsetDelegate\ 1332,7961
+- delegate\7f338,8031
+\f
+objc-src/PackInsp.h,109
+#define NUMSTATS \7f36,1101
+#define TYPESTOSTAT \7f37,1120
+@interface PackageInspector:\7fPackageInspector\ 139,1172
+\f
+objc-src/PackInsp.m,1322
+static const char RCSid[\7fRCSid\ 130,1032
+#define VERSION \7f34,1116
+# define DEBUG \7f37,1155
+#define LISTCONTENTS \7f39,1181
+#define OPENBUTTON \7f47,1352
+#define LISTCONTENTSBUTTON \7f48,1449
+#define LISTDESCRIPTIONBUTTON \7f49,1562
+#define STATE_UNINSTALLED \7f52,1687
+#define STATE_INSTALLED \7f53,1807
+#define STATE_COMPRESSD \7f54,1948
+#define SIZEFORMAT \7f57,2152
+#define KBYTES \7f58,2362
+#define MBYTES \7f59,2473
+#define LOCALIZE(\7f61,2585
+#define LOCALIZE_ARCH(\7f62,2668
++new\7fnew\ 167,2802
+-showInfo:\7fshowInfo\ 193,3417
+-revert:\7frevert\ 1107,3737
+-ok:\7fok\ 1136,4297
+-load\7fload\ 1143,4424
+#define LOOKUP(\7f156,4826
+#undef LOOKUP\7f176,5694
+-loadKeyValuesFrom:(const char *)type inTable:\7floadKeyValuesFrom\ 1186,5852
+-loadContentsOf:(const char *)type inTable:\7floadContentsOf\ 1238,7079
+-loadImage\7floadImage\ 1257,7552
+#define STAT_EQ(\7f275,7940
+-(BOOL)shouldLoad\7f280,8116
+-toggleDescription\7ftoggleDescription\ 1301,8626
+-(const char *)getPath:(char *)buf forType:\7fgetPath\ 1317,8899
+-setRevertButtonTitle\7fsetRevertButtonTitle\ 1333,9320
+-(const char *)formatSize:(const char *)size inBuf:\7fformatSize\ 1344,9525
+#define WORKING \7f368,10045
+-(void)getArchs\7f370,10100
+-(void)addArchs:\7faddArchs\ 1385,10520
+-subprocess:(Subprocess *)sender output:\7fsubprocess\ 1428,11351
+-subprocessDone:\7fsubprocessDone\ 1436,11484
+static void openInWorkspace(\7f446,11634
+-open:\7fopen\ 1464,12063
+\f
+objcpp-src/SimpleCalc.H,41
+@interface SimpleCalc:\7fSimpleCalc\ 114,400
+\f
+objcpp-src/SimpleCalc.M,445
+- init\7f52,1747
+- appendToDisplay:\7fappendToDisplay\ 160,1933
+- registerAction:\7fregisterAction\ 170,2210
+- decimalKey:\7fdecimalKey\ 177,2348
+- numberKeys:\7fnumberKeys\ 191,2661
+- equalsKey:\7fequalsKey\ 1112,3192
+- operationKeys:\7foperationKeys\ 1131,3680
+- clearKey:\7fclearKey\ 1153,4301
+- clearAllKey:\7fclearAllKey\ 1160,4410
+- appDidInit:\7fappDidInit\ 1168,4591
+- windowWillClose:\7fwindowWillClose\ 1178,4882
+- infoPanel:\7finfoPanel\ 1186,5132
+- helpPanel:\7fhelpPanel\ 1198,5482
+\f
+pas-src/common.pas,1875
+procedure InitializeStringPackage;\7f26,527
+function newtextstring;\7f34,874
+procedure disposetextstring;\7f52,1404
+function ConcatT;\7f78,2066
+function AppendTextString;\7f112,3238
+function CopyTextString;\7f132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;\7f151,4505
+procedure append_string;\7f172,5166
+function To_Upper;\7f186,5462
+function To_Lower;\7f194,5617
+function EmptyNmStr(\7f209,6213
+function chartonmstr;\7f219,6436
+function LowerCaseNmStr;\7f230,6682
+function concatenatenamestrings;\7f242,7007
+procedure writenamestring;\7f263,7517
+function IsControlChar;\7f277,7928
+function namestringequal;\7f283,8079
+function NameStringLess;\7f302,8539
+function IsControlCharName(\7f343,9710
+function SubString;\7f358,10208
+function SkipChars;\7f379,10791
+function RemoveUnderlineControl;\7f397,11311
+procedure First100Chars;\7f427,12162
+procedure SkipSpaces;\7f462,13298
+function SkipBlanks;\7f477,13782
+function stripname;\7f505,14595
+function Locate;\7f522,15039
+function NameHasChar;\7f543,15581
+function integertonmstr;\7f561,16134
+function NmStrToInteger;\7f585,16901
+function AddNullToNmStr;\7f600,17317
+function ValToNmStr;\7f611,17585
+function ChangeFileType;\7f625,18037
+function StripPath;\7f647,18734
+function ReprOfChar;\7f675,19343
+procedure ExtractCommentInfo;\7f702,20749
+procedure INSERT_TREE_NODE;\7f784,24053
+function GetNameList;\7f920,27926
+procedure DisposeANameList(\7f925,28010
+procedure DisposeNameList;\7f938,28340
+function GetNewNameListNode;\7f943,28409
+function insertname;\7f972,29051
+procedure InitNameList;\7f988,29471
+procedure InitNameStringPool;\7f998,29767
+procedure NewNameString;\7f1004,29867
+procedure ReleaseNameString;\7f1022,30232
+procedure SDTrefStringToRec \7f1045,30741
+procedure SDTrefSkipSpaces;\7f1059,31092
+function SDTrefIsEnd \7f1070,31323
+function SDTrefGetInteger \7f1082,31529
+procedure SDTrefRecToString \7f1303,37546
+function NmStrToErrStr;\7f1497,42305
+function ErrStrToNmStr;\7f1509,42557
+function GetTextRef;\7f1529,43112
+\f
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"\7fLCE_FUNCTIONS\ 14,38
+ define("LCE_UNKNOWN"\7fLCE_UNKNOWN\ 19,145
+ define("LCE_WS"\7fLCE_WS\ 111,194
+ define("LCE_COMMENT"\7fLCE_COMMENT\ 113,244
+ define("LCE_COMMENT_USER"\7fLCE_COMMENT_USER\ 115,303
+ define("LCE_COMMENT_TOOL"\7fLCE_COMMENT_TOOL\ 117,366
+ define("LCE_MSGID"\7fLCE_MSGID\ 119,430
+ define("LCE_MSGSTR"\7fLCE_MSGSTR\ 121,488
+ define("LCE_TEXT"\7fLCE_TEXT\ 123,541
+ define("STATE_ABORT"\7fSTATE_ABORT\ 125,567
+ define("STATE_OK"\7fSTATE_OK\ 126,595
+ define("STATE_LOOP"\7fSTATE_LOOP\ 127,620
+ class POEntryAD \7f29,648
+ function validate(\7f31,683
+ function checkQuotation(\7f59,1384
+ class CommentAD \7f70,1639
+ function CommentAD(\7f73,1693
+ function validate(\7f83,1944
+ class POEntry \7f105,2410
+ function POEntry(\7f119,2711
+ function lineCount(\7f135,3255
+ function serializeToVars(\7f141,3365
+ function write(\7f151,3800
+ class POReader \7f163,4178
+ function gettext(\7f177,4457
+ function parseFromVars(\7f189,4705
+ function serializeToVars(\7f215,5331
+ function POReader(\7f229,5613
+ function read(\7f243,5983
+ function write(\7f259,6307
+ function isComment(\7f277,6645
+ function comment(\7f284,6822
+ function msgid(\7f304,7247
+ function msgstr(\7f320,7574
+ function start(\7f340,8232
+ function createPOEntries(\7f360,8644
+ function stripLine(\7f394,9472
+ function printClassification(\7f421,10056
+ function classifyLine(\7f432,10301
+ function getTextDomains(\7f471,11094
+ class PORManager \7f498,11756
+ function PORManager(\7f502,11822
+ function addPOReader(\7f507,11896
+ function &getPOReader(\7fgetPOReader\ 1512,11992
+ function getDomainNames(\7f517,12081
+ function &loadPORManager(\7floadPORManager\ 1523,12174
+ function fileJoin(\7f536,12436
+ function lce_bindtextdomain(\7f557,12839
+ function lce_textdomain(\7f614,14530
+ function lce_gettext(\7f620,14641
+ function lce_dgettext(\7f626,14767
+ function lce(\7f634,14966
+ function lce_bindtextdomain(\7f651,15488
+ function lce_textdomain(\7f656,15592
+ function lce_gettext(\7f661,15674
+ function lce_dgettext(\7f666,15755
+ function lce(\7f670,15855
+ function lce_geteditcode(\7f676,15898
+\f
+php-src/ptest.php,46
+define("TEST"\7fTEST\ 11,0
+test \7f4,26
+foo(\7f16,200
+\f
- sub read_toc \7fmain::read_toc\ 1165,3917
++perl-src/htlmify-cystic,1197
+my @section_name;\7fsection_name\ 112,236
+my @appendix_name;\7fappendix_name\ 113,254
+my @section_toc;\7fsection_toc\ 115,274
+my @appendix_toc;\7fappendix_toc\ 116,291
+my $new_tag \7fnew_tag\ 118,310
+my $appendix;\7fappendix\ 124,409
+my $section;\7fsection\ 125,423
+my $subsection;\7fsubsection\ 126,436
+my $subsubsection;\7fsubsubsection\ 127,452
+my $this_file_toc \7fthis_file_toc\ 129,472
+my %file_tocs;\7ffile_tocs\ 130,496
+my @output_files \7foutput_files\ 132,512
+my $file_index \7ffile_index\ 133,535
+my $output_file;\7foutput_file\ 135,556
+my $line;\7fline\ 137,574
+my $subsection_marker;\7fsubsection_marker\ 1161,3883
+my $new;\7fnew\ 1163,3907
- sub finish_subsubsections \7fmain::finish_subsubsections\ 1302,7805
- sub finish_subsections \7fmain::finish_subsections\ 1309,7987
- sub finish_sections \7fmain::finish_sections\ 1320,8310
- sub finish_appendices \7fmain::finish_appendices\ 1331,8599
- sub section_url_base \7fmain::section_url_base\ 1337,8724
- sub section_url_name \7fmain::section_url_name\ 1342,8922
- sub section_url \7fmain::section_url\ 1355,9284
++sub read_toc \7f165,3917
+ my $entry \7fentry\ 1218,5621
+ my $entry \7fentry\ 1234,6077
+ my $entry \7fentry\ 1245,6351
+ my $entry \7fentry\ 1252,6536
+ my $entry \7fentry\ 1268,7010
+ my $entry \7fentry\ 1276,7204
+ my $entry \7fentry\ 1281,7328
+ my $entry \7fentry\ 1296,7698
- sub section_href \7fmain::section_href\ 1364,9452
- sub section_name \7fmain::section_name\ 1368,9551
- sub toc_line \7fmain::toc_line\ 1372,9655
- sub file_end \7fmain::file_end\ 1375,9750
++sub finish_subsubsections \7f302,7805
++sub finish_subsections \7f309,7987
++sub finish_sections \7f320,8310
++sub finish_appendices \7f331,8599
++sub section_url_base \7f337,8724
++sub section_url_name \7f342,8922
++sub section_url \7f355,9284
+ my $name \7fname\ 1357,9336
- perl-src/yagrip.pl,258
- sub getopt \7fmain::getopt\ 17,156
++sub section_href \7f364,9452
++sub section_name \7f368,9551
++sub toc_line \7f372,9655
++sub file_end \7f375,9750
+\f
- sub usage \7fmain::usage\ 138,856
++perl-src/yagrip.pl,233
++sub getopt \7f7,156
+ local($_,$flag,$opt,$f,$r,@temp)\7f($_,$flag,$opt,$f,$r,@temp\ 18,169
- perl-src/kai-test.pl,244
- sub f1 \7fmain::f1\ 12,16
- sub main::f2 \7f6,50
++sub usage \7f38,856
+ local($prog,$_,@list)\7f($prog,$_,@list\ 139,868
+ local($string,$flag,@string,@temp,@last)\7f($string,$flag,@string,@temp,@last\ 140,897
+\f
- sub f3 \7fFoo::f3\ 112,104
- sub Bar::f4 \7f16,138
++perl-src/kai-test.pl,203
++sub f1 \7f2,16
++sub main::f2 \7ff2\ 16,50
+package Foo;\7f10,90
- sub f5 \7fBar::f5\ 122,191
++sub f3 \7f12,104
++sub Bar::f4 \7ff4\ 116,138
+package Bar;\7f20,177
- sub f6 \7fFoo::Bar::f6\ 128,244
++sub f5 \7f22,191
+package Foo::Bar;\7f26,225
- sub f7 \7fmain::f7\ 134,293
++sub f6 \7f28,244
+package main;\7f32,278
++sub f7 \7f34,293
+\f
+ps-src/rfc1245.ps,2478
+/FMversion \7f12,311
+/FrameDict \7f17,500
+/FMVERSION \7f47,1307
+/FMLOCAL \7f56,1494
+/FMDOCUMENT \7f73,1766
+/FMBEGINPAGE \7f95,2279
+/FMENDPAGE \7f109,2516
+/FMDEFINEFONT \7f115,2582
+/FMNORMALIZEGRAPHICS \7f126,2725
+/FMBEGINEPSF \7f142,2955
+/FMENDEPSF \7f153,3207
+/setmanualfeed \7f158,3283
+/max \7f163,3386
+/min \7f164,3426
+/inch \7f165,3466
+/pagedimen \7f166,3485
+/setpapername \7f172,3629
+/papersize \7f190,4214
+/manualpapersize \7f211,4789
+/desperatepapersize \7f230,5211
+/savematrix \7f239,5370
+/restorematrix \7f242,5425
+/dmatrix \7f245,5475
+/dpi \7f246,5495
+/freq \7f248,5583
+/sangle \7f249,5658
+/DiacriticEncoding \7f250,5717
+/.notdef \7f251,5738
+/.notdef \7f252,5801
+/.notdef \7f253,5864
+/.notdef \7f254,5927
+/.notdef \7f255,5990
+/numbersign \7f256,6051
+/parenright \7f257,6115
+/two \7f258,6184
+/less \7f259,6251
+/L \7f260,6320
+/bracketright \7f261,6389
+/i \7f262,6459
+/braceright \7f263,6529
+/Ntilde \7f264,6598
+/atilde \7f265,6668
+/iacute \7f266,6733
+/ocircumflex \7f267,6797
+/udieresis \7f268,6858
+/paragraph \7f269,6919
+/dieresis \7f270,6983
+/yen \7f271,7050
+/ordfeminine \7f272,7109
+/exclamdown \7f273,7171
+/guillemotleft \7f274,7230
+/Otilde \7f275,7296
+/quoteleft \7f276,7357
+/fraction \7f277,7420
+/periodcentered \7f278,7490
+/Acircumflex \7f279,7549
+/Icircumflex \7f280,7610
+/Uacute \7f281,7680
+/breve \7f282,7746
+/ReEncode \7f284,7814
+/graymode \7f300,8020
+/setpattern \7f310,8184
+/grayness \7f331,8725
+/normalize \7f394,9873
+/dnormalize \7f397,9942
+/lnormalize \7f400,10014
+/H \7f403,10104
+/Z \7f406,10147
+/X \7f409,10176
+/V \7f412,10219
+/N \7f415,10260
+/M \7f418,10286
+/E \7f419,10315
+/D \7f420,10336
+/O \7f421,10358
+/L \7f423,10394
+/Y \7f430,10489
+/R \7f439,10588
+/RR \7f450,10696
+/C \7f467,10959
+/U \7f473,11004
+/F \7f477,11039
+/T \7f481,11084
+/RF \7f484,11115
+/TF \7f488,11164
+/P \7f495,11219
+/PF \7f499,11270
+/S \7f506,11344
+/SF \7f510,11384
+/B \7f517,11446
+/BF \7f521,11505
+/W \7f538,11714
+/G \7f573,12382
+/A \7f582,12525
+/BEGINPRINTCODE \7f606,12918
+/ENDPRINTCODE \7f615,13131
+/gn \7f620,13259
+/cfs \7f631,13384
+/ic \7f636,13473
+/ms \7f658,14285
+/ip \7f668,14395
+/wh \7f678,14492
+/bl \7f684,14607
+/s1 \7f690,14722
+/fl \7f691,14739
+/hx \7f698,14887
+/wbytes \7f709,15055
+/BEGINBITMAPBWc \7f713,15147
+/BEGINBITMAPGRAYc \7f716,15198
+/BEGINBITMAP2BITc \7f719,15251
+/COMMONBITMAPc \7f722,15304
+/BEGINBITMAPBW \7f739,15660
+/BEGINBITMAPGRAY \7f742,15709
+/BEGINBITMAP2BIT \7f745,15760
+/COMMONBITMAP \7f748,15811
+/Fmcc \7f765,16156
+/ngrayt \7f773,16371
+/nredt \7f774,16393
+/nbluet \7f775,16414
+/ngreent \7f776,16436
+/colorsetup \7f787,16603
+/fakecolorsetup \7f814,17370
+/BITMAPCOLOR \7f826,17636
+/BITMAPCOLORc \7f839,17926
+/BITMAPGRAY \7f855,18275
+/BITMAPGRAYc \7f858,18335
+/ENDBITMAP \7f861,18397
+/fillprocs \7f868,18497
+\f
+prol-src/ordsets.prolog,525
+is_ordset(\7f47,1310
+list_to_ord_set(\7f63,1688
+ord_add_element(\7f71,1867
+ord_del_element(\7f85,2344
+ord_disjoint(\7f100,2783
+ord_intersect(\7f108,2953
+ord_intersection(\7f126,3552
+ord_intersection3(\7f130,3691
+ord_intersection(\7f150,4531
+ord_intersection4(\7f154,4703
+ord_intersection(\7f176,5664
+ord_intersection2(\7f181,5812
+ord_member(\7f200,6318
+ord_seteq(\7f216,6683
+ord_setproduct(\7f225,6971
+ord_subset(\7f240,7377
+ord_subtract(\7f257,7861
+ord_symdiff(\7f265,8054
+ord_union(\7f288,8887
+ord_union4(\7f303,9352
+ord_union(\7f324,10171
+ord_union_all(\7f329,10313
+\f
+prol-src/natded.prolog,2319
+expandmng(\7f100,2879
+normalize(\7f116,3359
+fresh_vars(\7f125,3716
+subst(\7f138,4134
+normalize_fresh(\7f159,4660
+reduce_subterm(\7f171,5112
+reduce(\7f185,5559
+free_var(\7f196,5903
+free_for(\7f209,6246
+compile_lex(\7f231,6875
+consult_lex:-\7fconsult_lex\ 1248,7384
+lex(\7f259,7754
+expandsyn(\7f267,8068
+bas_syn(\7f292,8897
+compile_empty:-\7fcompile_empty\ 1310,9376
+complete(\7f328,10055
+add_active(\7f340,10527
+parse(\7f353,10949
+derived_analyses(\7f364,11341
+build(\7f378,11965
+buildact(\7f392,12521
+mapsyn(\7f412,13542
+add_edge(\7f434,14278
+findcats(\7f447,14758
+normalize_tree(\7f465,15478
+normalize_trees(\7f475,15856
+expandmng_tree(\7f486,16248
+expandmng_trees(\7f496,16614
+cat(\7f511,17013
+subtree(\7f644,21266
+hypothetical_mem(\7f653,21565
+make_coor(\7f667,22130
+start_up:-\7fstart_up\ 1688,23013
+tokenizeatom(\7f710,23921
+tokenize(\7f720,24348
+isoperator(\7f752,25377
+isoptab(\7f756,25431
+specialsymbol(\7f765,25756
+sstab(\7f771,25861
+parse_cgi(\7f787,26347
+keyvalseq(\7f792,26510
+andkeyvalseq(\7f796,26609
+keyval(\7f799,26688
+valseq(\7f807,26920
+plusvalseq(\7f810,27007
+val(\7f816,27109
+argvals(\7f824,27426
+commaargvals(\7f828,27503
+atomval(\7f833,27578
+atom(\7f836,27640
+action(\7f846,28004
+keyvalcgi(\7f864,28649
+keyvalscgi(\7f865,28670
+outsyn(\7f868,28726
+act(\7f876,29060
+actout(\7f901,29906
+texttreelist(\7f912,30089
+htmltreelist(\7f918,30190
+fitchtreelist(\7f924,30304
+pp_html_table_tree(\7f938,30759
+pp_html_tree(\7f949,31113
+pp_html_trees(\7f988,32381
+pp_html_table_fitch_tree(\7f999,32769
+pp_html_fitch_tree(\7f1017,33672
+removeexp(\7f1129,39002
+splitexp(\7f1142,39490
+pp_exp(\7f1155,39990
+map_word(\7f1168,40249
+pp_exps(\7f1180,40474
+pp_tree(\7f1188,40777
+pp_trees(\7f1216,41807
+pp_word_list(\7f1225,42128
+pp_word(\7f1231,42262
+pp_word_list_rest(\7f1238,42569
+pp_cat(\7f1248,42929
+pp_syn(\7f1255,43196
+pp_syn_paren(\7f1276,43899
+pp_paren(\7f1293,44377
+pp_syn_back(\7f1300,44661
+pp_bas_cat(\7f1311,45001
+writecat(\7f1322,45409
+writesubs(\7f1351,46455
+writesups(\7f1361,46757
+writelistsubs(\7f1371,47090
+pp_lam(\7f1380,47408
+pp_lam_bracket(\7f1398,48022
+pp_lam_paren(\7f1407,48338
+pp_rule(\7f1429,49238
+member(\7f1447,49866
+append_list(\7f1451,49919
+append(\7f1456,50010
+at_least_one_member(\7f1460,50076
+numbervars(\7f1464,50171
+reverse(\7f1467,50209
+select(\7f1471,50290
+select_last(\7f1475,50357
+cat_atoms(\7f1479,50436
+writelist(\7f1485,50524
+write_lex_cat(\7f1492,50676
+writebreaklex(\7f1500,50988
+write_lex(\7f1513,51265
+writebreak(\7f1521,51541
+tt:-\7ftt\ 11531,51713
+mt:-\7fmt\ 11534,51784
+cmt:-\7fcmt\ 11537,51878
+\f
+pyt-src/server.py,1438
+class Controls:\7fControls\ 117,358
+ def __init__(\7f18,374
+ def __repr__(\7f24,590
+ def __str__(\7f34,871
+class Server:\7fServer\ 137,934
+ def __init__(\7f38,948
+ def dump(\7f73,2198
+ def __repr__(\7f125,3896
+ def __str__(\7f128,3945
+class User:\7fUser\ 1131,4014
+ def __init__(\7f132,4026
+ def __repr__(\7f172,5445
+ def __str__(\7f206,6883
+def flag2str(\7f223,7212
+class LabeledEntry(\7f232,7442
+ def bind(\7f234,7525
+ def focus_set(\7f236,7584
+ def __init__(\7f238,7629
+def ButtonBar(\7f245,7909
+def helpwin(\7f255,8280
+class ListEdit(\7f267,8707
+ def __init__(\7f269,8808
+ def handleList(\7f303,10042
+ def handleNew(\7f306,10094
+ def editItem(\7f314,10426
+ def deleteItem(\7f320,10596
+def ConfirmQuit(\7f326,10760
+class ControlEdit(\7f375,12377
+ def PostControls(\7f376,12403
+ def GatherControls(\7f421,13530
+class ServerEdit(\7f512,16264
+ def __init__(\7f513,16289
+ def post(\7f525,16629
+ def gather(\7f543,17191
+ def nosave(\7f547,17304
+ def save(\7f551,17408
+ def refreshPort(\7f556,17509
+ def createWidgets(\7f561,17663
+ def edituser(\7f631,20708
+class UserEdit(\7f645,20921
+ def __init__(\7f646,20944
+ def post(\7f658,21283
+ def gather(\7f676,21841
+ def nosave(\7f680,21950
+ def save(\7f684,22052
+ def createWidgets(\7f689,22151
+class Configure(\7f760,24879
+ def __init__(\7f761,24916
+ def MakeDispose(\7f772,25211
+ def MakeSitelist(\7f786,25706
+ def editsite(\7f794,25949
+ def save(\7f797,26022
+ def nosave(\7f807,26310
+\f
+ruby-src/test.rb,637
+module ModuleExample\7f1,0
+ class ClassExample\7f2,21
+ def instance_method\7f3,44
+ def ClassExample.class_method\7fclass_method\ 16,121
+ def instance_method_exclamation!\7f9,206
+ def instance_method_question?\7f12,310
+ def instance_method_equals=\7finstance_method_equals=\ 115,408
+ def `(\7f18,502
+ def +(\7f21,592
+ def [](\7f24,640
+ def []=(\7f[]=\ 127,690
+ def <<(\7f30,752
+ def ==(\7f==\ 133,802
+ def <=(\7f<=\ 136,872
+ def <=>(\7f<=>\ 139,943
+ def ===(\7f===\ 142,990
+ def module_instance_method\7f46,1051
+ def ModuleExample.module_class_method\7fmodule_class_method\ 149,1131
+\f
+ruby-src/test1.ru,935
+class A\7f1,0
+ def a(\7f2,8
+ def b(\7f5,38
+module A\7f9,57
+ class B\7f10,66
+ ABC \7f11,76
+ Def_ \7f12,88
+ Xyzzy \7f13,106
+ def foo!\7f15,121
+ def self._bar?(\7f_bar?\ 118,143
+ def qux=(\7fqux=\ 122,194
+ attr_reader :foo\7ffoo\ 126,233
+ attr_reader :read1 \7fread1\ 127,254
+ attr_reader :read1 , :read2;\7fread2\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1,\7fwrite1=\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1, :write2\7fwrite2=\ 127,254
+ attr_writer :bar,\7fbar=\ 128,316
+ :baz,\7fbaz=\ 129,338
+ :more\7fmore=\ 130,360
+ attr_accessor :tee\7ftee\ 131,382
+ attr_accessor :tee\7ftee=\ 131,382
+ alias_method :qux,\7fqux\ 132,405
+ alias_method :xyz,\7fxyz\ 133,456
+ :tee ; attr_reader :subtle\7fsubtle\ 134,479
+ attr_reader(:foo1,\7ffoo1\ 135,523
+ attr_reader(:foo1, :bar1,\7fbar1\ 135,523
+ :qux1)\7fqux1\ 136,563
+ alias_method ( :foo2,\7ffoo2\ 137,586
+A::Constant \7fConstant\ 142,655
+\f
+tex-src/testenv.tex,52
+\newcommand{\nm}\7f\nm\ 14,77
+\section{blah}\7fblah\ 18,139
+\f
+tex-src/gzip.texi,303
+@node Top,\7f62,2139
+@node Copying,\7f80,2652
+@node Overview,\7f83,2705
+@node Sample,\7f166,7272
+@node Invoking gzip,\7fInvoking gzip\ 1210,8828
+@node Advanced usage,\7fAdvanced usage\ 1357,13495
+@node Environment,\7f420,15207
+@node Tapes,\7f437,15768
+@node Problems,\7f460,16767
+@node Concept Index,\7fConcept Index\ 1473,17287
+\f
+tex-src/texinfo.tex,30627
+\def\texinfoversion{\7f\texinfoversion\ 126,1027
+\def\tie{\7f\tie\ 149,1518
+\def\gloggingall{\7f\gloggingall\ 172,2268
+\def\loggingall{\7f\loggingall\ 173,2337
+\def\onepageout#1{\7f\onepageout\ 199,3274
+\def\croppageout#1{\7f\croppageout\ 1115,4024
+\def\cropmarks{\7f\cropmarks\ 1142,5084
+\def\pagebody#1{\7f\pagebody\ 1144,5131
+\def\ewtop{\7f\ewtop\ 1157,5586
+\def\nstop{\7f\nstop\ 1158,5650
+\def\ewbot{\7f\ewbot\ 1160,5733
+\def\nsbot{\7f\nsbot\ 1161,5797
+\def\parsearg #1{\7f\parsearg\ 1170,6096
+\def\parseargx{\7f\parseargx\ 1172,6174
+\def\parseargline{\7f\parseargline\ 1182,6414
+\def\flushcr{\7f\flushcr\ 1186,6535
+\newif\ifENV \ENVfalse \def\inENV{\7f\inENV\ 1190,6734
+\def\ENVcheck{\7f\ENVcheck\ 1191,6798
+\outer\def\begin{\7f\begin\ 1198,7045
+\def\beginxxx #1{\7f\beginxxx\ 1200,7083
+\def\end{\7f\end\ 1208,7338
+\def\endxxx #1{\7f\endxxx\ 1210,7366
+\def\errorE#1{\7f\errorE\ 1216,7555
+\def\singlespace{\7f\singlespace\ 1222,7749
+\def\@{\7f\@\ 1232,7972
+\def\`{\7f\`\ 1236,8072
+\def\'{\7f\'\ 1237,8084
+\def\mylbrace {\7f\mylbrace\ 1241,8132
+\def\myrbrace {\7f\myrbrace\ 1242,8165
+\def\:{\7f\:\ 1247,8279
+\def\*{\7f\*\ 1250,8333
+\def\.{\7f\.\ 1253,8409
+\def\w#1{\7f\w\ 1258,8640
+\def\group{\7f\group\ 1268,9123
+ \def\Egroup{\7f\Egroup\ 1273,9287
+\def\need{\7f\need\ 1289,9729
+\def\needx#1{\7f\needx\ 1300,10006
+\def\dots{\7f\dots\ 1339,11392
+\def\page{\7f\page\ 1343,11456
+\def\exdent{\7f\exdent\ 1353,11783
+\def\exdentyyy #1{\7f\exdentyyy\ 1354,11816
+\def\nofillexdent{\7f\nofillexdent\ 1357,11960
+\def\nofillexdentyyy #1{\7f\nofillexdentyyy\ 1358,12005
+\def\include{\7f\include\ 1365,12189
+\def\includezzz #1{\7f\includezzz\ 1366,12224
+\def\thisfile{\7f\thisfile\ 1369,12275
+\def\center{\7f\center\ 1373,12338
+\def\centerzzz #1{\7f\centerzzz\ 1374,12371
+\def\sp{\7f\sp\ 1380,12513
+\def\spxxx #1{\7f\spxxx\ 1381,12538
+\def\comment{\7f\comment\ 1387,12712
+\def\commentxxx #1{\7f\commentxxx\ 1390,12809
+\def\ignoresections{\7f\ignoresections\ 1396,12978
+\let\chapter=\relax\7f=\relax\ 1397,13000
+\let\section=\relax\7f=\relax\ 1406,13245
+\let\subsection=\relax\7f=\relax\ 1409,13306
+\let\subsubsection=\relax\7f=\relax\ 1410,13329
+\let\appendix=\relax\7f=\relax\ 1411,13355
+\let\appendixsec=\relax\7fsec=\relax\ 1412,13376
+\let\appendixsection=\relax\7fsection=\relax\ 1413,13400
+\let\appendixsubsec=\relax\7fsubsec=\relax\ 1414,13428
+\let\appendixsubsection=\relax\7fsubsection=\relax\ 1415,13455
+\let\appendixsubsubsec=\relax\7fsubsubsec=\relax\ 1416,13486
+\let\appendixsubsubsection=\relax\7fsubsubsection=\relax\ 1417,13516
+\def\ignore{\7f\ignore\ 1423,13618
+\long\def\ignorexxx #1\end ignore{\7f\ignorexxx\ 1427,13758
+\def\direntry{\7f\direntry\ 1429,13817
+\long\def\direntryxxx #1\end direntry{\7f\direntryxxx\ 1430,13856
+\def\ifset{\7f\ifset\ 1434,13966
+\def\ifsetxxx #1{\7f\ifsetxxx\ 1436,14024
+\def\Eifset{\7f\Eifset\ 1440,14151
+\def\ifsetfail{\7f\ifsetfail\ 1441,14165
+\long\def\ifsetfailxxx #1\end ifset{\7f\ifsetfailxxx\ 1442,14221
+\def\ifclear{\7f\ifclear\ 1444,14282
+\def\ifclearxxx #1{\7f\ifclearxxx\ 1446,14344
+\def\Eifclear{\7f\Eifclear\ 1450,14475
+\def\ifclearfail{\7f\ifclearfail\ 1451,14491
+\long\def\ifclearfailxxx #1\end ifclear{\7f\ifclearfailxxx\ 1452,14551
+\def\set{\7f\set\ 1456,14702
+\def\setxxx #1{\7f\setxxx\ 1457,14729
+\def\clear{\7f\clear\ 1460,14791
+\def\clearxxx #1{\7f\clearxxx\ 1461,14822
+\def\iftex{\7f\iftex\ 1466,14939
+\def\Eiftex{\7f\Eiftex\ 1467,14952
+\def\ifinfo{\7f\ifinfo\ 1468,14966
+\long\def\ifinfoxxx #1\end ifinfo{\7f\ifinfoxxx\ 1469,15016
+\long\def\menu #1\end menu{\7f\menu\ 1471,15075
+\def\asis#1{\7f\asis\ 1472,15104
+\def\math#1{\7f\math\ 1485,15647
+\def\node{\7f\node\ 1487,15691
+\def\nodezzz#1{\7f\nodezzz\ 1488,15729
+\def\nodexxx[#1,#2]{\7f\nodexxx[\ 1489,15760
+\def\donoderef{\7f\donoderef\ 1492,15822
+\def\unnumbnoderef{\7f\unnumbnoderef\ 1496,15943
+\def\appendixnoderef{\7f\appendixnoderef\ 1500,16074
+\expandafter\expandafter\expandafter\appendixsetref{\7fsetref\ 1501,16120
+\let\refill=\relax\7fill=\relax\ 1504,16209
+\def\setfilename{\7f\setfilename\ 1509,16423
+\outer\def\bye{\7f\bye\ 1518,16669
+\def\inforef #1{\7f\inforef\ 1520,16725
+\def\inforefzzz #1,#2,#3,#4**{\7f\inforefzzz\ 1521,16763
+\def\losespace #1{\7f\losespace\ 1523,16860
+\def\sf{\7f\sf\ 1532,17064
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\7fbf=cmbx10\ 1558,17859
+\font\deftt=cmtt10 scaled \magstep1\7ftt=cmtt10\ 1559,17905
+\def\df{\7f\df\ 1560,17941
+\def\resetmathfonts{\7f\resetmathfonts\ 1635,20535
+\def\textfonts{\7f\textfonts\ 1648,21124
+\def\chapfonts{\7f\chapfonts\ 1653,21339
+\def\secfonts{\7f\secfonts\ 1658,21555
+\def\subsecfonts{\7f\subsecfonts\ 1663,21760
+\def\indexfonts{\7f\indexfonts\ 1668,21977
+\def\smartitalicx{\7f\smartitalicx\ 1691,22709
+\def\smartitalic#1{\7f\smartitalic\ 1692,22785
+\let\cite=\smartitalic\7f=\smartitalic\ 1698,22930
+\def\b#1{\7f\b\ 1700,22954
+\def\t#1{\7f\t\ 1703,22989
+\def\samp #1{\7f\samp\ 1706,23141
+\def\key #1{\7f\key\ 1707,23174
+\def\ctrl #1{\7f\ctrl\ 1708,23235
+\def\tclose#1{\7f\tclose\ 1716,23437
+\def\ {\7f\\ 1720,23603
+\def\xkey{\7f\xkey\ 1728,23872
+\def\kbdfoo#1#2#3\par{\7f\kbdfoo\ 1729,23888
+\def\dmn#1{\7f\dmn\ 1738,24189
+\def\kbd#1{\7f\kbd\ 1740,24216
+\def\l#1{\7f\l\ 1742,24273
+\def\r#1{\7f\r\ 1744,24302
+\def\sc#1{\7f\sc\ 1746,24370
+\def\ii#1{\7f\ii\ 1747,24413
+\def\titlefont#1{\7f\titlefont\ 1755,24646
+\def\titlepage{\7f\titlepage\ 1761,24749
+ \def\subtitlefont{\7f\subtitlefont\ 1766,24976
+ \def\authorfont{\7f\authorfont\ 1768,25060
+ \def\title{\7f\title\ 1774,25270
+ \def\titlezzz##1{\7f\titlezzz\ 1775,25305
+ \def\subtitle{\7f\subtitle\ 1783,25620
+ \def\subtitlezzz##1{\7f\subtitlezzz\ 1784,25661
+ \def\author{\7f\author\ 1787,25779
+ \def\authorzzz##1{\7f\authorzzz\ 1788,25816
+ \def\page{\7f\page\ 1794,26107
+\def\Etitlepage{\7f\Etitlepage\ 1804,26276
+\def\finishtitlepage{\7f\finishtitlepage\ 1817,26664
+\def\evenheading{\7f\evenheading\ 1846,27672
+\def\oddheading{\7f\oddheading\ 1847,27715
+\def\everyheading{\7f\everyheading\ 1848,27756
+\def\evenfooting{\7f\evenfooting\ 1850,27802
+\def\oddfooting{\7f\oddfooting\ 1851,27845
+\def\everyfooting{\7f\everyfooting\ 1852,27886
+\def\headings #1 {\7f\headings\ 1893,29578
+\def\HEADINGSoff{\7f\HEADINGSoff\ 1895,29627
+\def\HEADINGSdouble{\7f\HEADINGSdouble\ 1904,30054
+\def\HEADINGSsingle{\7f\HEADINGSsingle\ 1914,30374
+\def\HEADINGSon{\7f\HEADINGSon\ 1922,30595
+\def\HEADINGSafter{\7f\HEADINGSafter\ 1924,30629
+\def\HEADINGSdoublex{\7f\HEADINGSdoublex\ 1926,30724
+\def\HEADINGSsingleafter{\7f\HEADINGSsingleafter\ 1933,30912
+\def\HEADINGSsinglex{\7f\HEADINGSsinglex\ 1934,30973
+\def\today{\7f\today\ 1943,31248
+\def\thistitle{\7f\thistitle\ 1958,31793
+\def\settitle{\7f\settitle\ 1959,31818
+\def\settitlezzz #1{\7f\settitlezzz\ 1960,31855
+\def\internalBitem{\7f\internalBitem\ 1992,32785
+\def\internalBitemx{\7f\internalBitemx\ 1993,32835
+\def\internalBxitem "#1"{\7f\internalBxitem\ 1995,32880
+\def\internalBxitemx "#1"{\7f\internalBxitemx\ 1996,32960
+\def\internalBkitem{\7f\internalBkitem\ 1998,33035
+\def\internalBkitemx{\7f\internalBkitemx\ 1999,33087
+\def\kitemzzz #1{\7f\kitemzzz\ 11001,33134
+\def\xitemzzz #1{\7f\xitemzzz\ 11004,33236
+\def\itemzzz #1{\7f\itemzzz\ 11007,33339
+\def\item{\7f\item\ 11037,34410
+\def\itemx{\7f\itemx\ 11038,34461
+\def\kitem{\7f\kitem\ 11039,34514
+\def\kitemx{\7f\kitemx\ 11040,34567
+\def\xitem{\7f\xitem\ 11041,34622
+\def\xitemx{\7f\xitemx\ 11042,34675
+\def\description{\7f\description\ 11045,34785
+\def\table{\7f\table\ 11047,34835
+\def\ftable{\7f\ftable\ 11052,34979
+\def\Eftable{\7f\Eftable\ 11056,35125
+\def\vtable{\7f\vtable\ 11059,35194
+\def\Evtable{\7f\Evtable\ 11063,35340
+\def\dontindex #1{\7f\dontindex\ 11066,35409
+\def\fnitemindex #1{\7f\fnitemindex\ 11067,35429
+\def\vritemindex #1{\7f\vritemindex\ 11068,35474
+\def\tablez #1#2#3#4#5#6{\7f\tablez\ 11074,35623
+\def\Edescription{\7f\Edescription\ 11077,35681
+\def\itemfont{\7f\itemfont\ 11082,35883
+\def\Etable{\7f\Etable\ 11090,36109
+\def\itemize{\7f\itemize\ 11103,36433
+\def\itemizezzz #1{\7f\itemizezzz\ 11105,36469
+\def\itemizey #1#2{\7f\itemizey\ 11110,36564
+\def#2{\7f1119,36810
+\def\itemcontents{\7f\itemcontents\ 11120,36851
+\def\bullet{\7f\bullet\ 11123,36899
+\def\minus{\7f\minus\ 11124,36926
+\def\frenchspacing{\7f\frenchspacing\ 11128,37034
+\def\splitoff#1#2\endmark{\7f\splitoff\ 11134,37259
+\def\enumerate{\7f\enumerate\ 11140,37489
+\def\enumeratezzz #1{\7f\enumeratezzz\ 11141,37528
+\def\enumeratey #1 #2\endenumeratey{\7f\enumeratey\ 11142,37581
+ \def\thearg{\7f\thearg\ 11146,37728
+ \ifx\thearg\empty \def\thearg{\7f\thearg\ 11147,37747
+\def\numericenumerate{\7f\numericenumerate\ 11184,39081
+\def\lowercaseenumerate{\7f\lowercaseenumerate\ 11190,39211
+\def\uppercaseenumerate{\7f\uppercaseenumerate\ 11203,39558
+\def\startenumeration#1{\7f\startenumeration\ 11219,40048
+\def\alphaenumerate{\7f\alphaenumerate\ 11227,40230
+\def\capsenumerate{\7f\capsenumerate\ 11228,40265
+\def\Ealphaenumerate{\7f\Ealphaenumerate\ 11229,40299
+\def\Ecapsenumerate{\7f\Ecapsenumerate\ 11230,40333
+\def\itemizeitem{\7f\itemizeitem\ 11234,40413
+\def\newindex #1{\7f\newindex\ 11259,41270
+\def\defindex{\7f\defindex\ 11268,41559
+\def\newcodeindex #1{\7f\newcodeindex\ 11272,41667
+\def\defcodeindex{\7f\defcodeindex\ 11279,41927
+\def\synindex #1 #2 {\7f\synindex\ 11283,42107
+\def\syncodeindex #1 #2 {\7f\syncodeindex\ 11292,42447
+\def\doindex#1{\7f\doindex\ 11309,43126
+\def\singleindexer #1{\7f\singleindexer\ 11310,43185
+\def\docodeindex#1{\7f\docodeindex\ 11313,43297
+\def\singlecodeindexer #1{\7f\singlecodeindexer\ 11314,43364
+\def\indexdummies{\7f\indexdummies\ 11316,43422
+\def\_{\7f\_\ 11317,43442
+\def\w{\7f\w\ 11318,43470
+\def\bf{\7f\bf\ 11319,43497
+\def\rm{\7f\rm\ 11320,43526
+\def\sl{\7f\sl\ 11321,43555
+\def\sf{\7f\sf\ 11322,43584
+\def\tt{\7f\tt\ 11323,43612
+\def\gtr{\7f\gtr\ 11324,43640
+\def\less{\7f\less\ 11325,43670
+\def\hat{\7f\hat\ 11326,43702
+\def\char{\7f\char\ 11327,43732
+\def\TeX{\7f\TeX\ 11328,43764
+\def\dots{\7f\dots\ 11329,43794
+\def\copyright{\7f\copyright\ 11330,43827
+\def\tclose##1{\7f\tclose\ 11331,43870
+\def\code##1{\7f\code\ 11332,43915
+\def\samp##1{\7f\samp\ 11333,43956
+\def\t##1{\7f\t\ 11334,43997
+\def\r##1{\7f\r\ 11335,44032
+\def\i##1{\7f\i\ 11336,44067
+\def\b##1{\7f\b\ 11337,44102
+\def\cite##1{\7f\cite\ 11338,44137
+\def\key##1{\7f\key\ 11339,44178
+\def\file##1{\7f\file\ 11340,44217
+\def\var##1{\7f\var\ 11341,44258
+\def\kbd##1{\7f\kbd\ 11342,44297
+\def\indexdummyfont#1{\7f\indexdummyfont\ 11347,44453
+\def\indexdummytex{\7f\indexdummytex\ 11348,44479
+\def\indexdummydots{\7f\indexdummydots\ 11349,44503
+\def\indexnofonts{\7f\indexnofonts\ 11351,44529
+\let\w=\indexdummyfont\7fdummyfont\ 11352,44549
+\let\t=\indexdummyfont\7fdummyfont\ 11353,44572
+\let\r=\indexdummyfont\7fdummyfont\ 11354,44595
+\let\i=\indexdummyfont\7fdummyfont\ 11355,44618
+\let\b=\indexdummyfont\7fdummyfont\ 11356,44641
+\let\emph=\indexdummyfont\7fdummyfont\ 11357,44664
+\let\strong=\indexdummyfont\7fdummyfont\ 11358,44690
+\let\cite=\indexdummyfont\7f=\indexdummyfont\ 11359,44718
+\let\sc=\indexdummyfont\7fdummyfont\ 11360,44744
+\let\tclose=\indexdummyfont\7fdummyfont\ 11364,44916
+\let\code=\indexdummyfont\7fdummyfont\ 11365,44944
+\let\file=\indexdummyfont\7fdummyfont\ 11366,44970
+\let\samp=\indexdummyfont\7fdummyfont\ 11367,44996
+\let\kbd=\indexdummyfont\7fdummyfont\ 11368,45022
+\let\key=\indexdummyfont\7fdummyfont\ 11369,45047
+\let\var=\indexdummyfont\7fdummyfont\ 11370,45072
+\let\TeX=\indexdummytex\7fdummytex\ 11371,45097
+\let\dots=\indexdummydots\7fdummydots\ 11372,45121
+\let\indexbackslash=0 %overridden during \printindex.\7fbackslash=0\ 11382,45373
+\def\doind #1#2{\7f\doind\ 11384,45429
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11386,45472
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11389,45612
+{\indexnofonts\7fnofonts\ 11394,45874
+\def\dosubind #1#2#3{\7f\dosubind\ 11405,46185
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11407,46233
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11410,46337
+{\indexnofonts\7fnofonts\ 11414,46491
+\def\findex {\7f\findex\ 11443,47422
+\def\kindex {\7f\kindex\ 11444,47445
+\def\cindex {\7f\cindex\ 11445,47468
+\def\vindex {\7f\vindex\ 11446,47491
+\def\tindex {\7f\tindex\ 11447,47514
+\def\pindex {\7f\pindex\ 11448,47537
+\def\cindexsub {\7f\cindexsub\ 11450,47561
+\def\printindex{\7f\printindex\ 11462,47888
+\def\doprintindex#1{\7f\doprintindex\ 11464,47929
+ \def\indexbackslash{\7f\indexbackslash\ 11481,48414
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\7ffonts\rm\ 11482,48453
+\def\initial #1{\7f\initial\ 11517,49525
+\def\entry #1#2{\7f\entry\ 11523,49732
+ \null\nobreak\indexdotfill % Have leaders before the page number.\7fdotfill\ 11540,50379
+\def\indexdotfill{\7f\indexdotfill\ 11549,50707
+\def\primary #1{\7f\primary\ 11552,50813
+\def\secondary #1#2{\7f\secondary\ 11556,50895
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\7fdotfill\ 11559,50977
+\newbox\partialpage\7fialpage\ 11566,51150
+\def\begindoublecolumns{\7f\begindoublecolumns\ 11572,51308
+ \output={\global\setbox\partialpage=\7fialpage=\ 11573,51344
+\def\enddoublecolumns{\7f\enddoublecolumns\ 11577,51532
+\def\doublecolumnout{\7f\doublecolumnout\ 11580,51617
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11581,51686
+\def\pagesofar{\7f\pagesofar\ 11584,51864
+\def\balancecolumns{\7f\balancecolumns\ 11588,52101
+ \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\7fialpage\ 11594,52272
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11600,52533
+\newcount \appendixno \appendixno = `\@\7fno\ 11627,53438
+\def\appendixletter{\7f\appendixletter\ 11628,53479
+\def\opencontents{\7f\opencontents\ 11632,53582
+\def\thischapter{\7f\thischapter\ 11637,53763
+\def\seccheck#1{\7f\seccheck\ 11638,53801
+\def\chapternofonts{\7f\chapternofonts\ 11643,53905
+\def\result{\7f\result\ 11646,53980
+\def\equiv{\7f\equiv\ 11647,54015
+\def\expansion{\7f\expansion\ 11648,54048
+\def\print{\7f\print\ 11649,54089
+\def\TeX{\7f\TeX\ 11650,54122
+\def\dots{\7f\dots\ 11651,54151
+\def\copyright{\7f\copyright\ 11652,54182
+\def\tt{\7f\tt\ 11653,54223
+\def\bf{\7f\bf\ 11654,54250
+\def\w{\7f\w\ 11655,54278
+\def\less{\7f\less\ 11656,54303
+\def\gtr{\7f\gtr\ 11657,54334
+\def\hat{\7f\hat\ 11658,54363
+\def\char{\7f\char\ 11659,54392
+\def\tclose##1{\7f\tclose\ 11660,54423
+\def\code##1{\7f\code\ 11661,54467
+\def\samp##1{\7f\samp\ 11662,54507
+\def\r##1{\7f\r\ 11663,54547
+\def\b##1{\7f\b\ 11664,54581
+\def\key##1{\7f\key\ 11665,54615
+\def\file##1{\7f\file\ 11666,54653
+\def\kbd##1{\7f\kbd\ 11667,54693
+\def\i##1{\7f\i\ 11669,54801
+\def\cite##1{\7f\cite\ 11670,54835
+\def\var##1{\7f\var\ 11671,54875
+\def\emph##1{\7f\emph\ 11672,54913
+\def\dfn##1{\7f\dfn\ 11673,54953
+\def\thischaptername{\7f\thischaptername\ 11676,54994
+\outer\def\chapter{\7f\chapter\ 11677,55033
+\def\chapterzzz #1{\7f\chapterzzz\ 11678,55074
+{\chapternofonts%\7fnofonts%\ 11687,55470
+\global\let\section = \numberedsec\7f=\ 11692,55623
+\global\let\subsection = \numberedsubsec\7f=\ 11693,55658
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11694,55699
+\outer\def\appendix{\7f\appendix\ 11697,55750
+\def\appendixzzz #1{\7f\appendixzzz\ 11698,55793
+\global\advance \appendixno by 1 \message{\7fno\ 11700,55870
+\chapmacro {#1}{Appendix \appendixletter}\7fletter\ 11701,55939
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\7fletter:\ 11704,56032
+{\chapternofonts%\7fnofonts%\ 11705,56104
+ {#1}{Appendix \appendixletter}\7fletter\ 11707,56160
+\appendixnoderef %\7fnoderef\ 11710,56260
+\global\let\section = \appendixsec\7f=\ 11711,56279
+\global\let\subsection = \appendixsubsec\7f=\ 11712,56314
+\global\let\subsubsection = \appendixsubsubsec\7f=\ 11713,56355
+\outer\def\top{\7f\top\ 11716,56406
+\outer\def\unnumbered{\7f\unnumbered\ 11717,56446
+\def\unnumberedzzz #1{\7f\unnumberedzzz\ 11718,56493
+{\chapternofonts%\7fnofonts%\ 11722,56656
+\global\let\section = \unnumberedsec\7f=\ 11727,56806
+\global\let\subsection = \unnumberedsubsec\7f=\ 11728,56843
+\global\let\subsubsection = \unnumberedsubsubsec\7f=\ 11729,56886
+\outer\def\numberedsec{\7f\numberedsec\ 11732,56939
+\def\seczzz #1{\7f\seczzz\ 11733,56980
+{\chapternofonts%\7fnofonts%\ 11736,57136
+\outer\def\appendixsection{\7f\appendixsection\ 11745,57322
+\outer\def\appendixsec{\7f\appendixsec\ 11746,57379
+\def\appendixsectionzzz #1{\7f\appendixsectionzzz\ 11747,57432
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}\7fletter\ 11749,57544
+{\chapternofonts%\7fnofonts%\ 11750,57612
+{#1}{\appendixletter}\7fletter\ 11752,57668
+\appendixnoderef %\7fnoderef\ 11755,57768
+\outer\def\unnumberedsec{\7f\unnumberedsec\ 11759,57808
+\def\unnumberedseczzz #1{\7f\unnumberedseczzz\ 11760,57861
+{\chapternofonts%\7fnofonts%\ 11762,57956
+\outer\def\numberedsubsec{\7f\numberedsubsec\ 11770,58124
+\def\numberedsubseczzz #1{\7f\numberedsubseczzz\ 11771,58179
+{\chapternofonts%\7fnofonts%\ 11774,58358
+\outer\def\appendixsubsec{\7f\appendixsubsec\ 11783,58562
+\def\appendixsubseczzz #1{\7f\appendixsubseczzz\ 11784,58617
+\subsecheading {#1}{\appendixletter}\7fletter\ 11786,58739
+{\chapternofonts%\7fnofonts%\ 11787,58804
+{#1}{\appendixletter}\7fletter\ 11789,58863
+\appendixnoderef %\7fnoderef\ 11792,58978
+\outer\def\unnumberedsubsec{\7f\unnumberedsubsec\ 11796,59018
+\def\unnumberedsubseczzz #1{\7f\unnumberedsubseczzz\ 11797,59077
+{\chapternofonts%\7fnofonts%\ 11799,59178
+\outer\def\numberedsubsubsec{\7f\numberedsubsubsec\ 11807,59349
+\def\numberedsubsubseczzz #1{\7f\numberedsubsubseczzz\ 11808,59410
+{\chapternofonts%\7fnofonts%\ 11812,59607
+\outer\def\appendixsubsubsec{\7f\appendixsubsubsec\ 11823,59840
+\def\appendixsubsubseczzz #1{\7f\appendixsubsubseczzz\ 11824,59901
+ {\appendixletter}\7fletter\ 11827,60040
+{\chapternofonts%\7fnofonts%\ 11828,60106
+ {\appendixletter}\7fletter\ 11830,60171
+\appendixnoderef %\7fnoderef\ 11834,60305
+\outer\def\unnumberedsubsubsec{\7f\unnumberedsubsubsec\ 11838,60345
+\def\unnumberedsubsubseczzz #1{\7f\unnumberedsubsubseczzz\ 11839,60410
+{\chapternofonts%\7fnofonts%\ 11841,60517
+\def\infotop{\7f\infotop\ 11851,60846
+\def\infounnumbered{\7f\infounnumbered\ 11852,60884
+\def\infounnumberedsec{\7f\infounnumberedsec\ 11853,60929
+\def\infounnumberedsubsec{\7f\infounnumberedsubsec\ 11854,60980
+\def\infounnumberedsubsubsec{\7f\infounnumberedsubsubsec\ 11855,61037
+\def\infoappendix{\7f\infoappendix\ 11857,61101
+\def\infoappendixsec{\7f\infoappendixsec\ 11858,61142
+\def\infoappendixsubsec{\7f\infoappendixsubsec\ 11859,61189
+\def\infoappendixsubsubsec{\7f\infoappendixsubsubsec\ 11860,61242
+\def\infochapter{\7f\infochapter\ 11862,61302
+\def\infosection{\7f\infosection\ 11863,61341
+\def\infosubsection{\7f\infosubsection\ 11864,61380
+\def\infosubsubsection{\7f\infosubsubsection\ 11865,61425
+\global\let\section = \numberedsec\7f=\ 11870,61662
+\global\let\subsection = \numberedsubsec\7f=\ 11871,61697
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11872,61738
+\def\majorheading{\7f\majorheading\ 11886,62245
+\def\majorheadingzzz #1{\7f\majorheadingzzz\ 11887,62290
+\def\chapheading{\7f\chapheading\ 11893,62523
+\def\chapheadingzzz #1{\7f\chapheadingzzz\ 11894,62566
+\def\heading{\7f\heading\ 11899,62761
+\def\subheading{\7f\subheading\ 11901,62798
+\def\subsubheading{\7f\subsubheading\ 11903,62841
+\def\dobreak#1#2{\7f\dobreak\ 11910,63118
+\def\setchapterstyle #1 {\7f\setchapterstyle\ 11912,63196
+\def\chapbreak{\7f\chapbreak\ 11919,63451
+\def\chappager{\7f\chappager\ 11920,63501
+\def\chapoddpage{\7f\chapoddpage\ 11921,63539
+\def\setchapternewpage #1 {\7f\setchapternewpage\ 11923,63618
+\def\CHAPPAGoff{\7f\CHAPPAGoff\ 11925,63675
+\def\CHAPPAGon{\7f\CHAPPAGon\ 11929,63769
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11932,63860
+\def\CHAPPAGodd{\7f\CHAPPAGodd\ 11934,63902
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11937,63998
+\def\CHAPFplain{\7f\CHAPFplain\ 11941,64052
+\def\chfplain #1#2{\7f\chfplain\ 11945,64144
+\def\unnchfplain #1{\7f\unnchfplain\ 11956,64367
+\def\unnchfopen #1{\7f\unnchfopen\ 11964,64596
+\def\chfopen #1#2{\7f\chfopen\ 11970,64804
+\def\CHAPFopen{\7f\CHAPFopen\ 11975,64948
+\def\subsecheadingbreak{\7f\subsecheadingbreak\ 11982,65166
+\def\secheadingbreak{\7f\secheadingbreak\ 11985,65295
+\def\secheading #1#2#3{\7f\secheading\ 11993,65577
+\def\plainsecheading #1{\7f\plainsecheading\ 11994,65633
+\def\secheadingi #1{\7f\secheadingi\ 11995,65676
+\def\subsecheading #1#2#3#4{\7f\subsecheading\ 12006,66044
+\def\subsecheadingi #1{\7f\subsecheadingi\ 12007,66111
+\def\subsubsecfonts{\7f\subsubsecfonts\ 12014,66408
+\def\subsubsecheading #1#2#3#4#5{\7f\subsubsecheading\ 12017,66531
+\def\subsubsecheadingi #1{\7f\subsubsecheadingi\ 12018,66609
+\def\startcontents#1{\7f\startcontents\ 12032,67081
+ \unnumbchapmacro{#1}\def\thischapter{\7f\thischapter\ 12040,67354
+\outer\def\contents{\7f\contents\ 12049,67713
+\outer\def\summarycontents{\7f\summarycontents\ 12057,67857
+ \def\secentry ##1##2##3##4{\7f\secentry\ 12067,68228
+ \def\unnumbsecentry ##1##2{\7f\unnumbsecentry\ 12068,68263
+ \def\subsecentry ##1##2##3##4##5{\7f\subsecentry\ 12069,68298
+ \def\unnumbsubsecentry ##1##2{\7f\unnumbsubsecentry\ 12070,68339
+ \def\subsubsecentry ##1##2##3##4##5##6{\7f\subsubsecentry\ 12071,68377
+ \def\unnumbsubsubsecentry ##1##2{\7f\unnumbsubsubsecentry\ 12072,68424
+\def\chapentry#1#2#3{\7f\chapentry\ 12085,68858
+\def\shortchapentry#1#2#3{\7f\shortchapentry\ 12088,68975
+ {#2\labelspace #1}\7fspace\ 12091,69085
+\def\unnumbchapentry#1#2{\7f\unnumbchapentry\ 12094,69139
+\def\shortunnumberedentry#1#2{\7f\shortunnumberedentry\ 12095,69186
+\def\secentry#1#2#3#4{\7f\secentry\ 12102,69350
+\def\unnumbsecentry#1#2{\7f\unnumbsecentry\ 12103,69409
+\def\subsecentry#1#2#3#4#5{\7f\subsecentry\ 12106,69470
+\def\unnumbsubsecentry#1#2{\7f\unnumbsubsecentry\ 12107,69540
+\def\subsubsecentry#1#2#3#4#5#6{\7f\subsubsecentry\ 12110,69614
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\7fspace\ 12111,69648
+\def\unnumbsubsubsecentry#1#2{\7f\unnumbsubsubsecentry\ 12112,69699
+\def\dochapentry#1#2{\7f\dochapentry\ 12123,70073
+\def\dosecentry#1#2{\7f\dosecentry\ 12138,70678
+\def\dosubsecentry#1#2{\7f\dosubsecentry\ 12145,70856
+\def\dosubsubsecentry#1#2{\7f\dosubsubsecentry\ 12152,71041
+\def\labelspace{\7f\labelspace\ 12160,71292
+\def\dopageno#1{\7f\dopageno\ 12162,71327
+\def\doshortpageno#1{\7f\doshortpageno\ 12163,71353
+\def\chapentryfonts{\7f\chapentryfonts\ 12165,71385
+\def\secentryfonts{\7f\secentryfonts\ 12166,71420
+\def\point{\7f\point\ 12192,72379
+\def\result{\7f\result\ 12194,72400
+\def\expansion{\7f\expansion\ 12195,72473
+\def\print{\7f\print\ 12196,72544
+\def\equiv{\7f\equiv\ 12198,72611
+\def\error{\7f\error\ 12218,73384
+\def\tex{\7f\tex\ 12224,73613
+\def\@{\7f\@\ 12242,73996
+\gdef\sepspaces{\def {\ }}}\7f\\ 12265,74728
+\def\aboveenvbreak{\7f\aboveenvbreak\ 12268,74810
+\def\afterenvbreak{\7f\afterenvbreak\ 12272,74976
+\def\ctl{\7f\ctl\ 12286,75487
+\def\ctr{\7f\ctr\ 12287,75559
+\def\cbl{\7f\cbl\ 12288,75598
+\def\cbr{\7f\cbr\ 12289,75638
+\def\carttop{\7f\carttop\ 12290,75677
+\def\cartbot{\7f\cartbot\ 12293,75785
+\long\def\cartouche{\7f\cartouche\ 12299,75925
+\def\Ecartouche{\7f\Ecartouche\ 12326,76713
+\def\lisp{\7f\lisp\ 12338,76848
+\def\Elisp{\7f\Elisp\ 12348,77195
+\def\next##1{\7f\next\ 12360,77521
+\def\Eexample{\7f\Eexample\ 12364,77563
+\def\Esmallexample{\7f\Esmallexample\ 12367,77610
+\def\smalllispx{\7f\smalllispx\ 12373,77788
+\def\Esmalllisp{\7f\Esmalllisp\ 12383,78142
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\7ffonts\ 12396,78498
+\def\next##1{\7f\next\ 12397,78555
+\def\display{\7f\display\ 12401,78635
+\def\Edisplay{\7f\Edisplay\ 12410,78954
+\def\next##1{\7f\next\ 12422,79265
+\def\format{\7f\format\ 12426,79368
+\def\Eformat{\7f\Eformat\ 12434,79664
+\def\next##1{\7f\next\ 12437,79753
+\def\flushleft{\7f\flushleft\ 12441,79805
+\def\Eflushleft{\7f\Eflushleft\ 12451,80176
+\def\next##1{\7f\next\ 12454,80269
+\def\flushright{\7f\flushright\ 12456,80291
+\def\Eflushright{\7f\Eflushright\ 12466,80663
+\def\next##1{\7f\next\ 12470,80794
+\def\quotation{\7f\quotation\ 12474,80852
+\def\Equotation{\7f\Equotation\ 12480,81044
+\def\setdeffont #1 {\7f\setdeffont\ 12493,81442
+\newskip\defbodyindent \defbodyindent=.4in\7fbodyindent\ 12495,81488
+\newskip\defargsindent \defargsindent=50pt\7fargsindent\ 12496,81531
+\newskip\deftypemargin \deftypemargin=12pt\7ftypemargin\ 12497,81574
+\newskip\deflastargmargin \deflastargmargin=18pt\7flastargmargin\ 12498,81617
+\def\activeparens{\7f\activeparens\ 12503,81815
+\def\opnr{\7f\opnr\ 12529,83027
+\def\lbrb{\7f\lbrb\ 12530,83092
+\def\defname #1#2{\7f\defname\ 12536,83293
+\advance\dimen2 by -\defbodyindent\7fbodyindent\ 12540,83411
+\advance\dimen3 by -\defbodyindent\7fbodyindent\ 12542,83465
+\setbox0=\hbox{\hskip \deflastargmargin{\7flastargmargin\ 12544,83519
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\7fargsindent\ 12546,83661
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %\7fargsindent\ 12547,83736
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\7ftypemargin\ 12554,84105
+\advance\leftskip by -\defbodyindent\7fbodyindent\ 12557,84239
+\exdentamount=\defbodyindent\7fbodyindent\ 12558,84276
+\def\defparsebody #1#2#3{\7f\defparsebody\ 12568,84635
+\def#1{\7f2572,84819
+\def#2{\7f2573,84855
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12575,84927
+\exdentamount=\defbodyindent\7fbodyindent\ 12576,85001
+\def\defmethparsebody #1#2#3#4 {\7f\defmethparsebody\ 12581,85105
+\def#1{\7f2585,85266
+\def#2##1 {\7f2586,85302
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12588,85385
+\exdentamount=\defbodyindent\7fbodyindent\ 12589,85459
+\def\defopparsebody #1#2#3#4#5 {\7f\defopparsebody\ 12592,85544
+\def#1{\7f2596,85705
+\def#2##1 ##2 {\7f2597,85741
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12600,85841
+\exdentamount=\defbodyindent\7fbodyindent\ 12601,85915
+\def\defvarparsebody #1#2#3{\7f\defvarparsebody\ 12608,86186
+\def#1{\7f2612,86373
+\def#2{\7f2613,86409
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12615,86468
+\exdentamount=\defbodyindent\7fbodyindent\ 12616,86542
+\def\defvrparsebody #1#2#3#4 {\7f\defvrparsebody\ 12621,86633
+\def#1{\7f2625,86792
+\def#2##1 {\7f2626,86828
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12628,86898
+\exdentamount=\defbodyindent\7fbodyindent\ 12629,86972
+\def\defopvarparsebody #1#2#3#4#5 {\7f\defopvarparsebody\ 12632,87044
+\def#1{\7f2636,87208
+\def#2##1 ##2 {\7f2637,87244
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12640,87331
+\exdentamount=\defbodyindent\7fbodyindent\ 12641,87405
+\def\defunargs #1{\7f\defunargs\ 12664,88165
+\def\deftypefunargs #1{\7f\deftypefunargs\ 12676,88547
+\def\deffn{\7f\deffn\ 12690,88929
+\def\deffnheader #1#2#3{\7f\deffnheader\ 12692,88986
+\begingroup\defname {\7fname\ 12693,89034
+\def\defun{\7f\defun\ 12699,89179
+\def\defunheader #1#2{\7f\defunheader\ 12701,89232
+\begingroup\defname {\7fname\ 12702,89307
+\defunargs {\7funargs\ 12703,89343
+\def\deftypefun{\7f\deftypefun\ 12709,89491
+\def\deftypefunheader #1#2{\7f\deftypefunheader\ 12712,89613
+\def\deftypefunheaderx #1#2 #3\relax{\7f\deftypefunheaderx\ 12714,89722
+\begingroup\defname {\7fname\ 12716,89814
+\deftypefunargs {\7ftypefunargs\ 12717,89860
+\def\deftypefn{\7f\deftypefn\ 12723,90031
+\def\deftypefnheader #1#2#3{\7f\deftypefnheader\ 12726,90180
+\def\deftypefnheaderx #1#2#3 #4\relax{\7f\deftypefnheaderx\ 12728,90316
+\begingroup\defname {\7fname\ 12730,90409
+\deftypefunargs {\7ftypefunargs\ 12731,90449
+\def\defmac{\7f\defmac\ 12737,90570
+\def\defmacheader #1#2{\7f\defmacheader\ 12739,90627
+\begingroup\defname {\7fname\ 12740,90703
+\defunargs {\7funargs\ 12741,90736
+\def\defspec{\7f\defspec\ 12747,90860
+\def\defspecheader #1#2{\7f\defspecheader\ 12749,90921
+\begingroup\defname {\7fname\ 12750,90998
+\defunargs {\7funargs\ 12751,91038
+\def\deffnx #1 {\7f\deffnx\ 12758,91233
+\def\defunx #1 {\7f\defunx\ 12759,91290
+\def\defmacx #1 {\7f\defmacx\ 12760,91347
+\def\defspecx #1 {\7f\defspecx\ 12761,91406
+\def\deftypefnx #1 {\7f\deftypefnx\ 12762,91467
+\def\deftypeunx #1 {\7f\deftypeunx\ 12763,91532
+\def\defop #1 {\7f\defop\ 12769,91678
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\7fopparsebody\Edefop\defopx\defopheader\defoptype\ 12770,91713
+\def\defopheader #1#2#3{\7f\defopheader\ 12772,91767
+\begingroup\defname {\7fname\ 12774,91856
+\defunargs {\7funargs\ 12775,91902
+\def\defmethod{\7f\defmethod\ 12780,91963
+\def\defmethodheader #1#2#3{\7f\defmethodheader\ 12782,92036
+\begingroup\defname {\7fname\ 12784,92124
+\defunargs {\7funargs\ 12785,92164
+\def\defcv #1 {\7f\defcv\ 12790,92238
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\ 12791,92273
+\def\defcvarheader #1#2#3{\7f\defcvarheader\ 12793,92332
+\begingroup\defname {\7fname\ 12795,92418
+\defvarargs {\7fvarargs\ 12796,92464
+\def\defivar{\7f\defivar\ 12801,92537
+\def\defivarheader #1#2#3{\7f\defivarheader\ 12803,92600
+\begingroup\defname {\7fname\ 12805,92686
+\defvarargs {\7fvarargs\ 12806,92737
+\def\defopx #1 {\7f\defopx\ 12812,92886
+\def\defmethodx #1 {\7f\defmethodx\ 12813,92943
+\def\defcvx #1 {\7f\defcvx\ 12814,93008
+\def\defivarx #1 {\7f\defivarx\ 12815,93065
+\def\defvarargs #1{\7f\defvarargs\ 12822,93336
+\def\defvr{\7f\defvr\ 12828,93480
+\def\defvrheader #1#2#3{\7f\defvrheader\ 12830,93535
+\begingroup\defname {\7fname\ 12831,93583
+\def\defvar{\7f\defvar\ 12835,93668
+\def\defvarheader #1#2{\7f\defvarheader\ 12837,93728
+\begingroup\defname {\7fname\ 12838,93799
+\defvarargs {\7fvarargs\ 12839,93835
+\def\defopt{\7f\defopt\ 12844,93901
+\def\defoptheader #1#2{\7f\defoptheader\ 12846,93961
+\begingroup\defname {\7fname\ 12847,94032
+\defvarargs {\7fvarargs\ 12848,94071
+\def\deftypevar{\7f\deftypevar\ 12853,94128
+\def\deftypevarheader #1#2{\7f\deftypevarheader\ 12856,94244
+\begingroup\defname {\7fname\ 12858,94327
+\def\deftypevr{\7f\deftypevr\ 12865,94501
+\def\deftypevrheader #1#2#3{\7f\deftypevrheader\ 12867,94572
+\begingroup\defname {\7fname\ 12868,94624
+\def\defvrx #1 {\7f\defvrx\ 12876,94861
+\def\defvarx #1 {\7f\defvarx\ 12877,94918
+\def\defoptx #1 {\7f\defoptx\ 12878,94977
+\def\deftypevarx #1 {\7f\deftypevarx\ 12879,95036
+\def\deftypevrx #1 {\7f\deftypevrx\ 12880,95103
+\def\deftpargs #1{\7f\deftpargs\ 12885,95252
+\def\deftp{\7f\deftp\ 12889,95332
+\def\deftpheader #1#2#3{\7f\deftpheader\ 12891,95387
+\begingroup\defname {\7fname\ 12892,95435
+\def\deftpx #1 {\7f\deftpx\ 12897,95594
+\def\setref#1{\7f\setref\ 12908,95915
+\def\unnumbsetref#1{\7f\unnumbsetref\ 12913,96029
+\def\appendixsetref#1{\7f\appendixsetref\ 12918,96136
+\def\pxref#1{\7f\pxref\ 12929,96547
+\def\xref#1{\7f\xref\ 12930,96583
+\def\ref#1{\7f\ref\ 12931,96618
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\7f\xrefX[\ 12932,96648
+\def\printedmanual{\7f\printedmanual\ 12933,96691
+\def\printednodename{\7f\printednodename\ 12934,96729
+\def\printednodename{\7f\printednodename\ 12939,96854
+section ``\printednodename'' in \cite{\printedmanual}\7f\printedmanual\ 12954,97487
+\refx{\7fx\ 12957,97565
+\def\dosetq #1#2{\7f\dosetq\ 12965,97785
+\def\internalsetq #1#2{\7f\internalsetq\ 12973,98043
+\def\Ypagenumber{\7f\Ypagenumber\ 12977,98144
+\def\Ytitle{\7f\Ytitle\ 12979,98170
+\def\Ynothing{\7f\Ynothing\ 12981,98197
+\def\Ysectionnumberandtype{\7f\Ysectionnumberandtype\ 12983,98214
+\def\Yappendixletterandtype{\7f\Yappendixletterandtype\ 12992,98530
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\7fno\ 12993,98560
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\7fno.\the\secno\ 12994,98615
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\7fno.\the\secno.\the\subsecno\ 12996,98719
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\7fno.\the\secno.\the\subsecno.\the\subsubsecno\ 12998,98790
+ \def\linenumber{\7f\linenumber\ 13009,99129
+\def\refx#1#2{\7f\refx\ 13015,99313
+\def\xrdef #1#2{\7f\xrdef\ 13037,99939
+\def\readauxfile{\7f\readauxfile\ 13040,100024
+\def\supereject{\7f\supereject\ 13110,101805
+\footstrut\parindent=\defaultparindent\hang\textindent{\7faultparindent\hang\textindent\ 13131,102490
+\def\openindices{\7f\openindices\ 13139,102676
+\newdimen\defaultparindent \defaultparindent = 15pt\7faultparindent\ 13151,102901
+\parindent = \defaultparindent\7faultparindent\ 13152,102953
+\def\smallbook{\7f\smallbook\ 13175,103677
+\global\def\Esmallexample{\7f\Esmallexample\ 13192,104104
+\def\afourpaper{\7f\afourpaper\ 13196,104195
+\def\finalout{\7f\finalout\ 13224,105003
+\def\normaldoublequote{\7f\normaldoublequote\ 13235,105264
+\def\normaltilde{\7f\normaltilde\ 13236,105290
+\def\normalcaret{\7f\normalcaret\ 13237,105310
+\def\normalunderscore{\7f\normalunderscore\ 13238,105330
+\def\normalverticalbar{\7f\normalverticalbar\ 13239,105355
+\def\normalless{\7f\normalless\ 13240,105381
+\def\normalgreater{\7f\normalgreater\ 13241,105400
+\def\normalplus{\7f\normalplus\ 13242,105422
+\def\ifusingtt#1#2{\7f\ifusingtt\ 13253,105914
+\def\activedoublequote{\7f\activedoublequote\ 13261,106242
+\def~{\7f~\ 13264,106328
+\def^{\7f^\ 13267,106389
+\def_{\7f_\ 13270,106428
+\def\_{\7f\_\ 13272,106502
+\def\lvvmode{\7f\lvvmode\ 13279,106839
+\def|{\7f|\ 13282,106889
+\def<{\7f<\ 13285,106952
+\def>{\7f>\ 13288,107009
+\def+{\7f+\ 13290,107047
+\def\turnoffactive{\7f\turnoffactive\ 13296,107208
+\global\def={\7f=\ 13307,107494
+\def\normalbackslash{\7f\normalbackslash\ 13321,107876
+\f
+c-src/c.c,76
+T f(\7f1,0
+}T i;\7f2,14
+void bar(\7f5,69
+int foobar(\7f6,94
+interface_locate(\7f9,131
+\f
+c.c,1663
+my_printf \7f135,
+void fatala \7f138,
+max \7f141,
+struct bar \7f143,
+__attribute__ ((always_inline)) max \7f147,
+struct foo\7f150,
+char stack[\7fstack\ 1155,
+struct S \7f156,
+} wait_status_ptr_t \7f161,
+Some_Class A \7f162,
+typedef T1 T3 \7f163,
+T3 z \7f164,
+typedef int more_aligned_int \7f165,
+struct S __attribute__ ((vector_size (16))) foo;\7f166,
+int foo \7f167,
+char *__attribute__((aligned(8))) *f;\7ff\ 1168,
+int i \7f169,
+extern void foobar \7f170,
+typedef struct cacheLRUEntry_s\7f172,
+__attribute__ ((packed)) cacheLRUEntry_t;\7f177,
+struct foo \7f178,
+ f1 \7f183,
+void f2 \7f184,
+int x \7f188,
+struct foo \7f189,
+short array[\7farray\ 1190,
+int f\7f193,
+DEAFUN \7f196,
+XDEFUN \7f203,
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,\7fx-get-selection-internal\ 1206,
+ Fx_get_selection_internal,\7fx-get-selection-internal\ 1212,
+ Fy_get_selection_internal,\7fy-get-selection-internal\ 1216,
+defun_func1(\7f218,
+DEFUN_func2(\7f220,
+typedef int bool;\7f222,
+bool funcboo \7f223,
+struct my_struct \7f226,
+typedef struct my_struct my_typedef;\7f228,
+int bla \7f229,
+a(\7f234,
+int func1\7f237,
+static struct cca_control init_control \7f239,
+static tpcmd rbtp \7f240,
+static byte ring1 \7f241,
+static byte ring2 \7f242,
+request request \7f243,
+int func2 \7f246,
+ aaa;\7f249,
+ bbb;\7f251,
+struct sss1 \7f252,
+struct sss2\7f253,
+ struct ss3\7f255,
+struct a b;\7f259,
+struct aa *b;\7fb\ 1260,
+ **b;\7fb\ 1262,
+caccacacca \7f263,
+a \7f267,
+ typedef struct aa \7f269,
+ typedef struct aa {} aaa;\7f269,
+static void inita \7f271,
+node *lasta \7flasta\ 1272,
+b \7f273,
+ typedef int bb;\7f275,
+static void initb \7f277,
+node *lastb \7flastb\ 1278,
+typedef enum { REG_ENOSYS \7f279,
+typedef enum { REG_ENOSYS = -1, aa \7f279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;\7f279,
+\f
+c-src/a/b/b.c,18
+#define this \7f1,0
+\f
+../c/c.web,20
+#define questo \7f34,
+\f
+y-src/parse.y,738
+#define obstack_chunk_alloc \7f46,1116
+#define obstack_chunk_free \7f47,1154
+VOIDSTAR parse_hash;\7f63,1405
+unsigned char fnin[\7ffnin\ 167,1524
+#define YYSTYPE \7f71,1622
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,1653
+YYSTYPE parse_return;\7f73,1683
+char *instr;\7finstr\ 180,1795
+int parse_error \7f81,1808
+line:\7fline\ 186,1867
+exp:\7fexp\ 194,1980
+exp_list:\7fexp_list\ 1262,5647
+range_exp:\7frange_exp\ 1268,5745
+range_exp_list:\7frange_exp_list\ 1272,5775
+cell:\7fcell\ 1278,5893
+yyerror FUN1(\7f285,5940
+make_list FUN2(\7f292,6020
+#define ERROR \7f303,6220
+yylex FUN0(\7f314,6397
+parse_cell_or_range FUN2(\7f586,11763
+#define CK_ABS_R(\7f670,13205
+#define CK_REL_R(\7f674,13284
+#define CK_ABS_C(\7f679,13413
+#define CK_REL_C(\7f683,13492
+#define MAYBEREL(\7f688,13621
+str_to_col FUN1(\7f846,16822
+\f
+y-src/parse.c,520
+#define YYBISON \7f4,64
+# define NE \7f6,114
+# define LE \7f7,130
+# define GE \7f8,146
+# define NEG \7f9,162
+# define L_CELL \7f10,179
+# define L_RANGE \7f11,199
+# define L_VAR \7f12,220
+# define L_CONST \7f13,239
+# define L_FN0 \7f14,260
+# define L_FN1 \7f15,279
+# define L_FN2 \7f16,298
+# define L_FN3 \7f17,317
+# define L_FN4 \7f18,336
+# define L_FNN \7f19,355
+# define L_FN1R \7f20,374
+# define L_FN2R \7f21,394
+# define L_FN3R \7f22,414
+# define L_FN4R \7f23,434
+# define L_FNNR \7f24,454
+# define L_LE \7f25,474
+# define L_NE \7f26,492
+# define L_GE \7f27,510
+\f
+parse.y,1181
+#define obstack_chunk_alloc \7f46,
+#define obstack_chunk_free \7f47,
+VOIDSTAR parse_hash;\7f63,
+unsigned char fnin[\7ffnin\ 167,
+#define YYSTYPE \7f71,
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,
+YYSTYPE parse_return;\7f73,
+char *instr;\7finstr\ 180,
+int parse_error \7f81,
+#define YYSTYPE \7f85,
+# define YYDEBUG \7f88,
+#define YYFINAL \7f93,
+#define YYFLAG \7f94,
+#define YYNTBASE \7f95,
+#define YYTRANSLATE(\7f98,
+static const char yytranslate[\7fyytranslate\ 1101,
+static const short yyprhs[\7fyyprhs\ 1134,
+static const short yyrhs[\7fyyrhs\ 1142,
+static const short yyrline[\7fyyrline\ 1171,
+static const char *const yytname[\7fyytname\ 1185,
+static const short yyr1[\7fyyr1\ 1197,
+static const short yyr2[\7fyyr2\ 1207,
+static const short yydefact[\7fyydefact\ 1219,
+static const short yydefgoto[\7fyydefgoto\ 1237,
+static const short yypact[\7fyypact\ 1242,
+static const short yypgoto[\7fyypgoto\ 1260,
+#define YYLAST \7f266,
+static const short yytable[\7fyytable\ 1269,
+static const short yycheck[\7fyycheck\ 1330,
+yyerror FUN1(\7f285,
+make_list FUN2(\7f292,
+#define ERROR \7f303,
+yylex FUN0(\7f314,
+parse_cell_or_range FUN2(\7f586,
+#define CK_ABS_R(\7f670,
+#define CK_REL_R(\7f674,
+#define CK_ABS_C(\7f679,
+#define CK_REL_C(\7f683,
+#define MAYBEREL(\7f688,
+str_to_col FUN1(\7f846,
+\f
+/usr/share/bison/bison.simple,2110
+# define YYSTD(\7f40,
+# define YYSTD(\7f42,
+# define YYSTACK_ALLOC \7f50,
+# define YYSIZE_T \7f51,
+# define YYSTACK_ALLOC \7f55,
+# define YYSIZE_T \7f56,
+# define YYSTACK_ALLOC \7f59,
+# define YYSTACK_FREE(\7f67,
+# define YYSIZE_T \7f71,
+# define YYSIZE_T \7f75,
+# define YYSTACK_ALLOC \7f78,
+# define YYSTACK_FREE \7f79,
+union yyalloc\7f83,
+# define YYSTACK_GAP_MAX \7f93,
+# define YYSTACK_BYTES(\7f98,
+# define YYSTACK_BYTES(\7f102,
+# define YYSTACK_RELOCATE(\7f112,
+# define YYSIZE_T \7f128,
+# define YYSIZE_T \7f131,
+# define YYSIZE_T \7f136,
+# define YYSIZE_T \7f140,
+# define YYSIZE_T \7f145,
+#define yyerrok \7f148,
+#define yyclearin \7f149,
+#define YYEMPTY \7f150,
+#define YYEOF \7f151,
+#define YYACCEPT \7f152,
+#define YYABORT \7f153,
+#define YYERROR \7f154,
+#define YYFAIL \7f158,
+#define YYRECOVERING(\7f159,
+#define YYBACKUP(\7f160,
+#define YYTERROR \7f177,
+#define YYERRCODE \7f178,
+# define YYLLOC_DEFAULT(\7f189,
+# define YYLEX \7f200,
+# define YYLEX \7f202,
+# define YYLEX \7f206,
+# define YYLEX \7f208,
+# define YYLEX \7f212,
+# define YYFPRINTF \7f225,
+# define YYDPRINTF(\7f228,
+int yydebug;\7f237,
+# define YYDPRINTF(\7f239,
+# define YYINITDEPTH \7f244,
+# undef YYMAXDEPTH\7f255,
+# define YYMAXDEPTH \7f259,
+# define yymemcpy \7f264,
+yymemcpy \7f271,
+# define yystrlen \7f293,
+yystrlen \7f298,
+# define yystpcpy \7f316,
+yystpcpy \7f322,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/atest.y,9
+exp \7f2,3
+\f
+y-src/cccp.c,303
+#define YYBISON \7f4,63
+# define INT \7f6,113
+# define CHAR \7f7,130
+# define NAME \7f8,148
+# define ERROR \7f9,166
+# define OR \7f10,185
+# define AND \7f11,201
+# define EQUAL \7f12,218
+# define NOTEQUAL \7f13,237
+# define LEQ \7f14,259
+# define GEQ \7f15,276
+# define LSH \7f16,293
+# define RSH \7f17,310
+# define UNARY \7f18,327
+\f
+cccp.y,1579
+typedef unsigned char U_CHAR;\7f38,
+struct arglist \7f41,
+#define NULL \7f51,
+#define GENERIC_PTR \7f56,
+#define GENERIC_PTR \7f58,
+#define NULL_PTR \7f63,
+int expression_value;\7f68,
+static jmp_buf parse_return_error;\7f70,
+static int keyword_parsing \7f73,
+#define CHAR_TYPE_SIZE \7f87,
+#define INT_TYPE_SIZE \7f91,
+#define LONG_TYPE_SIZE \7f95,
+#define WCHAR_TYPE_SIZE \7f99,
+#define possible_sum_sign(\7f104,
+ struct constant \7f113,
+ struct name \7f114,
+} yystype;\7f118,
+# define YYSTYPE \7f119,
+# define YYDEBUG \7f122,
+#define YYFINAL \7f127,
+#define YYFLAG \7f128,
+#define YYNTBASE \7f129,
+#define YYTRANSLATE(\7f132,
+static const char yytranslate[\7fyytranslate\ 1135,
+static const short yyprhs[\7fyyprhs\ 1167,
+static const short yyrhs[\7fyyrhs\ 1174,
+static const short yyrline[\7fyyrline\ 1195,
+static const char *const yytname[\7fyytname\ 1208,
+static const short yyr1[\7fyyr1\ 1219,
+static const short yyr2[\7fyyr2\ 1228,
+static const short yydefact[\7fyydefact\ 1239,
+static const short yydefgoto[\7fyydefgoto\ 1251,
+static const short yypact[\7fyypact\ 1256,
+static const short yypgoto[\7fyypgoto\ 1268,
+#define YYLAST \7f274,
+static const short yytable[\7fyytable\ 1277,
+static const short yycheck[\7fyycheck\ 1301,
+static char *lexptr;\7flexptr\ 1332,
+parse_number \7f341,
+struct token \7f437,
+static struct token tokentab2[\7ftokentab2\ 1442,
+yylex \7f459,
+parse_escape \7f740,
+yyerror \7f836,
+integer_overflow \7f844,
+left_shift \7f851,
+right_shift \7f873,
+parse_c_expression \7f893,
+main \7f923,
+unsigned char is_idchar[\7fis_idchar\ 1948,
+unsigned char is_idstart[\7fis_idstart\ 1950,
+char is_hor_space[\7fis_hor_space\ 1953,
+initialize_random_junk \7f958,
+error \7f988,
+warning \7f993,
+lookup \7f999,
+\f
+/usr/share/bison/bison.simple,2110
+# define YYSTD(\7f41,
+# define YYSTD(\7f43,
+# define YYSTACK_ALLOC \7f51,
+# define YYSIZE_T \7f52,
+# define YYSTACK_ALLOC \7f56,
+# define YYSIZE_T \7f57,
+# define YYSTACK_ALLOC \7f60,
+# define YYSTACK_FREE(\7f68,
+# define YYSIZE_T \7f72,
+# define YYSIZE_T \7f76,
+# define YYSTACK_ALLOC \7f79,
+# define YYSTACK_FREE \7f80,
+union yyalloc\7f84,
+# define YYSTACK_GAP_MAX \7f94,
+# define YYSTACK_BYTES(\7f99,
+# define YYSTACK_BYTES(\7f103,
+# define YYSTACK_RELOCATE(\7f113,
+# define YYSIZE_T \7f129,
+# define YYSIZE_T \7f132,
+# define YYSIZE_T \7f137,
+# define YYSIZE_T \7f141,
+# define YYSIZE_T \7f146,
+#define yyerrok \7f149,
+#define yyclearin \7f150,
+#define YYEMPTY \7f151,
+#define YYEOF \7f152,
+#define YYACCEPT \7f153,
+#define YYABORT \7f154,
+#define YYERROR \7f155,
+#define YYFAIL \7f159,
+#define YYRECOVERING(\7f160,
+#define YYBACKUP(\7f161,
+#define YYTERROR \7f178,
+#define YYERRCODE \7f179,
+# define YYLLOC_DEFAULT(\7f190,
+# define YYLEX \7f201,
+# define YYLEX \7f203,
+# define YYLEX \7f207,
+# define YYLEX \7f209,
+# define YYLEX \7f213,
+# define YYFPRINTF \7f226,
+# define YYDPRINTF(\7f229,
+int yydebug;\7f238,
+# define YYDPRINTF(\7f240,
+# define YYINITDEPTH \7f245,
+# undef YYMAXDEPTH\7f256,
+# define YYMAXDEPTH \7f260,
+# define yymemcpy \7f265,
+yymemcpy \7f272,
+# define yystrlen \7f294,
+yystrlen \7f299,
+# define yystpcpy \7f317,
+yystpcpy \7f323,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyresult \7f947,
+\f
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;\7f38,1201
+struct arglist \7f41,1301
+#define NULL \7f51,1468
+#define GENERIC_PTR \7f56,1578
+#define GENERIC_PTR \7f58,1611
+#define NULL_PTR \7f63,1670
+int expression_value;\7f68,1743
+static jmp_buf parse_return_error;\7f70,1766
+static int keyword_parsing \7f73,1865
+#define CHAR_TYPE_SIZE \7f87,2162
+#define INT_TYPE_SIZE \7f91,2229
+#define LONG_TYPE_SIZE \7f95,2296
+#define WCHAR_TYPE_SIZE \7f99,2365
+#define possible_sum_sign(\7f104,2556
+ struct constant \7f112,2733
+ struct name \7f113,2789
+start \7f143,3226
+exp1 \7f148,3330
+exp \7f156,3505
+exp \7f185,4295
+keywords \7f306,7835
+static char *lexptr;\7flexptr\ 1332,8579
+parse_number \7f341,8842
+struct token \7f437,11038
+static struct token tokentab2[\7ftokentab2\ 1442,11088
+yylex \7f459,11367
+parse_escape \7f740,17718
+yyerror \7f836,19599
+integer_overflow \7f844,19690
+left_shift \7f851,19804
+right_shift \7f873,20194
+parse_c_expression \7f893,20732
+main \7f923,21483
+unsigned char is_idchar[\7fis_idchar\ 1948,21901
+unsigned char is_idstart[\7fis_idstart\ 1950,21996
+char is_hor_space[\7fis_hor_space\ 1953,22160
+initialize_random_junk \7f958,22259
+error \7f988,22915
+warning \7f993,22963
+lookup \7f999,23033
+\f
+tex-src/nonewline.tex,0
+\f
+php-src/sendmail.php,0
+\f
+c-src/fail.c,0
+\f
+a-src/empty.zz,0
--- /dev/null
- perl-src/htlmify-cystic,1443
+\f
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 11,0
+ function Body_Required\7fBody_Required/f\ 13,78
+ type Type_Specific_Data \7fType_Specific_Data/t\ 111,280
+ function "abs"\7fabs/f\ 119,504
+ type Barrier_Function_Pointer \7fBarrier_Function_Pointer/t\ 121,577
+ function "="\7f=/f\ 127,722
+ type usfreelock_ptr \7fusfreelock_ptr/t\ 130,803
+ function p \7fp/f\ 133,891
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 137,1054
+function p \7fp/f\ 139,1094
+package Pkg1 \7fPkg1/s\ 144,1203
+ type Private_T \7fPrivate_T/t\ 146,1220
+ package Inner1 \7fInner1/s\ 148,1250
+ procedure Private_T;\7fPrivate_T/p\ 149,1270
+ package Inner2 \7fInner2/s\ 152,1310
+ task Private_T;\7fPrivate_T/k\ 153,1330
+ type Public_T \7fPublic_T/t\ 156,1365
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 162,1450
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 164,1475
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 166,1514
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 168,1553
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 171,1622
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 172,1645
+ task type Task_Type \7fTask_Type/k\ 175,1694
+ type Private_T \7fPrivate_T/t\ 182,1786
+package body Pkg1 \7fPkg1/b\ 189,1882
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 191,1904
+ package body Inner1 \7fInner1/b\ 196,1956
+ procedure Private_T \7fPrivate_T/p\ 197,1981
+ package body Inner2 \7fInner2/b\ 1103,2054
+ task body Private_T \7fPrivate_T/b\ 1104,2079
+ task body Task_Type \7fTask_Type/b\ 1112,2181
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 1126,2367
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 1132,2445
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 1134,2496
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1140,2596
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1146,2663
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1147,2689
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1155,2778
+package Truc \7fTruc/s\ 1162,2887
+package Truc.Bidule \7fTruc.Bidule/s\ 1166,2929
+ protected Bidule \7fBidule/t\ 1168,2953
+ protected type Machin_T \7fMachin_T/t\ 1172,3007
+package body Truc.Bidule \7fTruc.Bidule/b\ 1178,3087
+ protected body Bidule \7fBidule/b\ 1179,3115
+ protected Machin_T \7fMachin_T/t\ 1186,3207
+\f
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives \7fSystem.Task_Primitives/b\ 164,2603
+ package RTE \7fRTE/s\ 169,2712
+ package TSL \7fTSL/s\ 170,2759
+ function To_void_ptr \7fTo_void_ptr/f\ 186,3287
+ function To_TCB_Ptr \7fTo_TCB_Ptr/f\ 189,3366
+ function pthread_mutexattr_setprotocol\7fpthread_mutexattr_setprotocol/f\ 192,3444
+ function pthread_mutexattr_setprio_ceiling\7fpthread_mutexattr_setprio_ceiling/f\ 199,3728
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1115,4302
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1122,4526
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 1131,4830
+ function Self \7fSelf/f\ 1160,5586
+ procedure Initialize_Lock\7fInitialize_Lock/p\ 1174,5958
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1210,6927
+ procedure Write_Lock \7fWrite_Lock/p\ 1226,7338
+ procedure Read_Lock \7fRead_Lock/p\ 1239,7700
+ procedure Unlock \7fUnlock/p\ 1246,7850
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1258,8160
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1286,8979
+ procedure Cond_Wait \7fCond_Wait/p\ 1300,9303
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1312,9661
+ procedure Cond_Signal \7fCond_Signal/p\ 1343,10510
+ procedure Set_Priority\7fSet_Priority/p\ 1355,10836
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1372,11243
+ function Get_Priority \7fGet_Priority/f\ 1385,11598
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1398,12023
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1412,12438
+ function To_Start_Addr \7fTo_Start_Addr/f\ 1426,12873
+ procedure Exit_LL_Task \7fExit_LL_Task/p\ 1491,14995
+ procedure Abort_Task \7fAbort_Task/p\ 1500,15158
+ procedure Test_Abort \7fTest_Abort/p\ 1518,15716
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1527,15878
+ procedure Abort_Wrapper\7fAbort_Wrapper/p\ 1557,16939
+ function Address_To_Call_State \7fAddress_To_Call_State/f\ 1562,17062
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1573,17351
+ procedure LL_Assert \7fLL_Assert/p\ 1599,18146
+ procedure LL_Wrapper \7fLL_Wrapper/p\ 1608,18299
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1630,19010
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1635,19129
+ procedure Clear \7fClear/p\ 1640,19236
+ procedure Test_And_Set \7fTest_And_Set/p\ 1645,19330
+ function Is_Set \7fIs_Set/f\ 1659,19676
+\f
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives \7fSystem.Task_Primitives/s\ 158,3169
+ type LL_Task_Procedure_Access \7fLL_Task_Procedure_Access/t\ 162,3253
+ type Pre_Call_State \7fPre_Call_State/t\ 164,3331
+ type Task_Storage_Size \7fTask_Storage_Size/t\ 166,3378
+ type Machine_Exceptions \7fMachine_Exceptions/t\ 168,3433
+ type Error_Information \7fError_Information/t\ 170,3499
+ type Lock \7fLock/t\ 172,3569
+ type Condition_Variable \7fCondition_Variable/t\ 173,3594
+ type Task_Control_Block \7fTask_Control_Block/t\ 181,3955
+ type TCB_Ptr \7fTCB_Ptr/t\ 189,4241
+ function Address_To_TCB_Ptr \7fAddress_To_TCB_Ptr/f\ 193,4333
+ procedure Initialize_LL_Tasks \7fInitialize_LL_Tasks/p\ 196,4425
+ function Self \7fSelf/f\ 1100,4602
+ procedure Initialize_Lock \7fInitialize_Lock/p\ 1103,4707
+ procedure Finalize_Lock \7fFinalize_Lock/p\ 1107,4879
+ procedure Write_Lock \7fWrite_Lock/p\ 1111,5034
+ procedure Read_Lock \7fRead_Lock/p\ 1118,5428
+ procedure Unlock \7fUnlock/p\ 1128,5995
+ procedure Initialize_Cond \7fInitialize_Cond/p\ 1135,6300
+ procedure Finalize_Cond \7fFinalize_Cond/p\ 1138,6413
+ procedure Cond_Wait \7fCond_Wait/p\ 1142,6591
+ procedure Cond_Timed_Wait\7fCond_Timed_Wait/p\ 1155,7396
+ procedure Cond_Signal \7fCond_Signal/p\ 1164,7812
+ procedure Set_Priority \7fSet_Priority/p\ 1169,8040
+ procedure Set_Own_Priority \7fSet_Own_Priority/p\ 1173,8200
+ function Get_Priority \7fGet_Priority/f\ 1177,8348
+ function Get_Own_Priority \7fGet_Own_Priority/f\ 1181,8504
+ procedure Create_LL_Task\7fCreate_LL_Task/p\ 1185,8647
+ procedure Exit_LL_Task;\7fExit_LL_Task/p\ 1198,9282
+ procedure Abort_Task \7fAbort_Task/p\ 1203,9516
+ procedure Test_Abort;\7fTest_Abort/p\ 1210,9878
+ type Abort_Handler_Pointer \7fAbort_Handler_Pointer/t\ 1217,10233
+ procedure Install_Abort_Handler \7fInstall_Abort_Handler/p\ 1219,10312
+ procedure Install_Error_Handler \7fInstall_Error_Handler/p\ 1226,10741
+ procedure LL_Assert \7fLL_Assert/p\ 1231,10983
+ type Proc \7fProc/t\ 1238,11240
+ type TAS_Cell \7fTAS_Cell/t\ 1242,11328
+ procedure Initialize_TAS_Cell \7fInitialize_TAS_Cell/p\ 1249,11670
+ procedure Finalize_TAS_Cell \7fFinalize_TAS_Cell/p\ 1255,11941
+ procedure Clear \7fClear/p\ 1260,12157
+ procedure Test_And_Set \7fTest_And_Set/p\ 1267,12462
+ function Is_Set \7fIs_Set/f\ 1275,12877
+ type Lock \7fLock/t\ 1283,13155
+ type Condition_Variable \7fCondition_Variable/t\ 1288,13267
+ type TAS_Cell \7fTAS_Cell/t\ 1293,13389
+\f
+ada-src/waroquiers.ada,1503
+package Pkg1 \7fPkg1/s\ 13,89
+ type Private_T \7fPrivate_T/t\ 15,106
+ package Inner1 \7fInner1/s\ 17,136
+ procedure Private_T;\7fPrivate_T/p\ 18,156
+ package Inner2 \7fInner2/s\ 111,196
+ task Private_T;\7fPrivate_T/k\ 112,216
+ type Public_T \7fPublic_T/t\ 115,251
+ procedure Pkg1_Proc1;\7fPkg1_Proc1/p\ 121,336
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 123,361
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 125,400
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 127,439
+ package Pkg1_Pkg1 \7fPkg1_Pkg1/s\ 130,508
+ procedure Pkg1_Pkg1_Proc1;\7fPkg1_Pkg1_Proc1/p\ 131,531
+ task type Task_Type \7fTask_Type/k\ 134,580
+ type Private_T \7fPrivate_T/t\ 140,671
+package body Pkg1 \7fPkg1/b\ 146,766
+ procedure Pkg1_Proc1 \7fPkg1_Proc1/p\ 148,788
+ package body Inner1 \7fInner1/b\ 153,840
+ procedure Private_T \7fPrivate_T/p\ 154,865
+ package body Inner2 \7fInner2/b\ 160,938
+ task body Private_T \7fPrivate_T/b\ 161,963
+ task body Task_Type \7fTask_Type/b\ 168,1064
+ procedure Pkg1_Proc2 \7fPkg1_Proc2/p\ 182,1250
+ function Pkg1_Func1 \7fPkg1_Func1/f\ 188,1328
+ function Pkg1_Func2 \7fPkg1_Func2/f\ 190,1379
+ package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 196,1479
+package body Pkg1_Pkg1 \7fPkg1_Pkg1/b\ 1100,1544
+ procedure Pkg1_Pkg1_Proc1 \7fPkg1_Pkg1_Proc1/p\ 1101,1570
+function Pkg1_Func1 \7fPkg1_Func1/f\ 1107,1657
+package Truc \7fTruc/s\ 1112,1764
+package Truc.Bidule \7fTruc.Bidule/s\ 1116,1816
+ protected Bidule \7fBidule/t\ 1125,1964
+ protected type Machin_T \7fMachin_T/t\ 1131,2046
+package body Truc.Bidule \7fTruc.Bidule/b\ 1138,2153
+ protected body Bidule \7fBidule/b\ 1139,2181
+ protected body Machin_T \7fMachin_T/b\ 1146,2281
+\f
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;\7f43,1424
+Lisp_Object Vglobal_abbrev_table;\7f48,1569
+Lisp_Object Vfundamental_mode_abbrev_table;\7f52,1680
+int abbrevs_changed;\7f56,1781
+int abbrev_all_caps;\7f58,1803
+Lisp_Object Vabbrev_start_location;\7f63,1952
+Lisp_Object Vabbrev_start_location_buffer;\7f66,2041
+Lisp_Object Vlast_abbrev;\7f70,2150
+Lisp_Object Vlast_abbrev_text;\7f75,2319
+int last_abbrev_point;\7f79,2409
+Lisp_Object Vpre_abbrev_expand_hook,\7f83,2482
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;\7f83,2482
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,\7fmake-abbrev-table\ 185,2546
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,\7fclear-abbrev-table\ 192,2738
+DEFUN ("define-abbrev", Fdefine_abbrev,\7fdefine-abbrev\ 1107,3119
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev,\7fdefine-global-abbrev\ 1149,4438
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,\7fdefine-mode-abbrev\ 1160,4809
+DEFUN ("abbrev-symbol", Fabbrev_symbol,\7fabbrev-symbol\ 1174,5277
+DEFUN ("abbrev-expansion", Fabbrev_expansion,\7fabbrev-expansion\ 1202,6241
+DEFUN ("expand-abbrev", Fexpand_abbrev,\7fexpand-abbrev\ 1218,6756
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,\7funexpand-abbrev\ 1389,11677
+write_abbrev \7f426,12884
+describe_abbrev \7f445,13319
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,\7finsert-abbrev-table-description\ 1466,13834
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table,\7fdefine-abbrev-table\ 1506,14990
+syms_of_abbrev \7f540,16067
+ DEFVAR_LISP ("abbrev-table-name-list"\7f542,16087
+ DEFVAR_LISP ("global-abbrev-table"\7f548,16349
+ DEFVAR_LISP ("fundamental-mode-abbrev-table"\7f555,16671
+ DEFVAR_LISP ("last-abbrev"\7f561,17013
+ DEFVAR_LISP ("last-abbrev-text"\7f564,17136
+ DEFVAR_INT ("last-abbrev-location"\7f568,17294
+ DEFVAR_LISP ("abbrev-start-location"\7f575,17493
+ DEFVAR_LISP ("abbrev-start-location-buffer"\7f581,17770
+ DEFVAR_PER_BUFFER ("local-abbrev-table"\7f586,18034
+ DEFVAR_BOOL ("abbrevs-changed"\7f589,18177
+ DEFVAR_BOOL ("abbrev-all-caps"\7f594,18380
+ DEFVAR_LISP ("pre-abbrev-expand-hook"\7f598,18536
+ DEFVAR_LISP ("abbrev-table-name-list",\7f\1\ 1542,16087
+ DEFVAR_LISP ("global-abbrev-table",\7f\1\ 1548,16349
+ DEFVAR_LISP ("fundamental-mode-abbrev-table",\7f\1\ 1555,16671
+ DEFVAR_LISP ("last-abbrev",\7f\1\ 1561,17013
+ DEFVAR_LISP ("last-abbrev-text",\7f\1\ 1564,17136
+ DEFVAR_INT ("last-abbrev-location",\7f\1\ 1568,17294
+ DEFVAR_LISP ("abbrev-start-location",\7f\1\ 1575,17493
+ DEFVAR_LISP ("abbrev-start-location-buffer",\7f\1\ 1581,17770
+ DEFVAR_PER_BUFFER ("local-abbrev-table",\7f\1\ 1586,18034
+ DEFVAR_BOOL ("abbrevs-changed",\7f\1\ 1589,18177
+ DEFVAR_BOOL ("abbrev-all-caps",\7f\1\ 1594,18380
+ DEFVAR_LISP ("pre-abbrev-expand-hook",\7f\1\ 1598,18536
+\f
+c-src/torture.c,197
+(*tag1 \7ftag1\ 118,452
+#define notag2 \7f26,553
+(*tag2 \7ftag2\ 129,630
+(*tag3 \7ftag3\ 139,772
+#define notag4 \7f45,861
+(*tag4 \7ftag4\ 148,955
+tag5 \7f57,1081
+tag6 \7f66,1208
+int pp1(\7f74,1317
+pp2\7f87,1419
+pp3(\7f100,1518
+\f
+c-src/getopt.h,666
+#define _GETOPT_H \7f19,794
+extern char *optarg;\7foptarg\ 131,1102
+extern int optind;\7f45,1610
+extern int opterr;\7f50,1736
+struct option\7f73,2790
+ const char *name;\7fname\ 176,2819
+ char *name;\7fname\ 178,2845
+ int has_arg;\7f82,3002
+ int *flag;\7fflag\ 183,3017
+ int val;\7f84,3030
+#define no_argument \7f89,3117
+#define required_argument \7f90,3140
+#define optional_argument \7f91,3168
+extern int getopt \7f98,3433
+extern int getopt \7f100,3537
+extern int getopt_long \7f102,3592
+extern int getopt_long_only \7f104,3724
+extern int _getopt_internal \7f109,3935
+extern int getopt \7f114,4133
+extern int getopt_long \7f115,4155
+extern int getopt_long_only \7f116,4182
+extern int _getopt_internal \7f118,4215
+\f
+c-src/etags.c,14175
+char pot_etags_version[\7fpot_etags_version\ 181,3470
+# undef DEBUG\7f84,3552
+# define DEBUG \7f85,3567
+# define DEBUG \7f87,3594
+# define NDEBUG \7f88,3617
+# define _GNU_SOURCE \7f94,3705
+# undef MSDOS\7f100,3876
+# undef WINDOWSNT\7f101,3890
+# define WINDOWSNT\7f102,3909
+# undef MSDOS\7f106,3968
+# define MSDOS \7f107,3982
+# define MSDOS \7f110,4032
+# define MAXPATHLEN \7f115,4111
+# undef HAVE_NTGUI\7f116,4141
+# undef DOS_NT\7f117,4160
+# define DOS_NT\7f118,4176
+# undef assert \7f135,4482
+# define assert(\7f136,4541
+# undef CTAGS\7f146,4857
+# define CTAGS \7f147,4872
+# define CTAGS \7f149,4898
+#define streq(\7f152,4927
+#define strcaseeq(\7f153,4996
+#define strneq(\7f154,5075
+#define strncaseeq(\7f155,5151
+#define CHARS \7f157,5238
+#define CHAR(\7f158,5278
+#define iswhite(\7f159,5329
+#define notinname(\7f160,5394
+#define begtoken(\7f161,5469
+#define intoken(\7f162,5542
+#define endtoken(\7f163,5614
+#define ISALNUM(\7f165,5684
+#define ISALPHA(\7f166,5722
+#define ISDIGIT(\7f167,5760
+#define ISLOWER(\7f168,5798
+#define lowcase(\7f170,5837
+#define xnew(\7f179,6015
+#define xrnew(\7f180,6083
+typedef void Lang_function \7f182,6164
+ const char *suffix;\7fsuffix\ 1186,6219
+ const char *command;\7fcommand\ 1187,6294
+} compressor;\7f188,6365
+ const char *name;\7fname\ 1192,6397
+ const char *help;\7fhelp\ 1193,6449
+ Lang_function *function;\7ffunction\ 1194,6508
+ const char **suffixes;\7fsuffixes\ 1195,6556
+ const char **filenames;\7ffilenames\ 1196,6633
+ const char **interpreters;\7finterpreters\ 1197,6702
+ bool metasource;\7f198,6771
+} language;\7f199,6835
+typedef struct fdesc\7f201,6848
+ struct fdesc *next;\7fnext\ 1203,6871
+ char *infname;\7finfname\ 1204,6920
+ char *infabsname;\7finfabsname\ 1205,6973
+ char *infabsdir;\7finfabsdir\ 1206,7038
+ char *taggedfname;\7ftaggedfname\ 1207,7091
+ language *lang;\7flang\ 1208,7149
+ char *prop;\7fprop\ 1209,7191
+ bool usecharno;\7f210,7249
+ bool written;\7f211,7311
+} fdesc;\7f212,7366
+typedef struct node_st\7f214,7376
+ struct node_st *left,\7fleft\ 1216,7428
+ struct node_st *left, *right;\7fright\ 1216,7428
+ fdesc *fdp;\7ffdp\ 1217,7486
+ char *name;\7fname\ 1218,7548
+ char *regex;\7fregex\ 1219,7580
+ bool valid;\7f220,7617
+ bool is_func;\7f221,7670
+ bool been_warned;\7f222,7733
+ int lno;\7f223,7801
+ long cno;\7f224,7842
+} node;\7f225,7894
+ long size;\7f236,8208
+ int len;\7f237,8221
+ char *buffer;\7fbuffer\ 1238,8232
+} linebuffer;\7f239,8248
+ at_language,\7f245,8344
+ at_regexp,\7f246,8393
+ at_filename,\7f247,8437
+ at_stdin,\7f248,8473
+ at_end \7f249,8516
+ } arg_type;\7f250,8557
+ language *lang;\7flang\ 1251,8593
+ char *what;\7fwhat\ 1252,8656
+} argument;\7f253,8698
+typedef struct regexp\7f256,8758
+ struct regexp *p_next;\7fp_next\ 1258,8782
+ language *lang;\7flang\ 1259,8837
+ char *pattern;\7fpattern\ 1260,8897
+ char *name;\7fname\ 1261,8940
+ struct re_pattern_buffer *pat;\7fpat\ 1262,8971
+ struct re_registers regs;\7f263,9031
+ bool error_signaled;\7f264,9078
+ bool force_explicit_name;\7f265,9141
+ bool ignore_case;\7f266,9206
+ bool multi_line;\7f267,9259
+} regexp;\7f268,9325
+static void Ada_funcs \7f274,9428
+static void Asm_labels \7f275,9460
+static void C_entries \7f276,9493
+static void default_C_entries \7f277,9536
+static void plain_C_entries \7f278,9576
+static void Cjava_entries \7f279,9614
+static void Cobol_paragraphs \7f280,9650
+static void Cplusplus_entries \7f281,9689
+static void Cstar_entries \7f282,9729
+static void Erlang_functions \7f283,9765
+static void Forth_words \7f284,9804
+static void Fortran_functions \7f285,9838
+static void HTML_labels \7f286,9878
+static void Lisp_functions \7f287,9912
+static void Lua_functions \7f288,9949
+static void Makefile_targets \7f289,9985
+static void Pascal_functions \7f290,10024
+static void Perl_functions \7f291,10063
+static void PHP_functions \7f292,10100
+static void PS_functions \7f293,10136
+static void Prolog_functions \7f294,10171
+static void Python_functions \7f295,10210
+static void Scheme_functions \7f296,10249
+static void TeX_commands \7f297,10288
+static void Texinfo_nodes \7f298,10323
+static void Yacc_entries \7f299,10359
+static void just_read_file \7f300,10394
+static language *get_language_from_langname \7fget_language_from_langname\ 1302,10432
+static void readline \7f303,10492
+static long readline_internal \7f304,10537
+static bool nocase_tail \7f305,10591
+static void get_tag \7f306,10631
+static void analyze_regex \7f308,10671
+static void free_regexps \7f309,10707
+static void regex_tag_multiline \7f310,10740
+static void error \7f311,10780
+# undef STDIN\7f408,15073
+#define STDIN \7f411,15095
+static compressor compressors[\7fcompressors\ 1457,17664
+static const char *Ada_suffixes \7fAda_suffixes\ 1473,17907
+static const char Ada_help \7f475,17977
+static const char *Asm_suffixes \7fAsm_suffixes\ 1493,18580
+static const char Asm_help \7f504,18976
+static const char *default_C_suffixes \7fdefault_C_suffixes\ 1512,19312
+static const char default_C_help \7f515,19413
+static const char default_C_help \7f523,19850
+static const char *Cplusplus_suffixes \7fCplusplus_suffixes\ 1535,20460
+static const char Cplusplus_help \7f540,20658
+static const char *Cjava_suffixes \7fCjava_suffixes\ 1549,21113
+static char Cjava_help \7f551,21172
+static const char *Cobol_suffixes \7fCobol_suffixes\ 1556,21337
+static char Cobol_help \7f558,21402
+static const char *Cstar_suffixes \7fCstar_suffixes\ 1562,21543
+static const char *Erlang_suffixes \7fErlang_suffixes\ 1565,21607
+static const char Erlang_help \7f567,21673
+const char *Forth_suffixes \7fForth_suffixes\ 1571,21799
+static const char Forth_help \7f573,21857
+static const char *Fortran_suffixes \7fFortran_suffixes\ 1577,22008
+static const char Fortran_help \7f579,22085
+static const char *HTML_suffixes \7fHTML_suffixes\ 1582,22190
+static const char HTML_help \7f584,22264
+static const char *Lisp_suffixes \7fLisp_suffixes\ 1589,22452
+static const char Lisp_help \7f591,22556
+static const char *Lua_suffixes \7fLua_suffixes\ 1598,22871
+static const char Lua_help \7f600,22934
+static const char *Makefile_filenames \7fMakefile_filenames\ 1603,23010
+static const char Makefile_help \7f605,23133
+static const char *Objc_suffixes \7fObjc_suffixes\ 1609,23277
+static const char Objc_help \7f613,23399
+static const char *Pascal_suffixes \7fPascal_suffixes\ 1619,23714
+static const char Pascal_help \7f621,23778
+static const char *Perl_suffixes \7fPerl_suffixes\ 1626,23966
+static const char *Perl_interpreters \7fPerl_interpreters\ 1628,24028
+static const char Perl_help \7f630,24100
+static const char *PHP_suffixes \7fPHP_suffixes\ 1637,24451
+static const char PHP_help \7f639,24523
+static const char *plain_C_suffixes \7fplain_C_suffixes\ 1643,24678
+static const char *PS_suffixes \7fPS_suffixes\ 1647,24762
+static const char PS_help \7f649,24848
+static const char *Prolog_suffixes \7fProlog_suffixes\ 1652,24931
+static const char Prolog_help \7f654,24993
+static const char *Python_suffixes \7fPython_suffixes\ 1658,25107
+static const char Python_help \7f660,25165
+static const char *Scheme_suffixes \7fScheme_suffixes\ 1665,25347
+static const char Scheme_help \7f667,25460
+static const char *TeX_suffixes \7fTeX_suffixes\ 1672,25683
+static const char TeX_help \7f674,25781
+static const char *Texinfo_suffixes \7fTexinfo_suffixes\ 1686,26316
+static const char Texinfo_help \7f688,26395
+static const char *Yacc_suffixes \7fYacc_suffixes\ 1691,26492
+static const char Yacc_help \7f693,26606
+static const char auto_help \7f699,26856
+static const char none_help \7f703,27020
+static const char no_lang_help \7f707,27143
+static language lang_names \7f718,27355
+print_language_names \7f753,29532
+# define EMACS_NAME \7f786,30755
+# define VERSION \7f789,30811
+print_version \7f792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP \7f804,31173
+print_help \7f808,31250
+main \7f981,37438
+get_compressor_from_suffix \7f1319,46217
+get_language_from_langname \7f1355,47158
+get_language_from_interpreter \7f1377,47545
+get_language_from_filename \7f1399,47976
+process_file_name \7f1433,48834
+process_file \7f1555,51665
+init \7f1632,54150
+find_entries \7f1656,54901
+make_tag \7f1814,59707
+pfnote \7f1856,60942
+free_tree \7f1917,62744
+free_fdesc \7f1935,63029
+add_node \7f1955,63472
+invalidate_nodes \7f2035,65537
+static int total_size_of_entries \7f2067,66150
+static int number_len \7f2068,66193
+total_size_of_entries \7f2087,66694
+put_entries \7f2107,67154
+#define C_EXT \7f2193,68995
+#define C_PLAIN \7f2194,69037
+#define C_PLPL \7f2195,69070
+#define C_STAR \7f2196,69104
+#define C_JAVA \7f2197,69137
+#define C_AUTO \7f2198,69172
+#define YACC \7f2199,69242
+enum sym_type\7f2204,69312
+ st_none,\7f2206,69328
+ st_C_objprot,\7f2207,69339
+ st_C_objprot, st_C_objimpl,\7f2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,\7f2207,69339
+ st_C_gnumacro,\7f2208,69382
+ st_C_ignore,\7f2209,69399
+ st_C_ignore, st_C_attribute,\7f2209,69399
+ st_C_javastruct,\7f2210,69430
+ st_C_operator,\7f2211,69449
+ st_C_class,\7f2212,69466
+ st_C_class, st_C_template,\7f2212,69466
+ st_C_struct,\7f2213,69495
+ st_C_struct, st_C_extern,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,\7f2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef\7f2213,69495
+struct C_stab_entry \7f2271,71278
+struct C_stab_entry { const char *name;\7fname\ 12271,71278
+struct C_stab_entry { const char *name; int c_ext;\7f2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type type;\7f2271,71278
+hash \7f2275,71409
+in_word_set \7f2321,72937
+ TOTAL_KEYWORDS \7f2325,73018
+ MIN_WORD_LENGTH \7f2326,73045
+ MAX_WORD_LENGTH \7f2327,73072
+ MIN_HASH_VALUE \7f2328,73100
+ MAX_HASH_VALUE \7f2329,73126
+C_symtype \7f2387,74985
+static bool inattribute;\7f2400,75234
+ fvnone,\7f2408,75435
+ fdefunkey,\7f2409,75466
+ fdefunname,\7f2410,75512
+ foperator,\7f2411,75556
+ fvnameseen,\7f2412,75613
+ fstartlist,\7f2413,75666
+ finlist,\7f2414,75722
+ flistseen,\7f2415,75765
+ fignore,\7f2416,75813
+ vignore \7f2417,75856
+} fvdef;\7f2418,75901
+static bool fvextern;\7f2420,75911
+ tnone,\7f2428,76089
+ tkeyseen,\7f2429,76119
+ ttypeseen,\7f2430,76160
+ tinbody,\7f2431,76199
+ tend,\7f2432,76238
+ tignore \7f2433,76279
+} typdef;\7f2434,76320
+ snone,\7f2443,76499
+ skeyseen,\7f2445,76575
+ stagseen,\7f2446,76620
+ scolonseen \7f2447,76661
+} structdef;\7f2448,76715
+static const char *objtag \7fobjtag\ 12453,76809
+ dnone,\7f2460,76942
+ dsharpseen,\7f2461,76972
+ ddefineseen,\7f2462,77025
+ dignorerest \7f2463,77070
+} definedef;\7f2464,77112
+ onone,\7f2472,77267
+ oprotocol,\7f2473,77297
+ oimplementation,\7f2474,77347
+ otagseen,\7f2475,77395
+ oparenseen,\7f2476,77431
+ ocatseen,\7f2477,77486
+ oinbody,\7f2478,77525
+ omethodsign,\7f2479,77568
+ omethodtag,\7f2480,77626
+ omethodcolon,\7f2481,77666
+ omethodparm,\7f2482,77709
+ oignore \7f2483,77755
+} objdef;\7f2484,77787
+static struct tok\7f2491,77944
+ char *line;\7fline\ 12493,77964
+ int offset;\7f2494,78014
+ int length;\7f2495,78067
+ bool valid;\7f2502,78352
+ bool named;\7f2505,78487
+ int lineno;\7f2506,78528
+ long linepos;\7f2507,78576
+} token;\7f2508,78626
+static void pushclass_above \7f2514,78784
+static void popclass_above \7f2515,78832
+static void write_classname \7f2516,78866
+ char **cname;\7fcname\ 12519,78950
+ int *bracelev;\7fbracelev\ 12520,78993
+ int nl;\7f2521,79042
+ int size;\7f2522,79096
+} cstack;\7f2523,79136
+#define nestlev \7f2525,79264
+#define instruct \7f2527,79369
+pushclass_above \7f2531,79489
+popclass_above \7f2550,79948
+write_classname \7f2564,80162
+static bool consider_token \7f2592,80761
+static void make_C_tag \7f2593,80833
+consider_token \7f2613,81341
+ long linepos;\7f2922,88499
+ linebuffer lb;\7f2923,88515
+} lbs[\7flbs\ 12924,88532
+#define current_lb_is_new \7f2926,88543
+#define switch_line_buffers(\7f2927,88588
+#define curlb \7f2929,88641
+#define newlb \7f2930,88672
+#define curlinepos \7f2931,88703
+#define newlinepos \7f2932,88744
+#define plainc \7f2934,88786
+#define cplpl \7f2935,88830
+#define cjava \7f2936,88861
+#define CNL_SAVE_DEFINEDEF(\7f2938,88905
+#define CNL(\7f2947,89117
+make_C_tag \7f2960,89375
+C_entries \7f2986,90194
+default_C_entries \7f3833,110156
+plain_C_entries \7f3840,110276
+Cplusplus_entries \7f3847,110364
+Cjava_entries \7f3854,110460
+Cstar_entries \7f3861,110550
+Yacc_entries \7f3868,110642
+#define LOOP_ON_INPUT_LINES(\7f3875,110720
+#define LOOKING_AT(\7f3884,111056
+#define LOOKING_AT_NOCASE(\7f3891,111461
+just_read_file \7f3901,111861
+static void F_takeprec \7f3910,111965
+static void F_getit \7f3911,111996
+F_takeprec \7f3914,112039
+F_getit \7f3937,112366
+Fortran_functions \7f3961,112840
+Ada_getit \7f4052,114669
+Ada_funcs \7f4115,116044
+Asm_labels \7f4228,118582
+Perl_functions \7f4261,119549
+Python_functions \7f4357,122057
+PHP_functions \7f4387,122684
+Cobol_paragraphs \7f4466,124471
+Makefile_targets \7f4494,125029
+Pascal_functions \7f4529,125950
+static void L_getit \7f4706,130277
+L_getit \7f4709,130318
+Lisp_functions \7f4725,130664
+Lua_functions \7f4785,131850
+PS_functions \7f4811,132385
+Forth_words \7f4841,133053
+Scheme_functions \7f4877,134092
+static linebuffer *TEX_toktab \7fTEX_toktab\ 14908,134781
+static const char *TEX_defenv \7fTEX_defenv\ 14912,134974
+static void TEX_mode \7f4917,135172
+static void TEX_decode_env \7f4918,135203
+static char TEX_esc \7f4920,135261
+static char TEX_opgrp \7f4921,135289
+static char TEX_clgrp \7f4922,135318
+TeX_commands \7f4928,135395
+#define TEX_LESC \7f4986,136652
+#define TEX_SESC \7f4987,136674
+TEX_mode \7f4992,136804
+TEX_decode_env \7f5026,137509
+Texinfo_nodes \7f5071,138554
+HTML_labels \7f5094,139013
+static size_t prolog_pr \7f5214,142192
+static void prolog_skip_comment \7f5215,142234
+static size_t prolog_atom \7f5216,142290
+Prolog_functions \7f5219,142347
+prolog_skip_comment \7f5255,143128
+prolog_pr \7f5281,143736
+prolog_atom \7f5319,144628
+static int erlang_func \7f5374,145540
+static void erlang_attribute \7f5375,145581
+static int erlang_atom \7f5376,145620
+Erlang_functions \7f5379,145666
+erlang_func \7f5438,146965
+erlang_attribute \7f5476,147642
+erlang_atom \7f5496,148061
+static char *scan_separators \7fscan_separators\ 15520,148487
+static void add_regex \7f5521,148526
+static char *substitute \7fsubstitute\ 15522,148570
+scan_separators \7f5534,149080
+analyze_regex \7f5586,150460
+add_regex \7f5654,152050
+substitute \7f5767,154797
+free_regexps \7f5814,155837
+regex_tag_multiline \7f5836,156291
+nocase_tail \7f5913,158263
+get_tag \7f5928,158519
+readline_internal \7f5959,159455
+readline \7f6037,161296
+savestr \7f6230,167243
+savenstr \7f6240,167473
+skip_spaces \7f6249,167679
+skip_non_spaces \7f6258,167833
+skip_name \7f6267,167983
+fatal \7f6277,168156
+pfatal \7f6284,168253
+suggest_asking_for_help \7f6291,168332
+error \7f6300,168554
+concat \7f6313,168846
+etags_getcwd \7f6329,169259
+relative_filename \7f6350,169725
+absolute_filename \7f6389,170751
+absolute_dirname \7f6453,172416
+filename_is_absolute \7f6472,172845
+canonicalize_filename \7f6484,173096
+# define ISUPPER(\7f6491,173235
+linebuffer_init \7f6514,173656
+linebuffer_setlen \7f6524,173887
+xmalloc \7f6536,174148
+xrealloc \7f6545,174314
+\f
+c-src/exit.c,99
+ size_t n;\7f28,967
+ void EXFUN((*fn[\7ffn\ 129,981
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/exit.strange_suffix,99
+ size_t n;\7f28,967
+ void EXFUN((*fn[\7ffn\ 129,981
+ } __libc_atexit;\7f30,1017
+DEFUN(exit,\7f38,1258
+\f
+c-src/sysdep.h,491
+#define ENTRY(\7f21,870
+#define PSEUDO(\7f26,977
+ movl $SYS_##syscall_nam\7f$SYS_##syscall_na\ 131,1137
+ movl $SYS_##syscall_name, %eax;\7feax\ 131,1137
+ int $0x80;\7f32,1185
+ test %eax,\7feax\ 133,1215
+ test %eax, %eax;\7feax\ 133,1215
+ jl syscall_error;\7f34,1250
+#define XCHG_0 \7f47,1567
+#define XCHG_1 \7f48,1611
+#define XCHG_2 \7f49,1653
+#define XCHG_3 \7f50,1696
+#define XCHG_4 \7f51,1739
+#define XCHG_5 \7f52,1782
+#define r0 \7f54,1826
+#define r1 \7f55,1880
+#define scratch \7f56,1937
+#define MOVE(\7f57,2006
+\f
+c-src/tab.c,196
+static int count_words(\7f15,263
+static char *get_word(\7fget_word\ 135,553
+void tab_free(\7f59,966
+char **tab_fill(\7ftab_fill\ 170,1129
+int tab_delete_first(\7f91,1638
+int tab_count_words(\7f103,1820
+\f
+c-src/dostorture.c,198
+(*tag1 \7ftag1\ 118,468
+#define notag2 \7f26,577
+(*tag2 \7ftag2\ 129,657
+(*tag3 \7ftag3\ 139,809
+#define notag4 \7f45,904
+(*tag4 \7ftag4\ 148,1001
+tag5 \7f57,1136
+tag6 \7f66,1272
+int pp1(\7f74,1389
+pp2\7f87,1504
+pp3(\7f100,1616
+\f
+c-src/emacs/src/gmalloc.c,7311
+#define USE_PTHREAD\7f25,1002
+#undef get_current_dir_name\7f33,1126
+extern void emacs_abort \7f47,1305
+#undef malloc\7f64,2110
+#undef realloc\7f65,2124
+#undef calloc\7f66,2139
+#undef free\7f67,2153
+#define malloc \7f68,2165
+#define realloc \7f69,2188
+#define calloc \7f70,2213
+#define aligned_alloc \7f71,2236
+#define free \7f72,2273
+extern void *bss_sbrk \7fbss_sbrk\ 176,2335
+extern int bss_sbrk_did_unexec;\7f77,2375
+extern char bss_sbrk_buffer[\7fbss_sbrk_buffer\ 178,2407
+extern void *bss_sbrk_buffer_end;\7fbss_sbrk_buffer_end\ 179,2438
+#define DUMPED \7f80,2472
+#define ALLOCATED_BEFORE_DUMPING(\7f81,2507
+extern void *malloc \7fmalloc\ 194,2718
+#define INT_BIT \7f124,3934
+#define BLOCKLOG \7f125,3977
+#define BLOCKSIZE \7f126,4018
+#define BLOCKIFY(\7f127,4052
+#define HEAP \7f131,4215
+#define FINAL_FREE_BLOCKS \7f135,4391
+ int type;\7f145,4676
+ size_t nfree;\7f150,4720
+ size_t first;\7f151,4777
+ } frag;\7f152,4834
+ ptrdiff_t size;\7f156,5055
+ } info;\7f157,5076
+ } busy;\7f158,5087
+ size_t size;\7f163,5215
+ size_t next;\7f164,5272
+ size_t prev;\7f165,5321
+ } free;\7f166,5374
+ } malloc_info;\7f167,5388
+extern char *_heapbase;\7f_heapbase\ 1170,5449
+extern malloc_info *_heapinfo;\7f_heapinfo\ 1173,5541
+#define BLOCK(\7f176,5620
+#define ADDRESS(\7f177,5682
+extern size_t _heapindex;\7f180,5797
+extern size_t _heaplimit;\7f183,5866
+struct list\7f186,5939
+ struct list *next;\7fnext\ 1188,5955
+ struct list *prev;\7fprev\ 1189,5978
+extern struct list _fraghead[\7f_fraghead\ 1193,6056
+struct alignlist\7f196,6153
+ struct alignlist *next;\7fnext\ 1198,6174
+ void *aligned;\7faligned\ 1199,6202
+ void *exact;\7fexact\ 1200,6270
+extern struct alignlist *_aligned_blocks;\7f_aligned_blocks\ 1202,6334
+extern size_t _chunks_used;\7f205,6401
+extern size_t _bytes_used;\7f206,6429
+extern size_t _chunks_free;\7f207,6456
+extern size_t _bytes_free;\7f208,6484
+extern void *_malloc_internal \7f_malloc_internal\ 1213,6673
+extern void *_realloc_internal \7f_realloc_internal\ 1214,6713
+extern void _free_internal \7f215,6762
+extern void *_malloc_internal_nolock \7f_malloc_internal_nolock\ 1216,6799
+extern void *_realloc_internal_nolock \7f_realloc_internal_nolock\ 1217,6846
+extern void _free_internal_nolock \7f218,6902
+extern pthread_mutex_t _malloc_mutex,\7f221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;\7f221,6966
+extern int _malloc_thread_enabled_p;\7f222,7027
+#define LOCK(\7f223,7064
+#define UNLOCK(\7f228,7195
+#define LOCK_ALIGNED_BLOCKS(\7f233,7329
+#define UNLOCK_ALIGNED_BLOCKS(\7f238,7484
+#define LOCK(\7f244,7649
+#define UNLOCK(\7f245,7664
+#define LOCK_ALIGNED_BLOCKS(\7f246,7681
+#define UNLOCK_ALIGNED_BLOCKS(\7f247,7711
+extern void *malloc_find_object_address \7fmalloc_find_object_address\ 1252,7865
+extern void *(*__morecore)\7f__morecore\ 1256,8021
+extern void *__default_morecore \7f__default_morecore\ 1259,8105
+extern void (*__after_morecore_hook)\7f__after_morecore_hook\ 1263,8269
+extern size_t __malloc_extra_blocks;\7f267,8442
+extern int __malloc_initialized;\7f270,8552
+extern int __malloc_initialize \7f272,8646
+extern void (*__malloc_initialize_hook)\7f__malloc_initialize_hook\ 1275,8723
+extern void (*__free_hook)\7f__free_hook\ 1276,8771
+extern void *(*__malloc_hook)\7f__malloc_hook\ 1277,8811
+extern void *(*__realloc_hook)\7f__realloc_hook\ 1278,8856
+extern void *(*__memalign_hook)\7f__memalign_hook\ 1279,8913
+enum mcheck_status\7f283,9092
+ MCHECK_DISABLED \7f285,9115
+ MCHECK_OK,\7f286,9187
+ MCHECK_FREE,\7f287,9226
+ MCHECK_HEAD,\7f288,9270
+ MCHECK_TAIL \7f289,9334
+extern int mcheck \7f296,9701
+extern enum mcheck_status mprobe \7f301,9952
+extern void mtrace \7f304,10055
+extern void muntrace \7f305,10082
+struct mstats\7f308,10153
+ size_t bytes_total;\7f310,10171
+ size_t chunks_used;\7f311,10225
+ size_t bytes_used;\7f312,10285
+ size_t chunks_free;\7f313,10351
+ size_t bytes_free;\7f314,10406
+extern struct mstats mstats \7f318,10518
+extern void memory_warnings \7f321,10625
+void *(*__malloc_hook)\7f__malloc_hook\ 1352,11743
+char *_heapbase;\7f_heapbase\ 1355,11829
+malloc_info *_heapinfo;\7f_heapinfo\ 1358,11927
+static size_t heapsize;\7f361,11983
+size_t _heapindex;\7f364,12047
+size_t _heaplimit;\7f367,12109
+struct list _fraghead[\7f_fraghead\ 1370,12171
+size_t _chunks_used;\7f373,12229
+size_t _bytes_used;\7f374,12250
+size_t _chunks_free;\7f375,12270
+size_t _bytes_free;\7f376,12291
+int __malloc_initialized;\7f379,12340
+size_t __malloc_extra_blocks;\7f381,12367
+void (*__malloc_initialize_hook)\7f__malloc_initialize_hook\ 1383,12398
+void (*__after_morecore_hook)\7f__after_morecore_hook\ 1384,12439
+static int state_protected_p;\7f400,12912
+static size_t last_state_size;\7f401,12942
+static malloc_info *last_heapinfo;\7flast_heapinfo\ 1402,12973
+protect_malloc_state \7f405,13014
+#define PROTECT_MALLOC_STATE(\7f426,13627
+#define PROTECT_MALLOC_STATE(\7f429,13697
+align \7f435,13794
+get_contiguous_space \7f466,14616
+register_heapinfo \7f497,15325
+pthread_mutex_t _malloc_mutex \7f517,15879
+pthread_mutex_t _aligned_blocks_mutex \7f518,15938
+int _malloc_thread_enabled_p;\7f519,16005
+malloc_atfork_handler_prepare \7f522,16048
+malloc_atfork_handler_parent \7f529,16139
+malloc_atfork_handler_child \7f536,16233
+malloc_enable_thread \7f544,16375
+malloc_initialize_1 \7f563,16961
+__malloc_initialize \7f594,17793
+static int morecore_recursing;\7f604,17926
+morecore_nolock \7f609,18066
+_malloc_internal_nolock \7f722,21584
+_malloc_internal \7f920,28102
+malloc \7f932,28247
+extern void *_malloc \7f_malloc\ 1956,29033
+extern void _free \7f957,29064
+extern void *_realloc \7f_realloc\ 1958,29092
+_malloc \7f961,29140
+_free \7f967,29196
+_realloc \7f973,29240
+void (*__free_hook)\7f__free_hook\ 11001,30259
+struct alignlist *_aligned_blocks \7f_aligned_blocks\ 11004,30345
+_free_internal_nolock \7f1009,30474
+_free_internal \7f1255,38476
+free \7f1265,38603
+weak_alias \7f1277,38799
+#define min(\7f1306,39813
+void *(*__realloc_hook)\7f__realloc_hook\ 11310,39898
+_realloc_internal_nolock \7f1319,40309
+_realloc_internal \7f1435,43563
+realloc \7f1447,43726
+calloc \7f1478,44894
+#define __sbrk \7f1513,46042
+extern void *__sbrk \7f__sbrk\ 11518,46247
+__default_morecore \7f1525,46511
+void *(*__memalign_hook)\7f__memalign_hook\ 11554,47456
+aligned_alloc \7f1557,47522
+memalign \7f1647,49704
+posix_memalign \7f1656,49909
+extern void *valloc \7fvalloc\ 11695,51140
+extern int getpagesize \7f1700,51278
+static size_t pagesize;\7f1703,51317
+valloc \7f1706,51349
+#undef malloc\7f1715,51490
+#undef realloc\7f1716,51504
+#undef calloc\7f1717,51519
+#undef aligned_alloc\7f1718,51533
+#undef free\7f1719,51554
+extern void *malloc \7fmalloc\ 11722,51609
+extern void *realloc \7frealloc\ 11723,51644
+extern void *calloc \7fcalloc\ 11724,51691
+extern void free \7f1725,51740
+extern void *aligned_alloc \7faligned_alloc\ 11727,51796
+extern int posix_memalign \7f1729,51890
+hybrid_malloc \7f1736,52083
+hybrid_calloc \7f1744,52188
+hybrid_free \7f1752,52319
+hybrid_aligned_alloc \7f1765,52626
+hybrid_realloc \7f1780,52984
+char *gget_current_dir_name \7fgget_current_dir_name\ 11808,53753
+hybrid_get_current_dir_name \7f1811,53797
+static void (*old_free_hook)\7fold_free_hook\ 11846,54921
+static void *(*old_malloc_hook)\7fold_malloc_hook\ 11847,54963
+static void *(*old_realloc_hook)\7fold_realloc_hook\ 11848,55010
+static void (*abortfunc)\7fabortfunc\ 11851,55124
+#define MAGICWORD \7f1854,55206
+#define MAGICFREE \7f1855,55261
+#define MAGICBYTE \7f1856,55316
+#define MALLOCFLOOD \7f1857,55348
+#define FREEFLOOD \7f1858,55382
+struct hdr\7f1860,55415
+ size_t size;\7f1862,55430
+ size_t magic;\7f1863,55484
+checkhdr \7f1867,55581
+freehook \7f1891,56022
+mallochook \7f1927,56804
+reallochook \7f1944,57143
+mabort \7f1978,57901
+static int mcheck_used \7f2012,58586
+mcheck \7f2015,58619
+mprobe \7f2035,59138
+\f
+c-src/emacs/src/regex.h,5300
+#define _REGEX_H \7f21,836
+typedef unsigned long reg_syntax_t;\7f43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS \7f47,1749
+#define RE_BK_PLUS_QM \7f52,1969
+#define RE_CHAR_CLASSES \7f58,2298
+#define RE_CONTEXT_INDEP_ANCHORS \7f72,3032
+#define RE_CONTEXT_INDEP_OPS \7f80,3458
+#define RE_CONTEXT_INVALID_OPS \7f84,3658
+#define RE_DOT_NEWLINE \7f88,3801
+#define RE_DOT_NOT_NULL \7f92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE \7f96,4082
+#define RE_INTERVALS \7f101,4292
+#define RE_LIMITED_OPS \7f105,4441
+#define RE_NEWLINE_ALT \7f109,4583
+#define RE_NO_BK_BRACES \7f114,4773
+#define RE_NO_BK_PARENS \7f118,4964
+#define RE_NO_BK_REFS \7f122,5120
+#define RE_NO_BK_VBAR \7f126,5316
+#define RE_NO_EMPTY_RANGES \7f132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD \7f136,5766
+#define RE_NO_POSIX_BACKTRACKING \7f140,5937
+#define RE_NO_GNU_OPS \7f144,6133
+#define RE_FRUGAL \7f147,6253
+#define RE_SHY_GROUPS \7f150,6360
+#define RE_NO_NEWLINE_ANCHOR \7f153,6468
+#define RE_DEBUG \7f161,6884
+extern reg_syntax_t re_syntax_options;\7f167,7170
+extern Lisp_Object re_match_object;\7f172,7344
+extern size_t re_max_failures;\7f176,7454
+#define RE_SYNTAX_EMACS \7f183,7684
+#define RE_SYNTAX_AWK \7f186,7780
+#define RE_SYNTAX_GNU_AWK \7f193,8084
+#define RE_SYNTAX_POSIX_AWK \7f197,8255
+#define RE_SYNTAX_GREP \7f201,8393
+#define RE_SYNTAX_EGREP \7f206,8549
+#define RE_SYNTAX_POSIX_EGREP \7f212,8765
+#define RE_SYNTAX_ED \7f216,8910
+#define RE_SYNTAX_SED \7f218,8954
+#define _RE_SYNTAX_POSIX_COMMON \7f221,9072
+#define RE_SYNTAX_POSIX_BASIC \7f225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \7f231,9508
+#define RE_SYNTAX_POSIX_EXTENDED \7f234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \7f242,9967
+# undef RE_DUP_MAX\7f253,10454
+#define RE_DUP_MAX \7f256,10540
+#define REG_EXTENDED \7f263,10762
+#define REG_ICASE \7f267,10886
+#define REG_NEWLINE \7f272,11070
+#define REG_NOSUB \7f276,11248
+#define REG_NOTBOL \7f286,11614
+#define REG_NOTEOL \7f289,11688
+ REG_ENOSYS \7f297,11859
+ REG_NOERROR \7f300,11941
+ REG_NOMATCH,\7f301,11976
+ REG_BADPAT,\7f305,12123
+ REG_ECOLLATE,\7f306,12162
+ REG_ECTYPE,\7f307,12203
+ REG_EESCAPE,\7f308,12255
+ REG_ESUBREG,\7f309,12298
+ REG_EBRACK,\7f310,12345
+ REG_EPAREN,\7f311,12391
+ REG_EBRACE,\7f312,12436
+ REG_BADBR,\7f313,12472
+ REG_ERANGE,\7f314,12519
+ REG_ESPACE,\7f315,12560
+ REG_BADRPT,\7f316,12601
+ REG_EEND,\7f319,12693
+ REG_ESIZE,\7f320,12728
+ REG_ERPAREN,\7f321,12790
+ REG_ERANGEX \7f322,12859
+} reg_errcode_t;\7f323,12911
+# define RE_TRANSLATE_TYPE \7f332,13273
+struct re_pattern_buffer\7f335,13315
+ unsigned char *buffer;\7fbuffer\ 1341,13538
+ size_t allocated;\7f344,13614
+ size_t used;\7f347,13686
+ reg_syntax_t syntax;\7f350,13769
+ char *fastmap;\7ffastmap\ 1355,13975
+ RE_TRANSLATE_TYPE translate;\7f361,14241
+ size_t re_nsub;\7f364,14329
+ unsigned can_be_null \7f370,14624
+#define REGS_UNALLOCATED \7f376,14889
+#define REGS_REALLOCATE \7f377,14916
+#define REGS_FIXED \7f378,14942
+ unsigned regs_allocated \7f379,14963
+ unsigned fastmap_accurate \7f383,15136
+ unsigned no_sub \7f387,15267
+ unsigned not_bol \7f391,15398
+ unsigned not_eol \7f394,15475
+ unsigned used_syntax \7f398,15655
+ unsigned multibyte \7f403,15805
+ unsigned target_multibyte \7f407,15941
+ int charset_unibyte;\7f410,16032
+typedef struct re_pattern_buffer regex_t;\7f416,16098
+typedef ssize_t regoff_t;\7f423,16492
+struct re_registers\7f428,16652
+ unsigned num_regs;\7f430,16674
+ regoff_t *start;\7fstart\ 1431,16695
+ regoff_t *end;\7fend\ 1432,16714
+# define RE_NREGS \7f440,16942
+ regoff_t rm_so;\7f449,17159
+ regoff_t rm_eo;\7f450,17239
+} regmatch_t;\7f451,17317
+extern reg_syntax_t re_set_syntax \7f457,17512
+extern const char *re_compile_pattern \7fre_compile_pattern\ 1462,17776
+extern int re_compile_fastmap \7f469,18058
+extern regoff_t re_search \7f477,18466
+extern regoff_t re_search_2 \7f485,18781
+extern regoff_t re_match \7f495,19177
+extern regoff_t re_match_2 \7f501,19407
+extern void re_set_registers \7f520,20197
+extern char *re_comp \7fre_comp\ 1528,20469
+extern int re_exec \7f529,20506
+# define _Restrict_ \7f540,20886
+# define _Restrict_ \7f542,20979
+# define _Restrict_\7f544,21018
+# define _Restrict_arr_ \7f555,21418
+# define _Restrict_arr_\7f557,21461
+extern reg_errcode_t regcomp \7f562,21530
+extern reg_errcode_t regexec \7f566,21656
+extern size_t regerror \7f571,21850
+extern void regfree \7f574,21956
+# define CHAR_CLASS_MAX_LENGTH \7f593,22470
+# define CHAR_CLASS_MAX_LENGTH \7f597,22648
+typedef wctype_t re_wctype_t;\7f599,22692
+typedef wchar_t re_wchar_t;\7f600,22722
+# define re_wctype \7f601,22750
+# define re_iswctype \7f602,22776
+# define re_wctype_to_bit(\7f603,22806
+# define CHAR_CLASS_MAX_LENGTH \7f605,22844
+# define btowc(\7f606,22906
+typedef enum { RECC_ERROR \7f609,22953
+ RECC_ALNUM,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA,\7f610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,\7f610,22984
+ RECC_GRAPH,\7f611,23027
+ RECC_GRAPH, RECC_PRINT,\7f611,23027
+ RECC_LOWER,\7f612,23059
+ RECC_LOWER, RECC_UPPER,\7f612,23059
+ RECC_PUNCT,\7f613,23091
+ RECC_PUNCT, RECC_CNTRL,\7f613,23091
+ RECC_DIGIT,\7f614,23123
+ RECC_DIGIT, RECC_XDIGIT,\7f614,23123
+ RECC_BLANK,\7f615,23156
+ RECC_BLANK, RECC_SPACE,\7f615,23156
+ RECC_MULTIBYTE,\7f616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,\7f616,23188
+ RECC_ASCII,\7f617,23227
+ RECC_ASCII, RECC_UNIBYTE\7f617,23227
+} re_wctype_t;\7f618,23260
+extern char re_iswctype \7f620,23276
+extern re_wctype_t re_wctype \7f621,23329
+typedef int re_wchar_t;\7f623,23387
+extern void re_set_whitespace_regexp \7f625,23412
+\f
+c-src/emacs/src/keyboard.c,23269
+volatile int interrupt_input_blocked;\7f76,1808
+volatile bool pending_signals;\7f80,1944
+#define KBD_BUFFER_SIZE \7f82,1976
+KBOARD *initial_kboard;\7finitial_kboard\ 184,2006
+KBOARD *current_kboard;\7fcurrent_kboard\ 185,2030
+static KBOARD *all_kboards;\7fall_kboards\ 186,2054
+static bool single_kboard;\7f89,2154
+#define NUM_RECENT_KEYS \7f91,2182
+static int recent_keys_index;\7f94,2269
+static int total_keys;\7f97,2357
+static Lisp_Object recent_keys;\7f100,2443
+Lisp_Object this_command_keys;\7f107,2777
+ptrdiff_t this_command_key_count;\7f108,2808
+static bool this_command_key_count_reset;\7f112,2922
+static Lisp_Object raw_keybuf;\7f116,3074
+static int raw_keybuf_count;\7f117,3105
+#define GROW_RAW_KEYBUF \7f119,3135
+static ptrdiff_t this_single_command_key_start;\7f125,3350
+static ptrdiff_t before_command_key_count;\7f129,3498
+static ptrdiff_t before_command_echo_length;\7f130,3541
+sigjmp_buf return_to_command_loop;\7f135,3677
+static Lisp_Object recover_top_level_message;\7f138,3791
+static Lisp_Object regular_top_level_message;\7f143,3930
+static sys_jmp_buf getcjmp;\7f147,4031
+bool waiting_for_input;\7f150,4095
+static bool echoing;\7f154,4186
+static struct kboard *ok_to_echo_at_next_pause;\7fok_to_echo_at_next_pause\ 1159,4328
+struct kboard *echo_kboard;\7fecho_kboard\ 1166,4632
+Lisp_Object echo_message_buffer;\7f171,4744
+bool immediate_quit;\7f174,4837
+int quit_char;\7f192,5623
+EMACS_INT command_loop_level;\7f195,5680
+Lisp_Object unread_switch_frame;\7f204,6108
+static ptrdiff_t last_non_minibuf_size;\7f207,6216
+uintmax_t num_input_events;\7f210,6334
+static EMACS_INT last_auto_save;\7f214,6428
+static ptrdiff_t last_point_position;\7f217,6523
+Lisp_Object internal_last_event_frame;\7f228,7028
+static Lisp_Object read_key_sequence_cmd;\7f232,7168
+static Lisp_Object read_key_sequence_remapped;\7f233,7210
+static FILE *dribble;\7fdribble\ 1236,7310
+bool input_pending;\7f239,7368
+static bool input_was_pending;\7f287,10022
+static struct input_event kbd_buffer[\7fkbd_buffer\ 1291,10107
+static struct input_event *kbd_fetch_ptr;\7fkbd_fetch_ptr\ 1297,10386
+static struct input_event * volatile kbd_store_ptr;\7f302,10601
+static void recursive_edit_unwind \7f313,11088
+static Lisp_Object command_loop \7f314,11144
+static void echo_now \7f316,11185
+static ptrdiff_t echo_length \7f317,11214
+unsigned timers_run;\7f320,11296
+struct timespec *input_available_clear_time;\7finput_available_clear_time\ 1324,11408
+bool interrupt_input;\7f328,11573
+bool interrupts_deferred;\7f331,11671
+static struct timespec timer_idleness_start_time;\7f335,11746
+static struct timespec timer_last_idleness_start_time;\7f340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW \7f346,12046
+#define READABLE_EVENTS_FILTER_EVENTS \7f347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES \7f348,12142
+static void (*keyboard_init_hook)\7fkeyboard_init_hook\ 1351,12264
+static bool get_input_pending \7f353,12307
+static bool readable_events \7f354,12344
+static Lisp_Object read_char_x_menu_prompt \7f355,12379
+static Lisp_Object read_char_minibuf_menu_prompt \7f357,12502
+static Lisp_Object make_lispy_event \7f358,12571
+static Lisp_Object make_lispy_movement \7f359,12631
+static Lisp_Object modify_event_symbol \7f363,12840
+static Lisp_Object make_lispy_switch_frame \7f366,13050
+static Lisp_Object make_lispy_focus_in \7f367,13108
+static Lisp_Object make_lispy_focus_out \7f369,13188
+static bool help_char_p \7f371,13275
+static void save_getcjmp \7f372,13314
+static void restore_getcjmp \7f373,13354
+static Lisp_Object apply_modifiers \7f374,13397
+static void clear_event \7f375,13452
+static void restore_kboard_configuration \7f376,13500
+static void deliver_input_available_signal \7f378,13568
+static void handle_interrupt \7f380,13631
+static _Noreturn void quit_throw_to_read_char \7f381,13668
+static void process_special_events \7f382,13722
+static void timer_start_idle \7f383,13765
+static void timer_stop_idle \7f384,13802
+static void timer_resume_idle \7f385,13838
+static void deliver_user_signal \7f386,13876
+static char *find_user_signal_name \7ffind_user_signal_name\ 1387,13915
+static void store_user_signal_events \7f388,13957
+kset_echo_string \7f392,14088
+kset_kbd_queue \7f397,14184
+kset_keyboard_translate_table \7f402,14276
+kset_last_prefix_arg \7f407,14399
+kset_last_repeatable_command \7f412,14504
+kset_local_function_key_map \7f417,14625
+kset_overriding_terminal_local_map \7f422,14744
+kset_real_last_command \7f427,14877
+kset_system_key_syms \7f432,14986
+echo_add_key \7f443,15249
+echo_char \7f527,17527
+echo_dash \7f541,17813
+echo_now \7f586,19140
+cancel_echoing \7f635,20614
+echo_length \7f648,20922
+echo_truncate \7f660,21253
+add_command_key \7f672,21582
+recursive_edit_1 \7f697,22406
+record_auto_save \7f742,23848
+force_auto_save_soon \7f751,24016
+DEFUN ("recursive-edit", Frecursive_edit,\7frecursive-edit\ 1759,24137
+recursive_edit_unwind \7f804,25747
+any_kboard_state \7f817,26013
+single_kboard_state \7f838,26665
+not_single_kboard_state \7f848,26803
+struct kboard_stack\7f858,27065
+ KBOARD *kboard;\7fkboard\ 1860,27087
+ struct kboard_stack *next;\7fnext\ 1861,27105
+static struct kboard_stack *kboard_stack;\7fkboard_stack\ 1864,27138
+push_kboard \7f867,27186
+pop_kboard \7f879,27375
+temporarily_switch_to_single_kboard \7f914,28263
+record_single_kboard_state \7f943,29437
+restore_kboard_configuration \7f952,29621
+cmd_error \7f970,30077
+cmd_error_internal \7f1024,31510
+DEFUN ("command-error-default-function", Fcommand_error_default_function,\7fcommand-error-default-function\ 11043,32030
+static Lisp_Object command_loop_2 \7f1086,33637
+static Lisp_Object top_level_1 \7f1087,33686
+command_loop \7f1094,33916
+command_loop_2 \7f1134,35135
+top_level_2 \7f1146,35339
+top_level_1 \7f1152,35417
+DEFUN ("top-level", Ftop_level,\7ftop-level\ 11164,35787
+user_error \7f1183,36288
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit,\7fexit-recursive-edit\ 11189,36429
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit,\7fabort-recursive-edit\ 11201,36819
+tracking_off \7f1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,\7ftrack-mouse\ 11234,37816
+bool ignore_mouse_drag_p;\7f1256,38392
+some_mouse_moved \7f1259,38441
+static int read_key_sequence \7f1282,38799
+static void adjust_point_for_property \7f1284,38917
+Lisp_Object last_undo_boundary;\7f1287,39032
+command_loop_1 \7f1294,39273
+read_menu_command \7f1649,50889
+adjust_point_for_property \7f1678,51617
+safe_run_hooks_1 \7f1831,57339
+safe_run_hooks_error \7f1841,57569
+safe_run_hook_funcall \7f1878,58576
+safe_run_hooks \7f1893,59058
+int poll_suppress_count;\7f1908,59397
+static struct atimer *poll_timer;\7fpoll_timer\ 11915,59487
+poll_for_input_1 \7f1919,59589
+poll_for_input \7f1930,59789
+start_polling \7f1942,60053
+input_polling_used \7f1979,61091
+stop_polling \7f1994,61390
+set_poll_suppress_count \7f2009,61759
+bind_polling_period \7f2029,62141
+make_ctrl_char \7f2048,62492
+show_help_echo \7f2113,64455
+static Lisp_Object kbd_buffer_get_event \7f2152,65484
+static void record_char \7f2154,65596
+static Lisp_Object help_form_saved_window_configs;\7f2156,65638
+read_char_help_form_unwind \7f2158,65701
+#define STOP_POLLING \7f2166,65959
+#define RESUME_POLLING \7f2170,66084
+read_event_from_main_queue \7f2175,66229
+read_decoded_event_from_main_queue \7f2249,68417
+#define MAX_ENCODED_BYTES \7f2254,68664
+echo_keystrokes_p \7f2342,71556
+read_char \7f2376,72848
+record_menu_key \7f3225,98949
+help_char_p \7f3258,99674
+record_char \7f3273,99953
+save_getcjmp \7f3412,104235
+restore_getcjmp \7f3418,104326
+readable_events \7f3430,104697
+int stop_character EXTERNALLY_VISIBLE;\7f3497,106437
+event_to_kboard \7f3500,106493
+kbd_buffer_nr_stored \7f3522,107142
+kbd_buffer_store_event \7f3534,107483
+kbd_buffer_store_event_hold \7f3550,108025
+kbd_buffer_unget_event \7f3684,111617
+#define INPUT_EVENT_POS_MAX \7f3698,112018
+#define INPUT_EVENT_POS_MIN \7f3701,112147
+position_to_Time \7f3706,112287
+Time_to_position \7f3716,112514
+gen_help_event \7f3738,113171
+kbd_buffer_store_help_event \7f3756,113611
+discard_mouse_events \7f3773,113976
+kbd_buffer_events_waiting \7f3803,114711
+clear_event \7f3823,115068
+kbd_buffer_get_event \7f3836,115408
+process_special_events \7f4258,127881
+swallow_events \7f4322,129705
+timer_start_idle \7f4339,130098
+timer_stop_idle \7f4355,130576
+timer_resume_idle \7f4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;\7f4372,130912
+Lisp_Object pending_funcalls;\7f4377,131172
+decode_timer \7f4381,131293
+timer_check_2 \7f4414,132246
+timer_check \7f4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,\7fcurrent-idle-time\ 14607,137662
+static Lisp_Object accent_key_syms;\7f4625,138239
+static Lisp_Object func_key_syms;\7f4626,138275
+static Lisp_Object mouse_syms;\7f4627,138309
+static Lisp_Object wheel_syms;\7f4628,138340
+static Lisp_Object drag_n_drop_syms;\7f4629,138371
+static const int lispy_accent_codes[\7flispy_accent_codes\ 14634,138516
+static const char *const lispy_accent_keys[\7flispy_accent_keys\ 14741,139878
+#define FUNCTION_KEY_OFFSET \7f4766,140314
+const char *const lispy_function_keys[\7flispy_function_keys\ 14768,140347
+static const char *const lispy_multimedia_keys[\7flispy_multimedia_keys\ 14962,148901
+static const char *const lispy_kana_keys[\7flispy_kana_keys\ 15026,150135
+#define FUNCTION_KEY_OFFSET \7f5061,151751
+static const char *const lispy_function_keys[\7flispy_function_keys\ 15065,151894
+#define ISO_FUNCTION_KEY_OFFSET \7f5149,154429
+static const char *const iso_lispy_function_keys[\7fiso_lispy_function_keys\ 15151,154469
+static Lisp_Object Vlispy_mouse_stem;\7f5172,155328
+static const char *const lispy_wheel_names[\7flispy_wheel_names\ 15174,155367
+static const char *const lispy_drag_n_drop_names[\7flispy_drag_n_drop_names\ 15181,155619
+static short const scroll_bar_parts[\7fscroll_bar_parts\ 15189,155885
+static Lisp_Object button_down_location;\7f5210,156910
+static int last_mouse_button;\7f5215,157065
+static int last_mouse_x;\7f5216,157095
+static int last_mouse_y;\7f5217,157120
+static Time button_down_time;\7f5218,157145
+static int double_click_count;\7f5222,157229
+make_lispy_position \7f5228,157390
+toolkit_menubar_in_use \7f5456,163953
+make_scroll_bar_position \7f5469,164321
+make_lispy_event \7f5485,164967
+make_lispy_movement \7f6104,183531
+make_lispy_switch_frame \7f6131,184262
+make_lispy_focus_in \7f6137,184369
+make_lispy_focus_out \7f6145,184495
+parse_modifiers_uncached \7f6163,184945
+#define SINGLE_LETTER_MOD(\7f6185,185465
+#undef SINGLE_LETTER_MOD\7f6212,185906
+#define MULTI_LETTER_MOD(\7f6214,185932
+#undef MULTI_LETTER_MOD\7f6231,186400
+apply_modifiers_uncached \7f6273,187574
+static const char *const modifier_names[\7fmodifier_names\ 16319,189193
+#define NUM_MOD_NAMES \7f6325,189399
+static Lisp_Object modifier_symbols;\7f6327,189449
+lispy_modifier_list \7f6331,189586
+#define KEY_TO_CHAR(\7f6353,190252
+parse_modifiers \7f6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,\7fevent-symbol-parse-modifiers\ 16399,191517
+apply_modifiers \7f6422,192391
+reorder_modifiers \7f6491,194720
+modify_event_symbol \7f6536,196528
+DEFUN ("event-convert-list", Fevent_convert_list,\7fevent-convert-list\ 16628,199244
+parse_solitary_modifier \7f6695,201135
+#define SINGLE_LETTER_MOD(\7f6701,201258
+#define MULTI_LETTER_MOD(\7f6705,201343
+#undef SINGLE_LETTER_MOD\7f6763,202641
+#undef MULTI_LETTER_MOD\7f6764,202666
+lucid_event_type_list_p \7f6775,202889
+get_input_pending \7f6814,203960
+record_asynch_buffer_change \7f6834,204579
+gobble_input \7f6872,205702
+tty_read_avail_input \7f6967,208310
+handle_async_input \7f7149,214039
+process_pending_signals \7f7165,214359
+unblock_input_to \7f7177,214645
+unblock_input \7f7200,215277
+totally_unblock_input \7f7209,215445
+handle_input_available_signal \7f7217,215529
+deliver_input_available_signal \7f7226,215700
+struct user_signal_info\7f7235,215865
+ int sig;\7f7238,215915
+ char *name;\7fname\ 17241,215956
+ int npending;\7f7244,216007
+ struct user_signal_info *next;\7fnext\ 17246,216024
+static struct user_signal_info *user_signals \7fuser_signals\ 17250,216090
+add_user_signal \7f7253,216149
+handle_user_signal \7f7275,216598
+deliver_user_signal \7f7316,217558
+find_user_signal_name \7f7322,217659
+store_user_signal_events \7f7334,217841
+static void menu_bar_item \7f7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;\7f7363,218416
+static Lisp_Object menu_bar_items_vector;\7f7368,218630
+static int menu_bar_items_index;\7f7369,218672
+static const char *separator_names[\7fseparator_names\ 17372,218707
+menu_separator_name_p \7f7393,219148
+menu_bar_items \7f7426,219852
+Lisp_Object item_properties;\7f7568,224603
+menu_bar_item \7f7571,224645
+menu_item_eval_property_1 \7f7647,227175
+eval_dyn \7f7658,227465
+menu_item_eval_property \7f7666,227675
+parse_menu_item \7f7686,228341
+static Lisp_Object tool_bar_items_vector;\7f7965,236336
+static Lisp_Object tool_bar_item_properties;\7f7970,236510
+static int ntool_bar_items;\7f7974,236606
+static void init_tool_bar_items \7f7978,236664
+static void process_tool_bar_item \7f7979,236711
+static bool parse_tool_bar_item \7f7981,236801
+static void append_tool_bar_item \7f7982,236861
+tool_bar_items \7f7990,237083
+process_tool_bar_item \7f8075,239892
+#define PROP(\7f8112,240969
+set_prop \7f8114,241038
+parse_tool_bar_item \7f8167,242453
+#undef PROP\7f8379,248844
+init_tool_bar_items \7f8387,248969
+append_tool_bar_item \7f8401,249261
+read_char_x_menu_prompt \7f8443,250771
+read_char_minibuf_menu_prompt \7f8503,252445
+#define PUSH_C_STR(\7f8527,253014
+follow_key \7f8726,258553
+active_maps \7f8733,258695
+typedef struct keyremap\7f8742,259021
+ Lisp_Object parent;\7f8745,259107
+ Lisp_Object map;\7f8748,259224
+ int start,\7f8753,259446
+ int start, end;\7f8753,259446
+} keyremap;\7f8754,259464
+access_keymap_keyremap \7f8764,259808
+keyremap_step \7f8811,261450
+test_undefined \7f8867,262934
+read_key_sequence \7f8916,264861
+read_key_sequence_vs \7f9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,\7fread-key-sequence\ 19885,297294
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,\7fread-key-sequence-vector\ 19938,299982
+detect_input_pending \7f9950,300488
+detect_input_pending_ignore_squeezables \7f9959,300654
+detect_input_pending_run_timers \7f9967,300870
+clear_input_pending \7f9985,301362
+requeued_events_pending_p \7f9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,\7finput-pending-p\ 110002,301813
+DEFUN ("recent-keys", Frecent_keys,\7frecent-keys\ 110024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,\7fthis-command-keys\ 110055,303517
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,\7fthis-command-keys-vector\ 110068,303958
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,\7fthis-single-command-keys\ 110080,304380
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,\7fthis-single-command-raw-keys\ 110096,304955
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,\7freset-this-command-lengths\ 110109,305495
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,\7fclear-this-command-keys\ 110136,306510
+DEFUN ("recursion-depth", Frecursion_depth,\7frecursion-depth\ 110158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,\7fopen-dribble-file\ 110169,307406
+DEFUN ("discard-input", Fdiscard_input,\7fdiscard-input\ 110203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,\7fsuspend-emacs\ 110225,308949
+stuff_buffered_input \7f10285,311045
+set_waiting_for_input \7f10323,312016
+clear_waiting_for_input \7f10337,312390
+handle_interrupt_signal \7f10351,312754
+deliver_interrupt_signal \7f10378,313642
+static int volatile force_quit_count;\7f10387,313932
+handle_interrupt \7f10401,314414
+quit_throw_to_read_char \7f10541,318711
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,\7fset-input-interrupt-mode\ 110562,319288
+DEFUN ("set-output-flow-control", Fset_output_flow_control,\7fset-output-flow-control\ 110609,320516
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode,\7fset-input-meta-mode\ 110643,321432
+DEFUN ("set-quit-char", Fset_quit_char,\7fset-quit-char\ 110694,322706
+DEFUN ("set-input-mode", Fset_input_mode,\7fset-input-mode\ 110729,323570
+DEFUN ("current-input-mode", Fcurrent_input_mode,\7fcurrent-input-mode\ 110750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,\7fposn-at-x-y\ 110787,325837
+DEFUN ("posn-at-point", Fposn_at_point,\7fposn-at-point\ 110824,327060
+init_kboard \7f10861,328214
+allocate_kboard \7f10893,329284
+wipe_kboard \7f10909,329637
+delete_kboard \7f10917,329751
+init_keyboard \7f10942,330281
+struct event_head\7f11021,332696
+ short var;\7f11023,332716
+ short kind;\7f11024,332729
+static const struct event_head head_table[\7fhead_table\ 111027,332747
+syms_of_keyboard \7f11045,333577
+ DEFVAR_LISP ("internal--top-level-message"\7f11058,333972
+ DEFVAR_LISP ("last-command-event"\7f11312,342173
+ DEFVAR_LISP ("last-nonmenu-event"\7f11315,342297
+ DEFVAR_LISP ("last-input-event"\7f11321,342636
+ DEFVAR_LISP ("unread-command-events"\7f11324,342730
+ DEFVAR_LISP ("unread-post-input-method-events"\7f11332,343190
+ DEFVAR_LISP ("unread-input-method-events"\7f11338,343529
+ DEFVAR_LISP ("meta-prefix-char"\7f11346,343898
+ DEFVAR_KBOARD ("last-command"\7f11351,344106
+ DEFVAR_KBOARD ("real-last-command"\7f11368,344787
+ DEFVAR_KBOARD ("last-repeatable-command"\7f11372,344973
+ DEFVAR_LISP ("this-command"\7f11378,345261
+ DEFVAR_LISP ("real-this-command"\7f11384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated"\7f11388,345680
+ DEFVAR_LISP ("this-original-command"\7f11396,346123
+ DEFVAR_INT ("auto-save-interval"\7f11403,346520
+ DEFVAR_LISP ("auto-save-timeout"\7f11408,346734
+ DEFVAR_LISP ("echo-keystrokes"\7f11415,347079
+ DEFVAR_INT ("polling-period"\7f11421,347350
+ DEFVAR_LISP ("double-click-time"\7f11428,347693
+ DEFVAR_INT ("double-click-fuzz"\7f11435,348029
+ DEFVAR_INT ("num-input-keys"\7f11446,348519
+ DEFVAR_INT ("num-nonmacro-input-events"\7f11452,348794
+ DEFVAR_LISP ("last-event-frame"\7f11457,349032
+ DEFVAR_LISP ("tty-erase-char"\7f11463,349311
+ DEFVAR_LISP ("help-char"\7f11466,349434
+ DEFVAR_LISP ("help-event-list"\7f11472,349717
+ DEFVAR_LISP ("help-form"\7f11477,349928
+ DEFVAR_LISP ("prefix-help-command"\7f11483,350176
+ DEFVAR_LISP ("top-level"\7f11489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table"\7f11495,350675
+ DEFVAR_BOOL ("cannot-suspend"\7f11511,351488
+ DEFVAR_BOOL ("menu-prompting"\7f11516,351715
+ DEFVAR_LISP ("menu-prompt-more-char"\7f11526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers"\7f11531,352391
+ DEFVAR_LISP ("deactivate-mark"\7f11545,353117
+ DEFVAR_LISP ("pre-command-hook"\7f11553,353486
+ DEFVAR_LISP ("post-command-hook"\7f11560,353841
+ DEFVAR_LISP ("echo-area-clear-hook"\7f11568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag"\7f11574,354419
+ DEFVAR_LISP ("menu-bar-final-items"\7f11578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression"\7f11583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map"\7f11589,355230
+ DEFVAR_LISP ("overriding-local-map"\7f11598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag"\7f11607,356103
+ DEFVAR_LISP ("special-event-map"\7f11613,356442
+ DEFVAR_LISP ("track-mouse"\7f11617,356630
+ DEFVAR_KBOARD ("system-key-alist"\7f11620,356757
+ DEFVAR_KBOARD ("local-function-key-map"\7f11629,357138
+ DEFVAR_KBOARD ("input-decode-map"\7f11658,358597
+ DEFVAR_LISP ("function-key-map"\7f11675,359385
+ DEFVAR_LISP ("key-translation-map"\7f11683,359801
+ DEFVAR_LISP ("deferred-action-list"\7f11689,360145
+ DEFVAR_LISP ("deferred-action-function"\7f11694,360393
+ DEFVAR_LISP ("delayed-warnings-list"\7f11700,360692
+ DEFVAR_LISP ("timer-list"\7f11708,361100
+ DEFVAR_LISP ("timer-idle-list"\7f11712,361252
+ DEFVAR_LISP ("input-method-function"\7f11716,361415
+ DEFVAR_LISP ("input-method-previous-message"\7f11737,362384
+ DEFVAR_LISP ("show-help-function"\7f11744,362745
+ DEFVAR_LISP ("disable-point-adjustment"\7f11749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment"\7f11761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout"\7f11770,363893
+ DEFVAR_LISP ("throw-on-input"\7f11775,364171
+ DEFVAR_LISP ("command-error-function"\7f11781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons"\7f11790,364909
+ DEFVAR_LISP ("select-active-regions"\7f11798,365236
+ DEFVAR_LISP ("saved-region-selection"\7f11807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands"\7f11815,366013
+ DEFVAR_LISP ("debug-on-event"\7f11825,366554
+keys_of_keyboard \7f11841,367115
+mark_kboards \7f11916,370434
+ DEFVAR_LISP ("internal--top-level-message",\7f\1\ 111058,333972
+ DEFVAR_LISP ("last-command-event",\7f\1\ 111312,342173
+ DEFVAR_LISP ("last-nonmenu-event",\7f\1\ 111315,342297
+ DEFVAR_LISP ("last-input-event",\7f\1\ 111321,342636
+ DEFVAR_LISP ("unread-command-events",\7f\1\ 111324,342730
+ DEFVAR_LISP ("unread-post-input-method-events",\7f\1\ 111332,343190
+ DEFVAR_LISP ("unread-input-method-events",\7f\1\ 111338,343529
+ DEFVAR_LISP ("meta-prefix-char",\7f\1\ 111346,343898
+ DEFVAR_KBOARD ("last-command",\7f\1\ 111351,344106
+ DEFVAR_KBOARD ("real-last-command",\7f\1\ 111368,344787
+ DEFVAR_KBOARD ("last-repeatable-command",\7f\1\ 111372,344973
+ DEFVAR_LISP ("this-command",\7f\1\ 111378,345261
+ DEFVAR_LISP ("real-this-command",\7f\1\ 111384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated",\7f\1\ 111388,345680
+ DEFVAR_LISP ("this-original-command",\7f\1\ 111396,346123
+ DEFVAR_INT ("auto-save-interval",\7f\1\ 111403,346520
+ DEFVAR_LISP ("auto-save-timeout",\7f\1\ 111408,346734
+ DEFVAR_LISP ("echo-keystrokes",\7f\1\ 111415,347079
+ DEFVAR_INT ("polling-period",\7f\1\ 111421,347350
+ DEFVAR_LISP ("double-click-time",\7f\1\ 111428,347693
+ DEFVAR_INT ("double-click-fuzz",\7f\1\ 111435,348029
+ DEFVAR_INT ("num-input-keys",\7f\1\ 111446,348519
+ DEFVAR_INT ("num-nonmacro-input-events",\7f\1\ 111452,348794
+ DEFVAR_LISP ("last-event-frame",\7f\1\ 111457,349032
+ DEFVAR_LISP ("tty-erase-char",\7f\1\ 111463,349311
+ DEFVAR_LISP ("help-char",\7f\1\ 111466,349434
+ DEFVAR_LISP ("help-event-list",\7f\1\ 111472,349717
+ DEFVAR_LISP ("help-form",\7f\1\ 111477,349928
+ DEFVAR_LISP ("prefix-help-command",\7f\1\ 111483,350176
+ DEFVAR_LISP ("top-level",\7f\1\ 111489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table",\7f\1\ 111495,350675
+ DEFVAR_BOOL ("cannot-suspend",\7f\1\ 111511,351488
+ DEFVAR_BOOL ("menu-prompting",\7f\1\ 111516,351715
+ DEFVAR_LISP ("menu-prompt-more-char",\7f\1\ 111526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers",\7f\1\ 111531,352391
+ DEFVAR_LISP ("deactivate-mark",\7f\1\ 111545,353117
+ DEFVAR_LISP ("pre-command-hook",\7f\1\ 111553,353486
+ DEFVAR_LISP ("post-command-hook",\7f\1\ 111560,353841
+ DEFVAR_LISP ("echo-area-clear-hook",\7f\1\ 111568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\7f\1\ 111574,354419
+ DEFVAR_LISP ("menu-bar-final-items",\7f\1\ 111578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression",\7f\1\ 111583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map",\7f\1\ 111589,355230
+ DEFVAR_LISP ("overriding-local-map",\7f\1\ 111598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag",\7f\1\ 111607,356103
+ DEFVAR_LISP ("special-event-map",\7f\1\ 111613,356442
+ DEFVAR_LISP ("track-mouse",\7f\1\ 111617,356630
+ DEFVAR_KBOARD ("system-key-alist",\7f\1\ 111620,356757
+ DEFVAR_KBOARD ("local-function-key-map",\7f\1\ 111629,357138
+ DEFVAR_KBOARD ("input-decode-map",\7f\1\ 111658,358597
+ DEFVAR_LISP ("function-key-map",\7f\1\ 111675,359385
+ DEFVAR_LISP ("key-translation-map",\7f\1\ 111683,359801
+ DEFVAR_LISP ("deferred-action-list",\7f\1\ 111689,360145
+ DEFVAR_LISP ("deferred-action-function",\7f\1\ 111694,360393
+ DEFVAR_LISP ("delayed-warnings-list",\7f\1\ 111700,360692
+ DEFVAR_LISP ("timer-list",\7f\1\ 111708,361100
+ DEFVAR_LISP ("timer-idle-list",\7f\1\ 111712,361252
+ DEFVAR_LISP ("input-method-function",\7f\1\ 111716,361415
+ DEFVAR_LISP ("input-method-previous-message",\7f\1\ 111737,362384
+ DEFVAR_LISP ("show-help-function",\7f\1\ 111744,362745
+ DEFVAR_LISP ("disable-point-adjustment",\7f\1\ 111749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment",\7f\1\ 111761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout",\7f\1\ 111770,363893
+ DEFVAR_LISP ("throw-on-input",\7f\1\ 111775,364171
+ DEFVAR_LISP ("command-error-function",\7f\1\ 111781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons",\7f\1\ 111790,364909
+ DEFVAR_LISP ("select-active-regions",\7f\1\ 111798,365236
+ DEFVAR_LISP ("saved-region-selection",\7f\1\ 111807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands",\7f\1\ 111815,366013
+ DEFVAR_LISP ("debug-on-event",\7f\1\ 111825,366554
+\f
+c-src/emacs/src/lisp.h,39173
+#define EMACS_LISP_H\7f22,800
+#define DECLARE_GDB_SYM(\7f47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f49,1508
+# define DEFINE_GDB_SYMBOL_END(\7f50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(\7f52,1625
+# define DEFINE_GDB_SYMBOL_END(\7f53,1702
+#undef min\7f57,1790
+#undef max\7f58,1801
+#define max(\7f59,1812
+#define min(\7f60,1854
+#define ARRAYELTS(\7f63,1936
+#define GCTYPEBITS \7f67,2079
+DEFINE_GDB_SYMBOL_BEGIN \7fGCTYPEBITS\ 166,2037
+# define NONPOINTER_BITS \7f78,2567
+# define NONPOINTER_BITS \7f80,2600
+typedef int EMACS_INT;\7f91,3023
+typedef unsigned int EMACS_UINT;\7f92,3046
+# define EMACS_INT_MAX \7f93,3079
+# define pI \7f94,3111
+typedef long int EMACS_INT;\7f96,3203
+typedef unsigned long EMACS_UINT;\7f97,3231
+# define EMACS_INT_MAX \7f98,3265
+# define pI \7f99,3298
+typedef long long int EMACS_INT;\7f103,3477
+typedef unsigned long long int EMACS_UINT;\7f104,3510
+# define EMACS_INT_MAX \7f105,3553
+# define pI \7f106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR \7f114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR \7f115,3840
+typedef size_t bits_word;\7f123,4165
+# define BITS_WORD_MAX \7f124,4191
+enum { BITS_PER_BITS_WORD \7f125,4223
+typedef unsigned char bits_word;\7f127,4290
+# define BITS_WORD_MAX \7f128,4323
+enum { BITS_PER_BITS_WORD \7f129,4386
+verify \7f131,4450
+ BITS_PER_CHAR \7f136,4570
+ BITS_PER_SHORT \7f137,4605
+ BITS_PER_LONG \7f138,4657
+ BITS_PER_EMACS_INT \7f139,4712
+typedef intmax_t printmax_t;\7f148,5089
+typedef uintmax_t uprintmax_t;\7f149,5118
+# define pMd \7f150,5149
+# define pMu \7f151,5170
+typedef EMACS_INT printmax_t;\7f153,5197
+typedef EMACS_UINT uprintmax_t;\7f154,5227
+# define pMd \7f155,5259
+# define pMu \7f156,5278
+# define pD \7f165,5664
+# define pD \7f167,5709
+# define pD \7f169,5756
+# define pD \7f171,5779
+# define eassert(\7f200,7062
+# define eassume(\7f201,7140
+extern _Noreturn void die \7f204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;\7f206,7268
+# define eassert(\7f208,7319
+# define eassume(\7f212,7450
+enum Lisp_Bits\7f239,8519
+#define GCALIGNMENT \7f243,8647
+ VALBITS \7f246,8742
+ INTTYPEBITS \7f249,8838
+ FIXNUM_BITS \7f252,8945
+#define VAL_MAX \7f263,9327
+#define USE_LSB_TAG \7f271,9777
+DEFINE_GDB_SYMBOL_BEGIN \7fUSE_LSB_TAG\ 1270,9733
+# define alignas(\7f281,10077
+# define GCALIGNED \7f288,10227
+# define GCALIGNED \7f290,10292
+# define lisp_h_XLI(\7f327,11642
+# define lisp_h_XIL(\7f328,11673
+# define lisp_h_XLI(\7f330,11724
+# define lisp_h_XIL(\7f331,11751
+#define lisp_h_CHECK_LIST_CONS(\7f333,11785
+#define lisp_h_CHECK_NUMBER(\7f334,11856
+#define lisp_h_CHECK_SYMBOL(\7f335,11927
+#define lisp_h_CHECK_TYPE(\7f336,11996
+#define lisp_h_CONSP(\7f338,12107
+#define lisp_h_EQ(\7f339,12156
+#define lisp_h_FLOATP(\7f340,12201
+#define lisp_h_INTEGERP(\7f341,12252
+#define lisp_h_MARKERP(\7f342,12333
+#define lisp_h_MISCP(\7f343,12408
+#define lisp_h_NILP(\7f344,12457
+#define lisp_h_SET_SYMBOL_VAL(\7f345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(\7f347,12607
+#define lisp_h_SYMBOL_VAL(\7f348,12671
+#define lisp_h_SYMBOLP(\7f350,12772
+#define lisp_h_VECTORLIKEP(\7f351,12825
+#define lisp_h_XCAR(\7f352,12886
+#define lisp_h_XCDR(\7f353,12924
+#define lisp_h_XCONS(\7f354,12964
+#define lisp_h_XHASH(\7f356,13059
+#define lisp_h_XPNTR(\7f357,13093
+# define lisp_h_check_cons_list(\7f360,13221
+# define lisp_h_make_number(\7f363,13289
+# define lisp_h_XFASTINT(\7f365,13392
+# define lisp_h_XINT(\7f366,13429
+# define lisp_h_XSYMBOL(\7f367,13478
+# define lisp_h_XTYPE(\7f371,13631
+# define lisp_h_XUNTAG(\7f372,13696
+# define XLI(\7f381,14086
+# define XIL(\7f382,14117
+# define CHECK_LIST_CONS(\7f383,14148
+# define CHECK_NUMBER(\7f384,14209
+# define CHECK_SYMBOL(\7f385,14258
+# define CHECK_TYPE(\7f386,14307
+# define CONSP(\7f387,14382
+# define EQ(\7f388,14417
+# define FLOATP(\7f389,14452
+# define INTEGERP(\7f390,14489
+# define MARKERP(\7f391,14530
+# define MISCP(\7f392,14569
+# define NILP(\7f393,14604
+# define SET_SYMBOL_VAL(\7f394,14637
+# define SYMBOL_CONSTANT_P(\7f395,14700
+# define SYMBOL_VAL(\7f396,14763
+# define SYMBOLP(\7f397,14812
+# define VECTORLIKEP(\7f398,14851
+# define XCAR(\7f399,14898
+# define XCDR(\7f400,14931
+# define XCONS(\7f401,14964
+# define XHASH(\7f402,14999
+# define XPNTR(\7f403,15034
+# define check_cons_list(\7f405,15097
+# define make_number(\7f408,15176
+# define XFASTINT(\7f409,15224
+# define XINT(\7f410,15266
+# define XSYMBOL(\7f411,15300
+# define XTYPE(\7f412,15340
+# define XUNTAG(\7f413,15376
+#define LISP_MACRO_DEFUN(\7f421,15672
+#define LISP_MACRO_DEFUN_VOID(\7f425,15845
+#define INTMASK \7f437,16289
+#define case_Lisp_Int \7f438,16342
+#define ENUM_BF(\7f445,16681
+#define ENUM_BF(\7f447,16722
+enum Lisp_Type\7f451,16763
+ Lisp_Symbol \7f454,16851
+ Lisp_Misc \7f458,16993
+ Lisp_Int0 \7f461,17067
+ Lisp_Int1 \7f462,17086
+ Lisp_String \7f466,17264
+ Lisp_Vectorlike \7f472,17543
+ Lisp_Cons \7f475,17632
+ Lisp_Float \7f477,17670
+enum Lisp_Misc_Type\7f485,18016
+ Lisp_Misc_Free \7f487,18040
+ Lisp_Misc_Marker,\7f488,18069
+ Lisp_Misc_Overlay,\7f489,18091
+ Lisp_Misc_Save_Value,\7f490,18114
+ Lisp_Misc_Finalizer,\7f491,18140
+ Lisp_Misc_Float,\7f494,18275
+ Lisp_Misc_Limit\7f496,18359
+enum Lisp_Fwd_Type\7f502,18543
+ Lisp_Fwd_Int,\7f504,18566
+ Lisp_Fwd_Bool,\7f505,18619
+ Lisp_Fwd_Obj,\7f506,18670
+ Lisp_Fwd_Buffer_Obj,\7f507,18729
+ Lisp_Fwd_Kboard_Obj \7f508,18800
+typedef struct { EMACS_INT i;\7f567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;\7f567,21781
+#define LISP_INITIALLY(\7f569,21827
+#undef CHECK_LISP_OBJECT_TYPE\7f571,21858
+enum CHECK_LISP_OBJECT_TYPE \7f572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f572,21888
+typedef EMACS_INT Lisp_Object;\7f577,22064
+#define LISP_INITIALLY(\7f578,22095
+enum CHECK_LISP_OBJECT_TYPE \7f579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE \7f579,22125
+#define LISP_INITIALLY_ZERO \7f582,22226
+INLINE bool BOOL_VECTOR_P \7f588,22350
+INLINE bool BUFFER_OBJFWDP \7f589,22391
+INLINE bool BUFFERP \7f590,22438
+INLINE bool CHAR_TABLE_P \7f591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII \7f592,22513
+INLINE bool \7f593,22579
+INLINE bool \7f594,22614
+INLINE bool functionp \7f595,22650
+INLINE bool \7f596,22687
+INLINE bool \7f597,22725
+INLINE bool \7f598,22762
+INLINE bool \7f599,22797
+INLINE bool OVERLAYP \7f600,22831
+INLINE bool PROCESSP \7f601,22867
+INLINE bool PSEUDOVECTORP \7f602,22903
+INLINE bool SAVE_VALUEP \7f603,22949
+INLINE bool FINALIZERP \7f604,22988
+INLINE void set_sub_char_table_contents \7f605,23026
+INLINE bool STRINGP \7f607,23116
+INLINE bool SUB_CHAR_TABLE_P \7f608,23151
+INLINE bool SUBRP \7f609,23195
+INLINE bool \7f610,23228
+INLINE bool \7f611,23265
+INLINE bool WINDOWP \7f612,23306
+INLINE bool TERMINALP \7f613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE \7fXSAVE_VALUE\ 1614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER \7fXFINALIZER\ 1615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)\7f616,23492
+INLINE void \7f617,23544
+extern Lisp_Object char_table_ref \7f620,23616
+extern void char_table_set \7f621,23670
+extern _Noreturn Lisp_Object wrong_type_argument \7f624,23757
+extern _Noreturn void wrong_choice \7f625,23834
+extern bool might_dump;\7f628,23925
+extern bool initialized;\7f631,24061
+extern double extract_float \7f634,24117
+enum symbol_interned\7f639,24199
+ SYMBOL_UNINTERNED \7f641,24222
+ SYMBOL_INTERNED \7f642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY \7f643,24270
+enum symbol_redirect\7f646,24315
+ SYMBOL_PLAINVAL \7f648,24338
+ SYMBOL_VARALIAS \7f649,24362
+ SYMBOL_LOCALIZED \7f650,24386
+ SYMBOL_FORWARDED \7f651,24410
+struct Lisp_Symbol\7f654,24437
+ bool_bf gcmarkbit \7f656,24458
+ ENUM_BF \7f663,24793
+ Lisp_Object value;\7f687,25631
+ struct Lisp_Symbol *alias;\7falias\ 1688,25654
+ struct Lisp_Buffer_Local_Value *blv;\7fblv\ 1689,25685
+ union Lisp_Fwd *fwd;\7ffwd\ 1690,25726
+ } val;\7f691,25751
+ Lisp_Object function;\7f694,25823
+ Lisp_Object plist;\7f697,25885
+ struct Lisp_Symbol *next;\7fnext\ 1700,25974
+#define EXFUN(\7f707,26252
+#define DEFUN_ARGS_MANY \7f712,26446
+#define DEFUN_ARGS_UNEVALLED \7f713,26498
+#define DEFUN_ARGS_0 \7f714,26541
+#define DEFUN_ARGS_1 \7f715,26569
+#define DEFUN_ARGS_2 \7f716,26604
+#define DEFUN_ARGS_3 \7f717,26652
+#define DEFUN_ARGS_4 \7f718,26713
+#define DEFUN_ARGS_5 \7f719,26787
+#define DEFUN_ARGS_6 \7f721,26880
+#define DEFUN_ARGS_7 \7f723,26986
+#define DEFUN_ARGS_8 \7f725,27105
+#define TAG_PTR(\7f729,27296
+#define TAG_SYMOFFSET(\7f734,27543
+#define XLI_BUILTIN_LISPSYM(\7f741,27842
+#define DEFINE_LISP_SYMBOL(\7f746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS \7f755,28572
+LISP_MACRO_DEFUN \7f762,28777
+# define ARRAY_MARK_FLAG \7f768,29024
+# define PSEUDOVECTOR_FLAG \7f774,29267
+enum pvec_type\7f780,29568
+ PVEC_NORMAL_VECTOR,\7f782,29585
+ PVEC_FREE,\7f783,29607
+ PVEC_PROCESS,\7f784,29620
+ PVEC_FRAME,\7f785,29636
+ PVEC_WINDOW,\7f786,29650
+ PVEC_BOOL_VECTOR,\7f787,29665
+ PVEC_BUFFER,\7f788,29685
+ PVEC_HASH_TABLE,\7f789,29700
+ PVEC_TERMINAL,\7f790,29719
+ PVEC_WINDOW_CONFIGURATION,\7f791,29736
+ PVEC_SUBR,\7f792,29765
+ PVEC_OTHER,\7f793,29778
+ PVEC_COMPILED,\7f795,29856
+ PVEC_CHAR_TABLE,\7f796,29873
+ PVEC_SUB_CHAR_TABLE,\7f797,29892
+ PVEC_FONT \7f798,29915
+enum More_Lisp_Bits\7f801,29991
+ PSEUDOVECTOR_SIZE_BITS \7f808,30382
+ PSEUDOVECTOR_SIZE_MASK \7f809,30415
+ PSEUDOVECTOR_REST_BITS \7f813,30625
+ PSEUDOVECTOR_REST_MASK \7f814,30658
+ PSEUDOVECTOR_AREA_BITS \7f818,30823
+ PVEC_TYPE_MASK \7f819,30901
+# define VALMASK \7f829,31302
+DEFINE_GDB_SYMBOL_BEGIN \7fVALMASK\ 1828,31257
+#define MOST_POSITIVE_FIXNUM \7f834,31532
+#define MOST_NEGATIVE_FIXNUM \7f835,31592
+XINT \7f874,32684
+XFASTINT \7f889,33035
+XSYMBOL \7f899,33263
+XTYPE \7f910,33481
+XUNTAG \7f918,33661
+LISP_MACRO_DEFUN \7f927,33857
+LISP_MACRO_DEFUN \7f940,34242
+#define FIXNUM_OVERFLOW_P(\7f958,34855
+LISP_MACRO_DEFUN \7fFIXNUM_OVERFLOW_P\ 1952,34632
+LISP_MACRO_DEFUN \7f970,35171
+XSTRING \7f980,35391
+#define SYMBOL_INDEX(\7f988,35575
+XFLOAT \7f991,35636
+XPROCESS \7f1000,35778
+XWINDOW \7f1007,35895
+XTERMINAL \7f1014,36012
+XSUBR \7f1021,36134
+XBUFFER \7f1028,36245
+XCHAR_TABLE \7f1035,36369
+XSUB_CHAR_TABLE \7f1042,36506
+XBOOL_VECTOR \7f1049,36648
+make_lisp_ptr \7f1058,36827
+make_lisp_symbol \7f1066,37013
+builtin_lisp_symbol \7f1074,37197
+#define XSETINT(\7f1079,37279
+#define XSETFASTINT(\7f1080,37325
+#define XSETCONS(\7f1081,37375
+#define XSETVECTOR(\7f1082,37435
+#define XSETSTRING(\7f1083,37503
+#define XSETSYMBOL(\7f1084,37567
+#define XSETFLOAT(\7f1085,37621
+#define XSETMISC(\7f1086,37683
+#define XSETPVECTYPE(\7f1090,37772
+#define XSETPVECTYPESIZE(\7f1092,37888
+#define XSETPSEUDOVECTOR(\7f1099,38185
+#define XSETTYPED_PSEUDOVECTOR(\7f1105,38369
+#define XSETWINDOW_CONFIGURATION(\7f1110,38579
+#define XSETPROCESS(\7f1112,38675
+#define XSETWINDOW(\7f1113,38741
+#define XSETTERMINAL(\7f1114,38805
+#define XSETSUBR(\7f1115,38873
+#define XSETCOMPILED(\7f1116,38933
+#define XSETBUFFER(\7f1117,39001
+#define XSETCHAR_TABLE(\7f1118,39065
+#define XSETBOOL_VECTOR(\7f1119,39137
+#define XSETSUB_CHAR_TABLE(\7f1120,39211
+XINTPTR \7f1128,39581
+make_pointer_integer \7f1134,39661
+LISP_MACRO_DEFUN_VOID \7f1143,39826
+typedef struct interval *INTERVAL;\7fINTERVAL\ 11149,39987
+ Lisp_Object cdr;\7f1159,40162
+ struct Lisp_Cons *chain;\7fchain\ 11162,40236
+xcar_addr \7f1174,40760
+xcdr_addr \7f1179,40837
+LISP_MACRO_DEFUN \7f1185,40931
+XSETCDR \7f1198,41307
+CAR \7f1205,41457
+CDR \7f1212,41591
+CAR_SAFE \7f1221,41791
+CDR_SAFE \7f1226,41877
+STRING_MULTIBYTE \7f1243,42250
+#define STRING_BYTES_BOUND \7f1261,43057
+#define STRING_SET_UNIBYTE(\7f1265,43201
+#define STRING_SET_MULTIBYTE(\7f1275,43516
+SDATA \7f1286,43830
+SSDATA \7f1291,43908
+SREF \7f1297,44037
+SSET \7f1302,44128
+SCHARS \7f1307,44242
+extern ptrdiff_t string_bytes \7f1313,44337
+STRING_BYTES \7f1316,44415
+SBYTES \7f1326,44595
+STRING_SET_CHARS \7f1331,44681
+struct vectorlike_header\7f1343,45232
+ ptrdiff_t size;\7f1364,46383
+struct Lisp_Vector\7f1369,46482
+ struct vectorlike_header header;\7f1371,46505
+ Lisp_Object contents[\7fcontents\ 11372,46542
+ ALIGNOF_STRUCT_LISP_VECTOR\7f1378,46681
+struct Lisp_Bool_Vector\7f1384,46864
+ struct vectorlike_header header;\7f1388,47012
+ EMACS_INT size;\7f1390,47086
+ bits_word data[\7fdata\ 11395,47319
+bool_vector_size \7f1399,47385
+bool_vector_data \7f1407,47523
+bool_vector_uchar_data \7f1413,47617
+bool_vector_words \7f1421,47803
+bool_vector_bytes \7f1428,47998
+bool_vector_bitref \7f1437,48238
+bool_vector_ref \7f1445,48478
+bool_vector_set \7f1453,48618
+ header_size \7f1471,49047
+ bool_header_size \7f1472,49106
+ word_size \7f1473,49171
+AREF \7f1479,49284
+aref_addr \7f1485,49391
+ASIZE \7f1491,49501
+ASET \7f1497,49583
+gc_aset \7f1504,49742
+enum { NIL_IS_ZERO \7f1515,50269
+memclear \7f1520,50464
+#define VECSIZE(\7f1531,50762
+#define PSEUDOVECSIZE(\7f1538,51047
+#define UNSIGNED_CMP(\7f1546,51480
+#define ASCII_CHAR_P(\7f1552,51734
+enum CHARTAB_SIZE_BITS\7f1565,52489
+ CHARTAB_SIZE_BITS_0 \7f1567,52516
+ CHARTAB_SIZE_BITS_1 \7f1568,52545
+ CHARTAB_SIZE_BITS_2 \7f1569,52574
+ CHARTAB_SIZE_BITS_3 \7f1570,52603
+extern const int chartab_size[\7fchartab_size\ 11573,52637
+struct Lisp_Char_Table\7f1575,52672
+ struct vectorlike_header header;\7f1581,52928
+ Lisp_Object defalt;\7f1585,53078
+ Lisp_Object parent;\7f1590,53280
+ Lisp_Object purpose;\7f1594,53398
+ Lisp_Object ascii;\7f1598,53564
+ Lisp_Object contents[\7fcontents\ 11600,53588
+ Lisp_Object extras[\7fextras\ 11603,53699
+struct Lisp_Sub_Char_Table\7f1606,53752
+ struct vectorlike_header header;\7f1610,53918
+ int depth;\7f1618,54341
+ int min_char;\7f1621,54417
+ Lisp_Object contents[\7fcontents\ 11624,54492
+CHAR_TABLE_REF_ASCII \7f1628,54566
+CHAR_TABLE_REF \7f1648,55113
+CHAR_TABLE_SET \7f1658,55402
+struct Lisp_Subr\7f1670,55786
+ struct vectorlike_header header;\7f1672,55807
+ Lisp_Object (*a0)\7fa0\ 11674,55856
+ Lisp_Object (*a1)\7fa1\ 11675,55888
+ Lisp_Object (*a2)\7fa2\ 11676,55927
+ Lisp_Object (*a3)\7fa3\ 11677,55979
+ Lisp_Object (*a4)\7fa4\ 11678,56044
+ Lisp_Object (*a5)\7fa5\ 11679,56122
+ Lisp_Object (*a6)\7fa6\ 11680,56213
+ Lisp_Object (*a7)\7fa7\ 11681,56317
+ Lisp_Object (*a8)\7fa8\ 11682,56434
+ Lisp_Object (*aUNEVALLED)\7faUNEVALLED\ 11683,56564
+ Lisp_Object (*aMANY)\7faMANY\ 11684,56616
+ } function;\7f1685,56671
+ short min_args,\7f1686,56687
+ short min_args, max_args;\7f1686,56687
+ const char *symbol_name;\7fsymbol_name\ 11687,56717
+ const char *intspec;\7fintspec\ 11688,56746
+ const char *doc;\7fdoc\ 11689,56771
+enum char_table_specials\7f1692,56798
+ CHAR_TABLE_STANDARD_SLOTS \7f1697,56993
+ SUB_CHAR_TABLE_OFFSET \7f1701,57214
+CHAR_TABLE_EXTRA_SLOTS \7f1707,57377
+verify \7f1714,57596
+LISP_MACRO_DEFUN \7f1723,57921
+SYMBOL_BLV \7f1732,58181
+SYMBOL_FWD \7f1738,58316
+LISP_MACRO_DEFUN_VOID \7f1744,58428
+SET_SYMBOL_BLV \7f1754,58691
+SET_SYMBOL_FWD \7f1760,58850
+SYMBOL_NAME \7f1767,59001
+SYMBOL_INTERNED_P \7f1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P \7f1783,59299
+#define DEFSYM(\7f1796,59809
+LISP_MACRO_DEFUN \7fDEFSYM\ 11792,59630
+struct hash_table_test\7f1805,60062
+ Lisp_Object name;\7f1808,60139
+ Lisp_Object user_hash_function;\7f1811,60206
+ Lisp_Object user_cmp_function;\7f1814,60297
+ bool (*cmpfn)\7fcmpfn\ 11817,60372
+ EMACS_UINT (*hashfn)\7fhashfn\ 11820,60486
+struct Lisp_Hash_Table\7f1823,60555
+ struct vectorlike_header header;\7f1826,60649
+ Lisp_Object weak;\7f1830,60783
+ Lisp_Object rehash_size;\7f1835,61007
+ Lisp_Object rehash_threshold;\7f1839,61129
+ Lisp_Object hash;\7f1843,61260
+ Lisp_Object next;\7f1848,61490
+ Lisp_Object next_free;\7f1851,61560
+ Lisp_Object index;\7f1856,61771
+ ptrdiff_t count;\7f1863,62041
+ Lisp_Object key_and_value;\7f1868,62240
+ struct hash_table_test test;\7f1871,62314
+ struct Lisp_Hash_Table *next_weak;\7fnext_weak\ 11875,62457
+XHASH_TABLE \7f1880,62531
+#define XSET_HASH_TABLE(\7f1885,62602
+HASH_TABLE_P \7f1889,62703
+HASH_KEY \7f1896,62860
+HASH_VALUE \7f1903,63040
+HASH_NEXT \7f1911,63254
+HASH_HASH \7f1918,63431
+HASH_INDEX \7f1926,63677
+HASH_TABLE_SIZE \7f1933,63826
+enum DEFAULT_HASH_SIZE \7f1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE \7f1940,63956
+static double const DEFAULT_REHASH_THRESHOLD \7f1946,64176
+static double const DEFAULT_REHASH_SIZE \7f1950,64299
+sxhash_combine \7f1956,64465
+SXHASH_REDUCE \7f1964,64648
+struct Lisp_Misc_Any \7f1971,64806
+ ENUM_BF \7f1973,64866
+struct Lisp_Marker\7f1978,64980
+ ENUM_BF \7f1980,65001
+struct Lisp_Overlay\7f2021,66841
+ ENUM_BF \7f2034,67349
+ SAVE_UNUSED,\7f2047,67644
+ SAVE_INTEGER,\7f2048,67661
+ SAVE_FUNCPOINTER,\7f2049,67679
+ SAVE_POINTER,\7f2050,67701
+ SAVE_OBJECT\7f2051,67719
+enum { SAVE_SLOT_BITS \7f2055,67804
+enum { SAVE_VALUE_SLOTS \7f2058,67901
+enum { SAVE_TYPE_BITS \7f2062,68009
+enum Lisp_Save_Type\7f2064,68075
+ SAVE_TYPE_INT_INT \7f2066,68099
+ SAVE_TYPE_INT_INT_INT\7f2067,68172
+ SAVE_TYPE_OBJ_OBJ \7f2069,68262
+ SAVE_TYPE_OBJ_OBJ_OBJ \7f2070,68333
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ\7f2071,68414
+ SAVE_TYPE_PTR_INT \7f2073,68509
+ SAVE_TYPE_PTR_OBJ \7f2074,68582
+ SAVE_TYPE_PTR_PTR \7f2075,68654
+ SAVE_TYPE_FUNCPTR_PTR_OBJ\7f2076,68727
+ SAVE_TYPE_MEMORY \7f2080,68885
+typedef void (*voidfuncptr)\7fvoidfuncptr\ 12108,69839
+struct Lisp_Save_Value\7f2110,69876
+ ENUM_BF \7f2112,69903
+ void *pointer;\7fpointer\ 12125,70558
+ voidfuncptr funcpointer;\7f2126,70579
+ ptrdiff_t integer;\7f2127,70610
+ Lisp_Object object;\7f2128,70635
+ } data[\7fdata\ 12129,70661
+save_type \7f2134,70755
+XSAVE_POINTER \7f2143,70985
+set_save_pointer \7f2149,71147
+XSAVE_FUNCPOINTER \7f2155,71329
+XSAVE_INTEGER \7f2164,71549
+set_save_integer \7f2170,71711
+XSAVE_OBJECT \7f2179,71932
+struct Lisp_Finalizer\7f2186,72109
+ struct Lisp_Misc_Any base;\7f2188,72135
+ struct Lisp_Finalizer *prev;\7fprev\ 12191,72223
+ struct Lisp_Finalizer *next;\7fnext\ 12192,72256
+ Lisp_Object function;\7f2197,72493
+struct Lisp_Free\7f2201,72584
+ ENUM_BF \7f2203,72605
+union Lisp_Misc\7f2212,72885
+ struct Lisp_Misc_Any u_any;\7f2214,72905
+ struct Lisp_Free u_free;\7f2215,72976
+ struct Lisp_Marker u_marker;\7f2216,73005
+ struct Lisp_Overlay u_overlay;\7f2217,73038
+ struct Lisp_Save_Value u_save_value;\7f2218,73073
+ struct Lisp_Finalizer u_finalizer;\7f2219,73114
+XMISC \7f2223,73184
+XMISCANY \7f2229,73273
+XMISCTYPE \7f2236,73382
+XMARKER \7f2242,73470
+XOVERLAY \7f2249,73585
+XSAVE_VALUE \7f2256,73706
+XFINALIZER \7f2263,73835
+struct Lisp_Intfwd\7f2274,74120
+ enum Lisp_Fwd_Type type;\7f2276,74143
+ EMACS_INT *intvar;\7fintvar\ 12277,74193
+struct Lisp_Boolfwd\7f2284,74414
+ enum Lisp_Fwd_Type type;\7f2286,74438
+ bool *boolvar;\7fboolvar\ 12287,74489
+struct Lisp_Objfwd\7f2294,74705
+ enum Lisp_Fwd_Type type;\7f2296,74728
+ Lisp_Object *objvar;\7fobjvar\ 12297,74778
+struct Lisp_Buffer_Objfwd\7f2302,74937
+ enum Lisp_Fwd_Type type;\7f2304,74967
+ int offset;\7f2305,75024
+ Lisp_Object predicate;\7f2307,75116
+struct Lisp_Buffer_Local_Value\7f2334,76473
+ bool_bf local_if_set \7f2338,76618
+ bool_bf frame_local \7f2341,76800
+ bool_bf found \7f2344,76942
+ union Lisp_Fwd *fwd;\7ffwd\ 12346,77044
+ Lisp_Object where;\7f2348,77187
+ Lisp_Object defcell;\7f2351,77313
+ Lisp_Object valcell;\7f2357,77617
+struct Lisp_Kboard_Objfwd\7f2362,77732
+ enum Lisp_Fwd_Type type;\7f2364,77762
+ int offset;\7f2365,77819
+union Lisp_Fwd\7f2368,77841
+ struct Lisp_Intfwd u_intfwd;\7f2370,77860
+ struct Lisp_Boolfwd u_boolfwd;\7f2371,77893
+ struct Lisp_Objfwd u_objfwd;\7f2372,77928
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;\7f2373,77961
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;\7f2374,78008
+XFWDTYPE \7f2378,78087
+XBUFFER_OBJFWD \7f2384,78183
+struct Lisp_Float\7f2391,78319
+ double data;\7f2395,78357
+ struct Lisp_Float *chain;\7fchain\ 12396,78376
+ } u;\7f2397,78408
+XFLOAT_DATA \7f2401,78437
+ IEEE_FLOATING_POINT\7f2415,78946
+#define _UCHAR_T\7f2423,79269
+typedef unsigned char UCHAR;\7f2424,79286
+enum Lisp_Compiled\7f2429,79369
+ COMPILED_ARGLIST \7f2431,79392
+ COMPILED_BYTECODE \7f2432,79418
+ COMPILED_CONSTANTS \7f2433,79445
+ COMPILED_STACK_DEPTH \7f2434,79473
+ COMPILED_DOC_STRING \7f2435,79503
+ COMPILED_INTERACTIVE \7f2436,79532
+enum char_bits\7f2443,79834
+ CHAR_ALT \7f2445,79853
+ CHAR_SUPER \7f2446,79879
+ CHAR_HYPER \7f2447,79907
+ CHAR_SHIFT \7f2448,79935
+ CHAR_CTL \7f2449,79963
+ CHAR_META \7f2450,79989
+ CHAR_MODIFIER_MASK \7f2452,80017
+ CHARACTERBITS \7f2457,80212
+LISP_MACRO_DEFUN \7f2462,80270
+NATNUMP \7f2470,80412
+RANGED_INTEGERP \7f2476,80493
+#define TYPE_RANGED_INTEGERP(\7f2481,80615
+LISP_MACRO_DEFUN \7f2486,80800
+VECTORP \7f2500,81273
+OVERLAYP \7f2505,81376
+SAVE_VALUEP \7f2510,81475
+FINALIZERP \7f2516,81581
+AUTOLOADP \7f2522,81685
+BUFFER_OBJFWDP \7f2528,81776
+PSEUDOVECTOR_TYPEP \7f2534,81874
+PSEUDOVECTORP \7f2542,82127
+WINDOW_CONFIGURATIONP \7f2558,82479
+PROCESSP \7f2564,82589
+WINDOWP \7f2570,82673
+TERMINALP \7f2576,82755
+SUBRP \7f2582,82841
+COMPILEDP \7f2588,82919
+BUFFERP \7f2594,83005
+CHAR_TABLE_P \7f2600,83087
+SUB_CHAR_TABLE_P \7f2606,83178
+BOOL_VECTOR_P \7f2612,83277
+FRAMEP \7f2618,83370
+IMAGEP \7f2625,83487
+ARRAYP \7f2632,83592
+CHECK_LIST \7f2638,83711
+LISP_MACRO_DEFUN_VOID \7f2643,83792
+CHECK_STRING_CAR \7f2653,84089
+CHECK_CONS \7f2658,84193
+CHECK_VECTOR \7f2663,84273
+CHECK_BOOL_VECTOR \7f2668,84359
+CHECK_VECTOR_OR_STRING \7f2674,84536
+CHECK_ARRAY \7f2683,84710
+CHECK_BUFFER \7f2688,84818
+CHECK_WINDOW \7f2693,84904
+CHECK_PROCESS \7f2699,85010
+CHECK_NATNUM \7f2705,85106
+#define CHECK_RANGED_INTEGER(\7f2710,85183
+#define CHECK_TYPE_RANGED_INTEGER(\7f2721,85566
+#define CHECK_NUMBER_COERCE_MARKER(\7f2729,85836
+XFLOATINT \7f2738,86089
+CHECK_NUMBER_OR_FLOAT \7f2744,86160
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(\7f2749,86259
+CHECK_NUMBER_CAR \7f2760,86669
+CHECK_NUMBER_CDR \7f2768,86791
+#define DEFUN(\7f2803,88386
+#define DEFUN(\7f2812,88854
+FUNCTIONP \7f2822,89209
+extern void defsubr \7f2829,89361
+enum maxargs\7f2831,89404
+ MANY \7f2833,89421
+ UNEVALLED \7f2834,89436
+#define CALLMANY(\7f2838,89539
+#define CALLN(\7f2844,89892
+extern void defvar_lisp \7f2846,89962
+extern void defvar_lisp_nopro \7f2847,90039
+extern void defvar_bool \7f2848,90122
+extern void defvar_int \7f2849,90193
+extern void defvar_kboard \7f2850,90267
+#define DEFVAR_LISP(\7f2869,91097
+#define DEFVAR_LISP_NOPRO(\7f2874,91269
+#define DEFVAR_BOOL(\7f2879,91451
+#define DEFVAR_INT(\7f2884,91624
+#define DEFVAR_BUFFER_DEFAULTS(\7f2890,91795
+#define DEFVAR_KBOARD(\7f2896,91999
+typedef jmp_buf sys_jmp_buf;\7f2906,92323
+# define sys_setjmp(\7f2907,92352
+# define sys_longjmp(\7f2908,92387
+typedef sigjmp_buf sys_jmp_buf;\7f2910,92459
+# define sys_setjmp(\7f2911,92491
+# define sys_longjmp(\7f2912,92531
+typedef jmp_buf sys_jmp_buf;\7f2916,92690
+# define sys_setjmp(\7f2917,92719
+# define sys_longjmp(\7f2918,92753
+enum specbind_tag \7f2943,93805
+ SPECPDL_UNWIND,\7f2944,93825
+ SPECPDL_UNWIND_PTR,\7f2945,93894
+ SPECPDL_UNWIND_INT,\7f2946,93945
+ SPECPDL_UNWIND_VOID,\7f2947,93993
+ SPECPDL_BACKTRACE,\7f2948,94047
+ SPECPDL_LET,\7f2949,94105
+ SPECPDL_LET_LOCAL,\7f2951,94235
+ SPECPDL_LET_DEFAULT \7f2952,94292
+union specbinding\7f2955,94364
+ ENUM_BF \7f2957,94386
+ ENUM_BF \7f2959,94443
+ ENUM_BF \7f2964,94573
+ ENUM_BF \7f2969,94696
+ ENUM_BF \7f2974,94814
+ ENUM_BF \7f2978,94919
+ ENUM_BF \7f2983,95094
+enum handlertype \7f3021,96410
+enum handlertype { CATCHER,\7f3021,96410
+enum handlertype { CATCHER, CONDITION_CASE \7f3021,96410
+struct handler\7f3023,96457
+ enum handlertype type;\7f3025,96474
+ Lisp_Object tag_or_ch;\7f3026,96499
+ Lisp_Object val;\7f3027,96524
+ struct handler *next;\7fnext\ 13028,96543
+ struct handler *nextfree;\7fnextfree\ 13029,96567
+ Lisp_Object *bytecode_top;\7fbytecode_top\ 13036,96925
+ int bytecode_dest;\7f3037,96954
+ struct gcpro *gcpro;\7fgcpro\ 13042,97191
+ sys_jmp_buf jmp;\7f3044,97221
+ EMACS_INT lisp_eval_depth;\7f3045,97240
+ ptrdiff_t pdlcount;\7f3046,97269
+ int poll_suppress_count;\7f3047,97291
+ int interrupt_input_blocked;\7f3048,97318
+ struct byte_stack *byte_stack;\7fbyte_stack\ 13049,97349
+#define PUSH_HANDLER(\7f3053,97446
+extern Lisp_Object memory_signal_data;\7f3075,98152
+extern char *stack_bottom;\7fstack_bottom\ 13079,98285
+extern void process_pending_signals \7f3097,99102
+extern bool volatile pending_signals;\7f3098,99146
+extern void process_quit_flag \7f3100,99185
+#define QUIT \7f3101,99223
+#define QUITP \7f3112,99473
+extern Lisp_Object Vascii_downcase_table;\7f3114,99534
+extern Lisp_Object Vascii_canon_table;\7f3115,99576
+extern struct gcpro *gcprolist;\7fgcprolist\ 13130,100283
+struct gcpro\7f3132,100316
+ struct gcpro *next;\7fnext\ 13134,100331
+ volatile Lisp_Object *var;\7fvar\ 13137,100400
+ ptrdiff_t nvars;\7f3140,100482
+ const char *name;\7fname\ 13144,100567
+ int lineno;\7f3147,100623
+ int idx;\7f3150,100684
+ int level;\7f3153,100720
+#define GC_USE_GCPROS_AS_BEFORE \7f3171,101297
+#define GC_MAKE_GCPROS_NOOPS \7f3172,101332
+#define GC_MARK_STACK_CHECK_GCPROS \7f3173,101364
+#define GC_USE_GCPROS_CHECK_ZOMBIES \7f3174,101401
+#define GC_MARK_STACK \7f3177,101462
+#define BYTE_MARK_STACK \7f3181,101562
+#define GCPRO1(\7f3190,101833
+#define GCPRO2(\7f3191,101873
+#define GCPRO3(\7f3192,101939
+#define GCPRO4(\7f3194,102034
+#define GCPRO5(\7f3196,102154
+#define GCPRO6(\7f3198,102299
+#define GCPRO7(\7f3201,102474
+#define UNGCPRO \7f3202,102553
+#define GCPRO1(\7f3208,102653
+#define GCPRO2(\7f3212,102775
+#define GCPRO3(\7f3217,102967
+#define GCPRO4(\7f3223,103229
+#define GCPRO5(\7f3230,103560
+#define GCPRO6(\7f3238,103961
+#define GCPRO7(\7f3247,104431
+#define UNGCPRO \7f3257,104971
+extern int gcpro_level;\7f3261,105040
+#define GCPRO1(\7f3263,105065
+#define GCPRO2(\7f3269,105299
+#define GCPRO3(\7f3278,105717
+#define GCPRO4(\7f3289,106274
+#define GCPRO5(\7f3302,106972
+#define GCPRO6(\7f3317,107812
+#define GCPRO7(\7f3334,108793
+#define UNGCPRO \7f3353,109916
+#define RETURN_UNGCPRO(\7f3363,110183
+void staticpro \7f3375,110456
+vcopy \7f3384,110657
+set_hash_key_slot \7f3393,110932
+set_hash_value_slot \7f3399,111071
+set_symbol_function \7f3408,111306
+set_symbol_plist \7f3414,111421
+set_symbol_next \7f3420,111524
+blv_found \7f3428,111697
+set_overlay_plist \7f3437,111880
+string_intervals \7f3445,112031
+set_string_intervals \7f3453,112153
+set_char_table_defalt \7f3462,112355
+set_char_table_purpose \7f3467,112467
+set_char_table_extras \7f3475,112636
+set_char_table_contents \7f3482,112845
+set_sub_char_table_contents \7f3489,113040
+extern Lisp_Object indirect_function \7f3495,113199
+extern Lisp_Object find_symbol_value \7f3496,113251
+enum Arith_Comparison \7f3497,113303
+ ARITH_EQUAL,\7f3498,113327
+ ARITH_NOTEQUAL,\7f3499,113342
+ ARITH_LESS,\7f3500,113360
+ ARITH_GRTR,\7f3501,113374
+ ARITH_LESS_OR_EQUAL,\7f3502,113388
+ ARITH_GRTR_OR_EQUAL\7f3503,113411
+extern Lisp_Object arithcompare \7f3505,113436
+#define INTEGER_TO_CONS(\7f3511,113762
+#define CONS_TO_INTEGER(\7f3529,114625
+extern intmax_t cons_to_signed \7f3533,114840
+extern uintmax_t cons_to_unsigned \7f3534,114906
+extern struct Lisp_Symbol *indirect_variable \7findirect_variable\ 13536,114967
+extern _Noreturn void args_out_of_range \7f3537,115036
+extern _Noreturn void args_out_of_range_3 \7f3538,115104
+extern Lisp_Object do_symval_forwarding \7f3540,115195
+extern void set_internal \7f3541,115255
+extern void syms_of_data \7f3542,115327
+extern void swap_in_global_binding \7f3543,115360
+extern void syms_of_cmds \7f3546,115444
+extern void keys_of_cmds \7f3547,115477
+extern Lisp_Object detect_coding_system \7f3550,115539
+extern void init_coding \7f3552,115692
+extern void init_coding_once \7f3553,115724
+extern void syms_of_coding \7f3554,115761
+extern ptrdiff_t chars_in_text \7f3557,115828
+extern ptrdiff_t multibyte_chars_in_text \7f3558,115895
+extern void syms_of_character \7f3559,115972
+extern void init_charset \7f3562,116040
+extern void init_charset_once \7f3563,116073
+extern void syms_of_charset \7f3564,116111
+extern void init_syntax_once \7f3569,116231
+extern void syms_of_syntax \7f3570,116268
+enum { NEXT_ALMOST_PRIME_LIMIT \7f3573,116329
+extern EMACS_INT next_almost_prime \7f3574,116368
+enum constype \7f3739,123820
+enum constype {CONSTYPE_HEAP,\7fCONSTYPE_HEAP\ 13739,123820
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}\7fCONSTYPE_PURE\ 13739,123820
+extern Lisp_Object listn \7f3740,123866
+list2i \7f3745,124010
+list3i \7f3751,124119
+list4i \7f3757,124258
+extern Lisp_Object make_uninit_bool_vector \7f3763,124410
+extern Lisp_Object bool_vector_fill \7f3764,124466
+extern _Noreturn void string_overflow \7f3765,124530
+extern Lisp_Object make_string \7f3766,124576
+extern Lisp_Object make_formatted_string \7f3767,124634
+extern Lisp_Object make_multibyte_string \7f3779,124988
+extern Lisp_Object make_event_array \7f3780,125067
+extern Lisp_Object make_uninit_string \7f3781,125131
+extern Lisp_Object make_uninit_multibyte_string \7f3782,125182
+extern Lisp_Object make_string_from_bytes \7f3783,125254
+extern Lisp_Object make_specified_string \7f3784,125334
+extern Lisp_Object make_pure_string \7f3786,125426
+extern Lisp_Object make_pure_c_string \7f3787,125506
+build_pure_c_string \7f3792,125662
+build_string \7f3801,125867
+extern Lisp_Object pure_cons \7f3806,125945
+extern void make_byte_code \7f3807,126002
+extern struct Lisp_Vector *allocate_vector \7fallocate_vector\ 13808,126053
+make_uninit_vector \7f3820,126438
+make_uninit_sub_char_table \7f3833,126657
+extern struct Lisp_Vector *allocate_pseudovector \7fallocate_pseudovector\ 13844,126966
+#define ALLOCATE_PSEUDOVECTOR(\7f3850,127201
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(\7f3858,127537
+extern bool gc_in_progress;\7f3863,127738
+extern bool abort_on_gc;\7f3864,127766
+extern Lisp_Object make_float \7f3865,127791
+extern void display_malloc_warning \7f3866,127831
+extern ptrdiff_t inhibit_garbage_collection \7f3867,127874
+extern Lisp_Object make_save_int_int_int \7f3868,127926
+extern Lisp_Object make_save_obj_obj_obj_obj \7f3869,128002
+extern Lisp_Object make_save_ptr \7f3871,128112
+extern Lisp_Object make_save_ptr_int \7f3872,128155
+extern Lisp_Object make_save_ptr_ptr \7f3873,128213
+extern Lisp_Object make_save_funcptr_ptr_obj \7f3874,128268
+extern Lisp_Object make_save_memory \7f3876,128364
+extern void free_save_value \7f3877,128428
+extern Lisp_Object build_overlay \7f3878,128471
+extern void free_marker \7f3879,128545
+extern void free_cons \7f3880,128584
+extern void init_alloc_once \7f3881,128628
+extern void init_alloc \7f3882,128664
+extern void syms_of_alloc \7f3883,128695
+extern struct buffer * allocate_buffer \7f3884,128729
+extern int valid_lisp_object_p \7f3885,128776
+extern int relocatable_string_data_p \7f3886,128822
+extern void check_cons_list \7f3888,128901
+INLINE void \7f3890,128943
+extern void *r_alloc \7fr_alloc\ 13895,129064
+#define FLOAT_TO_STRING_BUFSIZE \7f3927,130527
+extern int openp \7f3957,131676
+extern Lisp_Object string_to_number \7f3959,131786
+extern void map_obarray \7f3960,131849
+extern void dir_warning \7f3962,131963
+extern void init_obarray \7f3963,132016
+extern void init_lread \7f3964,132049
+extern void syms_of_lread \7f3965,132080
+intern \7f3968,132134
+intern_c_string \7f3974,132222
+extern EMACS_INT lisp_eval_depth;\7f3980,132335
+extern Lisp_Object Vautoload_queue;\7f3981,132369
+extern Lisp_Object Vrun_hooks;\7f3982,132405
+extern Lisp_Object Vsignaling_function;\7f3983,132436
+extern Lisp_Object inhibit_lisp_code;\7f3984,132476
+extern struct handler *handlerlist;\7fhandlerlist\ 13985,132514
+extern void run_hook \7f3994,132756
+extern void run_hook_with_args_2 \7f3995,132792
+extern Lisp_Object run_hook_with_args \7f3996,132866
+extern _Noreturn void xsignal \7f3999,133025
+extern _Noreturn void xsignal0 \7f4000,133083
+extern _Noreturn void xsignal1 \7f4001,133129
+extern _Noreturn void xsignal2 \7f4002,133188
+extern _Noreturn void xsignal3 \7f4003,133260
+extern _Noreturn void signal_error \7f4005,133349
+extern Lisp_Object eval_sub \7f4006,133413
+extern Lisp_Object apply1 \7f4007,133461
+extern Lisp_Object call0 \7f4008,133515
+extern Lisp_Object call1 \7f4009,133555
+extern Lisp_Object call2 \7f4010,133608
+extern Lisp_Object call3 \7f4011,133674
+extern Lisp_Object call4 \7f4012,133753
+extern Lisp_Object call5 \7f4013,133845
+extern Lisp_Object call6 \7f4014,133950
+extern Lisp_Object call7 \7f4015,134068
+extern Lisp_Object internal_catch \7f4016,134199
+extern Lisp_Object internal_lisp_condition_case \7f4017,134292
+extern Lisp_Object internal_condition_case \7f4018,134381
+extern Lisp_Object internal_condition_case_1 \7f4019,134494
+extern Lisp_Object internal_condition_case_2 \7f4020,134629
+extern Lisp_Object internal_condition_case_n\7f4021,134790
+extern void specbind \7f4024,134986
+extern void record_unwind_protect \7f4025,135035
+extern void record_unwind_protect_ptr \7f4026,135108
+extern void record_unwind_protect_int \7f4027,135175
+extern void record_unwind_protect_void \7f4028,135236
+extern void record_unwind_protect_nothing \7f4029,135294
+extern void clear_unwind_protect \7f4030,135344
+extern void set_unwind_protect \7f4031,135390
+extern void set_unwind_protect_ptr \7f4032,135471
+extern Lisp_Object unbind_to \7f4033,135546
+extern _Noreturn void error \7f4034,135601
+fast_string_match_ignore_case \7f4136,140089
+extern ptrdiff_t fast_c_string_match_ignore_case \7f4141,140239
+extern ptrdiff_t fast_looking_at \7f4143,140336
+extern ptrdiff_t find_newline \7f4145,140475
+extern ptrdiff_t scan_newline \7f4147,140604
+extern ptrdiff_t scan_newline_from_point \7f4149,140707
+extern ptrdiff_t find_newline_no_quit \7f4150,140787
+extern ptrdiff_t find_before_next_newline \7f4152,140884
+extern void syms_of_search \7f4154,140982
+extern void clear_regexp_cache \7f4155,141017
+extern Lisp_Object Vminibuffer_list;\7f4159,141087
+extern Lisp_Object last_minibuf_string;\7f4160,141124
+extern Lisp_Object get_minibuffer \7f4161,141164
+extern void init_minibuf_once \7f4162,141211
+extern void syms_of_minibuf \7f4163,141249
+extern void syms_of_callint \7f4167,141316
+extern void syms_of_casefiddle \7f4171,141386
+extern void keys_of_casefiddle \7f4172,141425
+extern void init_casetab_once \7f4176,141495
+extern void syms_of_casetab \7f4177,141533
+extern Lisp_Object echo_message_buffer;\7f4181,141601
+extern struct kboard *echo_kboard;\7fecho_kboard\ 14182,141641
+extern void cancel_echoing \7f4183,141676
+extern Lisp_Object last_undo_boundary;\7f4184,141711
+extern bool input_pending;\7f4185,141750
+extern sigjmp_buf return_to_command_loop;\7f4187,141813
+extern Lisp_Object menu_bar_items \7f4189,141862
+extern Lisp_Object tool_bar_items \7f4190,141911
+extern void discard_mouse_events \7f4191,141967
+void handle_input_available_signal \7f4193,142028
+extern Lisp_Object pending_funcalls;\7f4195,142077
+extern bool detect_input_pending \7f4196,142114
+extern bool detect_input_pending_ignore_squeezables \7f4197,142155
+extern bool detect_input_pending_run_timers \7f4198,142215
+extern void safe_run_hooks \7f4199,142267
+extern void cmd_error_internal \7f4200,142309
+extern Lisp_Object command_loop_1 \7f4201,142369
+extern Lisp_Object read_menu_command \7f4202,142411
+extern Lisp_Object recursive_edit_1 \7f4203,142456
+extern void record_auto_save \7f4204,142500
+extern void force_auto_save_soon \7f4205,142537
+extern void init_keyboard \7f4206,142578
+extern void syms_of_keyboard \7f4207,142612
+extern void keys_of_keyboard \7f4208,142649
+extern ptrdiff_t current_column \7f4211,142715
+extern void invalidate_current_column \7f4212,142755
+extern bool indented_beyond_p \7f4213,142801
+extern void syms_of_indent \7f4214,142866
+extern void store_frame_param \7f4217,142929
+extern void store_in_alist \7f4218,143003
+extern Lisp_Object do_switch_frame \7f4219,143073
+extern Lisp_Object get_frame_param \7f4220,143146
+extern void frames_discard_buffer \7f4221,143212
+extern void syms_of_frame \7f4222,143261
+extern char **initial_argv;\7finitial_argv\ 14225,143323
+extern int initial_argc;\7f4226,143351
+extern bool display_arg;\7f4228,143426
+extern Lisp_Object decode_env_path \7f4230,143458
+extern Lisp_Object empty_unibyte_string,\7f4231,143529
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;\7f4231,143529
+extern _Noreturn void terminate_due_to_signal \7f4232,143594
+extern Lisp_Object Vlibrary_cache;\7f4234,143669
+void fixup_locale \7f4237,143730
+void synchronize_system_messages_locale \7f4238,143756
+void synchronize_system_time_locale \7f4239,143804
+INLINE void fixup_locale \7f4241,143854
+INLINE void synchronize_system_messages_locale \7f4242,143889
+INLINE void synchronize_system_time_locale \7f4243,143946
+extern void shut_down_emacs \7f4245,144006
+extern bool noninteractive;\7f4248,144132
+extern bool no_site_lisp;\7f4251,144224
+extern int daemon_pipe[\7fdaemon_pipe\ 14256,144392
+#define IS_DAEMON \7f4257,144419
+#define DAEMON_RUNNING \7f4258,144459
+extern void *w32_daemon_event;\7fw32_daemon_event\ 14260,144527
+#define IS_DAEMON \7f4261,144558
+#define DAEMON_RUNNING \7f4262,144603
+extern bool fatal_error_in_progress;\7f4266,144724
+extern bool inhibit_window_system;\7f4269,144830
+extern bool running_asynch_code;\7f4271,144923
+extern void kill_buffer_processes \7f4274,144986
+extern int wait_reading_process_output \7f4275,145035
+# define WAIT_READING_MAX \7f4281,145422
+# define WAIT_READING_MAX \7f4283,145494
+extern void add_timer_wait_descriptor \7f4286,145558
+extern void add_keyboard_wait_descriptor \7f4288,145610
+extern void delete_keyboard_wait_descriptor \7f4289,145658
+extern void add_gpm_wait_descriptor \7f4291,145725
+extern void delete_gpm_wait_descriptor \7f4292,145768
+extern void init_process_emacs \7f4294,145821
+extern void syms_of_process \7f4295,145860
+extern void setup_process_coding_systems \7f4296,145896
+extern int child_setup \7f4302,146016
+extern void init_callproc_1 \7f4303,146084
+extern void init_callproc \7f4304,146120
+extern void set_initial_environment \7f4305,146154
+extern void syms_of_callproc \7f4306,146198
+extern Lisp_Object read_doc_string \7f4309,146261
+extern Lisp_Object get_doc_string \7f4310,146311
+extern void syms_of_doc \7f4311,146372
+extern int read_bytecode_char \7f4312,146404
+extern void syms_of_bytecode \7f4315,146473
+extern struct byte_stack *byte_stack_list;\7fbyte_stack_list\ 14316,146510
+extern void mark_byte_stack \7f4318,146573
+extern void unmark_byte_stack \7f4320,146616
+extern Lisp_Object exec_byte_code \7f4321,146654
+extern void init_macros \7f4325,146804
+extern void syms_of_macros \7f4326,146836
+extern void truncate_undo_list \7f4329,146898
+extern void record_insert \7f4330,146948
+extern void record_delete \7f4331,146998
+extern void record_first_change \7f4332,147056
+extern void record_change \7f4333,147096
+extern void record_property_change \7f4334,147146
+extern void syms_of_undo \7f4337,147288
+extern void report_interval_modification \7f4340,147352
+extern void syms_of_menu \7f4343,147448
+extern void syms_of_xmenu \7f4346,147509
+extern char *get_current_dir_name \7fget_current_dir_name\ 14356,147711
+extern void stuff_char \7f4358,147760
+extern void init_foreground_group \7f4359,147793
+extern void sys_subshell \7f4360,147835
+extern void sys_suspend \7f4361,147868
+extern void discard_tty_input \7f4362,147900
+extern void init_sys_modes \7f4363,147938
+extern void reset_sys_modes \7f4364,147994
+extern void init_all_sys_modes \7f4365,148051
+extern void reset_all_sys_modes \7f4366,148090
+extern void child_setup_tty \7f4367,148130
+extern void setup_pty \7f4368,148165
+extern int set_window_size \7f4369,148194
+extern EMACS_INT get_random \7f4370,148238
+extern void seed_random \7f4371,148274
+extern void init_random \7f4372,148319
+extern void emacs_backtrace \7f4373,148351
+extern _Noreturn void emacs_abort \7f4374,148386
+extern void xputenv \7f4527,152700
+extern char *egetenv_internal \7fegetenv_internal\ 14529,152737
+egetenv \7f4532,152809
+extern void init_system_name \7f4539,153012
+#define eabs(\7f4545,153305
+#define make_fixnum_or_float(\7f4550,153438
+enum MAX_ALLOCA \7f4556,153689
+enum MAX_ALLOCA { MAX_ALLOCA \7f4556,153689
+extern void *record_xmalloc \7frecord_xmalloc\ 14558,153734
+#define USE_SAFE_ALLOCA \7f4560,153800
+#define AVAIL_ALLOCA(\7f4564,153933
+#define SAFE_ALLOCA(\7f4568,154044
+#define SAFE_NALLOCA(\7f4576,154385
+#define SAFE_ALLOCA_STRING(\7f4590,154861
+#define SAFE_FREE(\7f4598,155113
+#define SAFE_ALLOCA_LISP(\7f4625,155691
+# define USE_STACK_LISP_OBJECTS \7f4652,156813
+# undef USE_STACK_LISP_OBJECTS\7f4658,156979
+# define USE_STACK_LISP_OBJECTS \7f4659,157010
+enum { defined_GC_CHECK_STRING_BYTES \7f4663,157085
+enum { defined_GC_CHECK_STRING_BYTES \7f4665,157138
+union Aligned_Cons\7f4670,157272
+ struct Lisp_Cons s;\7f4672,157293
+ double d;\7f4673,157315
+ double d; intmax_t i;\7f4673,157315
+ double d; intmax_t i; void *p;\7fp\ 14673,157315
+union Aligned_String\7f4676,157352
+ struct Lisp_String s;\7f4678,157375
+ double d;\7f4679,157399
+ double d; intmax_t i;\7f4679,157399
+ double d; intmax_t i; void *p;\7fp\ 14679,157399
+ USE_STACK_CONS \7f4689,157707
+ USE_STACK_STRING \7f4691,157813
+#define STACK_CONS(\7f4699,158150
+#define AUTO_CONS_EXPR(\7f4701,158247
+#define AUTO_CONS(\7f4709,158610
+#define AUTO_LIST1(\7f4710,158681
+#define AUTO_LIST2(\7f4712,158789
+#define AUTO_LIST3(\7f4716,158944
+#define AUTO_LIST4(\7f4720,159119
+extern const char *verify_ascii \7fverify_ascii\ 14730,159456
+# define verify_ascii(\7f4732,159510
+#define AUTO_STRING(\7f4740,159818
+#define FOR_EACH_TAIL(\7f4752,160282
+#define FOR_EACH_ALIST_VALUE(\7f4766,160773
+maybe_gc \7f4774,161060
+functionp \7f4784,161299
+\f
+c-src/machsyscalls.c,23
+#define SYSCALL(\7f6,113
+\f
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,\7f1,0
+SYSCALL (mach_reply_port,\7f13,314
+SYSCALL (mach_thread_self,\7f18,377
+SYSCALL (mach_task_self,\7f23,441
+SYSCALL (mach_host_self,\7f28,503
+\f
+c-src/fail.c,30
+void (*prt_call(\7fprt_call\ 11,0
+\f
+c-src/h.h,2506
+ ELEM_I/\7fELEM_I\ 13,15
+} Fails_t;\7f5,85
+typedef void Lang_function \7f6,96
+void Asm_labels \7f7,127
+typedef struct tpcmd\7f8,147
+#define ggg \7f10,170
+ } arg;\7f13,198
+tpcmd;\7f15,209
+typedef struct foobar2_ \7f16,216
+ fu int (*funcptr)\7ffuncptr\ 117,242
+ long foo;\7f18,279
+ char bar;\7f19,293
+} foobar2;\7f20,307
+ DEVICE_SWP,\7f23,333
+ DEVICE_LAST\7f24,349
+} bsp_DevId;\7f25,365
+ struct constant_args \7f27,394
+ unsigned int burst;\7f28,419
+ } constant;\7f29,443
+} args;\7f30,457
+typedef int *regset;\7fregset\ 131,465
+typedef int INT;\7f32,486
+typedef union abc\7f33,503
+ int def;\7f35,523
+} ghi1;\7f36,534
+typedef union abc \7f37,542
+ int def;\7f38,562
+} ghi2;\7f39,573
+typedef struct a \7f40,581
+} b;\7f41,600
+#define c(\7f42,605
+typedef struct an_extern_linkage *an_extern_linkage_ptr;\7fan_extern_linkage_ptr\ 143,619
+typedef struct an_extern_linkage \7f44,676
+ kind;\7f46,733
+ is_explicit;\7f49,812
+ a_byte_boolean is_curly_brace_form;\7f54,1009
+} an_extern_linkage;\7f56,1054
+typedef struct pollfd pfdset[\7fpfdset\ 157,1075
+typedef union rtunion_def\7f58,1119
+ int rtint;\7f60,1149
+ char *rtstr;\7frtstr\ 161,1164
+ struct rtx_def *rtx;\7frtx\ 162,1181
+ } womboid \7f63,1206
+typedef union rtunion_def\7f64,1220
+ int rtint;\7f68,1250
+ char *rtstr;\7frtstr\ 169,1263
+ struct rtx_def *rtxp;\7frtxp\ 170,1278
+ struct rtx_def rtxnp;\7f71,1302
+womboid\7f75,1330
+enum {dog,\7fdog\ 181,1416
+enum {dog, cat}\7fcat\ 181,1416
+enum {dog, cat} animals;\7f81,1416
+typedef void (_CALLBACK_ *signal_handler)\7fsignal_handler\ 182,1441
+typedef void (_CALLBACK_ *signal_handler1)\7fsignal_handler1\ 183,1489
+/* comment */ #define ANSIC\7f84,1538
+ #define ANSIC\7f85,1566
+typedef void (proc)\7f87,1588
+typedef void OperatorFun(\7f88,1612
+typedef int f(\7f89,1648
+struct my_struct \7f91,1691
+typedef struct my_struct my_typedef;\7f93,1713
+typedef RETSIGTYPE (*signal_handler_t)\7fsignal_handler_t\ 194,1750
+ Date 04 May 87 235311 PDT \7f96,1802
+typedef unsigned char unchar;\7f99,1880
+typedef int X,\7f100,1910
+typedef int X, Y,\7f100,1910
+typedef int X, Y, Z;\7f100,1910
+typedef mio mao;\7f101,1931
+extern void ab(\7f102,1948
+typedef struct a \7f103,1966
+typedef struct a { } b;\7f103,1966
+typedef struct b\7f104,1990
+} c;\7f106,2009
+int (*oldhup)\7foldhup\ 1107,2014
+request (*oldhup)\7foldhup\ 1108,2031
+int extvar;\7f109,2053
+#define tag1\7f110,2065
+#define aaaaaa \7f111,2078
+#define bbbbbb\\7fbbbbbb\ 1113,2102
+#define cccccccccc\7f115,2125
+#define enter_critical_section \7f116,2144
+#define exit_critical_to_previous \7f117,2199
+#define UNDEFINED\7f118,2259
+struct re_pattern_buffer \7f119,2277
+struct re_pattern_buffer { unsigned char *buffer;\7fbuffer\ 1119,2277
+\f
+cp-src/c.C,3133
+template <typename ipc3dIslandHierarchy,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels,\7f1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned numOfChannels, typename ipc3dLinkControl,\7f1,0
+class CMultiChannelCSC19_3D\7f2,151
+ ipc3dLinkControlSetup setup;\7f5,190
+ ipc3dCSC19<\7fipc3dCSC19\ 16,227
+ ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl> mcCSC;\7f6,227
+ advTimer cscInitTime;\7f7,388
+ advTimer cscSegmentationTime;\7f8,418
+ advTimer outputTime;\7f9,456
+ void execute(\7f11,493
+static void my_function1(\7f24,984
+int main \7f25,1026
+double base \7f26,1088
+operator += \7foperator +=\ 129,1174
+class TestRecord;\7f31,1233
+typedef struct s1 \7f32,1251
+ int counter;\7f33,1271
+} t1;\7f34,1287
+struct s2 \7f35,1293
+ int counter;\7f36,1305
+typedef struct s2 t2;\7f38,1324
+class A \7f39,1346
+ enum { rosso,\7f40,1356
+ enum { rosso, giallo,\7f40,1356
+ enum { rosso, giallo, verde \7f40,1356
+ enum { rosso, giallo, verde } colori;\7f40,1356
+ const A& operator+(\7f41,1396
+const A& A::operator+(\7foperator+\ 143,1431
+void operator+(\7f44,1467
+void operator -(\7foperator -\ 145,1495
+void operator int(\7foperator int\ 146,1524
+A<int>* f(\7f48,1556
+int f(\7f49,1571
+int A<int>::f(\7ff\ 150,1590
+A<float,B<int> > A<B<float>,int>::f(\7ff\ 151,1618
+template <class C, int n> class AT \7f52,1668
+template <class C, int n> class AT { C t[\7ft\ 152,1668
+class AU \7f53,1716
+class AU { T x;\7f53,1716
+class B<\7fB\ 154,1735
+class B<int> { void f(\7f54,1735
+const A::B::T& abt \7f55,1766
+class A \7f56,1792
+class A { class B \7f56,1792
+class A { class B { int f(\7f56,1792
+class A \7f57,1827
+ int get_data(\7f58,1837
+ A operator+(\7f59,1861
+is_muldiv_operation(\7f61,1888
+domain foo \7f68,1956
+ void f(\7f69,1969
+void A::A(\7fA\ 172,1990
+struct A \7f73,2005
+struct A { A(\7f73,2005
+struct B \7f74,2023
+struct B { B(\7f74,2023
+void B::B(\7fB\ 175,2042
+void BE_Node::BE_Node(\7fBE_Node\ 176,2057
+class BE_Node \7f77,2084
+struct foo \7f79,2103
+ int x;\7f80,2116
+class test \7f86,2157
+ int f(\7f87,2170
+ int ff(\7f89,2232
+ int g(\7f90,2255
+class AST_Root \7f92,2279
+class AST_Root;\7f96,2328
+AST_ConcreteType::AST_ConcreteType(\7f99,2394
+AST_Array::AST_Array(\7f107,2533
+ void f(\7f115,2734
+struct A \7f117,2754
+ ~A(\7f118,2765
+A::~A(\7f~A\ 1120,2778
+struct B \7f122,2790
+ ~B(\7f123,2801
+enum {dog,\7fdog\ 1126,2818
+enum {dog, cat}\7fcat\ 1126,2818
+enum {dog, cat} animals;\7f126,2818
+struct {int teats;\7f127,2843
+struct {int teats;} cow;\7f127,2843
+class Boo \7f129,2869
+ enum {dog,\7fdog\ 1130,2881
+ enum {dog, cat}\7fcat\ 1130,2881
+ enum {dog, cat} animals;\7f130,2881
+ struct {int treats;\7f131,2910
+ struct {int treats;} cow;\7f131,2910
+ int i,\7f132,2940
+ int i,a,\7f132,2940
+ int i,a,b;\7f132,2940
+ foo(\7f133,2955
+ Boo(\7f137,2996
+ Boo(\7f138,3053
+Boo::Boo(\7f141,3071
+typedef int should_see_this_one_enclosed_in_extern_C;\7f149,3156
+typedef int (*should_see_this_function_pointer)\7fshould_see_this_function_pointer\ 1153,3229
+typedef int should_see_this_array_type[\7fshould_see_this_array_type\ 1156,3311
+\f
+cp-src/x.cc,102
+class XX\7f1,0
+ int foo(\7f4,19
+ void bar(\7f5,35
+XX::foo(\7ffoo\ 19,60
+XX::bar(\7fbar\ 115,95
+main(\7f21,126
+\f
+cp-src/burton.cpp,124
+::dummy::dummy test::dummy1(\7fdummy1\ 11,0
+::dummy::dummy test::dummy2(\7fdummy2\ 16,64
+::dummy::dummy test::dummy3(\7fdummy3\ 111,143
+\f
+cp-src/functions.cpp,778
+void Date::setDate \7fsetDate\ 15,148
+void Date::plus \7fplus\ 132,939
+void Date::minus \7fminus\ 142,1229
+void Date::shift \7fshift\ 152,1407
+Date & Date::operator = \7foperator =\ 162,1628
+Date & Date::operator += \7foperator +=\ 169,1789
+Date & Date::operator -= \7foperator -=\ 178,1939
+Date & Date::operator ++ \7foperator ++\ 187,2080
+Date & Date::operator -- \7foperator --\ 196,2216
+int Date::operator - \7foperator -\ 1104,2331
+int Date::operator < \7foperator <\ 1112,2483
+int Date::operator > \7foperator >\ 1116,2557
+int Date::operator == \7foperator ==\ 1120,2631
+ostream& operator << \7foperator <<\ 1124,2707
+istream& operator >> \7foperator >>\ 1133,2943
+bool isLeap \7f159,3543
+bool isHoliday \7f163,3629
+void asort(\7f173,3865
+void ReadVacation \7f186,4064
+void Debug \7f201,4523
+int WorkingDays(\7f211,4867
+Date StartDay(\7f226,5129
+\f
+cp-src/MDiagArray2.h,1194
+#define octave_MDiagArray2_h \7f29,870
+#undef LTGT\7f35,967
+#define LTGT\7f39,1031
+#define LTGT \7f42,1051
+class MDiagArray2;\7f45,1087
+operator += \7foperator +=\ 148,1145
+operator -= \7foperator -=\ 151,1242
+operator * \7foperator *\ 154,1339
+operator / \7foperator /\ 157,1428
+operator * \7foperator *\ 160,1517
+operator + \7foperator +\ 163,1605
+operator - \7foperator -\ 166,1707
+product \7f69,1808
+operator - \7foperator -\ 172,1907
+class MDiagArray2 \7f78,2022
+ MDiagArray2 \7f82,2077
+ MDiagArray2 \7f86,2154
+ MDiagArray2 \7f87,2198
+ MDiagArray2 \7f88,2254
+ MDiagArray2 \7f89,2329
+ MDiagArray2 \7f90,2387
+ MDiagArray2 \7f91,2450
+ ~MDiagArray2 \7f93,2515
+ MDiagArray2<T>& operator = \7foperator =\ 195,2542
+ DiagArray2<T>::operator = \7foperator =\ 197,2603
+ operator MArray2<T> \7foperator MArray2<T>\ 1101,2667
+ operator += \7foperator +=\ 1116,2966
+ operator -= \7foperator -=\ 1119,3057
+ friend MDiagArray2<T> operator * \7foperator *\ 1123,3174
+ friend MDiagArray2<T> operator / \7foperator /\ 1124,3253
+ friend MDiagArray2<T> operator * \7foperator *\ 1128,3384
+ operator + \7foperator +\ 1133,3544
+ operator - \7foperator -\ 1136,3640
+ friend MDiagArray2<T> operator - \7foperator -\ 1141,3803
+#undef LTGT\7f144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(\7f146,3887
+\f
+cp-src/Range.h,784
+#define octave_Range_h \7f24,765
+class istream;\7f30,840
+class ostream;\7f31,855
+class Matrix;\7f32,870
+Range\7f35,891
+ Range \7f39,909
+ Range \7f42,995
+ Range \7f46,1130
+ Range \7f50,1248
+ double base \7f54,1376
+ double limit \7f55,1425
+ double inc \7f56,1475
+ int nelem \7f57,1523
+ bool all_elements_are_ints \7f59,1571
+ Matrix matrix_value \7f61,1615
+ double min \7f63,1652
+ double max \7f64,1679
+ void sort \7f66,1707
+ void set_base \7f68,1728
+ void set_limit \7f69,1774
+ void set_inc \7f70,1821
+ friend ostream& operator << \7foperator <<\ 172,1867
+ friend istream& operator >> \7foperator >>\ 173,1928
+ void print_range \7f75,1984
+ double rng_base;\7f79,2023
+ double rng_limit;\7f80,2042
+ double rng_inc;\7f81,2062
+ int rng_nelem;\7f83,2081
+ int nelem_internal \7f85,2099
+extern Range operator - \7foperator -\ 188,2138
+\f
+cp-src/screen.cpp,228
+unsigned char cursor_x,\7f15,548
+unsigned char cursor_x, cursor_y;\7f15,548
+static union REGS regs;\7f16,582
+void goto_xy(\7f18,607
+void hide_cursor(\7f27,774
+void cursor_position(\7f32,836
+void clear_screen(\7f41,997
+void write_xyc(\7f55,1247
+\f
+cp-src/screen.hpp,538
+#define __COLORS\7f9,401
+enum COLORS \7f11,419
+ BLACK,\7f12,433
+ BLUE,\7f13,471
+ GREEN,\7f14,481
+ CYAN,\7f15,492
+ RED,\7f16,502
+ MAGENTA,\7f17,511
+ BROWN,\7f18,524
+ LIGHTGRAY,\7f19,535
+ DARKGRAY,\7f20,550
+ LIGHTBLUE,\7f21,589
+ LIGHTGREEN,\7f22,604
+ LIGHTCYAN,\7f23,620
+ LIGHTRED,\7f24,635
+ LIGHTMAGENTA,\7f25,649
+ YELLOW,\7f26,667
+ WHITE\7f27,679
+#define SCREEN_FP(\7f31,700
+#define SCREEN_START \7f33,795
+void goto_xy(\7f35,835
+void hide_cursor(\7f36,883
+void cursor_position(\7f37,907
+void clear_screen(\7f38,935
+void write_xyc(\7f39,960
+\f
+cp-src/conway.cpp,288
+#define max(\7f12,357
+#define min(\7f13,393
+const int num_rows \7f15,430
+const int num_columns \7f16,470
+class site *field_of_play[\7ffield_of_play\ 118,499
+int site::total_surrounding(\7ftotal_surrounding\ 120,550
+void display(\7f37,958
+void glider(\7f50,1239
+void traffic_light(\7f59,1478
+void main(\7f67,1633
+\f
+cp-src/conway.hpp,322
+class site:\7fsite\ 15,235
+ char x,\7f7,269
+ char x, y,\7f7,269
+ char x, y, alive,\7f7,269
+ char x, y, alive, next_alive;\7f7,269
+ int total_surrounding(\7f8,303
+ site(\7f10,344
+ ~site(\7f11,397
+ char read(\7f12,410
+ void set(\7f13,444
+ void clear(\7f14,478
+ void compute_next_state(\7f15,514
+ void step(\7f22,717
+\f
+cp-src/clheir.cpp,359
+const int max_num_generic_objects \7f9,298
+generic_object * object_registry[\7fobject_registry\ 110,340
+void init_registry(\7f12,400
+void step_everybody(\7f19,527
+void discrete_location::clear_neighbors(\7fclear_neighbors\ 131,852
+generic_object::generic_object(\7fgeneric_object\ 136,981
+generic_object::~generic_object(\7f~generic_object\ 148,1255
+void agent::move(\7fmove\ 153,1353
+\f
+cp-src/clheir.hpp,990
+extern void init_registry(\7f10,452
+extern void step_everybody(\7f11,485
+class generic_object\7f13,520
+ int where_in_registry;\7f15,547
+ generic_object(\7f17,582
+ ~generic_object(\7f19,724
+ virtual void compute_next_state(\7f21,843
+ virtual void step(\7f22,889
+const int max_num_directions \7f31,1220
+class location:\7flocation\ 133,1290
+ location(\7f43,1643
+ ~location(\7f44,1662
+class irregular_location:\7firregular_location\ 147,1687
+ double x,\7f49,1735
+ double x, y,\7f49,1735
+ double x, y, z;\7f49,1735
+ irregular_location(\7f51,1763
+ ~irregular_location(\7f53,1855
+class discrete_location:\7fdiscrete_location\ 156,1890
+ int x,\7f58,1937
+ int x, y,\7f58,1937
+ int x, y, z;\7f58,1937
+ class location *neighbors[\7fneighbors\ 159,1954
+ void clear_neighbors(\7f60,2005
+ discrete_location(\7f62,2045
+ ~discrete_location(\7f65,2155
+ void assign_neighbor(\7f66,2185
+class agent:\7fagent\ 175,2509
+ location *where;\7fwhere\ 177,2550
+ agent(\7f79,2579
+ ~agent(\7f80,2592
+ void move(\7f81,2606
+\f
+cp-src/fail.C,351
+struct A \7f7,263
+ struct B \7f8,274
+ struct C \7f9,289
+ int x;\7f10,305
+ C(\7f11,318
+ operator int(\7foperator int\ 112,342
+ typedef C T;\7f14,389
+ typedef B T2;\7f16,414
+class String;\7f20,437
+class A \7f23,453
+ class B \7f24,463
+ class C \7f25,474
+ int f(\7f26,488
+int A::B::f(\7ff\ 131,521
+main(\7f37,571
+ class D \7f41,622
+ D(\7f43,659
+ int x;\7f44,694
+\f
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch \7f1,0
+(defalias 'pending-delete-mode \7fpending-delete-mode\ 15,102
+(defalias (quote explicitly-quoted-pending-delete-mode)\7f8,175
+\f
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name \7f34,1034
+(defgroup etags \7f43,1498
+(defcustom tags-case-fold-search \7f47,1566
+(defcustom tags-table-list \7f59,2051
+(defcustom tags-compression-info-list\7f69,2449
+(defcustom tags-add-tables \7f88,3231
+(defcustom tags-revert-without-query \7f98,3627
+(defvar tags-table-computed-list \7f103,3778
+(defvar tags-table-computed-list-for \7f112,4262
+(defvar tags-table-list-pointer \7f117,4510
+(defvar tags-table-list-started-at \7f121,4701
+(defvar tags-table-set-list \7f124,4821
+(defcustom find-tag-hook \7f129,5000
+(defcustom find-tag-default-function \7f137,5263
+(define-obsolete-variable-alias 'find-tag-marker-ring-length\7ffind-tag-marker-ring-length\ 1145,5602
+(defcustom tags-tag-face \7f148,5699
+(defcustom tags-apropos-verbose \7f154,5834
+(defcustom tags-apropos-additional-actions \7f160,5998
+(defvaralias 'find-tag-marker-ring \7ffind-tag-marker-ring\ 1183,6917
+(defvar default-tags-table-function \7f189,7097
+(defvar tags-location-ring \7f194,7323
+(defvar tags-table-files \7f201,7599
+(defvar tags-completion-table \7f206,7766
+(defvar tags-included-tables \7f209,7858
+(defvar next-file-list \7f212,7953
+(defvar tags-table-format-functions \7f217,8059
+(defvar file-of-tag-function \7f224,8440
+(defvar tags-table-files-function \7f228,8634
+(defvar tags-completion-table-function \7f230,8745
+(defvar snarf-tag-function \7f232,8840
+(defvar goto-tag-location-function \7f236,9049
+(defvar find-tag-regexp-search-function \7f239,9222
+(defvar find-tag-regexp-tag-order \7f241,9343
+(defvar find-tag-regexp-next-line-after-failure-p \7f243,9452
+(defvar find-tag-search-function \7f245,9572
+(defvar find-tag-tag-order \7f247,9679
+(defvar find-tag-next-line-after-failure-p \7f249,9774
+(defvar list-tags-function \7f251,9880
+(defvar tags-apropos-function \7f253,9968
+(defvar tags-included-tables-function \7f255,10062
+(defvar verify-tags-table-function \7f257,10181
+(defun initialize-new-tags-table \7f260,10292
+(defun tags-table-mode \7f276,10980
+(defun visit-tags-table \7f285,11245
+(defun tags-table-check-computed-list \7f321,12783
+(defun tags-table-extend-computed-list \7f360,14654
+(defun tags-expand-table-name \7f400,16367
+(defun tags-table-list-member \7f409,16710
+(defun tags-verify-table \7f421,17182
+(defun tags-table-including \7f470,19302
+(defun tags-next-table \7f522,21346
+(defun visit-tags-table-buffer \7f543,22203
+(defun tags-reset-tags-tables \7f712,28513
+(defun file-of-tag \7f731,29170
+(defun tags-table-files \7f740,29519
+(defun tags-included-tables \7f749,29869
+(defun tags-completion-table \7f755,30115
+(defun tags-lazy-completion-table \7f783,31309
+(defun tags-completion-at-point-function \7f799,31944
+(defun find-tag-tag \7f818,32694
+(defvar last-tag \7f837,33367
+(defun find-tag-interactive \7f840,33426
+(defvar find-tag-history \7f852,33841
+(defvar etags-case-fold-search)\7f855,33906
+(defvar etags-syntax-table)\7f856,33938
+(defvar local-find-tag-hook)\7f857,33966
+(defun find-tag-noselect \7f860,34011
+(defun find-tag \7f932,37125
+(defun find-tag-other-window \7f959,38341
+(defun find-tag-other-frame \7f1000,40269
+(defun find-tag-regexp \7f1025,41443
+(defalias 'pop-tag-mark \7fpop-tag-mark\ 11049,42605
+(defvar tag-lines-already-matched \7f1052,42656
+(defun find-tag-in-order \7f1055,42763
+(defun tag-find-file-of-tag-noselect \7f1167,47109
+(defun tag-find-file-of-tag \7f1200,48955
+(defun etags-recognize-tags-table \7f1208,49181
+(defun etags-verify-tags-table \7f1241,50812
+(defun etags-file-of-tag \7f1246,51010
+(defun etags-tags-completion-table \7f1256,51345
+(defun etags-snarf-tag \7f1286,52551
+(defun etags-goto-tag-location \7f1324,54120
+(defun etags-list-tags \7f1388,56563
+(defmacro tags-with-face \7f1423,57838
+(defun etags-tags-apropos-additional \7f1431,58171
+(defun etags-tags-apropos \7f1465,59408
+(defun etags-tags-table-files \7f1527,61617
+(defun etags-tags-included-tables \7f1542,62053
+(defun tags-recognize-empty-tags-table \7f1559,62593
+(defun tag-exact-file-name-match-p \7f1587,63739
+(defun tag-file-name-match-p \7f1596,64132
+(defun tag-exact-match-p \7f1609,64688
+(defun tag-implicit-name-match-p \7f1620,65256
+(defun tag-symbol-match-p \7f1633,65856
+(defun tag-word-match-p \7f1643,66292
+(defun tag-partial-file-name-match-p \7f1652,66690
+(defun tag-any-match-p \7f1662,67134
+(defun tag-re-match-p \7f1667,67318
+(defcustom tags-loop-revert-buffers \7f1675,67567
+(defun next-file \7f1685,67976
+(defvar tags-loop-operate \7f1760,70890
+(defvar tags-loop-scan\7f1763,70984
+(defun tags-loop-eval \7f1771,71313
+(defun tags-loop-continue \7f1782,71642
+(defun tags-search \7f1850,73948
+(defun tags-query-replace \7f1871,74774
+(defun tags-complete-tags-table-file \7f1896,75998
+(defun list-tags \7f1906,76377
+(defun tags-apropos \7f1934,77330
+(define-button-type 'tags-select-tags-table\7ftags-select-tags-table\ 11957,78156
+(defun select-tags-table \7f1964,78395
+(defvar select-tags-table-mode-map \7f2019,80522
+(define-derived-mode select-tags-table-mode \7f2030,80905
+(defun select-tags-table-select \7f2034,81089
+(defun select-tags-table-quit \7f2043,81455
+(defun complete-tag \7f2049,81610
+(defconst etags--xref-limit \7f2074,82551
+(defvar etags-xref-find-definitions-tag-order \7f2076,82586
+(defun etags-xref-find \7f2082,82876
+(defun etags--xref-find-definitions \7f2096,83405
+(defclass xref-etags-location \7f2129,85119
+(defun xref-make-etags-location \7f2135,85342
+(cl-defmethod xref-location-marker \7f2139,85497
+(cl-defmethod xref-location-line \7f2146,85741
+\f
+erl-src/gs_dialog.erl,98
+-define(VERSION\7f2,32
+behaviour_info(\7f51,2177
+show(\7f124,5458
+dialog_loop(\7f219,9529
+test(\7f252,10806
+\f
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+f-src/entry.strange,172
+ LOGICAL FUNCTION PRTPKG \7f3,75
+ ENTRY SETPRT \7f194,3866
+ ENTRY MSGSEL \7f395,8478
+ & intensity1(\7f577,12231
+ character*(*) function foo(\7f579,12307
+\f
+forth-src/test-forth.fth,408
+: a-forth-word \7f20,301
+99 constant a-forth-constant!\7f22,343
+55 value a-forth-value?\7f23,373
+create :a-forth-dictionary-entry\7f24,397
+defer #a-defer-word\7f27,460
+: (another-forth-word)\7f(another-forth-word\ 129,481
+ 9 field >field1\7f36,582
+ 5 field >field2\7f37,605
+constant (a-forth-constant\7f(a-forth-constant\ 138,628
+2000 buffer: #some-storage\7f41,657
+code assemby-code-word \7f43,685
+: a-forth-word \7f50,870
+\f
+go-src/test.go,48
+package main\7f1,0
+func say(\7f5,28
+func main(\7f9,72
+\f
+go-src/test1.go,172
+package main\7f1,0
+type plus \7f5,28
+type str \7f9,65
+type intNumber \7f13,99
+func (s str) PrintAdd(\7f17,136
+func (n intNumber) PrintAdd(\7f21,189
+func test(\7f25,248
+func main(\7f29,285
+\f
+html-src/softwarelibero.html,200
+Cos'è il software libero?\7f4,38
+Licenze d'uso di un programma\7flicenze\ 165,2500
+Sfatiamo alcuni miti\7f138,6118
+Il movimento open source\7foss\ 1191,8037
+Impatto pratico del software libero\7fimpatto\ 1231,10066
+\f
+html-src/index.shtml,104
+ \7f8,281
+In evidenza\7f15,447
+Comunicati e iniziative\7f32,976
+Ultime notizie dall'associazione\7f63,2030
+\f
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and Quantizing Algorithms\7f7,277
+Description\7falgorithms\ 110,481
+Generating the Data\7fgenalgorithm\ 148,1995
+Convolutionally\7fconalgorithm\ 155,2512
+Next\7fstatetable\ 1262,11587
+Output\7foutputtable\ 1350,13915
+Mapping the Channel Symbols\7fmapping\ 1433,16213
+Adding Noise to the\7faddnoise\ 1439,16607
+Quantizing the Received\7fquantizing\ 1469,19100
+\f
+html-src/software.html,439
+Francesco Potortì Software Page\7f9,280
+Software that I wrote for supporting my research activity\7fsimulation\ 136,1398
+MTG\7fmtg\ 141,1482
+Fracas\7ffracas\ 165,2624
+GaliLEO\7fgalileo\ 1101,4232
+Leasqr\7fleasqr\ 1114,4677
+Free software that I wrote for the GNU project or for my personal or work\7fgnu\ 1142,6065
+Etags\7fetags\ 1148,6180
+checkiso\7f161,6729
+cgrep\7f178,7547
+debian-bug.el\7fdebian-bug\ 1190,7979
+tcpdump\7f205,8564
+Links to interesting software\7flinks\ 1216,8891
+\f
+lua-src/allegro.lua,400
+local function get_layer_by_name \7f7,175
+local function count_layers \7f33,621
+function GetLayerByName \7f54,980
+function GetUniqueLayerName \7f65,1204
+function SelectLayer \7f76,1415
+function NewLayer \7f86,1773
+function NewLayerSet \7f144,3226
+function RemoveLayer \7f170,3750
+function MoveLayerTop \7f211,4767
+function MoveLayerBottom \7f223,5079
+function MoveLayerBefore \7f236,5457
+function MoveLayerAfter \7f258,6090
+\f
+lua-src/test.lua,442
+function Rectangle.getPos \7f2,15
+function Rectangle.getPos \7fgetPos\ 12,15
+function Circle.getPos \7f6,61
+function Circle.getPos \7fgetPos\ 16,61
+function Cube.data.getFoo \7f10,102
+function Cube.data.getFoo \7fgetFoo\ 110,102
+function Square.something:Bar \7f14,148
+function Square.something:Bar \7fBar\ 114,148
+ function test.me_22a(\7f22,241
+ function test.me_22a(\7fme_22a\ 122,241
+ local function test.me22b \7f25,297
+ local function test.me22b \7fme22b\ 125,297
+\f
+make-src/Makefile,2175
+LATEST=\7f1,0
+RELEASELIST=\7f2,10
+ADASRC=\7f4,104
+ASRC=\7f5,171
+CSRC=\7f6,197
+CPSRC=\7f10,423
+ELSRC=\7f13,614
+ERLSRC=\7f14,661
+FORTHSRC=\7f15,702
+FSRC=\7f16,726
+HTMLSRC=\7f17,776
+JAVASRC=\7f18,844
+LUASRC=\7f19,907
+MAKESRC=\7f20,926
+OBJCSRC=\7f21,943
+OBJCPPSRC=\7f22,999
+PASSRC=\7f23,1035
+PERLSRC=\7f24,1053
+PHPSRC=\7f25,1108
+PSSRC=\7f26,1156
+PROLSRC=\7f27,1173
+PYTSRC=\7f28,1210
+TEXSRC=\7f29,1227
+YSRC=\7f30,1282
+SRCS=\7f31,1325
+NONSRCS=\7f35,1577
+VHDLFLAGS=\7f37,1624
+COBOLFLAGS=\7f38,1827
+POSTSCRIPTFLAGS=\7f39,1889
+TCLFLAGS=\7f40,1943
+GETOPTOBJS=\7f42,2002
+RXINCLUDE=\7f43,2034
+REGEXOBJS=\7f44,2056
+CHECKOBJS=\7f46,2075
+CHECKFLAGS=\7f47,2105
+OBJS=\7f48,2145
+CPPFLAGS=\7f49,2190
+LDFLAGS=\7f50,2259
+WARNINGS=\7f51,2282
+CFLAGS=\7f52,2466
+FASTCFLAGS=\7f55,2530
+FASTCFLAGSWARN=\7f56,2591
+FILTER=\7f58,2641
+REGEX=\7f59,2695
+xx=\7f60,2741
+MAKE:\7fMAKE\ 162,2790
+RUN=\7f63,2825
+RUN=\7f64,2865
+OPTIONS=\7f65,2870
+ARGS=\7f66,2922
+infiles \7f68,2940
+quiettest:\7fquiettest\ 170,3002
+test:\7ftest\ 179,3409
+${CHECKOBJS}:\7f${CHECKOBJS}\ 188,3805
+checker:\7fchecker\ 190,3849
+standalone:\7fstandalone\ 196,4062
+prof:\7fprof\ 1101,4168
+fastetags:\7ffastetags\ 1104,4198
+fastctags:\7ffastctags\ 1108,4322
+staticetags:\7fstaticetags\ 1112,4446
+rsynctofly:\7frsynctofly\ 1116,4608
+rsyncfromfly:\7frsyncfromfly\ 1119,4698
+web ftp publish:\7fweb ftp publish\ 1122,4794
+release distrib:\7frelease distrib\ 1129,5115
+tags:\7ftags\ 1134,5255
+clean:\7fclean\ 1136,5267
+srclist:\7fsrclist\ 1139,5302
+regexfile:\7fregexfile\ 1143,5391
+/home/www/pub/etags.c.gz:\7f/home/www/pub/etags.c.gz\ 1149,5566
+/home/www/pub/software/unix/etags.tar.gz:\7f/home/www/pub/software/unix/etags.tar.gz\ 1156,5825
+regex.o:\7fregex.o\ 1159,6031
+getopt.o:\7fgetopt.o\ 1162,6086
+getopt1.o:\7fgetopt1.o\ 1165,6147
+etags:\7fetags\ 1168,6210
+ctags:\7fctags\ 1171,6299
+man manpage:\7fman manpage\ 1174,6396
+etags.1.man:\7fetags.1.man\ 1176,6422
+maintaining.info:\7fmaintaining.info\ 1179,6475
+TAGS:\7fTAGS\ 1182,6557
+%ediff:\7f%ediff\ 1185,6587
+oediff:\7foediff\ 1188,6677
+%cdiff:\7f%cdiff\ 1191,6764
+xdiff:\7fxdiff\ 1194,6854
+ETAGS:\7fETAGS\ 1197,6942
+ETAGS%:\7fETAGS%\ 1200,7012
+ETAGS13 ETAGS14 ETAGS15:\7fETAGS13 ETAGS14 ETAGS15\ 1203,7084
+ETAGS12:\7fETAGS12\ 1206,7216
+OTAGS:\7fOTAGS\ 1209,7304
+CTAGS:\7fCTAGS\ 1212,7369
+CTAGS%:\7fCTAGS%\ 1215,7443
+CTAGS13 CTAGS14 CTAGS15:\7fCTAGS13 CTAGS14 CTAGS15\ 1218,7545
+EXTAGS:\7fEXTAGS\ 1221,7680
+.PRECIOUS:\7f.PRECIOUS\ 1224,7838
+FRC:\7fFRC\ 1226,7894
+\f
+objc-src/Subprocess.h,98
+#define Subprocess \7f41,1217
+#define BUFFERSIZE \7f43,1267
+@interface Subprocess:\7fSubprocess\ 145,1292
+\f
+objc-src/Subprocess.m,476
+#define PTY_TEMPLATE \7f20,494
+#define PTY_LENGTH \7f21,528
+static void showError(\7f23,551
+@interface Subprocess(Private)\7f32,737
+- childDidExit\7f39,851
+- fdHandler:\7ffdHandler\ 167,1589
+showError \7f98,2360
+fdHandler \7f112,2785
+getptys \7f119,2907
+- init:\7finit\ 1183,4815
+ andStdErr:\7finit\ 1197,5147
+- send:(const char *)string withNewline:\7fsend\ 1300,7436
+- send:\7fsend\ 1308,7599
+- terminateInput\7f314,7689
+- terminate:\7fterminate\ 1321,7810
+- setDelegate:\7fsetDelegate\ 1332,7961
+- delegate\7f338,8031
+\f
+objc-src/PackInsp.h,109
+#define NUMSTATS \7f36,1101
+#define TYPESTOSTAT \7f37,1120
+@interface PackageInspector:\7fPackageInspector\ 139,1172
+\f
+objc-src/PackInsp.m,1322
+static const char RCSid[\7fRCSid\ 130,1032
+#define VERSION \7f34,1116
+# define DEBUG \7f37,1155
+#define LISTCONTENTS \7f39,1181
+#define OPENBUTTON \7f47,1352
+#define LISTCONTENTSBUTTON \7f48,1449
+#define LISTDESCRIPTIONBUTTON \7f49,1562
+#define STATE_UNINSTALLED \7f52,1687
+#define STATE_INSTALLED \7f53,1807
+#define STATE_COMPRESSD \7f54,1948
+#define SIZEFORMAT \7f57,2152
+#define KBYTES \7f58,2362
+#define MBYTES \7f59,2473
+#define LOCALIZE(\7f61,2585
+#define LOCALIZE_ARCH(\7f62,2668
++new\7fnew\ 167,2802
+-showInfo:\7fshowInfo\ 193,3417
+-revert:\7frevert\ 1107,3737
+-ok:\7fok\ 1136,4297
+-load\7fload\ 1143,4424
+#define LOOKUP(\7f156,4826
+#undef LOOKUP\7f176,5694
+-loadKeyValuesFrom:(const char *)type inTable:\7floadKeyValuesFrom\ 1186,5852
+-loadContentsOf:(const char *)type inTable:\7floadContentsOf\ 1238,7079
+-loadImage\7floadImage\ 1257,7552
+#define STAT_EQ(\7f275,7940
+-(BOOL)shouldLoad\7f280,8116
+-toggleDescription\7ftoggleDescription\ 1301,8626
+-(const char *)getPath:(char *)buf forType:\7fgetPath\ 1317,8899
+-setRevertButtonTitle\7fsetRevertButtonTitle\ 1333,9320
+-(const char *)formatSize:(const char *)size inBuf:\7fformatSize\ 1344,9525
+#define WORKING \7f368,10045
+-(void)getArchs\7f370,10100
+-(void)addArchs:\7faddArchs\ 1385,10520
+-subprocess:(Subprocess *)sender output:\7fsubprocess\ 1428,11351
+-subprocessDone:\7fsubprocessDone\ 1436,11484
+static void openInWorkspace(\7f446,11634
+-open:\7fopen\ 1464,12063
+\f
+objcpp-src/SimpleCalc.H,41
+@interface SimpleCalc:\7fSimpleCalc\ 114,400
+\f
+objcpp-src/SimpleCalc.M,445
+- init\7f52,1747
+- appendToDisplay:\7fappendToDisplay\ 160,1933
+- registerAction:\7fregisterAction\ 170,2210
+- decimalKey:\7fdecimalKey\ 177,2348
+- numberKeys:\7fnumberKeys\ 191,2661
+- equalsKey:\7fequalsKey\ 1112,3192
+- operationKeys:\7foperationKeys\ 1131,3680
+- clearKey:\7fclearKey\ 1153,4301
+- clearAllKey:\7fclearAllKey\ 1160,4410
+- appDidInit:\7fappDidInit\ 1168,4591
+- windowWillClose:\7fwindowWillClose\ 1178,4882
+- infoPanel:\7finfoPanel\ 1186,5132
+- helpPanel:\7fhelpPanel\ 1198,5482
+\f
+pas-src/common.pas,1875
+procedure InitializeStringPackage;\7f26,527
+function newtextstring;\7f34,874
+procedure disposetextstring;\7f52,1404
+function ConcatT;\7f78,2066
+function AppendTextString;\7f112,3238
+function CopyTextString;\7f132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;\7f151,4505
+procedure append_string;\7f172,5166
+function To_Upper;\7f186,5462
+function To_Lower;\7f194,5617
+function EmptyNmStr(\7f209,6213
+function chartonmstr;\7f219,6436
+function LowerCaseNmStr;\7f230,6682
+function concatenatenamestrings;\7f242,7007
+procedure writenamestring;\7f263,7517
+function IsControlChar;\7f277,7928
+function namestringequal;\7f283,8079
+function NameStringLess;\7f302,8539
+function IsControlCharName(\7f343,9710
+function SubString;\7f358,10208
+function SkipChars;\7f379,10791
+function RemoveUnderlineControl;\7f397,11311
+procedure First100Chars;\7f427,12162
+procedure SkipSpaces;\7f462,13298
+function SkipBlanks;\7f477,13782
+function stripname;\7f505,14595
+function Locate;\7f522,15039
+function NameHasChar;\7f543,15581
+function integertonmstr;\7f561,16134
+function NmStrToInteger;\7f585,16901
+function AddNullToNmStr;\7f600,17317
+function ValToNmStr;\7f611,17585
+function ChangeFileType;\7f625,18037
+function StripPath;\7f647,18734
+function ReprOfChar;\7f675,19343
+procedure ExtractCommentInfo;\7f702,20749
+procedure INSERT_TREE_NODE;\7f784,24053
+function GetNameList;\7f920,27926
+procedure DisposeANameList(\7f925,28010
+procedure DisposeNameList;\7f938,28340
+function GetNewNameListNode;\7f943,28409
+function insertname;\7f972,29051
+procedure InitNameList;\7f988,29471
+procedure InitNameStringPool;\7f998,29767
+procedure NewNameString;\7f1004,29867
+procedure ReleaseNameString;\7f1022,30232
+procedure SDTrefStringToRec \7f1045,30741
+procedure SDTrefSkipSpaces;\7f1059,31092
+function SDTrefIsEnd \7f1070,31323
+function SDTrefGetInteger \7f1082,31529
+procedure SDTrefRecToString \7f1303,37546
+function NmStrToErrStr;\7f1497,42305
+function ErrStrToNmStr;\7f1509,42557
+function GetTextRef;\7f1529,43112
+\f
+php-src/lce_functions.php,2864
+ define("LCE_FUNCTIONS"\7fLCE_FUNCTIONS\ 14,38
+ define("LCE_UNKNOWN"\7fLCE_UNKNOWN\ 19,145
+ define("LCE_WS"\7fLCE_WS\ 111,194
+ define("LCE_COMMENT"\7fLCE_COMMENT\ 113,244
+ define("LCE_COMMENT_USER"\7fLCE_COMMENT_USER\ 115,303
+ define("LCE_COMMENT_TOOL"\7fLCE_COMMENT_TOOL\ 117,366
+ define("LCE_MSGID"\7fLCE_MSGID\ 119,430
+ define("LCE_MSGSTR"\7fLCE_MSGSTR\ 121,488
+ define("LCE_TEXT"\7fLCE_TEXT\ 123,541
+ define("STATE_ABORT"\7fSTATE_ABORT\ 125,567
+ define("STATE_OK"\7fSTATE_OK\ 126,595
+ define("STATE_LOOP"\7fSTATE_LOOP\ 127,620
+ class POEntryAD \7f29,648
+ function validate(\7f31,683
+ function checkQuotation(\7f59,1384
+ class CommentAD \7f70,1639
+ var $prefix;\7f72,1674
+ function CommentAD(\7f73,1693
+ function validate(\7f83,1944
+ class POEntry \7f105,2410
+ var $msgid;\7f107,2454
+ var $msgstr;\7f108,2472
+ var $user_comment;\7f109,2491
+ var $sys_comment;\7f110,2516
+ var $unk_comment;\7f111,2540
+ var $msgid_lc \7f113,2565
+ var $msgstr_lc \7f114,2590
+ var $user_comment_lc \7f115,2616
+ var $sys_comment_lc \7f116,2648
+ var $unk_comment_lc \7f117,2679
+ function POEntry(\7f119,2711
+ function lineCount(\7f135,3255
+ function serializeToVars(\7f141,3365
+ function write(\7f151,3800
+ class POReader \7f163,4178
+ var $msgid;\7f165,4223
+ var $msgstr;\7f166,4241
+ var $user_comment;\7f167,4260
+ var $sys_comment;\7f168,4285
+ var $unk_comment;\7f169,4309
+ var $state;\7f170,4333
+ var $ignore_ws;\7f171,4351
+ var $po_entries;\7f172,4373
+ var $poe_num;\7f173,4396
+ var $filename;\7f174,4416
+ var $domain;\7f175,4437
+ function gettext(\7f177,4457
+ function parseFromVars(\7f189,4705
+ function serializeToVars(\7f215,5331
+ function POReader(\7f229,5613
+ function read(\7f243,5983
+ function write(\7f259,6307
+ function isComment(\7f277,6645
+ function comment(\7f284,6822
+ function msgid(\7f304,7247
+ function msgstr(\7f320,7574
+ function start(\7f340,8232
+ function createPOEntries(\7f360,8644
+ function stripLine(\7f394,9472
+ function printClassification(\7f421,10056
+ function classifyLine(\7f432,10301
+ function getTextDomains(\7f471,11094
+ class PORManager \7f498,11756
+ var $por_a;\7f500,11803
+ function PORManager(\7f502,11822
+ function addPOReader(\7f507,11896
+ function &getPOReader(\7fgetPOReader\ 1512,11992
+ function getDomainNames(\7f517,12081
+ function &loadPORManager(\7floadPORManager\ 1523,12174
+ function fileJoin(\7f536,12436
+ function lce_bindtextdomain(\7f557,12839
+ function lce_textdomain(\7f614,14530
+ function lce_gettext(\7f620,14641
+ function lce_dgettext(\7f626,14767
+ function lce(\7f634,14966
+ function lce_bindtextdomain(\7f651,15488
+ function lce_textdomain(\7f656,15592
+ function lce_gettext(\7f661,15674
+ function lce_dgettext(\7f666,15755
+ function lce(\7f670,15855
+ function lce_geteditcode(\7f676,15898
+\f
+php-src/ptest.php,135
+define("TEST"\7fTEST\ 11,0
+test \7f4,26
+ var $member;\7f8,71
+ var $memassign=\7f9,85
+ var $memassign_space \7f10,110
+ var $test\7f12,176
+foo(\7f16,200
+\f
- sub read_toc \7fmain::read_toc\ 1165,3917
++perl-src/htlmify-cystic,1197
+my @section_name;\7fsection_name\ 112,236
+my @appendix_name;\7fappendix_name\ 113,254
+my @section_toc;\7fsection_toc\ 115,274
+my @appendix_toc;\7fappendix_toc\ 116,291
+my $new_tag \7fnew_tag\ 118,310
+my $appendix;\7fappendix\ 124,409
+my $section;\7fsection\ 125,423
+my $subsection;\7fsubsection\ 126,436
+my $subsubsection;\7fsubsubsection\ 127,452
+my $this_file_toc \7fthis_file_toc\ 129,472
+my %file_tocs;\7ffile_tocs\ 130,496
+my @output_files \7foutput_files\ 132,512
+my $file_index \7ffile_index\ 133,535
+my $output_file;\7foutput_file\ 135,556
+my $line;\7fline\ 137,574
+my $subsection_marker;\7fsubsection_marker\ 1161,3883
+my $new;\7fnew\ 1163,3907
- sub finish_subsubsections \7fmain::finish_subsubsections\ 1302,7805
- sub finish_subsections \7fmain::finish_subsections\ 1309,7987
- sub finish_sections \7fmain::finish_sections\ 1320,8310
- sub finish_appendices \7fmain::finish_appendices\ 1331,8599
- sub section_url_base \7fmain::section_url_base\ 1337,8724
- sub section_url_name \7fmain::section_url_name\ 1342,8922
- sub section_url \7fmain::section_url\ 1355,9284
++sub read_toc \7f165,3917
+ my $entry \7fentry\ 1218,5621
+ my $entry \7fentry\ 1234,6077
+ my $entry \7fentry\ 1245,6351
+ my $entry \7fentry\ 1252,6536
+ my $entry \7fentry\ 1268,7010
+ my $entry \7fentry\ 1276,7204
+ my $entry \7fentry\ 1281,7328
+ my $entry \7fentry\ 1296,7698
- sub section_href \7fmain::section_href\ 1364,9452
- sub section_name \7fmain::section_name\ 1368,9551
- sub toc_line \7fmain::toc_line\ 1372,9655
- sub file_end \7fmain::file_end\ 1375,9750
++sub finish_subsubsections \7f302,7805
++sub finish_subsections \7f309,7987
++sub finish_sections \7f320,8310
++sub finish_appendices \7f331,8599
++sub section_url_base \7f337,8724
++sub section_url_name \7f342,8922
++sub section_url \7f355,9284
+ my $name \7fname\ 1357,9336
- perl-src/yagrip.pl,258
- sub getopt \7fmain::getopt\ 17,156
++sub section_href \7f364,9452
++sub section_name \7f368,9551
++sub toc_line \7f372,9655
++sub file_end \7f375,9750
+\f
- sub usage \7fmain::usage\ 138,856
++perl-src/yagrip.pl,233
++sub getopt \7f7,156
+ local($_,$flag,$opt,$f,$r,@temp)\7f($_,$flag,$opt,$f,$r,@temp\ 18,169
- perl-src/kai-test.pl,244
- sub f1 \7fmain::f1\ 12,16
- sub main::f2 \7f6,50
++sub usage \7f38,856
+ local($prog,$_,@list)\7f($prog,$_,@list\ 139,868
+ local($string,$flag,@string,@temp,@last)\7f($string,$flag,@string,@temp,@last\ 140,897
+\f
- sub f3 \7fFoo::f3\ 112,104
- sub Bar::f4 \7f16,138
++perl-src/kai-test.pl,203
++sub f1 \7f2,16
++sub main::f2 \7ff2\ 16,50
+package Foo;\7f10,90
- sub f5 \7fBar::f5\ 122,191
++sub f3 \7f12,104
++sub Bar::f4 \7ff4\ 116,138
+package Bar;\7f20,177
- sub f6 \7fFoo::Bar::f6\ 128,244
++sub f5 \7f22,191
+package Foo::Bar;\7f26,225
- sub f7 \7fmain::f7\ 134,293
++sub f6 \7f28,244
+package main;\7f32,278
++sub f7 \7f34,293
+\f
+ps-src/rfc1245.ps,2478
+/FMversion \7f12,311
+/FrameDict \7f17,500
+/FMVERSION \7f47,1307
+/FMLOCAL \7f56,1494
+/FMDOCUMENT \7f73,1766
+/FMBEGINPAGE \7f95,2279
+/FMENDPAGE \7f109,2516
+/FMDEFINEFONT \7f115,2582
+/FMNORMALIZEGRAPHICS \7f126,2725
+/FMBEGINEPSF \7f142,2955
+/FMENDEPSF \7f153,3207
+/setmanualfeed \7f158,3283
+/max \7f163,3386
+/min \7f164,3426
+/inch \7f165,3466
+/pagedimen \7f166,3485
+/setpapername \7f172,3629
+/papersize \7f190,4214
+/manualpapersize \7f211,4789
+/desperatepapersize \7f230,5211
+/savematrix \7f239,5370
+/restorematrix \7f242,5425
+/dmatrix \7f245,5475
+/dpi \7f246,5495
+/freq \7f248,5583
+/sangle \7f249,5658
+/DiacriticEncoding \7f250,5717
+/.notdef \7f251,5738
+/.notdef \7f252,5801
+/.notdef \7f253,5864
+/.notdef \7f254,5927
+/.notdef \7f255,5990
+/numbersign \7f256,6051
+/parenright \7f257,6115
+/two \7f258,6184
+/less \7f259,6251
+/L \7f260,6320
+/bracketright \7f261,6389
+/i \7f262,6459
+/braceright \7f263,6529
+/Ntilde \7f264,6598
+/atilde \7f265,6668
+/iacute \7f266,6733
+/ocircumflex \7f267,6797
+/udieresis \7f268,6858
+/paragraph \7f269,6919
+/dieresis \7f270,6983
+/yen \7f271,7050
+/ordfeminine \7f272,7109
+/exclamdown \7f273,7171
+/guillemotleft \7f274,7230
+/Otilde \7f275,7296
+/quoteleft \7f276,7357
+/fraction \7f277,7420
+/periodcentered \7f278,7490
+/Acircumflex \7f279,7549
+/Icircumflex \7f280,7610
+/Uacute \7f281,7680
+/breve \7f282,7746
+/ReEncode \7f284,7814
+/graymode \7f300,8020
+/setpattern \7f310,8184
+/grayness \7f331,8725
+/normalize \7f394,9873
+/dnormalize \7f397,9942
+/lnormalize \7f400,10014
+/H \7f403,10104
+/Z \7f406,10147
+/X \7f409,10176
+/V \7f412,10219
+/N \7f415,10260
+/M \7f418,10286
+/E \7f419,10315
+/D \7f420,10336
+/O \7f421,10358
+/L \7f423,10394
+/Y \7f430,10489
+/R \7f439,10588
+/RR \7f450,10696
+/C \7f467,10959
+/U \7f473,11004
+/F \7f477,11039
+/T \7f481,11084
+/RF \7f484,11115
+/TF \7f488,11164
+/P \7f495,11219
+/PF \7f499,11270
+/S \7f506,11344
+/SF \7f510,11384
+/B \7f517,11446
+/BF \7f521,11505
+/W \7f538,11714
+/G \7f573,12382
+/A \7f582,12525
+/BEGINPRINTCODE \7f606,12918
+/ENDPRINTCODE \7f615,13131
+/gn \7f620,13259
+/cfs \7f631,13384
+/ic \7f636,13473
+/ms \7f658,14285
+/ip \7f668,14395
+/wh \7f678,14492
+/bl \7f684,14607
+/s1 \7f690,14722
+/fl \7f691,14739
+/hx \7f698,14887
+/wbytes \7f709,15055
+/BEGINBITMAPBWc \7f713,15147
+/BEGINBITMAPGRAYc \7f716,15198
+/BEGINBITMAP2BITc \7f719,15251
+/COMMONBITMAPc \7f722,15304
+/BEGINBITMAPBW \7f739,15660
+/BEGINBITMAPGRAY \7f742,15709
+/BEGINBITMAP2BIT \7f745,15760
+/COMMONBITMAP \7f748,15811
+/Fmcc \7f765,16156
+/ngrayt \7f773,16371
+/nredt \7f774,16393
+/nbluet \7f775,16414
+/ngreent \7f776,16436
+/colorsetup \7f787,16603
+/fakecolorsetup \7f814,17370
+/BITMAPCOLOR \7f826,17636
+/BITMAPCOLORc \7f839,17926
+/BITMAPGRAY \7f855,18275
+/BITMAPGRAYc \7f858,18335
+/ENDBITMAP \7f861,18397
+/fillprocs \7f868,18497
+\f
+prol-src/ordsets.prolog,525
+is_ordset(\7f47,1310
+list_to_ord_set(\7f63,1688
+ord_add_element(\7f71,1867
+ord_del_element(\7f85,2344
+ord_disjoint(\7f100,2783
+ord_intersect(\7f108,2953
+ord_intersection(\7f126,3552
+ord_intersection3(\7f130,3691
+ord_intersection(\7f150,4531
+ord_intersection4(\7f154,4703
+ord_intersection(\7f176,5664
+ord_intersection2(\7f181,5812
+ord_member(\7f200,6318
+ord_seteq(\7f216,6683
+ord_setproduct(\7f225,6971
+ord_subset(\7f240,7377
+ord_subtract(\7f257,7861
+ord_symdiff(\7f265,8054
+ord_union(\7f288,8887
+ord_union4(\7f303,9352
+ord_union(\7f324,10171
+ord_union_all(\7f329,10313
+\f
+prol-src/natded.prolog,2319
+expandmng(\7f100,2879
+normalize(\7f116,3359
+fresh_vars(\7f125,3716
+subst(\7f138,4134
+normalize_fresh(\7f159,4660
+reduce_subterm(\7f171,5112
+reduce(\7f185,5559
+free_var(\7f196,5903
+free_for(\7f209,6246
+compile_lex(\7f231,6875
+consult_lex:-\7fconsult_lex\ 1248,7384
+lex(\7f259,7754
+expandsyn(\7f267,8068
+bas_syn(\7f292,8897
+compile_empty:-\7fcompile_empty\ 1310,9376
+complete(\7f328,10055
+add_active(\7f340,10527
+parse(\7f353,10949
+derived_analyses(\7f364,11341
+build(\7f378,11965
+buildact(\7f392,12521
+mapsyn(\7f412,13542
+add_edge(\7f434,14278
+findcats(\7f447,14758
+normalize_tree(\7f465,15478
+normalize_trees(\7f475,15856
+expandmng_tree(\7f486,16248
+expandmng_trees(\7f496,16614
+cat(\7f511,17013
+subtree(\7f644,21266
+hypothetical_mem(\7f653,21565
+make_coor(\7f667,22130
+start_up:-\7fstart_up\ 1688,23013
+tokenizeatom(\7f710,23921
+tokenize(\7f720,24348
+isoperator(\7f752,25377
+isoptab(\7f756,25431
+specialsymbol(\7f765,25756
+sstab(\7f771,25861
+parse_cgi(\7f787,26347
+keyvalseq(\7f792,26510
+andkeyvalseq(\7f796,26609
+keyval(\7f799,26688
+valseq(\7f807,26920
+plusvalseq(\7f810,27007
+val(\7f816,27109
+argvals(\7f824,27426
+commaargvals(\7f828,27503
+atomval(\7f833,27578
+atom(\7f836,27640
+action(\7f846,28004
+keyvalcgi(\7f864,28649
+keyvalscgi(\7f865,28670
+outsyn(\7f868,28726
+act(\7f876,29060
+actout(\7f901,29906
+texttreelist(\7f912,30089
+htmltreelist(\7f918,30190
+fitchtreelist(\7f924,30304
+pp_html_table_tree(\7f938,30759
+pp_html_tree(\7f949,31113
+pp_html_trees(\7f988,32381
+pp_html_table_fitch_tree(\7f999,32769
+pp_html_fitch_tree(\7f1017,33672
+removeexp(\7f1129,39002
+splitexp(\7f1142,39490
+pp_exp(\7f1155,39990
+map_word(\7f1168,40249
+pp_exps(\7f1180,40474
+pp_tree(\7f1188,40777
+pp_trees(\7f1216,41807
+pp_word_list(\7f1225,42128
+pp_word(\7f1231,42262
+pp_word_list_rest(\7f1238,42569
+pp_cat(\7f1248,42929
+pp_syn(\7f1255,43196
+pp_syn_paren(\7f1276,43899
+pp_paren(\7f1293,44377
+pp_syn_back(\7f1300,44661
+pp_bas_cat(\7f1311,45001
+writecat(\7f1322,45409
+writesubs(\7f1351,46455
+writesups(\7f1361,46757
+writelistsubs(\7f1371,47090
+pp_lam(\7f1380,47408
+pp_lam_bracket(\7f1398,48022
+pp_lam_paren(\7f1407,48338
+pp_rule(\7f1429,49238
+member(\7f1447,49866
+append_list(\7f1451,49919
+append(\7f1456,50010
+at_least_one_member(\7f1460,50076
+numbervars(\7f1464,50171
+reverse(\7f1467,50209
+select(\7f1471,50290
+select_last(\7f1475,50357
+cat_atoms(\7f1479,50436
+writelist(\7f1485,50524
+write_lex_cat(\7f1492,50676
+writebreaklex(\7f1500,50988
+write_lex(\7f1513,51265
+writebreak(\7f1521,51541
+tt:-\7ftt\ 11531,51713
+mt:-\7fmt\ 11534,51784
+cmt:-\7fcmt\ 11537,51878
+\f
+pyt-src/server.py,1438
+class Controls:\7fControls\ 117,358
+ def __init__(\7f18,374
+ def __repr__(\7f24,590
+ def __str__(\7f34,871
+class Server:\7fServer\ 137,934
+ def __init__(\7f38,948
+ def dump(\7f73,2198
+ def __repr__(\7f125,3896
+ def __str__(\7f128,3945
+class User:\7fUser\ 1131,4014
+ def __init__(\7f132,4026
+ def __repr__(\7f172,5445
+ def __str__(\7f206,6883
+def flag2str(\7f223,7212
+class LabeledEntry(\7f232,7442
+ def bind(\7f234,7525
+ def focus_set(\7f236,7584
+ def __init__(\7f238,7629
+def ButtonBar(\7f245,7909
+def helpwin(\7f255,8280
+class ListEdit(\7f267,8707
+ def __init__(\7f269,8808
+ def handleList(\7f303,10042
+ def handleNew(\7f306,10094
+ def editItem(\7f314,10426
+ def deleteItem(\7f320,10596
+def ConfirmQuit(\7f326,10760
+class ControlEdit(\7f375,12377
+ def PostControls(\7f376,12403
+ def GatherControls(\7f421,13530
+class ServerEdit(\7f512,16264
+ def __init__(\7f513,16289
+ def post(\7f525,16629
+ def gather(\7f543,17191
+ def nosave(\7f547,17304
+ def save(\7f551,17408
+ def refreshPort(\7f556,17509
+ def createWidgets(\7f561,17663
+ def edituser(\7f631,20708
+class UserEdit(\7f645,20921
+ def __init__(\7f646,20944
+ def post(\7f658,21283
+ def gather(\7f676,21841
+ def nosave(\7f680,21950
+ def save(\7f684,22052
+ def createWidgets(\7f689,22151
+class Configure(\7f760,24879
+ def __init__(\7f761,24916
+ def MakeDispose(\7f772,25211
+ def MakeSitelist(\7f786,25706
+ def editsite(\7f794,25949
+ def save(\7f797,26022
+ def nosave(\7f807,26310
+\f
+ruby-src/test.rb,637
+module ModuleExample\7f1,0
+ class ClassExample\7f2,21
+ def instance_method\7f3,44
+ def ClassExample.class_method\7fclass_method\ 16,121
+ def instance_method_exclamation!\7f9,206
+ def instance_method_question?\7f12,310
+ def instance_method_equals=\7finstance_method_equals=\ 115,408
+ def `(\7f18,502
+ def +(\7f21,592
+ def [](\7f24,640
+ def []=(\7f[]=\ 127,690
+ def <<(\7f30,752
+ def ==(\7f==\ 133,802
+ def <=(\7f<=\ 136,872
+ def <=>(\7f<=>\ 139,943
+ def ===(\7f===\ 142,990
+ def module_instance_method\7f46,1051
+ def ModuleExample.module_class_method\7fmodule_class_method\ 149,1131
+\f
+ruby-src/test1.ru,935
+class A\7f1,0
+ def a(\7f2,8
+ def b(\7f5,38
+module A\7f9,57
+ class B\7f10,66
+ ABC \7f11,76
+ Def_ \7f12,88
+ Xyzzy \7f13,106
+ def foo!\7f15,121
+ def self._bar?(\7f_bar?\ 118,143
+ def qux=(\7fqux=\ 122,194
+ attr_reader :foo\7ffoo\ 126,233
+ attr_reader :read1 \7fread1\ 127,254
+ attr_reader :read1 , :read2;\7fread2\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1,\7fwrite1=\ 127,254
+ attr_reader :read1 , :read2; attr_writer :write1, :write2\7fwrite2=\ 127,254
+ attr_writer :bar,\7fbar=\ 128,316
+ :baz,\7fbaz=\ 129,338
+ :more\7fmore=\ 130,360
+ attr_accessor :tee\7ftee\ 131,382
+ attr_accessor :tee\7ftee=\ 131,382
+ alias_method :qux,\7fqux\ 132,405
+ alias_method :xyz,\7fxyz\ 133,456
+ :tee ; attr_reader :subtle\7fsubtle\ 134,479
+ attr_reader(:foo1,\7ffoo1\ 135,523
+ attr_reader(:foo1, :bar1,\7fbar1\ 135,523
+ :qux1)\7fqux1\ 136,563
+ alias_method ( :foo2,\7ffoo2\ 137,586
+A::Constant \7fConstant\ 142,655
+\f
+tex-src/testenv.tex,52
+\newcommand{\nm}\7f\nm\ 14,77
+\section{blah}\7fblah\ 18,139
+\f
+tex-src/gzip.texi,303
+@node Top,\7f62,2139
+@node Copying,\7f80,2652
+@node Overview,\7f83,2705
+@node Sample,\7f166,7272
+@node Invoking gzip,\7fInvoking gzip\ 1210,8828
+@node Advanced usage,\7fAdvanced usage\ 1357,13495
+@node Environment,\7f420,15207
+@node Tapes,\7f437,15768
+@node Problems,\7f460,16767
+@node Concept Index,\7fConcept Index\ 1473,17287
+\f
+tex-src/texinfo.tex,30627
+\def\texinfoversion{\7f\texinfoversion\ 126,1027
+\def\tie{\7f\tie\ 149,1518
+\def\gloggingall{\7f\gloggingall\ 172,2268
+\def\loggingall{\7f\loggingall\ 173,2337
+\def\onepageout#1{\7f\onepageout\ 199,3274
+\def\croppageout#1{\7f\croppageout\ 1115,4024
+\def\cropmarks{\7f\cropmarks\ 1142,5084
+\def\pagebody#1{\7f\pagebody\ 1144,5131
+\def\ewtop{\7f\ewtop\ 1157,5586
+\def\nstop{\7f\nstop\ 1158,5650
+\def\ewbot{\7f\ewbot\ 1160,5733
+\def\nsbot{\7f\nsbot\ 1161,5797
+\def\parsearg #1{\7f\parsearg\ 1170,6096
+\def\parseargx{\7f\parseargx\ 1172,6174
+\def\parseargline{\7f\parseargline\ 1182,6414
+\def\flushcr{\7f\flushcr\ 1186,6535
+\newif\ifENV \ENVfalse \def\inENV{\7f\inENV\ 1190,6734
+\def\ENVcheck{\7f\ENVcheck\ 1191,6798
+\outer\def\begin{\7f\begin\ 1198,7045
+\def\beginxxx #1{\7f\beginxxx\ 1200,7083
+\def\end{\7f\end\ 1208,7338
+\def\endxxx #1{\7f\endxxx\ 1210,7366
+\def\errorE#1{\7f\errorE\ 1216,7555
+\def\singlespace{\7f\singlespace\ 1222,7749
+\def\@{\7f\@\ 1232,7972
+\def\`{\7f\`\ 1236,8072
+\def\'{\7f\'\ 1237,8084
+\def\mylbrace {\7f\mylbrace\ 1241,8132
+\def\myrbrace {\7f\myrbrace\ 1242,8165
+\def\:{\7f\:\ 1247,8279
+\def\*{\7f\*\ 1250,8333
+\def\.{\7f\.\ 1253,8409
+\def\w#1{\7f\w\ 1258,8640
+\def\group{\7f\group\ 1268,9123
+ \def\Egroup{\7f\Egroup\ 1273,9287
+\def\need{\7f\need\ 1289,9729
+\def\needx#1{\7f\needx\ 1300,10006
+\def\dots{\7f\dots\ 1339,11392
+\def\page{\7f\page\ 1343,11456
+\def\exdent{\7f\exdent\ 1353,11783
+\def\exdentyyy #1{\7f\exdentyyy\ 1354,11816
+\def\nofillexdent{\7f\nofillexdent\ 1357,11960
+\def\nofillexdentyyy #1{\7f\nofillexdentyyy\ 1358,12005
+\def\include{\7f\include\ 1365,12189
+\def\includezzz #1{\7f\includezzz\ 1366,12224
+\def\thisfile{\7f\thisfile\ 1369,12275
+\def\center{\7f\center\ 1373,12338
+\def\centerzzz #1{\7f\centerzzz\ 1374,12371
+\def\sp{\7f\sp\ 1380,12513
+\def\spxxx #1{\7f\spxxx\ 1381,12538
+\def\comment{\7f\comment\ 1387,12712
+\def\commentxxx #1{\7f\commentxxx\ 1390,12809
+\def\ignoresections{\7f\ignoresections\ 1396,12978
+\let\chapter=\relax\7f=\relax\ 1397,13000
+\let\section=\relax\7f=\relax\ 1406,13245
+\let\subsection=\relax\7f=\relax\ 1409,13306
+\let\subsubsection=\relax\7f=\relax\ 1410,13329
+\let\appendix=\relax\7f=\relax\ 1411,13355
+\let\appendixsec=\relax\7fsec=\relax\ 1412,13376
+\let\appendixsection=\relax\7fsection=\relax\ 1413,13400
+\let\appendixsubsec=\relax\7fsubsec=\relax\ 1414,13428
+\let\appendixsubsection=\relax\7fsubsection=\relax\ 1415,13455
+\let\appendixsubsubsec=\relax\7fsubsubsec=\relax\ 1416,13486
+\let\appendixsubsubsection=\relax\7fsubsubsection=\relax\ 1417,13516
+\def\ignore{\7f\ignore\ 1423,13618
+\long\def\ignorexxx #1\end ignore{\7f\ignorexxx\ 1427,13758
+\def\direntry{\7f\direntry\ 1429,13817
+\long\def\direntryxxx #1\end direntry{\7f\direntryxxx\ 1430,13856
+\def\ifset{\7f\ifset\ 1434,13966
+\def\ifsetxxx #1{\7f\ifsetxxx\ 1436,14024
+\def\Eifset{\7f\Eifset\ 1440,14151
+\def\ifsetfail{\7f\ifsetfail\ 1441,14165
+\long\def\ifsetfailxxx #1\end ifset{\7f\ifsetfailxxx\ 1442,14221
+\def\ifclear{\7f\ifclear\ 1444,14282
+\def\ifclearxxx #1{\7f\ifclearxxx\ 1446,14344
+\def\Eifclear{\7f\Eifclear\ 1450,14475
+\def\ifclearfail{\7f\ifclearfail\ 1451,14491
+\long\def\ifclearfailxxx #1\end ifclear{\7f\ifclearfailxxx\ 1452,14551
+\def\set{\7f\set\ 1456,14702
+\def\setxxx #1{\7f\setxxx\ 1457,14729
+\def\clear{\7f\clear\ 1460,14791
+\def\clearxxx #1{\7f\clearxxx\ 1461,14822
+\def\iftex{\7f\iftex\ 1466,14939
+\def\Eiftex{\7f\Eiftex\ 1467,14952
+\def\ifinfo{\7f\ifinfo\ 1468,14966
+\long\def\ifinfoxxx #1\end ifinfo{\7f\ifinfoxxx\ 1469,15016
+\long\def\menu #1\end menu{\7f\menu\ 1471,15075
+\def\asis#1{\7f\asis\ 1472,15104
+\def\math#1{\7f\math\ 1485,15647
+\def\node{\7f\node\ 1487,15691
+\def\nodezzz#1{\7f\nodezzz\ 1488,15729
+\def\nodexxx[#1,#2]{\7f\nodexxx[\ 1489,15760
+\def\donoderef{\7f\donoderef\ 1492,15822
+\def\unnumbnoderef{\7f\unnumbnoderef\ 1496,15943
+\def\appendixnoderef{\7f\appendixnoderef\ 1500,16074
+\expandafter\expandafter\expandafter\appendixsetref{\7fsetref\ 1501,16120
+\let\refill=\relax\7fill=\relax\ 1504,16209
+\def\setfilename{\7f\setfilename\ 1509,16423
+\outer\def\bye{\7f\bye\ 1518,16669
+\def\inforef #1{\7f\inforef\ 1520,16725
+\def\inforefzzz #1,#2,#3,#4**{\7f\inforefzzz\ 1521,16763
+\def\losespace #1{\7f\losespace\ 1523,16860
+\def\sf{\7f\sf\ 1532,17064
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\7fbf=cmbx10\ 1558,17859
+\font\deftt=cmtt10 scaled \magstep1\7ftt=cmtt10\ 1559,17905
+\def\df{\7f\df\ 1560,17941
+\def\resetmathfonts{\7f\resetmathfonts\ 1635,20535
+\def\textfonts{\7f\textfonts\ 1648,21124
+\def\chapfonts{\7f\chapfonts\ 1653,21339
+\def\secfonts{\7f\secfonts\ 1658,21555
+\def\subsecfonts{\7f\subsecfonts\ 1663,21760
+\def\indexfonts{\7f\indexfonts\ 1668,21977
+\def\smartitalicx{\7f\smartitalicx\ 1691,22709
+\def\smartitalic#1{\7f\smartitalic\ 1692,22785
+\let\cite=\smartitalic\7f=\smartitalic\ 1698,22930
+\def\b#1{\7f\b\ 1700,22954
+\def\t#1{\7f\t\ 1703,22989
+\def\samp #1{\7f\samp\ 1706,23141
+\def\key #1{\7f\key\ 1707,23174
+\def\ctrl #1{\7f\ctrl\ 1708,23235
+\def\tclose#1{\7f\tclose\ 1716,23437
+\def\ {\7f\\ 1720,23603
+\def\xkey{\7f\xkey\ 1728,23872
+\def\kbdfoo#1#2#3\par{\7f\kbdfoo\ 1729,23888
+\def\dmn#1{\7f\dmn\ 1738,24189
+\def\kbd#1{\7f\kbd\ 1740,24216
+\def\l#1{\7f\l\ 1742,24273
+\def\r#1{\7f\r\ 1744,24302
+\def\sc#1{\7f\sc\ 1746,24370
+\def\ii#1{\7f\ii\ 1747,24413
+\def\titlefont#1{\7f\titlefont\ 1755,24646
+\def\titlepage{\7f\titlepage\ 1761,24749
+ \def\subtitlefont{\7f\subtitlefont\ 1766,24976
+ \def\authorfont{\7f\authorfont\ 1768,25060
+ \def\title{\7f\title\ 1774,25270
+ \def\titlezzz##1{\7f\titlezzz\ 1775,25305
+ \def\subtitle{\7f\subtitle\ 1783,25620
+ \def\subtitlezzz##1{\7f\subtitlezzz\ 1784,25661
+ \def\author{\7f\author\ 1787,25779
+ \def\authorzzz##1{\7f\authorzzz\ 1788,25816
+ \def\page{\7f\page\ 1794,26107
+\def\Etitlepage{\7f\Etitlepage\ 1804,26276
+\def\finishtitlepage{\7f\finishtitlepage\ 1817,26664
+\def\evenheading{\7f\evenheading\ 1846,27672
+\def\oddheading{\7f\oddheading\ 1847,27715
+\def\everyheading{\7f\everyheading\ 1848,27756
+\def\evenfooting{\7f\evenfooting\ 1850,27802
+\def\oddfooting{\7f\oddfooting\ 1851,27845
+\def\everyfooting{\7f\everyfooting\ 1852,27886
+\def\headings #1 {\7f\headings\ 1893,29578
+\def\HEADINGSoff{\7f\HEADINGSoff\ 1895,29627
+\def\HEADINGSdouble{\7f\HEADINGSdouble\ 1904,30054
+\def\HEADINGSsingle{\7f\HEADINGSsingle\ 1914,30374
+\def\HEADINGSon{\7f\HEADINGSon\ 1922,30595
+\def\HEADINGSafter{\7f\HEADINGSafter\ 1924,30629
+\def\HEADINGSdoublex{\7f\HEADINGSdoublex\ 1926,30724
+\def\HEADINGSsingleafter{\7f\HEADINGSsingleafter\ 1933,30912
+\def\HEADINGSsinglex{\7f\HEADINGSsinglex\ 1934,30973
+\def\today{\7f\today\ 1943,31248
+\def\thistitle{\7f\thistitle\ 1958,31793
+\def\settitle{\7f\settitle\ 1959,31818
+\def\settitlezzz #1{\7f\settitlezzz\ 1960,31855
+\def\internalBitem{\7f\internalBitem\ 1992,32785
+\def\internalBitemx{\7f\internalBitemx\ 1993,32835
+\def\internalBxitem "#1"{\7f\internalBxitem\ 1995,32880
+\def\internalBxitemx "#1"{\7f\internalBxitemx\ 1996,32960
+\def\internalBkitem{\7f\internalBkitem\ 1998,33035
+\def\internalBkitemx{\7f\internalBkitemx\ 1999,33087
+\def\kitemzzz #1{\7f\kitemzzz\ 11001,33134
+\def\xitemzzz #1{\7f\xitemzzz\ 11004,33236
+\def\itemzzz #1{\7f\itemzzz\ 11007,33339
+\def\item{\7f\item\ 11037,34410
+\def\itemx{\7f\itemx\ 11038,34461
+\def\kitem{\7f\kitem\ 11039,34514
+\def\kitemx{\7f\kitemx\ 11040,34567
+\def\xitem{\7f\xitem\ 11041,34622
+\def\xitemx{\7f\xitemx\ 11042,34675
+\def\description{\7f\description\ 11045,34785
+\def\table{\7f\table\ 11047,34835
+\def\ftable{\7f\ftable\ 11052,34979
+\def\Eftable{\7f\Eftable\ 11056,35125
+\def\vtable{\7f\vtable\ 11059,35194
+\def\Evtable{\7f\Evtable\ 11063,35340
+\def\dontindex #1{\7f\dontindex\ 11066,35409
+\def\fnitemindex #1{\7f\fnitemindex\ 11067,35429
+\def\vritemindex #1{\7f\vritemindex\ 11068,35474
+\def\tablez #1#2#3#4#5#6{\7f\tablez\ 11074,35623
+\def\Edescription{\7f\Edescription\ 11077,35681
+\def\itemfont{\7f\itemfont\ 11082,35883
+\def\Etable{\7f\Etable\ 11090,36109
+\def\itemize{\7f\itemize\ 11103,36433
+\def\itemizezzz #1{\7f\itemizezzz\ 11105,36469
+\def\itemizey #1#2{\7f\itemizey\ 11110,36564
+\def#2{\7f1119,36810
+\def\itemcontents{\7f\itemcontents\ 11120,36851
+\def\bullet{\7f\bullet\ 11123,36899
+\def\minus{\7f\minus\ 11124,36926
+\def\frenchspacing{\7f\frenchspacing\ 11128,37034
+\def\splitoff#1#2\endmark{\7f\splitoff\ 11134,37259
+\def\enumerate{\7f\enumerate\ 11140,37489
+\def\enumeratezzz #1{\7f\enumeratezzz\ 11141,37528
+\def\enumeratey #1 #2\endenumeratey{\7f\enumeratey\ 11142,37581
+ \def\thearg{\7f\thearg\ 11146,37728
+ \ifx\thearg\empty \def\thearg{\7f\thearg\ 11147,37747
+\def\numericenumerate{\7f\numericenumerate\ 11184,39081
+\def\lowercaseenumerate{\7f\lowercaseenumerate\ 11190,39211
+\def\uppercaseenumerate{\7f\uppercaseenumerate\ 11203,39558
+\def\startenumeration#1{\7f\startenumeration\ 11219,40048
+\def\alphaenumerate{\7f\alphaenumerate\ 11227,40230
+\def\capsenumerate{\7f\capsenumerate\ 11228,40265
+\def\Ealphaenumerate{\7f\Ealphaenumerate\ 11229,40299
+\def\Ecapsenumerate{\7f\Ecapsenumerate\ 11230,40333
+\def\itemizeitem{\7f\itemizeitem\ 11234,40413
+\def\newindex #1{\7f\newindex\ 11259,41270
+\def\defindex{\7f\defindex\ 11268,41559
+\def\newcodeindex #1{\7f\newcodeindex\ 11272,41667
+\def\defcodeindex{\7f\defcodeindex\ 11279,41927
+\def\synindex #1 #2 {\7f\synindex\ 11283,42107
+\def\syncodeindex #1 #2 {\7f\syncodeindex\ 11292,42447
+\def\doindex#1{\7f\doindex\ 11309,43126
+\def\singleindexer #1{\7f\singleindexer\ 11310,43185
+\def\docodeindex#1{\7f\docodeindex\ 11313,43297
+\def\singlecodeindexer #1{\7f\singlecodeindexer\ 11314,43364
+\def\indexdummies{\7f\indexdummies\ 11316,43422
+\def\_{\7f\_\ 11317,43442
+\def\w{\7f\w\ 11318,43470
+\def\bf{\7f\bf\ 11319,43497
+\def\rm{\7f\rm\ 11320,43526
+\def\sl{\7f\sl\ 11321,43555
+\def\sf{\7f\sf\ 11322,43584
+\def\tt{\7f\tt\ 11323,43612
+\def\gtr{\7f\gtr\ 11324,43640
+\def\less{\7f\less\ 11325,43670
+\def\hat{\7f\hat\ 11326,43702
+\def\char{\7f\char\ 11327,43732
+\def\TeX{\7f\TeX\ 11328,43764
+\def\dots{\7f\dots\ 11329,43794
+\def\copyright{\7f\copyright\ 11330,43827
+\def\tclose##1{\7f\tclose\ 11331,43870
+\def\code##1{\7f\code\ 11332,43915
+\def\samp##1{\7f\samp\ 11333,43956
+\def\t##1{\7f\t\ 11334,43997
+\def\r##1{\7f\r\ 11335,44032
+\def\i##1{\7f\i\ 11336,44067
+\def\b##1{\7f\b\ 11337,44102
+\def\cite##1{\7f\cite\ 11338,44137
+\def\key##1{\7f\key\ 11339,44178
+\def\file##1{\7f\file\ 11340,44217
+\def\var##1{\7f\var\ 11341,44258
+\def\kbd##1{\7f\kbd\ 11342,44297
+\def\indexdummyfont#1{\7f\indexdummyfont\ 11347,44453
+\def\indexdummytex{\7f\indexdummytex\ 11348,44479
+\def\indexdummydots{\7f\indexdummydots\ 11349,44503
+\def\indexnofonts{\7f\indexnofonts\ 11351,44529
+\let\w=\indexdummyfont\7fdummyfont\ 11352,44549
+\let\t=\indexdummyfont\7fdummyfont\ 11353,44572
+\let\r=\indexdummyfont\7fdummyfont\ 11354,44595
+\let\i=\indexdummyfont\7fdummyfont\ 11355,44618
+\let\b=\indexdummyfont\7fdummyfont\ 11356,44641
+\let\emph=\indexdummyfont\7fdummyfont\ 11357,44664
+\let\strong=\indexdummyfont\7fdummyfont\ 11358,44690
+\let\cite=\indexdummyfont\7f=\indexdummyfont\ 11359,44718
+\let\sc=\indexdummyfont\7fdummyfont\ 11360,44744
+\let\tclose=\indexdummyfont\7fdummyfont\ 11364,44916
+\let\code=\indexdummyfont\7fdummyfont\ 11365,44944
+\let\file=\indexdummyfont\7fdummyfont\ 11366,44970
+\let\samp=\indexdummyfont\7fdummyfont\ 11367,44996
+\let\kbd=\indexdummyfont\7fdummyfont\ 11368,45022
+\let\key=\indexdummyfont\7fdummyfont\ 11369,45047
+\let\var=\indexdummyfont\7fdummyfont\ 11370,45072
+\let\TeX=\indexdummytex\7fdummytex\ 11371,45097
+\let\dots=\indexdummydots\7fdummydots\ 11372,45121
+\let\indexbackslash=0 %overridden during \printindex.\7fbackslash=0\ 11382,45373
+\def\doind #1#2{\7f\doind\ 11384,45429
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11386,45472
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11389,45612
+{\indexnofonts\7fnofonts\ 11394,45874
+\def\dosubind #1#2#3{\7f\dosubind\ 11405,46185
+{\indexdummies % Must do this here, since \bf, etc expand at this stage\7fdummies\ 11407,46233
+\def\rawbackslashxx{\7f\rawbackslashxx\ 11410,46337
+{\indexnofonts\7fnofonts\ 11414,46491
+\def\findex {\7f\findex\ 11443,47422
+\def\kindex {\7f\kindex\ 11444,47445
+\def\cindex {\7f\cindex\ 11445,47468
+\def\vindex {\7f\vindex\ 11446,47491
+\def\tindex {\7f\tindex\ 11447,47514
+\def\pindex {\7f\pindex\ 11448,47537
+\def\cindexsub {\7f\cindexsub\ 11450,47561
+\def\printindex{\7f\printindex\ 11462,47888
+\def\doprintindex#1{\7f\doprintindex\ 11464,47929
+ \def\indexbackslash{\7f\indexbackslash\ 11481,48414
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\7ffonts\rm\ 11482,48453
+\def\initial #1{\7f\initial\ 11517,49525
+\def\entry #1#2{\7f\entry\ 11523,49732
+ \null\nobreak\indexdotfill % Have leaders before the page number.\7fdotfill\ 11540,50379
+\def\indexdotfill{\7f\indexdotfill\ 11549,50707
+\def\primary #1{\7f\primary\ 11552,50813
+\def\secondary #1#2{\7f\secondary\ 11556,50895
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\7fdotfill\ 11559,50977
+\newbox\partialpage\7fialpage\ 11566,51150
+\def\begindoublecolumns{\7f\begindoublecolumns\ 11572,51308
+ \output={\global\setbox\partialpage=\7fialpage=\ 11573,51344
+\def\enddoublecolumns{\7f\enddoublecolumns\ 11577,51532
+\def\doublecolumnout{\7f\doublecolumnout\ 11580,51617
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11581,51686
+\def\pagesofar{\7f\pagesofar\ 11584,51864
+\def\balancecolumns{\7f\balancecolumns\ 11588,52101
+ \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\7fialpage\ 11594,52272
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\7fialpage\ 11600,52533
+\newcount \appendixno \appendixno = `\@\7fno\ 11627,53438
+\def\appendixletter{\7f\appendixletter\ 11628,53479
+\def\opencontents{\7f\opencontents\ 11632,53582
+\def\thischapter{\7f\thischapter\ 11637,53763
+\def\seccheck#1{\7f\seccheck\ 11638,53801
+\def\chapternofonts{\7f\chapternofonts\ 11643,53905
+\def\result{\7f\result\ 11646,53980
+\def\equiv{\7f\equiv\ 11647,54015
+\def\expansion{\7f\expansion\ 11648,54048
+\def\print{\7f\print\ 11649,54089
+\def\TeX{\7f\TeX\ 11650,54122
+\def\dots{\7f\dots\ 11651,54151
+\def\copyright{\7f\copyright\ 11652,54182
+\def\tt{\7f\tt\ 11653,54223
+\def\bf{\7f\bf\ 11654,54250
+\def\w{\7f\w\ 11655,54278
+\def\less{\7f\less\ 11656,54303
+\def\gtr{\7f\gtr\ 11657,54334
+\def\hat{\7f\hat\ 11658,54363
+\def\char{\7f\char\ 11659,54392
+\def\tclose##1{\7f\tclose\ 11660,54423
+\def\code##1{\7f\code\ 11661,54467
+\def\samp##1{\7f\samp\ 11662,54507
+\def\r##1{\7f\r\ 11663,54547
+\def\b##1{\7f\b\ 11664,54581
+\def\key##1{\7f\key\ 11665,54615
+\def\file##1{\7f\file\ 11666,54653
+\def\kbd##1{\7f\kbd\ 11667,54693
+\def\i##1{\7f\i\ 11669,54801
+\def\cite##1{\7f\cite\ 11670,54835
+\def\var##1{\7f\var\ 11671,54875
+\def\emph##1{\7f\emph\ 11672,54913
+\def\dfn##1{\7f\dfn\ 11673,54953
+\def\thischaptername{\7f\thischaptername\ 11676,54994
+\outer\def\chapter{\7f\chapter\ 11677,55033
+\def\chapterzzz #1{\7f\chapterzzz\ 11678,55074
+{\chapternofonts%\7fnofonts%\ 11687,55470
+\global\let\section = \numberedsec\7f=\ 11692,55623
+\global\let\subsection = \numberedsubsec\7f=\ 11693,55658
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11694,55699
+\outer\def\appendix{\7f\appendix\ 11697,55750
+\def\appendixzzz #1{\7f\appendixzzz\ 11698,55793
+\global\advance \appendixno by 1 \message{\7fno\ 11700,55870
+\chapmacro {#1}{Appendix \appendixletter}\7fletter\ 11701,55939
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\7fletter:\ 11704,56032
+{\chapternofonts%\7fnofonts%\ 11705,56104
+ {#1}{Appendix \appendixletter}\7fletter\ 11707,56160
+\appendixnoderef %\7fnoderef\ 11710,56260
+\global\let\section = \appendixsec\7f=\ 11711,56279
+\global\let\subsection = \appendixsubsec\7f=\ 11712,56314
+\global\let\subsubsection = \appendixsubsubsec\7f=\ 11713,56355
+\outer\def\top{\7f\top\ 11716,56406
+\outer\def\unnumbered{\7f\unnumbered\ 11717,56446
+\def\unnumberedzzz #1{\7f\unnumberedzzz\ 11718,56493
+{\chapternofonts%\7fnofonts%\ 11722,56656
+\global\let\section = \unnumberedsec\7f=\ 11727,56806
+\global\let\subsection = \unnumberedsubsec\7f=\ 11728,56843
+\global\let\subsubsection = \unnumberedsubsubsec\7f=\ 11729,56886
+\outer\def\numberedsec{\7f\numberedsec\ 11732,56939
+\def\seczzz #1{\7f\seczzz\ 11733,56980
+{\chapternofonts%\7fnofonts%\ 11736,57136
+\outer\def\appendixsection{\7f\appendixsection\ 11745,57322
+\outer\def\appendixsec{\7f\appendixsec\ 11746,57379
+\def\appendixsectionzzz #1{\7f\appendixsectionzzz\ 11747,57432
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}\7fletter\ 11749,57544
+{\chapternofonts%\7fnofonts%\ 11750,57612
+{#1}{\appendixletter}\7fletter\ 11752,57668
+\appendixnoderef %\7fnoderef\ 11755,57768
+\outer\def\unnumberedsec{\7f\unnumberedsec\ 11759,57808
+\def\unnumberedseczzz #1{\7f\unnumberedseczzz\ 11760,57861
+{\chapternofonts%\7fnofonts%\ 11762,57956
+\outer\def\numberedsubsec{\7f\numberedsubsec\ 11770,58124
+\def\numberedsubseczzz #1{\7f\numberedsubseczzz\ 11771,58179
+{\chapternofonts%\7fnofonts%\ 11774,58358
+\outer\def\appendixsubsec{\7f\appendixsubsec\ 11783,58562
+\def\appendixsubseczzz #1{\7f\appendixsubseczzz\ 11784,58617
+\subsecheading {#1}{\appendixletter}\7fletter\ 11786,58739
+{\chapternofonts%\7fnofonts%\ 11787,58804
+{#1}{\appendixletter}\7fletter\ 11789,58863
+\appendixnoderef %\7fnoderef\ 11792,58978
+\outer\def\unnumberedsubsec{\7f\unnumberedsubsec\ 11796,59018
+\def\unnumberedsubseczzz #1{\7f\unnumberedsubseczzz\ 11797,59077
+{\chapternofonts%\7fnofonts%\ 11799,59178
+\outer\def\numberedsubsubsec{\7f\numberedsubsubsec\ 11807,59349
+\def\numberedsubsubseczzz #1{\7f\numberedsubsubseczzz\ 11808,59410
+{\chapternofonts%\7fnofonts%\ 11812,59607
+\outer\def\appendixsubsubsec{\7f\appendixsubsubsec\ 11823,59840
+\def\appendixsubsubseczzz #1{\7f\appendixsubsubseczzz\ 11824,59901
+ {\appendixletter}\7fletter\ 11827,60040
+{\chapternofonts%\7fnofonts%\ 11828,60106
+ {\appendixletter}\7fletter\ 11830,60171
+\appendixnoderef %\7fnoderef\ 11834,60305
+\outer\def\unnumberedsubsubsec{\7f\unnumberedsubsubsec\ 11838,60345
+\def\unnumberedsubsubseczzz #1{\7f\unnumberedsubsubseczzz\ 11839,60410
+{\chapternofonts%\7fnofonts%\ 11841,60517
+\def\infotop{\7f\infotop\ 11851,60846
+\def\infounnumbered{\7f\infounnumbered\ 11852,60884
+\def\infounnumberedsec{\7f\infounnumberedsec\ 11853,60929
+\def\infounnumberedsubsec{\7f\infounnumberedsubsec\ 11854,60980
+\def\infounnumberedsubsubsec{\7f\infounnumberedsubsubsec\ 11855,61037
+\def\infoappendix{\7f\infoappendix\ 11857,61101
+\def\infoappendixsec{\7f\infoappendixsec\ 11858,61142
+\def\infoappendixsubsec{\7f\infoappendixsubsec\ 11859,61189
+\def\infoappendixsubsubsec{\7f\infoappendixsubsubsec\ 11860,61242
+\def\infochapter{\7f\infochapter\ 11862,61302
+\def\infosection{\7f\infosection\ 11863,61341
+\def\infosubsection{\7f\infosubsection\ 11864,61380
+\def\infosubsubsection{\7f\infosubsubsection\ 11865,61425
+\global\let\section = \numberedsec\7f=\ 11870,61662
+\global\let\subsection = \numberedsubsec\7f=\ 11871,61697
+\global\let\subsubsection = \numberedsubsubsec\7f=\ 11872,61738
+\def\majorheading{\7f\majorheading\ 11886,62245
+\def\majorheadingzzz #1{\7f\majorheadingzzz\ 11887,62290
+\def\chapheading{\7f\chapheading\ 11893,62523
+\def\chapheadingzzz #1{\7f\chapheadingzzz\ 11894,62566
+\def\heading{\7f\heading\ 11899,62761
+\def\subheading{\7f\subheading\ 11901,62798
+\def\subsubheading{\7f\subsubheading\ 11903,62841
+\def\dobreak#1#2{\7f\dobreak\ 11910,63118
+\def\setchapterstyle #1 {\7f\setchapterstyle\ 11912,63196
+\def\chapbreak{\7f\chapbreak\ 11919,63451
+\def\chappager{\7f\chappager\ 11920,63501
+\def\chapoddpage{\7f\chapoddpage\ 11921,63539
+\def\setchapternewpage #1 {\7f\setchapternewpage\ 11923,63618
+\def\CHAPPAGoff{\7f\CHAPPAGoff\ 11925,63675
+\def\CHAPPAGon{\7f\CHAPPAGon\ 11929,63769
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11932,63860
+\def\CHAPPAGodd{\7f\CHAPPAGodd\ 11934,63902
+\global\def\HEADINGSon{\7f\HEADINGSon\ 11937,63998
+\def\CHAPFplain{\7f\CHAPFplain\ 11941,64052
+\def\chfplain #1#2{\7f\chfplain\ 11945,64144
+\def\unnchfplain #1{\7f\unnchfplain\ 11956,64367
+\def\unnchfopen #1{\7f\unnchfopen\ 11964,64596
+\def\chfopen #1#2{\7f\chfopen\ 11970,64804
+\def\CHAPFopen{\7f\CHAPFopen\ 11975,64948
+\def\subsecheadingbreak{\7f\subsecheadingbreak\ 11982,65166
+\def\secheadingbreak{\7f\secheadingbreak\ 11985,65295
+\def\secheading #1#2#3{\7f\secheading\ 11993,65577
+\def\plainsecheading #1{\7f\plainsecheading\ 11994,65633
+\def\secheadingi #1{\7f\secheadingi\ 11995,65676
+\def\subsecheading #1#2#3#4{\7f\subsecheading\ 12006,66044
+\def\subsecheadingi #1{\7f\subsecheadingi\ 12007,66111
+\def\subsubsecfonts{\7f\subsubsecfonts\ 12014,66408
+\def\subsubsecheading #1#2#3#4#5{\7f\subsubsecheading\ 12017,66531
+\def\subsubsecheadingi #1{\7f\subsubsecheadingi\ 12018,66609
+\def\startcontents#1{\7f\startcontents\ 12032,67081
+ \unnumbchapmacro{#1}\def\thischapter{\7f\thischapter\ 12040,67354
+\outer\def\contents{\7f\contents\ 12049,67713
+\outer\def\summarycontents{\7f\summarycontents\ 12057,67857
+ \def\secentry ##1##2##3##4{\7f\secentry\ 12067,68228
+ \def\unnumbsecentry ##1##2{\7f\unnumbsecentry\ 12068,68263
+ \def\subsecentry ##1##2##3##4##5{\7f\subsecentry\ 12069,68298
+ \def\unnumbsubsecentry ##1##2{\7f\unnumbsubsecentry\ 12070,68339
+ \def\subsubsecentry ##1##2##3##4##5##6{\7f\subsubsecentry\ 12071,68377
+ \def\unnumbsubsubsecentry ##1##2{\7f\unnumbsubsubsecentry\ 12072,68424
+\def\chapentry#1#2#3{\7f\chapentry\ 12085,68858
+\def\shortchapentry#1#2#3{\7f\shortchapentry\ 12088,68975
+ {#2\labelspace #1}\7fspace\ 12091,69085
+\def\unnumbchapentry#1#2{\7f\unnumbchapentry\ 12094,69139
+\def\shortunnumberedentry#1#2{\7f\shortunnumberedentry\ 12095,69186
+\def\secentry#1#2#3#4{\7f\secentry\ 12102,69350
+\def\unnumbsecentry#1#2{\7f\unnumbsecentry\ 12103,69409
+\def\subsecentry#1#2#3#4#5{\7f\subsecentry\ 12106,69470
+\def\unnumbsubsecentry#1#2{\7f\unnumbsubsecentry\ 12107,69540
+\def\subsubsecentry#1#2#3#4#5#6{\7f\subsubsecentry\ 12110,69614
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\7fspace\ 12111,69648
+\def\unnumbsubsubsecentry#1#2{\7f\unnumbsubsubsecentry\ 12112,69699
+\def\dochapentry#1#2{\7f\dochapentry\ 12123,70073
+\def\dosecentry#1#2{\7f\dosecentry\ 12138,70678
+\def\dosubsecentry#1#2{\7f\dosubsecentry\ 12145,70856
+\def\dosubsubsecentry#1#2{\7f\dosubsubsecentry\ 12152,71041
+\def\labelspace{\7f\labelspace\ 12160,71292
+\def\dopageno#1{\7f\dopageno\ 12162,71327
+\def\doshortpageno#1{\7f\doshortpageno\ 12163,71353
+\def\chapentryfonts{\7f\chapentryfonts\ 12165,71385
+\def\secentryfonts{\7f\secentryfonts\ 12166,71420
+\def\point{\7f\point\ 12192,72379
+\def\result{\7f\result\ 12194,72400
+\def\expansion{\7f\expansion\ 12195,72473
+\def\print{\7f\print\ 12196,72544
+\def\equiv{\7f\equiv\ 12198,72611
+\def\error{\7f\error\ 12218,73384
+\def\tex{\7f\tex\ 12224,73613
+\def\@{\7f\@\ 12242,73996
+\gdef\sepspaces{\def {\ }}}\7f\\ 12265,74728
+\def\aboveenvbreak{\7f\aboveenvbreak\ 12268,74810
+\def\afterenvbreak{\7f\afterenvbreak\ 12272,74976
+\def\ctl{\7f\ctl\ 12286,75487
+\def\ctr{\7f\ctr\ 12287,75559
+\def\cbl{\7f\cbl\ 12288,75598
+\def\cbr{\7f\cbr\ 12289,75638
+\def\carttop{\7f\carttop\ 12290,75677
+\def\cartbot{\7f\cartbot\ 12293,75785
+\long\def\cartouche{\7f\cartouche\ 12299,75925
+\def\Ecartouche{\7f\Ecartouche\ 12326,76713
+\def\lisp{\7f\lisp\ 12338,76848
+\def\Elisp{\7f\Elisp\ 12348,77195
+\def\next##1{\7f\next\ 12360,77521
+\def\Eexample{\7f\Eexample\ 12364,77563
+\def\Esmallexample{\7f\Esmallexample\ 12367,77610
+\def\smalllispx{\7f\smalllispx\ 12373,77788
+\def\Esmalllisp{\7f\Esmalllisp\ 12383,78142
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\7ffonts\ 12396,78498
+\def\next##1{\7f\next\ 12397,78555
+\def\display{\7f\display\ 12401,78635
+\def\Edisplay{\7f\Edisplay\ 12410,78954
+\def\next##1{\7f\next\ 12422,79265
+\def\format{\7f\format\ 12426,79368
+\def\Eformat{\7f\Eformat\ 12434,79664
+\def\next##1{\7f\next\ 12437,79753
+\def\flushleft{\7f\flushleft\ 12441,79805
+\def\Eflushleft{\7f\Eflushleft\ 12451,80176
+\def\next##1{\7f\next\ 12454,80269
+\def\flushright{\7f\flushright\ 12456,80291
+\def\Eflushright{\7f\Eflushright\ 12466,80663
+\def\next##1{\7f\next\ 12470,80794
+\def\quotation{\7f\quotation\ 12474,80852
+\def\Equotation{\7f\Equotation\ 12480,81044
+\def\setdeffont #1 {\7f\setdeffont\ 12493,81442
+\newskip\defbodyindent \defbodyindent=.4in\7fbodyindent\ 12495,81488
+\newskip\defargsindent \defargsindent=50pt\7fargsindent\ 12496,81531
+\newskip\deftypemargin \deftypemargin=12pt\7ftypemargin\ 12497,81574
+\newskip\deflastargmargin \deflastargmargin=18pt\7flastargmargin\ 12498,81617
+\def\activeparens{\7f\activeparens\ 12503,81815
+\def\opnr{\7f\opnr\ 12529,83027
+\def\lbrb{\7f\lbrb\ 12530,83092
+\def\defname #1#2{\7f\defname\ 12536,83293
+\advance\dimen2 by -\defbodyindent\7fbodyindent\ 12540,83411
+\advance\dimen3 by -\defbodyindent\7fbodyindent\ 12542,83465
+\setbox0=\hbox{\hskip \deflastargmargin{\7flastargmargin\ 12544,83519
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\7fargsindent\ 12546,83661
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %\7fargsindent\ 12547,83736
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\7ftypemargin\ 12554,84105
+\advance\leftskip by -\defbodyindent\7fbodyindent\ 12557,84239
+\exdentamount=\defbodyindent\7fbodyindent\ 12558,84276
+\def\defparsebody #1#2#3{\7f\defparsebody\ 12568,84635
+\def#1{\7f2572,84819
+\def#2{\7f2573,84855
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12575,84927
+\exdentamount=\defbodyindent\7fbodyindent\ 12576,85001
+\def\defmethparsebody #1#2#3#4 {\7f\defmethparsebody\ 12581,85105
+\def#1{\7f2585,85266
+\def#2##1 {\7f2586,85302
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12588,85385
+\exdentamount=\defbodyindent\7fbodyindent\ 12589,85459
+\def\defopparsebody #1#2#3#4#5 {\7f\defopparsebody\ 12592,85544
+\def#1{\7f2596,85705
+\def#2##1 ##2 {\7f2597,85741
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12600,85841
+\exdentamount=\defbodyindent\7fbodyindent\ 12601,85915
+\def\defvarparsebody #1#2#3{\7f\defvarparsebody\ 12608,86186
+\def#1{\7f2612,86373
+\def#2{\7f2613,86409
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12615,86468
+\exdentamount=\defbodyindent\7fbodyindent\ 12616,86542
+\def\defvrparsebody #1#2#3#4 {\7f\defvrparsebody\ 12621,86633
+\def#1{\7f2625,86792
+\def#2##1 {\7f2626,86828
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12628,86898
+\exdentamount=\defbodyindent\7fbodyindent\ 12629,86972
+\def\defopvarparsebody #1#2#3#4#5 {\7f\defopvarparsebody\ 12632,87044
+\def#1{\7f2636,87208
+\def#2##1 ##2 {\7f2637,87244
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\7fbodyindent\ 12640,87331
+\exdentamount=\defbodyindent\7fbodyindent\ 12641,87405
+\def\defunargs #1{\7f\defunargs\ 12664,88165
+\def\deftypefunargs #1{\7f\deftypefunargs\ 12676,88547
+\def\deffn{\7f\deffn\ 12690,88929
+\def\deffnheader #1#2#3{\7f\deffnheader\ 12692,88986
+\begingroup\defname {\7fname\ 12693,89034
+\def\defun{\7f\defun\ 12699,89179
+\def\defunheader #1#2{\7f\defunheader\ 12701,89232
+\begingroup\defname {\7fname\ 12702,89307
+\defunargs {\7funargs\ 12703,89343
+\def\deftypefun{\7f\deftypefun\ 12709,89491
+\def\deftypefunheader #1#2{\7f\deftypefunheader\ 12712,89613
+\def\deftypefunheaderx #1#2 #3\relax{\7f\deftypefunheaderx\ 12714,89722
+\begingroup\defname {\7fname\ 12716,89814
+\deftypefunargs {\7ftypefunargs\ 12717,89860
+\def\deftypefn{\7f\deftypefn\ 12723,90031
+\def\deftypefnheader #1#2#3{\7f\deftypefnheader\ 12726,90180
+\def\deftypefnheaderx #1#2#3 #4\relax{\7f\deftypefnheaderx\ 12728,90316
+\begingroup\defname {\7fname\ 12730,90409
+\deftypefunargs {\7ftypefunargs\ 12731,90449
+\def\defmac{\7f\defmac\ 12737,90570
+\def\defmacheader #1#2{\7f\defmacheader\ 12739,90627
+\begingroup\defname {\7fname\ 12740,90703
+\defunargs {\7funargs\ 12741,90736
+\def\defspec{\7f\defspec\ 12747,90860
+\def\defspecheader #1#2{\7f\defspecheader\ 12749,90921
+\begingroup\defname {\7fname\ 12750,90998
+\defunargs {\7funargs\ 12751,91038
+\def\deffnx #1 {\7f\deffnx\ 12758,91233
+\def\defunx #1 {\7f\defunx\ 12759,91290
+\def\defmacx #1 {\7f\defmacx\ 12760,91347
+\def\defspecx #1 {\7f\defspecx\ 12761,91406
+\def\deftypefnx #1 {\7f\deftypefnx\ 12762,91467
+\def\deftypeunx #1 {\7f\deftypeunx\ 12763,91532
+\def\defop #1 {\7f\defop\ 12769,91678
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\7fopparsebody\Edefop\defopx\defopheader\defoptype\ 12770,91713
+\def\defopheader #1#2#3{\7f\defopheader\ 12772,91767
+\begingroup\defname {\7fname\ 12774,91856
+\defunargs {\7funargs\ 12775,91902
+\def\defmethod{\7f\defmethod\ 12780,91963
+\def\defmethodheader #1#2#3{\7f\defmethodheader\ 12782,92036
+\begingroup\defname {\7fname\ 12784,92124
+\defunargs {\7funargs\ 12785,92164
+\def\defcv #1 {\7f\defcv\ 12790,92238
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\ 12791,92273
+\def\defcvarheader #1#2#3{\7f\defcvarheader\ 12793,92332
+\begingroup\defname {\7fname\ 12795,92418
+\defvarargs {\7fvarargs\ 12796,92464
+\def\defivar{\7f\defivar\ 12801,92537
+\def\defivarheader #1#2#3{\7f\defivarheader\ 12803,92600
+\begingroup\defname {\7fname\ 12805,92686
+\defvarargs {\7fvarargs\ 12806,92737
+\def\defopx #1 {\7f\defopx\ 12812,92886
+\def\defmethodx #1 {\7f\defmethodx\ 12813,92943
+\def\defcvx #1 {\7f\defcvx\ 12814,93008
+\def\defivarx #1 {\7f\defivarx\ 12815,93065
+\def\defvarargs #1{\7f\defvarargs\ 12822,93336
+\def\defvr{\7f\defvr\ 12828,93480
+\def\defvrheader #1#2#3{\7f\defvrheader\ 12830,93535
+\begingroup\defname {\7fname\ 12831,93583
+\def\defvar{\7f\defvar\ 12835,93668
+\def\defvarheader #1#2{\7f\defvarheader\ 12837,93728
+\begingroup\defname {\7fname\ 12838,93799
+\defvarargs {\7fvarargs\ 12839,93835
+\def\defopt{\7f\defopt\ 12844,93901
+\def\defoptheader #1#2{\7f\defoptheader\ 12846,93961
+\begingroup\defname {\7fname\ 12847,94032
+\defvarargs {\7fvarargs\ 12848,94071
+\def\deftypevar{\7f\deftypevar\ 12853,94128
+\def\deftypevarheader #1#2{\7f\deftypevarheader\ 12856,94244
+\begingroup\defname {\7fname\ 12858,94327
+\def\deftypevr{\7f\deftypevr\ 12865,94501
+\def\deftypevrheader #1#2#3{\7f\deftypevrheader\ 12867,94572
+\begingroup\defname {\7fname\ 12868,94624
+\def\defvrx #1 {\7f\defvrx\ 12876,94861
+\def\defvarx #1 {\7f\defvarx\ 12877,94918
+\def\defoptx #1 {\7f\defoptx\ 12878,94977
+\def\deftypevarx #1 {\7f\deftypevarx\ 12879,95036
+\def\deftypevrx #1 {\7f\deftypevrx\ 12880,95103
+\def\deftpargs #1{\7f\deftpargs\ 12885,95252
+\def\deftp{\7f\deftp\ 12889,95332
+\def\deftpheader #1#2#3{\7f\deftpheader\ 12891,95387
+\begingroup\defname {\7fname\ 12892,95435
+\def\deftpx #1 {\7f\deftpx\ 12897,95594
+\def\setref#1{\7f\setref\ 12908,95915
+\def\unnumbsetref#1{\7f\unnumbsetref\ 12913,96029
+\def\appendixsetref#1{\7f\appendixsetref\ 12918,96136
+\def\pxref#1{\7f\pxref\ 12929,96547
+\def\xref#1{\7f\xref\ 12930,96583
+\def\ref#1{\7f\ref\ 12931,96618
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\7f\xrefX[\ 12932,96648
+\def\printedmanual{\7f\printedmanual\ 12933,96691
+\def\printednodename{\7f\printednodename\ 12934,96729
+\def\printednodename{\7f\printednodename\ 12939,96854
+section ``\printednodename'' in \cite{\printedmanual}\7f\printedmanual\ 12954,97487
+\refx{\7fx\ 12957,97565
+\def\dosetq #1#2{\7f\dosetq\ 12965,97785
+\def\internalsetq #1#2{\7f\internalsetq\ 12973,98043
+\def\Ypagenumber{\7f\Ypagenumber\ 12977,98144
+\def\Ytitle{\7f\Ytitle\ 12979,98170
+\def\Ynothing{\7f\Ynothing\ 12981,98197
+\def\Ysectionnumberandtype{\7f\Ysectionnumberandtype\ 12983,98214
+\def\Yappendixletterandtype{\7f\Yappendixletterandtype\ 12992,98530
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\7fno\ 12993,98560
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\7fno.\the\secno\ 12994,98615
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\7fno.\the\secno.\the\subsecno\ 12996,98719
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\7fno.\the\secno.\the\subsecno.\the\subsubsecno\ 12998,98790
+ \def\linenumber{\7f\linenumber\ 13009,99129
+\def\refx#1#2{\7f\refx\ 13015,99313
+\def\xrdef #1#2{\7f\xrdef\ 13037,99939
+\def\readauxfile{\7f\readauxfile\ 13040,100024
+\def\supereject{\7f\supereject\ 13110,101805
+\footstrut\parindent=\defaultparindent\hang\textindent{\7faultparindent\hang\textindent\ 13131,102490
+\def\openindices{\7f\openindices\ 13139,102676
+\newdimen\defaultparindent \defaultparindent = 15pt\7faultparindent\ 13151,102901
+\parindent = \defaultparindent\7faultparindent\ 13152,102953
+\def\smallbook{\7f\smallbook\ 13175,103677
+\global\def\Esmallexample{\7f\Esmallexample\ 13192,104104
+\def\afourpaper{\7f\afourpaper\ 13196,104195
+\def\finalout{\7f\finalout\ 13224,105003
+\def\normaldoublequote{\7f\normaldoublequote\ 13235,105264
+\def\normaltilde{\7f\normaltilde\ 13236,105290
+\def\normalcaret{\7f\normalcaret\ 13237,105310
+\def\normalunderscore{\7f\normalunderscore\ 13238,105330
+\def\normalverticalbar{\7f\normalverticalbar\ 13239,105355
+\def\normalless{\7f\normalless\ 13240,105381
+\def\normalgreater{\7f\normalgreater\ 13241,105400
+\def\normalplus{\7f\normalplus\ 13242,105422
+\def\ifusingtt#1#2{\7f\ifusingtt\ 13253,105914
+\def\activedoublequote{\7f\activedoublequote\ 13261,106242
+\def~{\7f~\ 13264,106328
+\def^{\7f^\ 13267,106389
+\def_{\7f_\ 13270,106428
+\def\_{\7f\_\ 13272,106502
+\def\lvvmode{\7f\lvvmode\ 13279,106839
+\def|{\7f|\ 13282,106889
+\def<{\7f<\ 13285,106952
+\def>{\7f>\ 13288,107009
+\def+{\7f+\ 13290,107047
+\def\turnoffactive{\7f\turnoffactive\ 13296,107208
+\global\def={\7f=\ 13307,107494
+\def\normalbackslash{\7f\normalbackslash\ 13321,107876
+\f
+c-src/c.c,76
+T f(\7f1,0
+}T i;\7f2,14
+void bar(\7f5,69
+int foobar(\7f6,94
+interface_locate(\7f9,131
+\f
+c.c,2136
+void (*fa)\7ffa\ 1131,
+void \7f132,
+my_printf \7f135,
+void fatala \7f138,
+void fatalb \7f139,
+max \7f141,
+struct bar \7f143,
+ char z;\7f144,
+ struct foo f;\7f145,
+__attribute__ ((always_inline)) max \7f147,
+extern int old_var \7f149,
+struct foo\7f150,
+ char a;\7f152,
+ int x[\7fx\ 1153,
+char stack[\7fstack\ 1155,
+struct S \7f156,
+struct S { short f[\7ff\ 1156,
+ int *__ip;\7f__ip\ 1159,
+ union wait *__up;\7f__up\ 1160,
+} wait_status_ptr_t \7f161,
+Some_Class A \7f162,
+typedef T1 T3 \7f163,
+T3 z \7f164,
+typedef int more_aligned_int \7f165,
+struct S __attribute__ ((vector_size (16))) foo;\7f166,
+int foo \7f167,
+char *__attribute__((aligned(8))) *f;\7ff\ 1168,
+int i \7f169,
+extern void foobar \7f170,
+typedef struct cacheLRUEntry_s\7f172,
+ U16 next;\7f174,
+ U16 prev;\7f175,
+__attribute__ ((packed)) cacheLRUEntry_t;\7f177,
+struct foo \7f178,
+ int x;\7f179,
+ char a,\7f180,
+ char a, b,\7f180,
+ char a, b, c,\7f180,
+ char a, b, c, d;\7f180,
+ f1 \7f183,
+void f2 \7f184,
+__attribute__((noreturn)) void d0 \7f185,
+ __attribute__((format(printf, 1, 2))) d1 \7f186,
+ d2 \7f187,
+int x \7f188,
+struct foo \7f189,
+struct foo { int x[\7fx\ 1189,
+short array[\7farray\ 1190,
+int f\7f193,
+DEAFUN \7f196,
+XDEFUN \7f203,
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,\7fx-get-selection-internal\ 1206,
+ Fx_get_selection_internal,\7fx-get-selection-internal\ 1212,
+ Fy_get_selection_internal,\7fy-get-selection-internal\ 1216,
+defun_func1(\7f218,
+DEFUN_func2(\7f220,
+typedef int bool;\7f222,
+bool funcboo \7f223,
+struct my_struct \7f226,
+typedef struct my_struct my_typedef;\7f228,
+int bla \7f229,
+a(\7f234,
+int func1\7f237,
+static struct cca_control init_control \7f239,
+static tpcmd rbtp \7f240,
+static byte ring1 \7f241,
+static byte ring2 \7f242,
+request request \7f243,
+int func2 \7f246,
+ aaa;\7f249,
+ bbb;\7f251,
+struct sss1 \7f252,
+struct sss2\7f253,
+ struct ss3\7f255,
+struct a b;\7f259,
+struct aa *b;\7fb\ 1260,
+ **b;\7fb\ 1262,
+caccacacca \7f263,
+a \7f267,
+ typedef struct aa \7f269,
+ typedef struct aa {} aaa;\7f269,
+static void inita \7f271,
+node *lasta \7flasta\ 1272,
+b \7f273,
+ typedef int bb;\7f275,
+static void initb \7f277,
+node *lastb \7flastb\ 1278,
+typedef enum { REG_ENOSYS \7f279,
+typedef enum { REG_ENOSYS = -1, aa \7f279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;\7f279,
+\f
+c-src/a/b/b.c,18
+#define this \7f1,0
+\f
+../c/c.web,20
+#define questo \7f34,
+\f
+y-src/parse.y,1061
+#define obstack_chunk_alloc \7f46,1116
+#define obstack_chunk_free \7f47,1154
+int yylex \7f57,1322
+void yyerror \7f59,1352
+void yyerror \7f61,1381
+VOIDSTAR parse_hash;\7f63,1405
+extern VOIDSTAR hash_find(\7f64,1426
+unsigned char fnin[\7ffnin\ 167,1524
+#define YYSTYPE \7f71,1622
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,1653
+YYSTYPE parse_return;\7f73,1683
+YYSTYPE make_list \7f75,1721
+YYSTYPE make_list \7f77,1765
+char *instr;\7finstr\ 180,1795
+int parse_error \7f81,1808
+extern struct obstack tmp_mem;\7f82,1829
+line:\7fline\ 186,1867
+exp:\7fexp\ 194,1980
+exp_list:\7fexp_list\ 1262,5647
+range_exp:\7frange_exp\ 1268,5745
+range_exp_list:\7frange_exp_list\ 1272,5775
+cell:\7fcell\ 1278,5893
+yyerror FUN1(\7f285,5940
+make_list FUN2(\7f292,6020
+#define ERROR \7f303,6220
+extern struct node *yylval;\7fyylval\ 1305,6238
+unsigned char parse_cell_or_range \7f308,6283
+unsigned char parse_cell_or_range \7f310,6347
+yylex FUN0(\7f314,6397
+parse_cell_or_range FUN2(\7f586,11763
+#define CK_ABS_R(\7f670,13205
+#define CK_REL_R(\7f674,13284
+#define CK_ABS_C(\7f679,13413
+#define CK_REL_C(\7f683,13492
+#define MAYBEREL(\7f688,13621
+str_to_col FUN1(\7f846,16822
+\f
+y-src/parse.c,520
+#define YYBISON \7f4,64
+# define NE \7f6,114
+# define LE \7f7,130
+# define GE \7f8,146
+# define NEG \7f9,162
+# define L_CELL \7f10,179
+# define L_RANGE \7f11,199
+# define L_VAR \7f12,220
+# define L_CONST \7f13,239
+# define L_FN0 \7f14,260
+# define L_FN1 \7f15,279
+# define L_FN2 \7f16,298
+# define L_FN3 \7f17,317
+# define L_FN4 \7f18,336
+# define L_FNN \7f19,355
+# define L_FN1R \7f20,374
+# define L_FN2R \7f21,394
+# define L_FN3R \7f22,414
+# define L_FN4R \7f23,434
+# define L_FNNR \7f24,454
+# define L_LE \7f25,474
+# define L_NE \7f26,492
+# define L_GE \7f27,510
+\f
+parse.y,1464
+#define obstack_chunk_alloc \7f46,
+#define obstack_chunk_free \7f47,
+int yylex \7f57,
+void yyerror \7f59,
+void yyerror \7f61,
+VOIDSTAR parse_hash;\7f63,
+extern VOIDSTAR hash_find(\7f64,
+unsigned char fnin[\7ffnin\ 167,
+#define YYSTYPE \7f71,
+typedef struct node *YYSTYPE;\7fYYSTYPE\ 172,
+YYSTYPE parse_return;\7f73,
+YYSTYPE make_list \7f75,
+YYSTYPE make_list \7f77,
+char *instr;\7finstr\ 180,
+int parse_error \7f81,
+extern struct obstack tmp_mem;\7f82,
+#define YYSTYPE \7f85,
+# define YYDEBUG \7f88,
+#define YYFINAL \7f93,
+#define YYFLAG \7f94,
+#define YYNTBASE \7f95,
+#define YYTRANSLATE(\7f98,
+static const char yytranslate[\7fyytranslate\ 1101,
+static const short yyprhs[\7fyyprhs\ 1134,
+static const short yyrhs[\7fyyrhs\ 1142,
+static const short yyrline[\7fyyrline\ 1171,
+static const char *const yytname[\7fyytname\ 1185,
+static const short yyr1[\7fyyr1\ 1197,
+static const short yyr2[\7fyyr2\ 1207,
+static const short yydefact[\7fyydefact\ 1219,
+static const short yydefgoto[\7fyydefgoto\ 1237,
+static const short yypact[\7fyypact\ 1242,
+static const short yypgoto[\7fyypgoto\ 1260,
+#define YYLAST \7f266,
+static const short yytable[\7fyytable\ 1269,
+static const short yycheck[\7fyycheck\ 1330,
+yyerror FUN1(\7f285,
+make_list FUN2(\7f292,
+#define ERROR \7f303,
+extern struct node *yylval;\7fyylval\ 1305,
+unsigned char parse_cell_or_range \7f308,
+unsigned char parse_cell_or_range \7f310,
+yylex FUN0(\7f314,
+parse_cell_or_range FUN2(\7f586,
+#define CK_ABS_R(\7f670,
+#define CK_REL_R(\7f674,
+#define CK_ABS_C(\7f679,
+#define CK_REL_C(\7f683,
+#define MAYBEREL(\7f688,
+str_to_col FUN1(\7f846,
+\f
+/usr/share/bison/bison.simple,2238
+# define YYSTD(\7f40,
+# define YYSTD(\7f42,
+# define YYSTACK_ALLOC \7f50,
+# define YYSIZE_T \7f51,
+# define YYSTACK_ALLOC \7f55,
+# define YYSIZE_T \7f56,
+# define YYSTACK_ALLOC \7f59,
+# define YYSTACK_FREE(\7f67,
+# define YYSIZE_T \7f71,
+# define YYSIZE_T \7f75,
+# define YYSTACK_ALLOC \7f78,
+# define YYSTACK_FREE \7f79,
+union yyalloc\7f83,
+ short yyss;\7f85,
+ YYSTYPE yyvs;\7f86,
+ YYLTYPE yyls;\7f88,
+# define YYSTACK_GAP_MAX \7f93,
+# define YYSTACK_BYTES(\7f98,
+# define YYSTACK_BYTES(\7f102,
+# define YYSTACK_RELOCATE(\7f112,
+# define YYSIZE_T \7f128,
+# define YYSIZE_T \7f131,
+# define YYSIZE_T \7f136,
+# define YYSIZE_T \7f140,
+# define YYSIZE_T \7f145,
+#define yyerrok \7f148,
+#define yyclearin \7f149,
+#define YYEMPTY \7f150,
+#define YYEOF \7f151,
+#define YYACCEPT \7f152,
+#define YYABORT \7f153,
+#define YYERROR \7f154,
+#define YYFAIL \7f158,
+#define YYRECOVERING(\7f159,
+#define YYBACKUP(\7f160,
+#define YYTERROR \7f177,
+#define YYERRCODE \7f178,
+# define YYLLOC_DEFAULT(\7f189,
+# define YYLEX \7f200,
+# define YYLEX \7f202,
+# define YYLEX \7f206,
+# define YYLEX \7f208,
+# define YYLEX \7f212,
+# define YYFPRINTF \7f225,
+# define YYDPRINTF(\7f228,
+int yydebug;\7f237,
+# define YYDPRINTF(\7f239,
+# define YYINITDEPTH \7f244,
+# undef YYMAXDEPTH\7f255,
+# define YYMAXDEPTH \7f259,
+# define yymemcpy \7f264,
+yymemcpy \7f271,
+# define yystrlen \7f293,
+yystrlen \7f298,
+# define yystpcpy \7f316,
+yystpcpy \7f322,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+int yyparse \7f365,
+int yyparse \7f367,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ YYDPRINTF \7f917,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyerror \7f946,
+ yyresult \7f947,
+\f
+y-src/atest.y,9
+exp \7f2,3
+\f
+y-src/cccp.c,303
+#define YYBISON \7f4,63
+# define INT \7f6,113
+# define CHAR \7f7,130
+# define NAME \7f8,148
+# define ERROR \7f9,166
+# define OR \7f10,185
+# define AND \7f11,201
+# define EQUAL \7f12,218
+# define NOTEQUAL \7f13,237
+# define LEQ \7f14,259
+# define GEQ \7f15,276
+# define LSH \7f16,293
+# define RSH \7f17,310
+# define UNARY \7f18,327
+\f
+cccp.y,2532
+typedef unsigned char U_CHAR;\7f38,
+struct arglist \7f41,
+ struct arglist *next;\7fnext\ 142,
+ U_CHAR *name;\7fname\ 143,
+ int length;\7f44,
+ int argno;\7f45,
+#define NULL \7f51,
+#define GENERIC_PTR \7f56,
+#define GENERIC_PTR \7f58,
+#define NULL_PTR \7f63,
+int yylex \7f66,
+void yyerror \7f67,
+int expression_value;\7f68,
+static jmp_buf parse_return_error;\7f70,
+static int keyword_parsing \7f73,
+extern unsigned char is_idstart[\7fis_idstart\ 176,
+extern unsigned char is_idstart[], is_idchar[\7fis_idchar\ 176,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[\7fis_hor_space\ 176,
+extern char *xmalloc \7fxmalloc\ 178,
+extern int pedantic;\7f81,
+extern int traditional;\7f84,
+#define CHAR_TYPE_SIZE \7f87,
+#define INT_TYPE_SIZE \7f91,
+#define LONG_TYPE_SIZE \7f95,
+#define WCHAR_TYPE_SIZE \7f99,
+#define possible_sum_sign(\7f104,
+static void integer_overflow \7f106,
+static long left_shift \7f107,
+static long right_shift \7f108,
+ struct constant \7f113,
+ struct constant {long value;\7f113,
+ struct constant {long value; int unsignedp;\7f113,
+ struct constant {long value; int unsignedp;} integer;\7f113,
+ struct name \7f114,
+ struct name {U_CHAR *address;\7faddress\ 1114,
+ struct name {U_CHAR *address; int length;\7f114,
+ struct name {U_CHAR *address; int length;} name;\7f114,
+ struct arglist *keywords;\7fkeywords\ 1115,
+ int voidval;\7f116,
+ char *sval;\7fsval\ 1117,
+} yystype;\7f118,
+# define YYSTYPE \7f119,
+# define YYDEBUG \7f122,
+#define YYFINAL \7f127,
+#define YYFLAG \7f128,
+#define YYNTBASE \7f129,
+#define YYTRANSLATE(\7f132,
+static const char yytranslate[\7fyytranslate\ 1135,
+static const short yyprhs[\7fyyprhs\ 1167,
+static const short yyrhs[\7fyyrhs\ 1174,
+static const short yyrline[\7fyyrline\ 1195,
+static const char *const yytname[\7fyytname\ 1208,
+static const short yyr1[\7fyyr1\ 1219,
+static const short yyr2[\7fyyr2\ 1228,
+static const short yydefact[\7fyydefact\ 1239,
+static const short yydefgoto[\7fyydefgoto\ 1251,
+static const short yypact[\7fyypact\ 1256,
+static const short yypgoto[\7fyypgoto\ 1268,
+#define YYLAST \7f274,
+static const short yytable[\7fyytable\ 1277,
+static const short yycheck[\7fyycheck\ 1301,
+static char *lexptr;\7flexptr\ 1332,
+parse_number \7f341,
+struct token \7f437,
+ char *operator;\7foperator\ 1438,
+ int token;\7f439,
+static struct token tokentab2[\7ftokentab2\ 1442,
+yylex \7f459,
+parse_escape \7f740,
+yyerror \7f836,
+integer_overflow \7f844,
+left_shift \7f851,
+right_shift \7f873,
+parse_c_expression \7f893,
+extern int yydebug;\7f919,
+main \7f923,
+unsigned char is_idchar[\7fis_idchar\ 1948,
+unsigned char is_idstart[\7fis_idstart\ 1950,
+char is_hor_space[\7fis_hor_space\ 1953,
+initialize_random_junk \7f958,
+error \7f988,
+warning \7f993,
+lookup \7f999,
+\f
+/usr/share/bison/bison.simple,2238
+# define YYSTD(\7f41,
+# define YYSTD(\7f43,
+# define YYSTACK_ALLOC \7f51,
+# define YYSIZE_T \7f52,
+# define YYSTACK_ALLOC \7f56,
+# define YYSIZE_T \7f57,
+# define YYSTACK_ALLOC \7f60,
+# define YYSTACK_FREE(\7f68,
+# define YYSIZE_T \7f72,
+# define YYSIZE_T \7f76,
+# define YYSTACK_ALLOC \7f79,
+# define YYSTACK_FREE \7f80,
+union yyalloc\7f84,
+ short yyss;\7f86,
+ YYSTYPE yyvs;\7f87,
+ YYLTYPE yyls;\7f89,
+# define YYSTACK_GAP_MAX \7f94,
+# define YYSTACK_BYTES(\7f99,
+# define YYSTACK_BYTES(\7f103,
+# define YYSTACK_RELOCATE(\7f113,
+# define YYSIZE_T \7f129,
+# define YYSIZE_T \7f132,
+# define YYSIZE_T \7f137,
+# define YYSIZE_T \7f141,
+# define YYSIZE_T \7f146,
+#define yyerrok \7f149,
+#define yyclearin \7f150,
+#define YYEMPTY \7f151,
+#define YYEOF \7f152,
+#define YYACCEPT \7f153,
+#define YYABORT \7f154,
+#define YYERROR \7f155,
+#define YYFAIL \7f159,
+#define YYRECOVERING(\7f160,
+#define YYBACKUP(\7f161,
+#define YYTERROR \7f178,
+#define YYERRCODE \7f179,
+# define YYLLOC_DEFAULT(\7f190,
+# define YYLEX \7f201,
+# define YYLEX \7f203,
+# define YYLEX \7f207,
+# define YYLEX \7f209,
+# define YYLEX \7f213,
+# define YYFPRINTF \7f226,
+# define YYDPRINTF(\7f229,
+int yydebug;\7f238,
+# define YYDPRINTF(\7f240,
+# define YYINITDEPTH \7f245,
+# undef YYMAXDEPTH\7f256,
+# define YYMAXDEPTH \7f260,
+# define yymemcpy \7f265,
+yymemcpy \7f272,
+# define yystrlen \7f294,
+yystrlen \7f299,
+# define yystpcpy \7f317,
+yystpcpy \7f323,
+# define YYPARSE_PARAM_ARG \7f351,
+# define YYPARSE_PARAM_DECL\7f352,
+# define YYPARSE_PARAM_ARG \7f354,
+# define YYPARSE_PARAM_DECL \7f355,
+# define YYPARSE_PARAM_ARG\7f358,
+# define YYPARSE_PARAM_DECL\7f359,
+int yyparse \7f365,
+int yyparse \7f367,
+#define YY_DECL_NON_LSP_VARIABLES \7f374,
+# define YY_DECL_VARIABLES \7f385,
+# define YY_DECL_VARIABLES \7f391,
+yyparse \7f403,
+# define YYPOPSTACK \7f445,
+# define YYPOPSTACK \7f447,
+# undef YYSTACK_RELOCATE\7f548,
+ *++yyvsp \7fyyvsp\ 1746,
+ *++yylsp \7fyylsp\ 1748,
+ yyn \7f755,
+ yystate \7f757,
+ yystate \7f761,
+ goto yynewstate;\7f763,
+ goto yyerrlab1;\7f823,
+ yyerrstatus \7f846,
+ goto yyerrhandle;\7f848,
+ yyn \7f861,
+ yystate \7f875,
+ yyn \7f895,
+ yyn \7f903,
+ YYDPRINTF \7f917,
+ *++yyvsp \7fyyvsp\ 1919,
+ *++yylsp \7fyylsp\ 1921,
+ yystate \7f924,
+ goto yynewstate;\7f925,
+ yyresult \7f932,
+ goto yyreturn;\7f933,
+ yyresult \7f939,
+ goto yyreturn;\7f940,
+ yyerror \7f946,
+ yyresult \7f947,
+\f
+y-src/cccp.y,2171
+typedef unsigned char U_CHAR;\7f38,1201
+struct arglist \7f41,1301
+ struct arglist *next;\7fnext\ 142,1318
+ U_CHAR *name;\7fname\ 143,1342
+ int length;\7f44,1358
+ int argno;\7f45,1372
+#define NULL \7f51,1468
+#define GENERIC_PTR \7f56,1578
+#define GENERIC_PTR \7f58,1611
+#define NULL_PTR \7f63,1670
+int yylex \7f66,1712
+void yyerror \7f67,1726
+int expression_value;\7f68,1743
+static jmp_buf parse_return_error;\7f70,1766
+static int keyword_parsing \7f73,1865
+extern unsigned char is_idstart[\7fis_idstart\ 176,1944
+extern unsigned char is_idstart[], is_idchar[\7fis_idchar\ 176,1944
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[\7fis_hor_space\ 176,1944
+extern char *xmalloc \7fxmalloc\ 178,2009
+extern int pedantic;\7f81,2062
+extern int traditional;\7f84,2114
+#define CHAR_TYPE_SIZE \7f87,2162
+#define INT_TYPE_SIZE \7f91,2229
+#define LONG_TYPE_SIZE \7f95,2296
+#define WCHAR_TYPE_SIZE \7f99,2365
+#define possible_sum_sign(\7f104,2556
+static void integer_overflow \7f106,2632
+static long left_shift \7f107,2665
+static long right_shift \7f108,2692
+ struct constant \7f112,2733
+ struct constant {long value;\7f112,2733
+ struct constant {long value; int unsignedp;\7f112,2733
+ struct constant {long value; int unsignedp;} integer;\7f112,2733
+ struct name \7f113,2789
+ struct name {U_CHAR *address;\7faddress\ 1113,2789
+ struct name {U_CHAR *address; int length;\7f113,2789
+ struct name {U_CHAR *address; int length;} name;\7f113,2789
+ struct arglist *keywords;\7fkeywords\ 1114,2840
+ int voidval;\7f115,2868
+ char *sval;\7fsval\ 1116,2883
+start \7f143,3226
+exp1 \7f148,3330
+exp \7f156,3505
+exp \7f185,4295
+keywords \7f306,7835
+static char *lexptr;\7flexptr\ 1332,8579
+parse_number \7f341,8842
+struct token \7f437,11038
+ char *operator;\7foperator\ 1438,11053
+ int token;\7f439,11071
+static struct token tokentab2[\7ftokentab2\ 1442,11088
+yylex \7f459,11367
+parse_escape \7f740,17718
+yyerror \7f836,19599
+integer_overflow \7f844,19690
+left_shift \7f851,19804
+right_shift \7f873,20194
+parse_c_expression \7f893,20732
+extern int yydebug;\7f919,21416
+main \7f923,21483
+unsigned char is_idchar[\7fis_idchar\ 1948,21901
+unsigned char is_idstart[\7fis_idstart\ 1950,21996
+char is_hor_space[\7fis_hor_space\ 1953,22160
+initialize_random_junk \7f958,22259
+error \7f988,22915
+warning \7f993,22963
+lookup \7f999,23033
+\f
+tex-src/nonewline.tex,0
+\f
+php-src/sendmail.php,0
+\f
+a-src/empty.zz,0
--- /dev/null
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+/* Keyboard and mouse input; editor command loop.
+
+Copyright (C) 1985-1989, 1993-1997, 1999-2016 Free Software Foundation,
+Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
++the Free Software Foundation, either version 3 of the License, or (at
++your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "sysstdio.h"
+#include <sys/stat.h>
+
+#include "lisp.h"
+#include "termchar.h"
+#include "termopts.h"
+#include "frame.h"
+#include "termhooks.h"
+#include "macros.h"
+#include "keyboard.h"
+#include "window.h"
+#include "commands.h"
+#include "character.h"
+#include "buffer.h"
+#include "disptab.h"
+#include "dispextern.h"
+#include "syntax.h"
+#include "intervals.h"
+#include "keymap.h"
+#include "blockinput.h"
+#include "puresize.h"
+#include "systime.h"
+#include "atimer.h"
+#include "process.h"
+#include <errno.h>
+
+#ifdef HAVE_PTHREAD
+#include <pthread.h>
+#endif
+#ifdef MSDOS
+#include "msdos.h"
+#include <time.h>
+#else /* not MSDOS */
+#include <sys/ioctl.h>
+#endif /* not MSDOS */
+
+#if defined USABLE_FIONREAD && defined USG5_4
+# include <sys/filio.h>
+#endif
+
+#include "syssignal.h"
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#ifdef HAVE_WINDOW_SYSTEM
+#include TERM_HEADER
+#endif /* HAVE_WINDOW_SYSTEM */
+
+/* Variables for blockinput.h: */
+
+/* Positive if interrupt input is blocked right now. */
+volatile int interrupt_input_blocked;
+
+/* True means an input interrupt or alarm signal has arrived.
+ The QUIT macro checks this. */
+volatile bool pending_signals;
+
+#define KBD_BUFFER_SIZE 4096
+
+KBOARD *initial_kboard;
+KBOARD *current_kboard;
+static KBOARD *all_kboards;
+
+/* True in the single-kboard state, false in the any-kboard state. */
+static bool single_kboard;
+
+#define NUM_RECENT_KEYS (300)
+
+/* Index for storing next element into recent_keys. */
+static int recent_keys_index;
+
+/* Total number of elements stored into recent_keys. */
+static int total_keys;
+
+/* This vector holds the last NUM_RECENT_KEYS keystrokes. */
+static Lisp_Object recent_keys;
+
+/* Vector holding the key sequence that invoked the current command.
+ It is reused for each command, and it may be longer than the current
+ sequence; this_command_key_count indicates how many elements
+ actually mean something.
+ It's easier to staticpro a single Lisp_Object than an array. */
+Lisp_Object this_command_keys;
+ptrdiff_t this_command_key_count;
+
+/* True after calling Freset_this_command_lengths.
+ Usually it is false. */
+static bool this_command_key_count_reset;
+
+/* This vector is used as a buffer to record the events that were actually read
+ by read_key_sequence. */
+static Lisp_Object raw_keybuf;
+static int raw_keybuf_count;
+
+#define GROW_RAW_KEYBUF \
+ if (raw_keybuf_count == ASIZE (raw_keybuf)) \
+ raw_keybuf = larger_vector (raw_keybuf, 1, -1)
+
+/* Number of elements of this_command_keys
+ that precede this key sequence. */
+static ptrdiff_t this_single_command_key_start;
+
+/* Record values of this_command_key_count and echo_length ()
+ before this command was read. */
+static ptrdiff_t before_command_key_count;
+static ptrdiff_t before_command_echo_length;
+
+#ifdef HAVE_STACK_OVERFLOW_HANDLING
+
+/* For longjmp to recover from C stack overflow. */
+sigjmp_buf return_to_command_loop;
+
+/* Message displayed by Vtop_level when recovering from C stack overflow. */
+static Lisp_Object recover_top_level_message;
+
+#endif /* HAVE_STACK_OVERFLOW_HANDLING */
+
+/* Message normally displayed by Vtop_level. */
+static Lisp_Object regular_top_level_message;
+
+/* For longjmp to where kbd input is being done. */
+
+static sys_jmp_buf getcjmp;
+
+/* True while doing kbd input. */
+bool waiting_for_input;
+
+/* True while displaying for echoing. Delays C-g throwing. */
+
+static bool echoing;
+
+/* Non-null means we can start echoing at the next input pause even
+ though there is something in the echo area. */
+
+static struct kboard *ok_to_echo_at_next_pause;
+
+/* The kboard last echoing, or null for none. Reset to 0 in
+ cancel_echoing. If non-null, and a current echo area message
+ exists, and echo_message_buffer is eq to the current message
+ buffer, we know that the message comes from echo_kboard. */
+
+struct kboard *echo_kboard;
+
+/* The buffer used for echoing. Set in echo_now, reset in
+ cancel_echoing. */
+
+Lisp_Object echo_message_buffer;
+
+/* True means C-g should cause immediate error-signal. */
+bool immediate_quit;
+
+/* Character that causes a quit. Normally C-g.
+
+ If we are running on an ordinary terminal, this must be an ordinary
+ ASCII char, since we want to make it our interrupt character.
+
+ If we are not running on an ordinary terminal, it still needs to be
+ an ordinary ASCII char. This character needs to be recognized in
+ the input interrupt handler. At this point, the keystroke is
+ represented as a struct input_event, while the desired quit
+ character is specified as a lispy event. The mapping from struct
+ input_events to lispy events cannot run in an interrupt handler,
+ and the reverse mapping is difficult for anything but ASCII
+ keystrokes.
+
+ FOR THESE ELABORATE AND UNSATISFYING REASONS, quit_char must be an
+ ASCII character. */
+int quit_char;
+
+/* Current depth in recursive edits. */
+EMACS_INT command_loop_level;
+
+/* If not Qnil, this is a switch-frame event which we decided to put
+ off until the end of a key sequence. This should be read as the
+ next command input, after any unread_command_events.
+
+ read_key_sequence uses this to delay switch-frame events until the
+ end of the key sequence; Fread_char uses it to put off switch-frame
+ events until a non-ASCII event is acceptable as input. */
+Lisp_Object unread_switch_frame;
+
+/* Last size recorded for a current buffer which is not a minibuffer. */
+static ptrdiff_t last_non_minibuf_size;
+
+/* Total number of times read_char has returned, modulo UINTMAX_MAX + 1. */
+uintmax_t num_input_events;
+
+/* Value of num_nonmacro_input_events as of last auto save. */
+
+static EMACS_INT last_auto_save;
+
+/* The value of point when the last command was started. */
+static ptrdiff_t last_point_position;
+
+/* The frame in which the last input event occurred, or Qmacro if the
+ last event came from a macro. We use this to determine when to
+ generate switch-frame events. This may be cleared by functions
+ like Fselect_frame, to make sure that a switch-frame event is
+ generated by the next character.
+
+ FIXME: This is modified by a signal handler so it should be volatile.
+ It's exported to Lisp, though, so it can't simply be marked
+ 'volatile' here. */
+Lisp_Object internal_last_event_frame;
+
+/* `read_key_sequence' stores here the command definition of the
+ key sequence that it reads. */
+static Lisp_Object read_key_sequence_cmd;
+static Lisp_Object read_key_sequence_remapped;
+
+/* File in which we write all commands we read. */
+static FILE *dribble;
+
+/* True if input is available. */
+bool input_pending;
+
+/* True if more input was available last time we read an event.
+
+ Since redisplay can take a significant amount of time and is not
+ indispensable to perform the user's commands, when input arrives
+ "too fast", Emacs skips redisplay. More specifically, if the next
+ command has already been input when we finish the previous command,
+ we skip the intermediate redisplay.
+
+ This is useful to try and make sure Emacs keeps up with fast input
+ rates, such as auto-repeating keys. But in some cases, this proves
+ too conservative: we may end up disabling redisplay for the whole
+ duration of a key repetition, even though we could afford to
+ redisplay every once in a while.
+
+ So we "sample" the input_pending flag before running a command and
+ use *that* value after running the command to decide whether to
+ skip redisplay or not. This way, we only skip redisplay if we
+ really can't keep up with the repeat rate.
+
+ This only makes a difference if the next input arrives while running the
+ command, which is very unlikely if the command is executed quickly.
+ IOW this tends to avoid skipping redisplay after a long running command
+ (which is a case where skipping redisplay is not very useful since the
+ redisplay time is small compared to the time it took to run the command).
+
+ A typical use case is when scrolling. Scrolling time can be split into:
+ - Time to do jit-lock on the newly displayed portion of buffer.
+ - Time to run the actual scroll command.
+ - Time to perform the redisplay.
+ Jit-lock can happen either during the command or during the redisplay.
+ In the most painful cases, the jit-lock time is the one that dominates.
+ Also jit-lock can be tweaked (via jit-lock-defer) to delay its job, at the
+ cost of temporary inaccuracy in display and scrolling.
+ So without input_was_pending, what typically happens is the following:
+ - when the command starts, there's no pending input (yet).
+ - the scroll command triggers jit-lock.
+ - during the long jit-lock time the next input arrives.
+ - at the end of the command, we check input_pending and hence decide to
+ skip redisplay.
+ - we read the next input and start over.
+ End result: all the hard work of jit-locking is "wasted" since redisplay
+ doesn't actually happens (at least not before the input rate slows down).
+ With input_was_pending redisplay is still skipped if Emacs can't keep up
+ with the input rate, but if it can keep up just enough that there's no
+ input_pending when we begin the command, then redisplay is not skipped
+ which results in better feedback to the user. */
+static bool input_was_pending;
+
+/* Circular buffer for pre-read keyboard input. */
+
+static struct input_event kbd_buffer[KBD_BUFFER_SIZE];
+
+/* Pointer to next available character in kbd_buffer.
+ If kbd_fetch_ptr == kbd_store_ptr, the buffer is empty.
+ This may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the
+ next available char is in kbd_buffer[0]. */
+static struct input_event *kbd_fetch_ptr;
+
+/* Pointer to next place to store character in kbd_buffer. This
+ may be kbd_buffer + KBD_BUFFER_SIZE, meaning that the next
+ character should go in kbd_buffer[0]. */
+static struct input_event * volatile kbd_store_ptr;
+
+/* The above pair of variables forms a "queue empty" flag. When we
+ enqueue a non-hook event, we increment kbd_store_ptr. When we
+ dequeue a non-hook event, we increment kbd_fetch_ptr. We say that
+ there is input available if the two pointers are not equal.
+
+ Why not just have a flag set and cleared by the enqueuing and
+ dequeuing functions? Such a flag could be screwed up by interrupts
+ at inopportune times. */
+
+static void recursive_edit_unwind (Lisp_Object buffer);
+static Lisp_Object command_loop (void);
+
+static void echo_now (void);
+static ptrdiff_t echo_length (void);
+
+/* Incremented whenever a timer is run. */
+unsigned timers_run;
+
+/* Address (if not 0) of struct timespec to zero out if a SIGIO interrupt
+ happens. */
+struct timespec *input_available_clear_time;
+
+/* True means use SIGIO interrupts; false means use CBREAK mode.
+ Default is true if INTERRUPT_INPUT is defined. */
+bool interrupt_input;
+
+/* Nonzero while interrupts are temporarily deferred during redisplay. */
+bool interrupts_deferred;
+
+/* The time when Emacs started being idle. */
+
+static struct timespec timer_idleness_start_time;
+
+/* After Emacs stops being idle, this saves the last value
+ of timer_idleness_start_time from when it was idle. */
+
+static struct timespec timer_last_idleness_start_time;
+
+\f
+/* Global variable declarations. */
+
+/* Flags for readable_events. */
+#define READABLE_EVENTS_DO_TIMERS_NOW (1 << 0)
+#define READABLE_EVENTS_FILTER_EVENTS (1 << 1)
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES (1 << 2)
+
+/* Function for init_keyboard to call with no args (if nonzero). */
+static void (*keyboard_init_hook) (void);
+
+static bool get_input_pending (int);
+static bool readable_events (int);
+static Lisp_Object read_char_x_menu_prompt (Lisp_Object,
+ Lisp_Object, bool *);
+static Lisp_Object read_char_minibuf_menu_prompt (int, Lisp_Object);
+static Lisp_Object make_lispy_event (struct input_event *);
+static Lisp_Object make_lispy_movement (struct frame *, Lisp_Object,
+ enum scroll_bar_part,
+ Lisp_Object, Lisp_Object,
+ Time);
+static Lisp_Object modify_event_symbol (ptrdiff_t, int, Lisp_Object,
+ Lisp_Object, const char *const *,
+ Lisp_Object *, ptrdiff_t);
+static Lisp_Object make_lispy_switch_frame (Lisp_Object);
+static Lisp_Object make_lispy_focus_in (Lisp_Object);
+#ifdef HAVE_WINDOW_SYSTEM
+static Lisp_Object make_lispy_focus_out (Lisp_Object);
+#endif /* HAVE_WINDOW_SYSTEM */
+static bool help_char_p (Lisp_Object);
+static void save_getcjmp (sys_jmp_buf);
+static void restore_getcjmp (sys_jmp_buf);
+static Lisp_Object apply_modifiers (int, Lisp_Object);
+static void clear_event (struct input_event *);
+static void restore_kboard_configuration (int);
+#ifdef USABLE_SIGIO
+static void deliver_input_available_signal (int signo);
+#endif
+static void handle_interrupt (bool);
+static _Noreturn void quit_throw_to_read_char (bool);
+static void process_special_events (void);
+static void timer_start_idle (void);
+static void timer_stop_idle (void);
+static void timer_resume_idle (void);
+static void deliver_user_signal (int);
+static char *find_user_signal_name (int);
+static void store_user_signal_events (void);
+
+/* These setters are used only in this file, so they can be private. */
+static void
+kset_echo_string (struct kboard *kb, Lisp_Object val)
+{
+ kb->echo_string_ = val;
+}
+static void
+kset_kbd_queue (struct kboard *kb, Lisp_Object val)
+{
+ kb->kbd_queue_ = val;
+}
+static void
+kset_keyboard_translate_table (struct kboard *kb, Lisp_Object val)
+{
+ kb->Vkeyboard_translate_table_ = val;
+}
+static void
+kset_last_prefix_arg (struct kboard *kb, Lisp_Object val)
+{
+ kb->Vlast_prefix_arg_ = val;
+}
+static void
+kset_last_repeatable_command (struct kboard *kb, Lisp_Object val)
+{
+ kb->Vlast_repeatable_command_ = val;
+}
+static void
+kset_local_function_key_map (struct kboard *kb, Lisp_Object val)
+{
+ kb->Vlocal_function_key_map_ = val;
+}
+static void
+kset_overriding_terminal_local_map (struct kboard *kb, Lisp_Object val)
+{
+ kb->Voverriding_terminal_local_map_ = val;
+}
+static void
+kset_real_last_command (struct kboard *kb, Lisp_Object val)
+{
+ kb->Vreal_last_command_ = val;
+}
+static void
+kset_system_key_syms (struct kboard *kb, Lisp_Object val)
+{
+ kb->system_key_syms_ = val;
+}
+
+\f
+/* Add C to the echo string, without echoing it immediately. C can be
+ a character, which is pretty-printed, or a symbol, whose name is
+ printed. */
+
+static void
+echo_add_key (Lisp_Object c)
+{
+ char initbuf[KEY_DESCRIPTION_SIZE + 100];
+ ptrdiff_t size = sizeof initbuf;
+ char *buffer = initbuf;
+ char *ptr = buffer;
+ Lisp_Object echo_string;
+ USE_SAFE_ALLOCA;
+
+ echo_string = KVAR (current_kboard, echo_string);
+
+ /* If someone has passed us a composite event, use its head symbol. */
+ c = EVENT_HEAD (c);
+
+ if (INTEGERP (c))
+ ptr = push_key_description (XINT (c), ptr);
+ else if (SYMBOLP (c))
+ {
+ Lisp_Object name = SYMBOL_NAME (c);
+ ptrdiff_t nbytes = SBYTES (name);
+
+ if (size - (ptr - buffer) < nbytes)
+ {
+ ptrdiff_t offset = ptr - buffer;
+ size = max (2 * size, size + nbytes);
+ buffer = SAFE_ALLOCA (size);
+ ptr = buffer + offset;
+ }
+
+ ptr += copy_text (SDATA (name), (unsigned char *) ptr, nbytes,
+ STRING_MULTIBYTE (name), 1);
+ }
+
+ if ((NILP (echo_string) || SCHARS (echo_string) == 0)
+ && help_char_p (c))
+ {
+ static const char text[] = " (Type ? for further options)";
+ int len = sizeof text - 1;
+
+ if (size - (ptr - buffer) < len)
+ {
+ ptrdiff_t offset = ptr - buffer;
+ size += len;
+ buffer = SAFE_ALLOCA (size);
+ ptr = buffer + offset;
+ }
+
+ memcpy (ptr, text, len);
+ ptr += len;
+ }
+
+ /* Replace a dash from echo_dash with a space, otherwise add a space
+ at the end as a separator between keys. */
+ AUTO_STRING (space, " ");
+ if (STRINGP (echo_string) && SCHARS (echo_string) > 1)
+ {
+ Lisp_Object last_char, prev_char, idx;
+
+ idx = make_number (SCHARS (echo_string) - 2);
+ prev_char = Faref (echo_string, idx);
+
+ idx = make_number (SCHARS (echo_string) - 1);
+ last_char = Faref (echo_string, idx);
+
+ /* We test PREV_CHAR to make sure this isn't the echoing of a
+ minus-sign. */
+ if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
+ Faset (echo_string, idx, make_number (' '));
+ else
+ echo_string = concat2 (echo_string, space);
+ }
+ else if (STRINGP (echo_string) && SCHARS (echo_string) > 0)
+ echo_string = concat2 (echo_string, space);
+
+ kset_echo_string
+ (current_kboard,
+ concat2 (echo_string, make_string (buffer, ptr - buffer)));
+ SAFE_FREE ();
+}
+
+/* Add C to the echo string, if echoing is going on. C can be a
+ character or a symbol. */
+
+static void
+echo_char (Lisp_Object c)
+{
+ if (current_kboard->immediate_echo)
+ {
+ echo_add_key (c);
+ echo_now ();
+ }
+}
+
+/* Temporarily add a dash to the end of the echo string if it's not
+ empty, so that it serves as a mini-prompt for the very next
+ character. */
+
+static void
+echo_dash (void)
+{
+ /* Do nothing if not echoing at all. */
+ if (NILP (KVAR (current_kboard, echo_string)))
+ return;
+
+ if (this_command_key_count == 0)
+ return;
+
+ if (!current_kboard->immediate_echo
+ && SCHARS (KVAR (current_kboard, echo_string)) == 0)
+ return;
+
+ /* Do nothing if we just printed a prompt. */
+ if (current_kboard->echo_after_prompt
+ == SCHARS (KVAR (current_kboard, echo_string)))
+ return;
+
+ /* Do nothing if we have already put a dash at the end. */
+ if (SCHARS (KVAR (current_kboard, echo_string)) > 1)
+ {
+ Lisp_Object last_char, prev_char, idx;
+
+ idx = make_number (SCHARS (KVAR (current_kboard, echo_string)) - 2);
+ prev_char = Faref (KVAR (current_kboard, echo_string), idx);
+
+ idx = make_number (SCHARS (KVAR (current_kboard, echo_string)) - 1);
+ last_char = Faref (KVAR (current_kboard, echo_string), idx);
+
+ if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
+ return;
+ }
+
+ /* Put a dash at the end of the buffer temporarily,
+ but make it go away when the next character is added. */
+ AUTO_STRING (dash, "-");
+ kset_echo_string (current_kboard,
+ concat2 (KVAR (current_kboard, echo_string), dash));
+ echo_now ();
+}
+
+/* Display the current echo string, and begin echoing if not already
+ doing so. */
+
+static void
+echo_now (void)
+{
+ if (!current_kboard->immediate_echo)
+ {
+ ptrdiff_t i;
+ current_kboard->immediate_echo = 1;
+
+ for (i = 0; i < this_command_key_count; i++)
+ {
+ Lisp_Object c;
+
+ /* Set before_command_echo_length to the value that would
+ have been saved before the start of this subcommand in
+ command_loop_1, if we had already been echoing then. */
+ if (i == this_single_command_key_start)
+ before_command_echo_length = echo_length ();
+
+ c = AREF (this_command_keys, i);
+ if (! (EVENT_HAS_PARAMETERS (c)
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_movement)))
+ echo_char (c);
+ }
+
+ /* Set before_command_echo_length to the value that would
+ have been saved before the start of this subcommand in
+ command_loop_1, if we had already been echoing then. */
+ if (this_command_key_count == this_single_command_key_start)
+ before_command_echo_length = echo_length ();
+
+ /* Put a dash at the end to invite the user to type more. */
+ echo_dash ();
+ }
+
+ echoing = 1;
+ /* FIXME: Use call (Qmessage) so it can be advised (e.g. emacspeak). */
+ message3_nolog (KVAR (current_kboard, echo_string));
+ echoing = 0;
+
+ /* Record in what buffer we echoed, and from which kboard. */
+ echo_message_buffer = echo_area_buffer[0];
+ echo_kboard = current_kboard;
+
+ if (waiting_for_input && !NILP (Vquit_flag))
+ quit_throw_to_read_char (0);
+}
+
+/* Turn off echoing, for the start of a new command. */
+
+void
+cancel_echoing (void)
+{
+ current_kboard->immediate_echo = 0;
+ current_kboard->echo_after_prompt = -1;
+ kset_echo_string (current_kboard, Qnil);
+ ok_to_echo_at_next_pause = NULL;
+ echo_kboard = NULL;
+ echo_message_buffer = Qnil;
+}
+
+/* Return the length of the current echo string. */
+
+static ptrdiff_t
+echo_length (void)
+{
+ return (STRINGP (KVAR (current_kboard, echo_string))
+ ? SCHARS (KVAR (current_kboard, echo_string))
+ : 0);
+}
+
+/* Truncate the current echo message to its first LEN chars.
+ This and echo_char get used by read_key_sequence when the user
+ switches frames while entering a key sequence. */
+
+static void
+echo_truncate (ptrdiff_t nchars)
+{
+ if (STRINGP (KVAR (current_kboard, echo_string)))
+ kset_echo_string (current_kboard,
+ Fsubstring (KVAR (current_kboard, echo_string),
+ make_number (0), make_number (nchars)));
+ truncate_echo_area (nchars);
+}
+
+\f
+/* Functions for manipulating this_command_keys. */
+static void
+add_command_key (Lisp_Object key)
+{
+#if 0 /* Not needed after we made Freset_this_command_lengths
+ do the job immediately. */
+ /* If reset-this-command-length was called recently, obey it now.
+ See the doc string of that function for an explanation of why. */
+ if (before_command_restore_flag)
+ {
+ this_command_key_count = before_command_key_count_1;
+ if (this_command_key_count < this_single_command_key_start)
+ this_single_command_key_start = this_command_key_count;
+ echo_truncate (before_command_echo_length_1);
+ before_command_restore_flag = 0;
+ }
+#endif
+
+ if (this_command_key_count >= ASIZE (this_command_keys))
+ this_command_keys = larger_vector (this_command_keys, 1, -1);
+
+ ASET (this_command_keys, this_command_key_count, key);
+ ++this_command_key_count;
+}
+
+\f
+Lisp_Object
+recursive_edit_1 (void)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ Lisp_Object val;
+
+ if (command_loop_level > 0)
+ {
+ specbind (Qstandard_output, Qt);
+ specbind (Qstandard_input, Qt);
+ }
+
+#ifdef HAVE_WINDOW_SYSTEM
+ /* The command loop has started an hourglass timer, so we have to
+ cancel it here, otherwise it will fire because the recursive edit
+ can take some time. Do not check for display_hourglass_p here,
+ because it could already be nil. */
+ cancel_hourglass ();
+#endif
+
+ /* This function may have been called from a debugger called from
+ within redisplay, for instance by Edebugging a function called
+ from fontification-functions. We want to allow redisplay in
+ the debugging session.
+
+ The recursive edit is left with a `(throw exit ...)'. The `exit'
+ tag is not caught anywhere in redisplay, i.e. when we leave the
+ recursive edit, the original redisplay leading to the recursive
+ edit will be unwound. The outcome should therefore be safe. */
+ specbind (Qinhibit_redisplay, Qnil);
+ redisplaying_p = 0;
+
+ val = command_loop ();
+ if (EQ (val, Qt))
+ Fsignal (Qquit, Qnil);
+ /* Handle throw from read_minibuf when using minibuffer
+ while it's active but we're in another window. */
+ if (STRINGP (val))
+ xsignal1 (Qerror, val);
+
+ return unbind_to (count, Qnil);
+}
+
+/* When an auto-save happens, record the "time", and don't do again soon. */
+
+void
+record_auto_save (void)
+{
+ last_auto_save = num_nonmacro_input_events;
+}
+
+/* Make an auto save happen as soon as possible at command level. */
+
+#ifdef SIGDANGER
+void
+force_auto_save_soon (void)
+{
+ last_auto_save = - auto_save_interval - 1;
+
+ record_asynch_buffer_change ();
+}
+#endif
+\f
+DEFUN ("recursive-edit", Frecursive_edit, Srecursive_edit, 0, 0, "",
+ doc: /* Invoke the editor command loop recursively.
+To get out of the recursive edit, a command can throw to `exit' -- for
+instance `(throw 'exit nil)'.
+If you throw a value other than t, `recursive-edit' returns normally
+to the function that called it. Throwing a t value causes
+`recursive-edit' to quit, so that control returns to the command loop
+one level up.
+
+This function is called by the editor initialization to begin editing. */)
+ (void)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ Lisp_Object buffer;
+
+ /* If we enter while input is blocked, don't lock up here.
+ This may happen through the debugger during redisplay. */
+ if (input_blocked_p ())
+ return Qnil;
+
+ if (command_loop_level >= 0
+ && current_buffer != XBUFFER (XWINDOW (selected_window)->contents))
+ buffer = Fcurrent_buffer ();
+ else
+ buffer = Qnil;
+
+ /* Don't do anything interesting between the increment and the
+ record_unwind_protect! Otherwise, we could get distracted and
+ never decrement the counter again. */
+ command_loop_level++;
+ update_mode_lines = 17;
+ record_unwind_protect (recursive_edit_unwind, buffer);
+
+ /* If we leave recursive_edit_1 below with a `throw' for instance,
+ like it is done in the splash screen display, we have to
+ make sure that we restore single_kboard as command_loop_1
+ would have done if it were left normally. */
+ if (command_loop_level > 0)
+ temporarily_switch_to_single_kboard (SELECTED_FRAME ());
+
+ recursive_edit_1 ();
+ return unbind_to (count, Qnil);
+}
+
+void
+recursive_edit_unwind (Lisp_Object buffer)
+{
+ if (BUFFERP (buffer))
+ Fset_buffer (buffer);
+
+ command_loop_level--;
+ update_mode_lines = 18;
+}
+
+\f
+#if 0 /* These two functions are now replaced with
+ temporarily_switch_to_single_kboard. */
+static void
+any_kboard_state ()
+{
+#if 0 /* Theory: if there's anything in Vunread_command_events,
+ it will right away be read by read_key_sequence,
+ and then if we do switch KBOARDS, it will go into the side
+ queue then. So we don't need to do anything special here -- rms. */
+ if (CONSP (Vunread_command_events))
+ {
+ current_kboard->kbd_queue
+ = nconc2 (Vunread_command_events, current_kboard->kbd_queue);
+ current_kboard->kbd_queue_has_data = 1;
+ }
+ Vunread_command_events = Qnil;
+#endif
+ single_kboard = 0;
+}
+
+/* Switch to the single-kboard state, making current_kboard
+ the only KBOARD from which further input is accepted. */
+
+void
+single_kboard_state ()
+{
+ single_kboard = 1;
+}
+#endif
+
+/* If we're in single_kboard state for kboard KBOARD,
+ get out of it. */
+
+void
+not_single_kboard_state (KBOARD *kboard)
+{
+ if (kboard == current_kboard)
+ single_kboard = 0;
+}
+
+/* Maintain a stack of kboards, so other parts of Emacs
+ can switch temporarily to the kboard of a given frame
+ and then revert to the previous status. */
+
+struct kboard_stack
+{
+ KBOARD *kboard;
+ struct kboard_stack *next;
+};
+
+static struct kboard_stack *kboard_stack;
+
+void
+push_kboard (struct kboard *k)
+{
+ struct kboard_stack *p = xmalloc (sizeof *p);
+
+ p->next = kboard_stack;
+ p->kboard = current_kboard;
+ kboard_stack = p;
+
+ current_kboard = k;
+}
+
+void
+pop_kboard (void)
+{
+ struct terminal *t;
+ struct kboard_stack *p = kboard_stack;
+ bool found = 0;
+ for (t = terminal_list; t; t = t->next_terminal)
+ {
+ if (t->kboard == p->kboard)
+ {
+ current_kboard = p->kboard;
+ found = 1;
+ break;
+ }
+ }
+ if (!found)
+ {
+ /* The terminal we remembered has been deleted. */
+ current_kboard = FRAME_KBOARD (SELECTED_FRAME ());
+ single_kboard = 0;
+ }
+ kboard_stack = p->next;
+ xfree (p);
+}
+
+/* Switch to single_kboard mode, making current_kboard the only KBOARD
+ from which further input is accepted. If F is non-nil, set its
+ KBOARD as the current keyboard.
+
+ This function uses record_unwind_protect_int to return to the previous
+ state later.
+
+ If Emacs is already in single_kboard mode, and F's keyboard is
+ locked, then this function will throw an error. */
+
+void
+temporarily_switch_to_single_kboard (struct frame *f)
+{
+ bool was_locked = single_kboard;
+ if (was_locked)
+ {
+ if (f != NULL && FRAME_KBOARD (f) != current_kboard)
+ /* We can not switch keyboards while in single_kboard mode.
+ In rare cases, Lisp code may call `recursive-edit' (or
+ `read-minibuffer' or `y-or-n-p') after it switched to a
+ locked frame. For example, this is likely to happen
+ when server.el connects to a new terminal while Emacs is in
+ single_kboard mode. It is best to throw an error instead
+ of presenting the user with a frozen screen. */
+ error ("Terminal %d is locked, cannot read from it",
+ FRAME_TERMINAL (f)->id);
+ else
+ /* This call is unnecessary, but helps
+ `restore_kboard_configuration' discover if somebody changed
+ `current_kboard' behind our back. */
+ push_kboard (current_kboard);
+ }
+ else if (f != NULL)
+ current_kboard = FRAME_KBOARD (f);
+ single_kboard = 1;
+ record_unwind_protect_int (restore_kboard_configuration, was_locked);
+}
+
+#if 0 /* This function is not needed anymore. */
+void
+record_single_kboard_state ()
+{
+ if (single_kboard)
+ push_kboard (current_kboard);
+ record_unwind_protect_int (restore_kboard_configuration, single_kboard);
+}
+#endif
+
+static void
+restore_kboard_configuration (int was_locked)
+{
+ single_kboard = was_locked;
+ if (was_locked)
+ {
+ struct kboard *prev = current_kboard;
+ pop_kboard ();
+ /* The pop should not change the kboard. */
+ if (single_kboard && current_kboard != prev)
+ emacs_abort ();
+ }
+}
+
+\f
+/* Handle errors that are not handled at inner levels
+ by printing an error message and returning to the editor command loop. */
+
+static Lisp_Object
+cmd_error (Lisp_Object data)
+{
+ Lisp_Object old_level, old_length;
+ char macroerror[sizeof "After..kbd macro iterations: "
+ + INT_STRLEN_BOUND (EMACS_INT)];
+
+#ifdef HAVE_WINDOW_SYSTEM
+ if (display_hourglass_p)
+ cancel_hourglass ();
+#endif
+
+ if (!NILP (executing_kbd_macro))
+ {
+ if (executing_kbd_macro_iterations == 1)
+ sprintf (macroerror, "After 1 kbd macro iteration: ");
+ else
+ sprintf (macroerror, "After %"pI"d kbd macro iterations: ",
+ executing_kbd_macro_iterations);
+ }
+ else
+ *macroerror = 0;
+
+ Vstandard_output = Qt;
+ Vstandard_input = Qt;
+ Vexecuting_kbd_macro = Qnil;
+ executing_kbd_macro = Qnil;
+ kset_prefix_arg (current_kboard, Qnil);
+ kset_last_prefix_arg (current_kboard, Qnil);
+ cancel_echoing ();
+
+ /* Avoid unquittable loop if data contains a circular list. */
+ old_level = Vprint_level;
+ old_length = Vprint_length;
+ XSETFASTINT (Vprint_level, 10);
+ XSETFASTINT (Vprint_length, 10);
+ cmd_error_internal (data, macroerror);
+ Vprint_level = old_level;
+ Vprint_length = old_length;
+
+ Vquit_flag = Qnil;
+ Vinhibit_quit = Qnil;
+
+ return make_number (0);
+}
+
+/* Take actions on handling an error. DATA is the data that describes
+ the error.
+
+ CONTEXT is a C-string containing ASCII characters only which
+ describes the context in which the error happened. If we need to
+ generalize CONTEXT to allow multibyte characters, make it a Lisp
+ string. */
+
+void
+cmd_error_internal (Lisp_Object data, const char *context)
+{
+ /* The immediate context is not interesting for Quits,
+ since they are asynchronous. */
+ if (EQ (XCAR (data), Qquit))
+ Vsignaling_function = Qnil;
+
+ Vquit_flag = Qnil;
+ Vinhibit_quit = Qt;
+
+ /* Use user's specified output function if any. */
+ if (!NILP (Vcommand_error_function))
+ call3 (Vcommand_error_function, data,
+ context ? build_string (context) : empty_unibyte_string,
+ Vsignaling_function);
+
+ Vsignaling_function = Qnil;
+}
+
+DEFUN ("command-error-default-function", Fcommand_error_default_function,
+ Scommand_error_default_function, 3, 3, 0,
+ doc: /* Produce default output for unhandled error message.
+Default value of `command-error-function'. */)
+ (Lisp_Object data, Lisp_Object context, Lisp_Object signal)
+{
+ struct frame *sf = SELECTED_FRAME ();
+
+ CHECK_STRING (context);
+
+ /* If the window system or terminal frame hasn't been initialized
+ yet, or we're not interactive, write the message to stderr and exit. */
+ if (!sf->glyphs_initialized_p
+ /* The initial frame is a special non-displaying frame. It
+ will be current in daemon mode when there are no frames
+ to display, and in non-daemon mode before the real frame
+ has finished initializing. If an error is thrown in the
+ latter case while creating the frame, then the frame
+ will never be displayed, so the safest thing to do is
+ write to stderr and quit. In daemon mode, there are
+ many other potential errors that do not prevent frames
+ from being created, so continuing as normal is better in
+ that case. */
+ || (!IS_DAEMON && FRAME_INITIAL_P (sf))
+ || noninteractive)
+ {
+ print_error_message (data, Qexternal_debugging_output,
+ SSDATA (context), signal);
+ Fterpri (Qexternal_debugging_output, Qnil);
+ Fkill_emacs (make_number (-1));
+ }
+ else
+ {
+ clear_message (1, 0);
+ Fdiscard_input ();
+ message_log_maybe_newline ();
+ bitch_at_user ();
+
+ print_error_message (data, Qt, SSDATA (context), signal);
+ }
+ return Qnil;
+}
+
+static Lisp_Object command_loop_2 (Lisp_Object);
+static Lisp_Object top_level_1 (Lisp_Object);
+
+/* Entry to editor-command-loop.
+ This level has the catches for exiting/returning to editor command loop.
+ It returns nil to exit recursive edit, t to abort it. */
+
+Lisp_Object
+command_loop (void)
+{
+#ifdef HAVE_STACK_OVERFLOW_HANDLING
+ /* At least on GNU/Linux, saving signal mask is important here. */
+ if (sigsetjmp (return_to_command_loop, 1) != 0)
+ {
+ /* Comes here from handle_sigsegv, see sysdep.c. */
+ init_eval ();
+ Vinternal__top_level_message = recover_top_level_message;
+ }
+ else
+ Vinternal__top_level_message = regular_top_level_message;
+#endif /* HAVE_STACK_OVERFLOW_HANDLING */
+ if (command_loop_level > 0 || minibuf_level > 0)
+ {
+ Lisp_Object val;
+ val = internal_catch (Qexit, command_loop_2, Qnil);
+ executing_kbd_macro = Qnil;
+ return val;
+ }
+ else
+ while (1)
+ {
+ internal_catch (Qtop_level, top_level_1, Qnil);
+ internal_catch (Qtop_level, command_loop_2, Qnil);
+ executing_kbd_macro = Qnil;
+
+ /* End of file in -batch run causes exit here. */
+ if (noninteractive)
+ Fkill_emacs (Qt);
+ }
+}
+
+/* Here we catch errors in execution of commands within the
+ editing loop, and reenter the editing loop.
+ When there is an error, cmd_error runs and returns a non-nil
+ value to us. A value of nil means that command_loop_1 itself
+ returned due to end of file (or end of kbd macro). */
+
+static Lisp_Object
+command_loop_2 (Lisp_Object ignore)
+{
+ register Lisp_Object val;
+
+ do
+ val = internal_condition_case (command_loop_1, Qerror, cmd_error);
+ while (!NILP (val));
+
+ return Qnil;
+}
+
+static Lisp_Object
+top_level_2 (void)
+{
+ return Feval (Vtop_level, Qnil);
+}
+
+static Lisp_Object
+top_level_1 (Lisp_Object ignore)
+{
+ /* On entry to the outer level, run the startup file. */
+ if (!NILP (Vtop_level))
+ internal_condition_case (top_level_2, Qerror, cmd_error);
+ else if (!NILP (Vpurify_flag))
+ message1 ("Bare impure Emacs (standard Lisp code not loaded)");
+ else
+ message1 ("Bare Emacs (standard Lisp code not loaded)");
+ return Qnil;
+}
+
+DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, "",
+ doc: /* Exit all recursive editing levels.
+This also exits all active minibuffers. */
+ attributes: noreturn)
+ (void)
+{
+#ifdef HAVE_WINDOW_SYSTEM
+ if (display_hourglass_p)
+ cancel_hourglass ();
+#endif
+
+ /* Unblock input if we enter with input blocked. This may happen if
+ redisplay traps e.g. during tool-bar update with input blocked. */
+ totally_unblock_input ();
+
+ Fthrow (Qtop_level, Qnil);
+}
+
+static _Noreturn void
+user_error (const char *msg)
+{
+ xsignal1 (Quser_error, build_string (msg));
+}
+
+/* _Noreturn will be added to prototype by make-docfile. */
+DEFUN ("exit-recursive-edit", Fexit_recursive_edit, Sexit_recursive_edit, 0, 0, "",
+ doc: /* Exit from the innermost recursive edit or minibuffer. */
+ attributes: noreturn)
+ (void)
+{
+ if (command_loop_level > 0 || minibuf_level > 0)
+ Fthrow (Qexit, Qnil);
+
+ user_error ("No recursive edit is in progress");
+}
+
+/* _Noreturn will be added to prototype by make-docfile. */
+DEFUN ("abort-recursive-edit", Fabort_recursive_edit, Sabort_recursive_edit, 0, 0, "",
+ doc: /* Abort the command that requested this recursive edit or minibuffer input. */
+ attributes: noreturn)
+ (void)
+{
+ if (command_loop_level > 0 || minibuf_level > 0)
+ Fthrow (Qexit, Qt);
+
+ user_error ("No recursive edit is in progress");
+}
+\f
+/* Restore mouse tracking enablement. See Ftrack_mouse for the only use
+ of this function. */
+
+static void
+tracking_off (Lisp_Object old_value)
+{
+ do_mouse_tracking = old_value;
+ if (NILP (old_value))
+ {
+ /* Redisplay may have been preempted because there was input
+ available, and it assumes it will be called again after the
+ input has been processed. If the only input available was
+ the sort that we have just disabled, then we need to call
+ redisplay. */
+ if (!readable_events (READABLE_EVENTS_DO_TIMERS_NOW))
+ {
+ redisplay_preserve_echo_area (6);
+ get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW);
+ }
+ }
+}
+
+DEFUN ("internal--track-mouse", Ftrack_mouse, Strack_mouse, 1, 1, 0,
+ doc: /* Call BODYFUN with mouse movement events enabled. */)
+ (Lisp_Object bodyfun)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ Lisp_Object val;
+
+ record_unwind_protect (tracking_off, do_mouse_tracking);
+
+ do_mouse_tracking = Qt;
+
+ val = call0 (bodyfun);
+ return unbind_to (count, val);
+}
+
+/* If mouse has moved on some frame, return one of those frames.
+
+ Return 0 otherwise.
+
+ If ignore_mouse_drag_p is non-zero, ignore (implicit) mouse movement
+ after resizing the tool-bar window. */
+
+bool ignore_mouse_drag_p;
+
+static struct frame *
+some_mouse_moved (void)
+{
+ Lisp_Object tail, frame;
+
+ if (ignore_mouse_drag_p)
+ {
+ /* ignore_mouse_drag_p = 0; */
+ return 0;
+ }
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ if (XFRAME (frame)->mouse_moved)
+ return XFRAME (frame);
+ }
+
+ return 0;
+}
+
+\f
+/* This is the actual command reading loop,
+ sans error-handling encapsulation. */
+
+static int read_key_sequence (Lisp_Object *, int, Lisp_Object,
+ bool, bool, bool, bool);
+static void adjust_point_for_property (ptrdiff_t, bool);
+
+/* The last boundary auto-added to buffer-undo-list. */
+Lisp_Object last_undo_boundary;
+
+/* FIXME: This is wrong rather than test window-system, we should call
+ a new set-selection, which will then dispatch to x-set-selection, or
+ tty-set-selection, or w32-set-selection, ... */
+
+Lisp_Object
+command_loop_1 (void)
+{
+ Lisp_Object cmd;
+ Lisp_Object keybuf[30];
+ int i;
+ EMACS_INT prev_modiff = 0;
+ struct buffer *prev_buffer = NULL;
+ bool already_adjusted = 0;
+
+ kset_prefix_arg (current_kboard, Qnil);
+ kset_last_prefix_arg (current_kboard, Qnil);
+ Vdeactivate_mark = Qnil;
+ waiting_for_input = 0;
+ cancel_echoing ();
+
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
+
+ if (NILP (Vmemory_full))
+ {
+ /* Make sure this hook runs after commands that get errors and
+ throw to top level. */
+ /* Note that the value cell will never directly contain nil
+ if the symbol is a local variable. */
+ if (!NILP (Vpost_command_hook) && !NILP (Vrun_hooks))
+ safe_run_hooks (Qpost_command_hook);
+
+ /* If displaying a message, resize the echo area window to fit
+ that message's size exactly. */
+ if (!NILP (echo_area_buffer[0]))
+ resize_echo_area_exactly ();
+
+ /* If there are warnings waiting, process them. */
+ if (!NILP (Vdelayed_warnings_list))
+ safe_run_hooks (Qdelayed_warnings_hook);
+
+ if (!NILP (Vdeferred_action_list))
+ safe_run_hooks (Qdeferred_action_function);
+ }
+
+ /* Do this after running Vpost_command_hook, for consistency. */
+ kset_last_command (current_kboard, Vthis_command);
+ kset_real_last_command (current_kboard, Vreal_this_command);
+ if (!CONSP (last_command_event))
+ kset_last_repeatable_command (current_kboard, Vreal_this_command);
+
+ while (1)
+ {
+ if (! FRAME_LIVE_P (XFRAME (selected_frame)))
+ Fkill_emacs (Qnil);
+
+ /* Make sure the current window's buffer is selected. */
+ set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents));
+
+ /* Display any malloc warning that just came out. Use while because
+ displaying one warning can cause another. */
+
+ while (pending_malloc_warning)
+ display_malloc_warning ();
+
+ Vdeactivate_mark = Qnil;
+
+ /* Don't ignore mouse movements for more than a single command
+ loop. (This flag is set in xdisp.c whenever the tool bar is
+ resized, because the resize moves text up or down, and would
+ generate false mouse drag events if we don't ignore them.) */
+ ignore_mouse_drag_p = 0;
+
+ /* If minibuffer on and echo area in use,
+ wait a short time and redraw minibuffer. */
+
+ if (minibuf_level
+ && !NILP (echo_area_buffer[0])
+ && EQ (minibuf_window, echo_area_window)
+ && NUMBERP (Vminibuffer_message_timeout))
+ {
+ /* Bind inhibit-quit to t so that C-g gets read in
+ rather than quitting back to the minibuffer. */
+ ptrdiff_t count = SPECPDL_INDEX ();
+ specbind (Qinhibit_quit, Qt);
+
+ sit_for (Vminibuffer_message_timeout, 0, 2);
+
+ /* Clear the echo area. */
+ message1 (0);
+ safe_run_hooks (Qecho_area_clear_hook);
+
+ unbind_to (count, Qnil);
+
+ /* If a C-g came in before, treat it as input now. */
+ if (!NILP (Vquit_flag))
+ {
+ Vquit_flag = Qnil;
+ Vunread_command_events = list1 (make_number (quit_char));
+ }
+ }
+
+ /* If it has changed current-menubar from previous value,
+ really recompute the menubar from the value. */
+ if (! NILP (Vlucid_menu_bar_dirty_flag)
+ && !NILP (Ffboundp (Qrecompute_lucid_menubar)))
+ call0 (Qrecompute_lucid_menubar);
+
+ before_command_key_count = this_command_key_count;
+ before_command_echo_length = echo_length ();
+
+ Vthis_command = Qnil;
+ Vreal_this_command = Qnil;
+ Vthis_original_command = Qnil;
+ Vthis_command_keys_shift_translated = Qnil;
+
+ /* Read next key sequence; i gets its length. */
+ i = read_key_sequence (keybuf, ARRAYELTS (keybuf),
+ Qnil, 0, 1, 1, 0);
+
+ /* A filter may have run while we were reading the input. */
+ if (! FRAME_LIVE_P (XFRAME (selected_frame)))
+ Fkill_emacs (Qnil);
+ set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents));
+
+ ++num_input_keys;
+
+ /* Now we have read a key sequence of length I,
+ or else I is 0 and we found end of file. */
+
+ if (i == 0) /* End of file -- happens only in */
+ return Qnil; /* a kbd macro, at the end. */
+ /* -1 means read_key_sequence got a menu that was rejected.
+ Just loop around and read another command. */
+ if (i == -1)
+ {
+ cancel_echoing ();
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
+ goto finalize;
+ }
+
+ last_command_event = keybuf[i - 1];
+
+ /* If the previous command tried to force a specific window-start,
+ forget about that, in case this command moves point far away
+ from that position. But also throw away beg_unchanged and
+ end_unchanged information in that case, so that redisplay will
+ update the whole window properly. */
+ if (XWINDOW (selected_window)->force_start)
+ {
+ struct buffer *b;
+ XWINDOW (selected_window)->force_start = 0;
+ b = XBUFFER (XWINDOW (selected_window)->contents);
+ BUF_BEG_UNCHANGED (b) = BUF_END_UNCHANGED (b) = 0;
+ }
+
+ cmd = read_key_sequence_cmd;
+ if (!NILP (Vexecuting_kbd_macro))
+ {
+ if (!NILP (Vquit_flag))
+ {
+ Vexecuting_kbd_macro = Qt;
+ QUIT; /* Make some noise. */
+ /* Will return since macro now empty. */
+ }
+ }
+
+ /* Do redisplay processing after this command except in special
+ cases identified below. */
+ prev_buffer = current_buffer;
+ prev_modiff = MODIFF;
+ last_point_position = PT;
+
+ /* By default, we adjust point to a boundary of a region that
+ has such a property that should be treated intangible
+ (e.g. composition, display). But, some commands will set
+ this variable differently. */
+ Vdisable_point_adjustment = Qnil;
+
+ /* Process filters and timers may have messed with deactivate-mark.
+ reset it before we execute the command. */
+ Vdeactivate_mark = Qnil;
+
+ /* Remap command through active keymaps. */
+ Vthis_original_command = cmd;
+ if (!NILP (read_key_sequence_remapped))
+ cmd = read_key_sequence_remapped;
+
+ /* Execute the command. */
+
+ {
+ total_keys += total_keys < NUM_RECENT_KEYS;
+ ASET (recent_keys, recent_keys_index,
+ Fcons (Qnil, cmd));
+ if (++recent_keys_index >= NUM_RECENT_KEYS)
+ recent_keys_index = 0;
+ }
+ Vthis_command = cmd;
+ Vreal_this_command = cmd;
+ safe_run_hooks (Qpre_command_hook);
+
+ already_adjusted = 0;
+
+ if (NILP (Vthis_command))
+ /* nil means key is undefined. */
+ call0 (Qundefined);
+ else
+ {
+ /* Here for a command that isn't executed directly. */
+
+#ifdef HAVE_WINDOW_SYSTEM
+ ptrdiff_t scount = SPECPDL_INDEX ();
+
+ if (display_hourglass_p
+ && NILP (Vexecuting_kbd_macro))
+ {
+ record_unwind_protect_void (cancel_hourglass);
+ start_hourglass ();
+ }
+#endif
+
+ if (NILP (KVAR (current_kboard, Vprefix_arg))) /* FIXME: Why? --Stef */
+ {
+ Lisp_Object undo = BVAR (current_buffer, undo_list);
+ Fundo_boundary ();
+ last_undo_boundary
+ = (EQ (undo, BVAR (current_buffer, undo_list))
+ ? Qnil : BVAR (current_buffer, undo_list));
+ }
+ call1 (Qcommand_execute, Vthis_command);
+
+#ifdef HAVE_WINDOW_SYSTEM
+ /* Do not check display_hourglass_p here, because
+ `command-execute' could change it, but we should cancel
+ hourglass cursor anyway.
+ But don't cancel the hourglass within a macro
+ just because a command in the macro finishes. */
+ if (NILP (Vexecuting_kbd_macro))
+ unbind_to (scount, Qnil);
+#endif
+ }
+ kset_last_prefix_arg (current_kboard, Vcurrent_prefix_arg);
+
+ safe_run_hooks (Qpost_command_hook);
+
+ /* If displaying a message, resize the echo area window to fit
+ that message's size exactly. */
+ if (!NILP (echo_area_buffer[0]))
+ resize_echo_area_exactly ();
+
+ /* If there are warnings waiting, process them. */
+ if (!NILP (Vdelayed_warnings_list))
+ safe_run_hooks (Qdelayed_warnings_hook);
+
+ safe_run_hooks (Qdeferred_action_function);
+
+ /* If there is a prefix argument,
+ 1) We don't want Vlast_command to be ``universal-argument''
+ (that would be dumb), so don't set Vlast_command,
+ 2) we want to leave echoing on so that the prefix will be
+ echoed as part of this key sequence, so don't call
+ cancel_echoing, and
+ 3) we want to leave this_command_key_count non-zero, so that
+ read_char will realize that it is re-reading a character, and
+ not echo it a second time.
+
+ If the command didn't actually create a prefix arg,
+ but is merely a frame event that is transparent to prefix args,
+ then the above doesn't apply. */
+ if (NILP (KVAR (current_kboard, Vprefix_arg))
+ || CONSP (last_command_event))
+ {
+ kset_last_command (current_kboard, Vthis_command);
+ kset_real_last_command (current_kboard, Vreal_this_command);
+ if (!CONSP (last_command_event))
+ kset_last_repeatable_command (current_kboard, Vreal_this_command);
+ cancel_echoing ();
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
+ }
+
+ if (!NILP (BVAR (current_buffer, mark_active))
+ && !NILP (Vrun_hooks))
+ {
+ /* In Emacs 22, setting transient-mark-mode to `only' was a
+ way of turning it on for just one command. This usage is
+ obsolete, but support it anyway. */
+ if (EQ (Vtransient_mark_mode, Qidentity))
+ Vtransient_mark_mode = Qnil;
+ else if (EQ (Vtransient_mark_mode, Qonly))
+ Vtransient_mark_mode = Qidentity;
+
+ if (!NILP (Vdeactivate_mark))
+ /* If `select-active-regions' is non-nil, this call to
+ `deactivate-mark' also sets the PRIMARY selection. */
+ call0 (Qdeactivate_mark);
+ else
+ {
+ /* Even if not deactivating the mark, set PRIMARY if
+ `select-active-regions' is non-nil. */
+ if (!NILP (Fwindow_system (Qnil))
+ /* Even if mark_active is non-nil, the actual buffer
+ marker may not have been set yet (Bug#7044). */
+ && XMARKER (BVAR (current_buffer, mark))->buffer
+ && (EQ (Vselect_active_regions, Qonly)
+ ? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly)
+ : (!NILP (Vselect_active_regions)
+ && !NILP (Vtransient_mark_mode)))
+ && NILP (Fmemq (Vthis_command,
+ Vselection_inhibit_update_commands)))
+ {
+ Lisp_Object txt
+ = call1 (Fsymbol_value (Qregion_extract_function), Qnil);
+ if (XINT (Flength (txt)) > 0)
+ /* Don't set empty selections. */
+ call2 (Qgui_set_selection, QPRIMARY, txt);
+ }
+
+ if (current_buffer != prev_buffer || MODIFF != prev_modiff)
+ run_hook (intern ("activate-mark-hook"));
+ }
+
+ Vsaved_region_selection = Qnil;
+ }
+
+ finalize:
+
+ if (current_buffer == prev_buffer
+ && last_point_position != PT
+ && NILP (Vdisable_point_adjustment)
+ && NILP (Vglobal_disable_point_adjustment))
+ {
+ if (last_point_position > BEGV
+ && last_point_position < ZV
+ && (composition_adjust_point (last_point_position,
+ last_point_position)
+ != last_point_position))
+ /* The last point was temporarily set within a grapheme
+ cluster to prevent automatic composition. To recover
+ the automatic composition, we must update the
+ display. */
+ windows_or_buffers_changed = 21;
+ if (!already_adjusted)
+ adjust_point_for_property (last_point_position,
+ MODIFF != prev_modiff);
+ }
+
+ /* Install chars successfully executed in kbd macro. */
+
+ if (!NILP (KVAR (current_kboard, defining_kbd_macro))
+ && NILP (KVAR (current_kboard, Vprefix_arg)))
+ finalize_kbd_macro_chars ();
+ }
+}
+
+Lisp_Object
+read_menu_command (void)
+{
+ Lisp_Object keybuf[30];
+ ptrdiff_t count = SPECPDL_INDEX ();
+ int i;
+
+ /* We don't want to echo the keystrokes while navigating the
+ menus. */
+ specbind (Qecho_keystrokes, make_number (0));
+
+ i = read_key_sequence (keybuf, ARRAYELTS (keybuf),
+ Qnil, 0, 1, 1, 1);
+
+ unbind_to (count, Qnil);
+
+ if (! FRAME_LIVE_P (XFRAME (selected_frame)))
+ Fkill_emacs (Qnil);
+ if (i == 0 || i == -1)
+ return Qt;
+
+ return read_key_sequence_cmd;
+}
+
+/* Adjust point to a boundary of a region that has such a property
+ that should be treated intangible. For the moment, we check
+ `composition', `display' and `invisible' properties.
+ LAST_PT is the last position of point. */
+
+static void
+adjust_point_for_property (ptrdiff_t last_pt, bool modified)
+{
+ ptrdiff_t beg, end;
+ Lisp_Object val, overlay, tmp;
+ /* When called after buffer modification, we should temporarily
+ suppress the point adjustment for automatic composition so that a
+ user can keep inserting another character at point or keep
+ deleting characters around point. */
+ bool check_composition = ! modified, check_display = 1, check_invisible = 1;
+ ptrdiff_t orig_pt = PT;
+
+ /* FIXME: cycling is probably not necessary because these properties
+ can't be usefully combined anyway. */
+ while (check_composition || check_display || check_invisible)
+ {
+ /* FIXME: check `intangible'. */
+ if (check_composition
+ && PT > BEGV && PT < ZV
+ && (beg = composition_adjust_point (last_pt, PT)) != PT)
+ {
+ SET_PT (beg);
+ check_display = check_invisible = 1;
+ }
+ check_composition = 0;
+ if (check_display
+ && PT > BEGV && PT < ZV
+ && !NILP (val = get_char_property_and_overlay
+ (make_number (PT), Qdisplay, Qnil, &overlay))
+ && display_prop_intangible_p (val, overlay, PT, PT_BYTE)
+ && (!OVERLAYP (overlay)
+ ? get_property_and_range (PT, Qdisplay, &val, &beg, &end, Qnil)
+ : (beg = OVERLAY_POSITION (OVERLAY_START (overlay)),
+ end = OVERLAY_POSITION (OVERLAY_END (overlay))))
+ && (beg < PT /* && end > PT <- It's always the case. */
+ || (beg <= PT && STRINGP (val) && SCHARS (val) == 0)))
+ {
+ eassert (end > PT);
+ SET_PT (PT < last_pt
+ ? (STRINGP (val) && SCHARS (val) == 0
+ ? max (beg - 1, BEGV)
+ : beg)
+ : end);
+ check_composition = check_invisible = 1;
+ }
+ check_display = 0;
+ if (check_invisible && PT > BEGV && PT < ZV)
+ {
+ int inv;
+ bool ellipsis = 0;
+ beg = end = PT;
+
+ /* Find boundaries `beg' and `end' of the invisible area, if any. */
+ while (end < ZV
+#if 0
+ /* FIXME: We should stop if we find a spot between
+ two runs of `invisible' where inserted text would
+ be visible. This is important when we have two
+ invisible boundaries that enclose an area: if the
+ area is empty, we need this test in order to make
+ it possible to place point in the middle rather
+ than skip both boundaries. However, this code
+ also stops anywhere in a non-sticky text-property,
+ which breaks (e.g.) Org mode. */
+ && (val = Fget_pos_property (make_number (end),
+ Qinvisible, Qnil),
+ TEXT_PROP_MEANS_INVISIBLE (val))
+#endif
+ && !NILP (val = get_char_property_and_overlay
+ (make_number (end), Qinvisible, Qnil, &overlay))
+ && (inv = TEXT_PROP_MEANS_INVISIBLE (val)))
+ {
+ ellipsis = ellipsis || inv > 1
+ || (OVERLAYP (overlay)
+ && (!NILP (Foverlay_get (overlay, Qafter_string))
+ || !NILP (Foverlay_get (overlay, Qbefore_string))));
+ tmp = Fnext_single_char_property_change
+ (make_number (end), Qinvisible, Qnil, Qnil);
+ end = NATNUMP (tmp) ? XFASTINT (tmp) : ZV;
+ }
+ while (beg > BEGV
+#if 0
+ && (val = Fget_pos_property (make_number (beg),
+ Qinvisible, Qnil),
+ TEXT_PROP_MEANS_INVISIBLE (val))
+#endif
+ && !NILP (val = get_char_property_and_overlay
+ (make_number (beg - 1), Qinvisible, Qnil, &overlay))
+ && (inv = TEXT_PROP_MEANS_INVISIBLE (val)))
+ {
+ ellipsis = ellipsis || inv > 1
+ || (OVERLAYP (overlay)
+ && (!NILP (Foverlay_get (overlay, Qafter_string))
+ || !NILP (Foverlay_get (overlay, Qbefore_string))));
+ tmp = Fprevious_single_char_property_change
+ (make_number (beg), Qinvisible, Qnil, Qnil);
+ beg = NATNUMP (tmp) ? XFASTINT (tmp) : BEGV;
+ }
+
+ /* Move away from the inside area. */
+ if (beg < PT && end > PT)
+ {
+ SET_PT ((orig_pt == PT && (last_pt < beg || last_pt > end))
+ /* We haven't moved yet (so we don't need to fear
+ infinite-looping) and we were outside the range
+ before (so either end of the range still corresponds
+ to a move in the right direction): pretend we moved
+ less than we actually did, so that we still have
+ more freedom below in choosing which end of the range
+ to go to. */
+ ? (orig_pt = -1, PT < last_pt ? end : beg)
+ /* We either have moved already or the last point
+ was already in the range: we don't get to choose
+ which end of the range we have to go to. */
+ : (PT < last_pt ? beg : end));
+ check_composition = check_display = 1;
+ }
+#if 0 /* This assertion isn't correct, because SET_PT may end up setting
+ the point to something other than its argument, due to
+ point-motion hooks, intangibility, etc. */
+ eassert (PT == beg || PT == end);
+#endif
+
+ /* Pretend the area doesn't exist if the buffer is not
+ modified. */
+ if (!modified && !ellipsis && beg < end)
+ {
+ if (last_pt == beg && PT == end && end < ZV)
+ (check_composition = check_display = 1, SET_PT (end + 1));
+ else if (last_pt == end && PT == beg && beg > BEGV)
+ (check_composition = check_display = 1, SET_PT (beg - 1));
+ else if (PT == ((PT < last_pt) ? beg : end))
+ /* We've already moved as far as we can. Trying to go
+ to the other end would mean moving backwards and thus
+ could lead to an infinite loop. */
+ ;
+ else if (val = Fget_pos_property (make_number (PT),
+ Qinvisible, Qnil),
+ TEXT_PROP_MEANS_INVISIBLE (val)
+ && (val = (Fget_pos_property
+ (make_number (PT == beg ? end : beg),
+ Qinvisible, Qnil)),
+ !TEXT_PROP_MEANS_INVISIBLE (val)))
+ (check_composition = check_display = 1,
+ SET_PT (PT == beg ? end : beg));
+ }
+ }
+ check_invisible = 0;
+ }
+}
+
+/* Subroutine for safe_run_hooks: run the hook, which is ARGS[1]. */
+
+static Lisp_Object
+safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *args)
+{
+ eassert (nargs == 2);
+ return call0 (args[1]);
+}
+
+/* Subroutine for safe_run_hooks: handle an error by clearing out the function
+ from the hook. */
+
+static Lisp_Object
+safe_run_hooks_error (Lisp_Object error, ptrdiff_t nargs, Lisp_Object *args)
+{
+ eassert (nargs == 2);
+ AUTO_STRING (format, "Error in %s (%S): %S");
+ Lisp_Object hook = args[0];
+ Lisp_Object fun = args[1];
+ CALLN (Fmessage, format, hook, fun, error);
+
+ if (SYMBOLP (hook))
+ {
+ Lisp_Object val;
+ bool found = 0;
+ Lisp_Object newval = Qnil;
+ for (val = find_symbol_value (hook); CONSP (val); val = XCDR (val))
+ if (EQ (fun, XCAR (val)))
+ found = 1;
+ else
+ newval = Fcons (XCAR (val), newval);
+ if (found)
+ return Fset (hook, Fnreverse (newval));
+ /* Not found in the local part of the hook. Let's look at the global
+ part. */
+ newval = Qnil;
+ for (val = (NILP (Fdefault_boundp (hook)) ? Qnil
+ : Fdefault_value (hook));
+ CONSP (val); val = XCDR (val))
+ if (EQ (fun, XCAR (val)))
+ found = 1;
+ else
+ newval = Fcons (XCAR (val), newval);
+ if (found)
+ return Fset_default (hook, Fnreverse (newval));
+ }
+ return Qnil;
+}
+
+static Lisp_Object
+safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Object *args)
+{
+ eassert (nargs == 2);
+ /* Yes, run_hook_with_args works with args in the other order. */
+ internal_condition_case_n (safe_run_hooks_1,
+ 2, ((Lisp_Object []) {args[1], args[0]}),
+ Qt, safe_run_hooks_error);
+ return Qnil;
+}
+
+/* If we get an error while running the hook, cause the hook variable
+ to be nil. Also inhibit quits, so that C-g won't cause the hook
+ to mysteriously evaporate. */
+
+void
+safe_run_hooks (Lisp_Object hook)
+{
+ struct gcpro gcpro1;
+ ptrdiff_t count = SPECPDL_INDEX ();
+
+ GCPRO1 (hook);
+ specbind (Qinhibit_quit, Qt);
+ run_hook_with_args (2, ((Lisp_Object []) {hook, hook}), safe_run_hook_funcall);
+ unbind_to (count, Qnil);
+ UNGCPRO;
+}
+
+\f
+/* Nonzero means polling for input is temporarily suppressed. */
+
+int poll_suppress_count;
+
+
+#ifdef POLL_FOR_INPUT
+
+/* Asynchronous timer for polling. */
+
+static struct atimer *poll_timer;
+
+/* Poll for input, so that we catch a C-g if it comes in. */
+void
+poll_for_input_1 (void)
+{
+ if (! input_blocked_p ()
+ && !waiting_for_input)
+ gobble_input ();
+}
+
+/* Timer callback function for poll_timer. TIMER is equal to
+ poll_timer. */
+
+static void
+poll_for_input (struct atimer *timer)
+{
+ if (poll_suppress_count == 0)
+ pending_signals = 1;
+}
+
+#endif /* POLL_FOR_INPUT */
+
+/* Begin signals to poll for input, if they are appropriate.
+ This function is called unconditionally from various places. */
+
+void
+start_polling (void)
+{
+#ifdef POLL_FOR_INPUT
+ /* XXX This condition was (read_socket_hook && !interrupt_input),
+ but read_socket_hook is not global anymore. Let's pretend that
+ it's always set. */
+ if (!interrupt_input)
+ {
+ /* Turn alarm handling on unconditionally. It might have
+ been turned off in process.c. */
+ turn_on_atimers (1);
+
+ /* If poll timer doesn't exist, or we need one with
+ a different interval, start a new one. */
+ if (poll_timer == NULL
+ || poll_timer->interval.tv_sec != polling_period)
+ {
+ time_t period = max (1, min (polling_period, TYPE_MAXIMUM (time_t)));
+ struct timespec interval = make_timespec (period, 0);
+
+ if (poll_timer)
+ cancel_atimer (poll_timer);
+
+ poll_timer = start_atimer (ATIMER_CONTINUOUS, interval,
+ poll_for_input, NULL);
+ }
+
+ /* Let the timer's callback function poll for input
+ if this becomes zero. */
+ --poll_suppress_count;
+ }
+#endif
+}
+
+/* True if we are using polling to handle input asynchronously. */
+
+bool
+input_polling_used (void)
+{
+#ifdef POLL_FOR_INPUT
+ /* XXX This condition was (read_socket_hook && !interrupt_input),
+ but read_socket_hook is not global anymore. Let's pretend that
+ it's always set. */
+ return !interrupt_input;
+#else
+ return 0;
+#endif
+}
+
+/* Turn off polling. */
+
+void
+stop_polling (void)
+{
+#ifdef POLL_FOR_INPUT
+ /* XXX This condition was (read_socket_hook && !interrupt_input),
+ but read_socket_hook is not global anymore. Let's pretend that
+ it's always set. */
+ if (!interrupt_input)
+ ++poll_suppress_count;
+#endif
+}
+
+/* Set the value of poll_suppress_count to COUNT
+ and start or stop polling accordingly. */
+
+void
+set_poll_suppress_count (int count)
+{
+#ifdef POLL_FOR_INPUT
+ if (count == 0 && poll_suppress_count != 0)
+ {
+ poll_suppress_count = 1;
+ start_polling ();
+ }
+ else if (count != 0 && poll_suppress_count == 0)
+ {
+ stop_polling ();
+ }
+ poll_suppress_count = count;
+#endif
+}
+
+/* Bind polling_period to a value at least N.
+ But don't decrease it. */
+
+void
+bind_polling_period (int n)
+{
+#ifdef POLL_FOR_INPUT
+ EMACS_INT new = polling_period;
+
+ if (n > new)
+ new = n;
+
+ stop_other_atimers (poll_timer);
+ stop_polling ();
+ specbind (Qpolling_period, make_number (new));
+ /* Start a new alarm with the new period. */
+ start_polling ();
+#endif
+}
+\f
+/* Apply the control modifier to CHARACTER. */
+
+int
+make_ctrl_char (int c)
+{
+ /* Save the upper bits here. */
+ int upper = c & ~0177;
+
+ if (! ASCII_CHAR_P (c))
+ return c |= ctrl_modifier;
+
+ c &= 0177;
+
+ /* Everything in the columns containing the upper-case letters
+ denotes a control character. */
+ if (c >= 0100 && c < 0140)
+ {
+ int oc = c;
+ c &= ~0140;
+ /* Set the shift modifier for a control char
+ made from a shifted letter. But only for letters! */
+ if (oc >= 'A' && oc <= 'Z')
+ c |= shift_modifier;
+ }
+
+ /* The lower-case letters denote control characters too. */
+ else if (c >= 'a' && c <= 'z')
+ c &= ~0140;
+
+ /* Include the bits for control and shift
+ only if the basic ASCII code can't indicate them. */
+ else if (c >= ' ')
+ c |= ctrl_modifier;
+
+ /* Replace the high bits. */
+ c |= (upper & ~ctrl_modifier);
+
+ return c;
+}
+
+/* Display the help-echo property of the character after the mouse pointer.
+ Either show it in the echo area, or call show-help-function to display
+ it by other means (maybe in a tooltip).
+
+ If HELP is nil, that means clear the previous help echo.
+
+ If HELP is a string, display that string. If HELP is a function,
+ call it with OBJECT and POS as arguments; the function should
+ return a help string or nil for none. For all other types of HELP,
+ evaluate it to obtain a string.
+
+ WINDOW is the window in which the help was generated, if any.
+ It is nil if not in a window.
+
+ If OBJECT is a buffer, POS is the position in the buffer where the
+ `help-echo' text property was found.
+
+ If OBJECT is an overlay, that overlay has a `help-echo' property,
+ and POS is the position in the overlay's buffer under the mouse.
+
+ If OBJECT is a string (an overlay string or a string displayed with
+ the `display' property). POS is the position in that string under
+ the mouse.
+
+ Note: this function may only be called with HELP nil or a string
+ from X code running asynchronously. */
+
+void
+show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
+ Lisp_Object pos)
+{
+ if (!NILP (help) && !STRINGP (help))
+ {
+ if (FUNCTIONP (help))
+ help = safe_call (4, help, window, object, pos);
+ else
+ help = safe_eval (help);
+
+ if (!STRINGP (help))
+ return;
+ }
+
+ if (!noninteractive && STRINGP (help))
+ {
+ /* The mouse-fixup-help-message Lisp function can call
+ mouse_position_hook, which resets the mouse_moved flags.
+ This causes trouble if we are trying to read a mouse motion
+ event (i.e., if we are inside a `track-mouse' form), so we
+ restore the mouse_moved flag. */
+ struct frame *f = NILP (do_mouse_tracking) ? NULL : some_mouse_moved ();
+ help = call1 (Qmouse_fixup_help_message, help);
+ if (f)
+ f->mouse_moved = 1;
+ }
+
+ if (STRINGP (help) || NILP (help))
+ {
+ if (!NILP (Vshow_help_function))
+ call1 (Vshow_help_function, help);
+ help_echo_showing_p = STRINGP (help);
+ }
+}
+
+
+\f
+/* Input of single characters from keyboard. */
+
+static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu,
+ struct timespec *end_time);
+static void record_char (Lisp_Object c);
+
+static Lisp_Object help_form_saved_window_configs;
+static void
+read_char_help_form_unwind (void)
+{
+ Lisp_Object window_config = XCAR (help_form_saved_window_configs);
+ help_form_saved_window_configs = XCDR (help_form_saved_window_configs);
+ if (!NILP (window_config))
+ Fset_window_configuration (window_config);
+}
+
+#define STOP_POLLING \
+do { if (! polling_stopped_here) stop_polling (); \
+ polling_stopped_here = 1; } while (0)
+
+#define RESUME_POLLING \
+do { if (polling_stopped_here) start_polling (); \
+ polling_stopped_here = 0; } while (0)
+
+static Lisp_Object
+read_event_from_main_queue (struct timespec *end_time,
+ sys_jmp_buf local_getcjmp,
+ bool *used_mouse_menu)
+{
+ Lisp_Object c = Qnil;
+ sys_jmp_buf save_jump;
+ KBOARD *kb IF_LINT (= NULL);
+
+ start:
+
+ /* Read from the main queue, and if that gives us something we can't use yet,
+ we put it on the appropriate side queue and try again. */
+
+ if (end_time && timespec_cmp (*end_time, current_timespec ()) <= 0)
+ return c;
+
+ /* Actually read a character, waiting if necessary. */
+ save_getcjmp (save_jump);
+ restore_getcjmp (local_getcjmp);
+ if (!end_time)
+ timer_start_idle ();
+ c = kbd_buffer_get_event (&kb, used_mouse_menu, end_time);
+ restore_getcjmp (save_jump);
+
+ if (! NILP (c) && (kb != current_kboard))
+ {
+ Lisp_Object last = KVAR (kb, kbd_queue);
+ if (CONSP (last))
+ {
+ while (CONSP (XCDR (last)))
+ last = XCDR (last);
+ if (!NILP (XCDR (last)))
+ emacs_abort ();
+ }
+ if (!CONSP (last))
+ kset_kbd_queue (kb, list1 (c));
+ else
+ XSETCDR (last, list1 (c));
+ kb->kbd_queue_has_data = 1;
+ c = Qnil;
+ if (single_kboard)
+ goto start;
+ current_kboard = kb;
+ /* This is going to exit from read_char
+ so we had better get rid of this frame's stuff. */
+ return make_number (-2);
+ }
+
+ /* Terminate Emacs in batch mode if at eof. */
+ if (noninteractive && INTEGERP (c) && XINT (c) < 0)
+ Fkill_emacs (make_number (1));
+
+ if (INTEGERP (c))
+ {
+ /* Add in any extra modifiers, where appropriate. */
+ if ((extra_keyboard_modifiers & CHAR_CTL)
+ || ((extra_keyboard_modifiers & 0177) < ' '
+ && (extra_keyboard_modifiers & 0177) != 0))
+ XSETINT (c, make_ctrl_char (XINT (c)));
+
+ /* Transfer any other modifier bits directly from
+ extra_keyboard_modifiers to c. Ignore the actual character code
+ in the low 16 bits of extra_keyboard_modifiers. */
+ XSETINT (c, XINT (c) | (extra_keyboard_modifiers & ~0xff7f & ~CHAR_CTL));
+ }
+
+ return c;
+}
+
+
+
+/* Like `read_event_from_main_queue' but applies keyboard-coding-system
+ to tty input. */
+static Lisp_Object
+read_decoded_event_from_main_queue (struct timespec *end_time,
+ sys_jmp_buf local_getcjmp,
+ Lisp_Object prev_event,
+ bool *used_mouse_menu)
+{
+#define MAX_ENCODED_BYTES 16
+#ifndef WINDOWSNT
+ Lisp_Object events[MAX_ENCODED_BYTES];
+ int n = 0;
+#endif
+ while (true)
+ {
+ Lisp_Object nextevt
+ = read_event_from_main_queue (end_time, local_getcjmp,
+ used_mouse_menu);
+#ifdef WINDOWSNT
+ /* w32_console already returns decoded events. It either reads
+ Unicode characters from the Windows keyboard input, or
+ converts characters encoded in the current codepage into
+ Unicode. See w32inevt.c:key_event, near its end. */
+ return nextevt;
+#else
+ struct frame *frame = XFRAME (selected_frame);
+ struct terminal *terminal = frame->terminal;
+ if (!((FRAME_TERMCAP_P (frame) || FRAME_MSDOS_P (frame))
+ /* Don't apply decoding if we're just reading a raw event
+ (e.g. reading bytes sent by the xterm to specify the position
+ of a mouse click). */
+ && (!EQ (prev_event, Qt))
+ && (TERMINAL_KEYBOARD_CODING (terminal)->common_flags
+ & CODING_REQUIRE_DECODING_MASK)))
+ return nextevt; /* No decoding needed. */
+ else
+ {
+ int meta_key = terminal->display_info.tty->meta_key;
+ eassert (n < MAX_ENCODED_BYTES);
+ events[n++] = nextevt;
+ if (NATNUMP (nextevt)
+ && XINT (nextevt) < (meta_key == 1 ? 0x80 : 0x100))
+ { /* An encoded byte sequence, let's try to decode it. */
+ struct coding_system *coding
+ = TERMINAL_KEYBOARD_CODING (terminal);
+
+ if (raw_text_coding_system_p (coding))
+ {
+ int i;
+ if (meta_key != 2)
+ for (i = 0; i < n; i++)
+ events[i] = make_number (XINT (events[i]) & ~0x80);
+ }
+ else
+ {
+ unsigned char src[MAX_ENCODED_BYTES];
+ unsigned char dest[MAX_ENCODED_BYTES * MAX_MULTIBYTE_LENGTH];
+ int i;
+ for (i = 0; i < n; i++)
+ src[i] = XINT (events[i]);
+ if (meta_key != 2)
+ for (i = 0; i < n; i++)
+ src[i] &= ~0x80;
+ coding->destination = dest;
+ coding->dst_bytes = sizeof dest;
+ decode_coding_c_string (coding, src, n, Qnil);
+ eassert (coding->produced_char <= n);
+ if (coding->produced_char == 0)
+ { /* The encoded sequence is incomplete. */
+ if (n < MAX_ENCODED_BYTES) /* Avoid buffer overflow. */
+ continue; /* Read on! */
+ }
+ else
+ {
+ const unsigned char *p = coding->destination;
+ eassert (coding->carryover_bytes == 0);
+ n = 0;
+ while (n < coding->produced_char)
+ events[n++] = make_number (STRING_CHAR_ADVANCE (p));
+ }
+ }
+ }
+ /* Now `events' should hold decoded events.
+ Normally, n should be equal to 1, but better not rely on it.
+ We can only return one event here, so return the first we
+ had and keep the others (if any) for later. */
+ while (n > 1)
+ Vunread_command_events
+ = Fcons (events[--n], Vunread_command_events);
+ return events[0];
+ }
+#endif
+ }
+}
+
+static bool
+echo_keystrokes_p (void)
+{
+ return (FLOATP (Vecho_keystrokes) ? XFLOAT_DATA (Vecho_keystrokes) > 0.0
+ : INTEGERP (Vecho_keystrokes) ? XINT (Vecho_keystrokes) > 0 : false);
+}
+
+/* Read a character from the keyboard; call the redisplay if needed. */
+/* commandflag 0 means do not autosave, but do redisplay.
+ -1 means do not redisplay, but do autosave.
+ -2 means do neither.
+ 1 means do both.
+
+ The argument MAP is a keymap for menu prompting.
+
+ PREV_EVENT is the previous input event, or nil if we are reading
+ the first event of a key sequence (or not reading a key sequence).
+ If PREV_EVENT is t, that is a "magic" value that says
+ not to run input methods, but in other respects to act as if
+ not reading a key sequence.
+
+ If USED_MOUSE_MENU is non-null, then set *USED_MOUSE_MENU to true
+ if we used a mouse menu to read the input, or false otherwise. If
+ USED_MOUSE_MENU is null, don't dereference it.
+
+ Value is -2 when we find input on another keyboard. A second call
+ to read_char will read it.
+
+ If END_TIME is non-null, it is a pointer to a struct timespec
+ specifying the maximum time to wait until. If no input arrives by
+ that time, stop waiting and return nil.
+
+ Value is t if we showed a menu and the user rejected it. */
+
+Lisp_Object
+read_char (int commandflag, Lisp_Object map,
+ Lisp_Object prev_event,
+ bool *used_mouse_menu, struct timespec *end_time)
+{
+ Lisp_Object c;
+ ptrdiff_t jmpcount;
+ sys_jmp_buf local_getcjmp;
+ sys_jmp_buf save_jump;
+ Lisp_Object tem, save;
+ volatile Lisp_Object previous_echo_area_message;
+ volatile Lisp_Object also_record;
+ volatile bool reread;
+ struct gcpro gcpro1, gcpro2;
+ bool volatile polling_stopped_here = 0;
+ struct kboard *orig_kboard = current_kboard;
+
+ also_record = Qnil;
+
+#if 0 /* This was commented out as part of fixing echo for C-u left. */
+ before_command_key_count = this_command_key_count;
+ before_command_echo_length = echo_length ();
+#endif
+ c = Qnil;
+ previous_echo_area_message = Qnil;
+
+ GCPRO2 (c, previous_echo_area_message);
+
+ retry:
+
+ if (CONSP (Vunread_post_input_method_events))
+ {
+ c = XCAR (Vunread_post_input_method_events);
+ Vunread_post_input_method_events
+ = XCDR (Vunread_post_input_method_events);
+
+ /* Undo what read_char_x_menu_prompt did when it unread
+ additional keys returned by Fx_popup_menu. */
+ if (CONSP (c)
+ && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))
+ && NILP (XCDR (c)))
+ c = XCAR (c);
+
+ reread = true;
+ goto reread_first;
+ }
+ else
+ reread = false;
+
+
+ if (CONSP (Vunread_command_events))
+ {
+ bool was_disabled = 0;
+
+ c = XCAR (Vunread_command_events);
+ Vunread_command_events = XCDR (Vunread_command_events);
+
+ /* Undo what sit-for did when it unread additional keys
+ inside universal-argument. */
+
+ if (CONSP (c) && EQ (XCAR (c), Qt))
+ c = XCDR (c);
+ else
+ reread = true;
+
+ /* Undo what read_char_x_menu_prompt did when it unread
+ additional keys returned by Fx_popup_menu. */
+ if (CONSP (c)
+ && EQ (XCDR (c), Qdisabled)
+ && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))))
+ {
+ was_disabled = 1;
+ c = XCAR (c);
+ }
+
+ /* If the queued event is something that used the mouse,
+ set used_mouse_menu accordingly. */
+ if (used_mouse_menu
+ /* Also check was_disabled so last-nonmenu-event won't return
+ a bad value when submenus are involved. (Bug#447) */
+ && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled))
+ *used_mouse_menu = 1;
+
+ goto reread_for_input_method;
+ }
+
+ if (CONSP (Vunread_input_method_events))
+ {
+ c = XCAR (Vunread_input_method_events);
+ Vunread_input_method_events = XCDR (Vunread_input_method_events);
+
+ /* Undo what read_char_x_menu_prompt did when it unread
+ additional keys returned by Fx_popup_menu. */
+ if (CONSP (c)
+ && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))
+ && NILP (XCDR (c)))
+ c = XCAR (c);
+ reread = true;
+ goto reread_for_input_method;
+ }
+
+ this_command_key_count_reset = 0;
+
+ if (!NILP (Vexecuting_kbd_macro))
+ {
+ /* We set this to Qmacro; since that's not a frame, nobody will
+ try to switch frames on us, and the selected window will
+ remain unchanged.
+
+ Since this event came from a macro, it would be misleading to
+ leave internal_last_event_frame set to wherever the last
+ real event came from. Normally, a switch-frame event selects
+ internal_last_event_frame after each command is read, but
+ events read from a macro should never cause a new frame to be
+ selected. */
+ Vlast_event_frame = internal_last_event_frame = Qmacro;
+
+ /* Exit the macro if we are at the end.
+ Also, some things replace the macro with t
+ to force an early exit. */
+ if (EQ (Vexecuting_kbd_macro, Qt)
+ || executing_kbd_macro_index >= XFASTINT (Flength (Vexecuting_kbd_macro)))
+ {
+ XSETINT (c, -1);
+ goto exit;
+ }
+
+ c = Faref (Vexecuting_kbd_macro, make_number (executing_kbd_macro_index));
+ if (STRINGP (Vexecuting_kbd_macro)
+ && (XFASTINT (c) & 0x80) && (XFASTINT (c) <= 0xff))
+ XSETFASTINT (c, CHAR_META | (XFASTINT (c) & ~0x80));
+
+ executing_kbd_macro_index++;
+
+ goto from_macro;
+ }
+
+ if (!NILP (unread_switch_frame))
+ {
+ c = unread_switch_frame;
+ unread_switch_frame = Qnil;
+
+ /* This event should make it into this_command_keys, and get echoed
+ again, so we do not set `reread'. */
+ goto reread_first;
+ }
+
+ /* If redisplay was requested. */
+ if (commandflag >= 0)
+ {
+ bool echo_current = EQ (echo_message_buffer, echo_area_buffer[0]);
+
+ /* If there is pending input, process any events which are not
+ user-visible, such as X selection_request events. */
+ if (input_pending
+ || detect_input_pending_run_timers (0))
+ swallow_events (false); /* May clear input_pending. */
+
+ /* Redisplay if no pending input. */
+ while (!(input_pending
+ && (input_was_pending || !redisplay_dont_pause)))
+ {
+ input_was_pending = input_pending;
+ if (help_echo_showing_p && !EQ (selected_window, minibuf_window))
+ redisplay_preserve_echo_area (5);
+ else
+ redisplay ();
+
+ if (!input_pending)
+ /* Normal case: no input arrived during redisplay. */
+ break;
+
+ /* Input arrived and pre-empted redisplay.
+ Process any events which are not user-visible. */
+ swallow_events (false);
+ /* If that cleared input_pending, try again to redisplay. */
+ }
+
+ /* Prevent the redisplay we just did
+ from messing up echoing of the input after the prompt. */
+ if (commandflag == 0 && echo_current)
+ echo_message_buffer = echo_area_buffer[0];
+
+ }
+
+ /* Message turns off echoing unless more keystrokes turn it on again.
+
+ The code in 20.x for the condition was
+
+ 1. echo_area_glyphs && *echo_area_glyphs
+ 2. && echo_area_glyphs != current_kboard->echobuf
+ 3. && ok_to_echo_at_next_pause != echo_area_glyphs
+
+ (1) means there's a current message displayed
+
+ (2) means it's not the message from echoing from the current
+ kboard.
+
+ (3) There's only one place in 20.x where ok_to_echo_at_next_pause
+ is set to a non-null value. This is done in read_char and it is
+ set to echo_area_glyphs after a call to echo_char. That means
+ ok_to_echo_at_next_pause is either null or
+ current_kboard->echobuf with the appropriate current_kboard at
+ that time.
+
+ So, condition (3) means in clear text ok_to_echo_at_next_pause
+ must be either null, or the current message isn't from echoing at
+ all, or it's from echoing from a different kboard than the
+ current one. */
+
+ if (/* There currently is something in the echo area. */
+ !NILP (echo_area_buffer[0])
+ && (/* It's an echo from a different kboard. */
+ echo_kboard != current_kboard
+ /* Or we explicitly allow overwriting whatever there is. */
+ || ok_to_echo_at_next_pause == NULL))
+ cancel_echoing ();
+ else
+ echo_dash ();
+
+ /* Try reading a character via menu prompting in the minibuf.
+ Try this before the sit-for, because the sit-for
+ would do the wrong thing if we are supposed to do
+ menu prompting. If EVENT_HAS_PARAMETERS then we are reading
+ after a mouse event so don't try a minibuf menu. */
+ c = Qnil;
+ if (KEYMAPP (map) && INTERACTIVE
+ && !NILP (prev_event) && ! EVENT_HAS_PARAMETERS (prev_event)
+ /* Don't bring up a menu if we already have another event. */
+ && NILP (Vunread_command_events)
+ && !detect_input_pending_run_timers (0))
+ {
+ c = read_char_minibuf_menu_prompt (commandflag, map);
+
+ if (INTEGERP (c) && XINT (c) == -2)
+ return c; /* wrong_kboard_jmpbuf */
+
+ if (! NILP (c))
+ goto exit;
+ }
+
+ /* Make a longjmp point for quits to use, but don't alter getcjmp just yet.
+ We will do that below, temporarily for short sections of code,
+ when appropriate. local_getcjmp must be in effect
+ around any call to sit_for or kbd_buffer_get_event;
+ it *must not* be in effect when we call redisplay. */
+
+ jmpcount = SPECPDL_INDEX ();
+ if (sys_setjmp (local_getcjmp))
+ {
+ /* Handle quits while reading the keyboard. */
+ /* We must have saved the outer value of getcjmp here,
+ so restore it now. */
+ restore_getcjmp (save_jump);
+ pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
+ unbind_to (jmpcount, Qnil);
+ XSETINT (c, quit_char);
+ internal_last_event_frame = selected_frame;
+ Vlast_event_frame = internal_last_event_frame;
+ /* If we report the quit char as an event,
+ don't do so more than once. */
+ if (!NILP (Vinhibit_quit))
+ Vquit_flag = Qnil;
+
+ {
+ KBOARD *kb = FRAME_KBOARD (XFRAME (selected_frame));
+ if (kb != current_kboard)
+ {
+ Lisp_Object last = KVAR (kb, kbd_queue);
+ /* We shouldn't get here if we were in single-kboard mode! */
+ if (single_kboard)
+ emacs_abort ();
+ if (CONSP (last))
+ {
+ while (CONSP (XCDR (last)))
+ last = XCDR (last);
+ if (!NILP (XCDR (last)))
+ emacs_abort ();
+ }
+ if (!CONSP (last))
+ kset_kbd_queue (kb, list1 (c));
+ else
+ XSETCDR (last, list1 (c));
+ kb->kbd_queue_has_data = 1;
+ current_kboard = kb;
+ /* This is going to exit from read_char
+ so we had better get rid of this frame's stuff. */
+ UNGCPRO;
+ return make_number (-2); /* wrong_kboard_jmpbuf */
+ }
+ }
+ goto non_reread;
+ }
+
+ /* Start idle timers if no time limit is supplied. We don't do it
+ if a time limit is supplied to avoid an infinite recursion in the
+ situation where an idle timer calls `sit-for'. */
+
+ if (!end_time)
+ timer_start_idle ();
+
+ /* If in middle of key sequence and minibuffer not active,
+ start echoing if enough time elapses. */
+
+ if (minibuf_level == 0
+ && !end_time
+ && !current_kboard->immediate_echo
+ && this_command_key_count > 0
+ && ! noninteractive
+ && echo_keystrokes_p ()
+ && (/* No message. */
+ NILP (echo_area_buffer[0])
+ /* Or empty message. */
+ || (BUF_BEG (XBUFFER (echo_area_buffer[0]))
+ == BUF_Z (XBUFFER (echo_area_buffer[0])))
+ /* Or already echoing from same kboard. */
+ || (echo_kboard && ok_to_echo_at_next_pause == echo_kboard)
+ /* Or not echoing before and echoing allowed. */
+ || (!echo_kboard && ok_to_echo_at_next_pause)))
+ {
+ /* After a mouse event, start echoing right away.
+ This is because we are probably about to display a menu,
+ and we don't want to delay before doing so. */
+ if (EVENT_HAS_PARAMETERS (prev_event))
+ echo_now ();
+ else
+ {
+ Lisp_Object tem0;
+
+ save_getcjmp (save_jump);
+ restore_getcjmp (local_getcjmp);
+ tem0 = sit_for (Vecho_keystrokes, 1, 1);
+ restore_getcjmp (save_jump);
+ if (EQ (tem0, Qt)
+ && ! CONSP (Vunread_command_events))
+ echo_now ();
+ }
+ }
+
+ /* Maybe auto save due to number of keystrokes. */
+
+ if (commandflag != 0 && commandflag != -2
+ && auto_save_interval > 0
+ && num_nonmacro_input_events - last_auto_save > max (auto_save_interval, 20)
+ && !detect_input_pending_run_timers (0))
+ {
+ Fdo_auto_save (Qnil, Qnil);
+ /* Hooks can actually change some buffers in auto save. */
+ redisplay ();
+ }
+
+ /* Try reading using an X menu.
+ This is never confused with reading using the minibuf
+ because the recursive call of read_char in read_char_minibuf_menu_prompt
+ does not pass on any keymaps. */
+
+ if (KEYMAPP (map) && INTERACTIVE
+ && !NILP (prev_event)
+ && EVENT_HAS_PARAMETERS (prev_event)
+ && !EQ (XCAR (prev_event), Qmenu_bar)
+ && !EQ (XCAR (prev_event), Qtool_bar)
+ /* Don't bring up a menu if we already have another event. */
+ && NILP (Vunread_command_events))
+ {
+ c = read_char_x_menu_prompt (map, prev_event, used_mouse_menu);
+
+ /* Now that we have read an event, Emacs is not idle. */
+ if (!end_time)
+ timer_stop_idle ();
+
+ goto exit;
+ }
+
+ /* Maybe autosave and/or garbage collect due to idleness. */
+
+ if (INTERACTIVE && NILP (c))
+ {
+ int delay_level;
+ ptrdiff_t buffer_size;
+
+ /* Slow down auto saves logarithmically in size of current buffer,
+ and garbage collect while we're at it. */
+ if (! MINI_WINDOW_P (XWINDOW (selected_window)))
+ last_non_minibuf_size = Z - BEG;
+ buffer_size = (last_non_minibuf_size >> 8) + 1;
+ delay_level = 0;
+ while (buffer_size > 64)
+ delay_level++, buffer_size -= buffer_size >> 2;
+ if (delay_level < 4) delay_level = 4;
+ /* delay_level is 4 for files under around 50k, 7 at 100k,
+ 9 at 200k, 11 at 300k, and 12 at 500k. It is 15 at 1 meg. */
+
+ /* Auto save if enough time goes by without input. */
+ if (commandflag != 0 && commandflag != -2
+ && num_nonmacro_input_events > last_auto_save
+ && INTEGERP (Vauto_save_timeout)
+ && XINT (Vauto_save_timeout) > 0)
+ {
+ Lisp_Object tem0;
+ EMACS_INT timeout = XFASTINT (Vauto_save_timeout);
+
+ timeout = min (timeout, MOST_POSITIVE_FIXNUM / delay_level * 4);
+ timeout = delay_level * timeout / 4;
+ save_getcjmp (save_jump);
+ restore_getcjmp (local_getcjmp);
+ tem0 = sit_for (make_number (timeout), 1, 1);
+ restore_getcjmp (save_jump);
+
+ if (EQ (tem0, Qt)
+ && ! CONSP (Vunread_command_events))
+ {
+ Fdo_auto_save (Qnil, Qnil);
+ redisplay ();
+ }
+ }
+
+ /* If there is still no input available, ask for GC. */
+ if (!detect_input_pending_run_timers (0))
+ maybe_gc ();
+ }
+
+ /* Notify the caller if an autosave hook, or a timer, sentinel or
+ filter in the sit_for calls above have changed the current
+ kboard. This could happen if they use the minibuffer or start a
+ recursive edit, like the fancy splash screen in server.el's
+ filter. If this longjmp wasn't here, read_key_sequence would
+ interpret the next key sequence using the wrong translation
+ tables and function keymaps. */
+ if (NILP (c) && current_kboard != orig_kboard)
+ {
+ UNGCPRO;
+ return make_number (-2); /* wrong_kboard_jmpbuf */
+ }
+
+ /* If this has become non-nil here, it has been set by a timer
+ or sentinel or filter. */
+ if (CONSP (Vunread_command_events))
+ {
+ c = XCAR (Vunread_command_events);
+ Vunread_command_events = XCDR (Vunread_command_events);
+
+ if (CONSP (c) && EQ (XCAR (c), Qt))
+ c = XCDR (c);
+ else
+ reread = true;
+ }
+
+ /* Read something from current KBOARD's side queue, if possible. */
+
+ if (NILP (c))
+ {
+ if (current_kboard->kbd_queue_has_data)
+ {
+ if (!CONSP (KVAR (current_kboard, kbd_queue)))
+ emacs_abort ();
+ c = XCAR (KVAR (current_kboard, kbd_queue));
+ kset_kbd_queue (current_kboard,
+ XCDR (KVAR (current_kboard, kbd_queue)));
+ if (NILP (KVAR (current_kboard, kbd_queue)))
+ current_kboard->kbd_queue_has_data = 0;
+ input_pending = readable_events (0);
+ if (EVENT_HAS_PARAMETERS (c)
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qswitch_frame))
+ internal_last_event_frame = XCAR (XCDR (c));
+ Vlast_event_frame = internal_last_event_frame;
+ }
+ }
+
+ /* If current_kboard's side queue is empty check the other kboards.
+ If one of them has data that we have not yet seen here,
+ switch to it and process the data waiting for it.
+
+ Note: if the events queued up for another kboard
+ have already been seen here, and therefore are not a complete command,
+ the kbd_queue_has_data field is 0, so we skip that kboard here.
+ That's to avoid an infinite loop switching between kboards here. */
+ if (NILP (c) && !single_kboard)
+ {
+ KBOARD *kb;
+ for (kb = all_kboards; kb; kb = kb->next_kboard)
+ if (kb->kbd_queue_has_data)
+ {
+ current_kboard = kb;
+ /* This is going to exit from read_char
+ so we had better get rid of this frame's stuff. */
+ UNGCPRO;
+ return make_number (-2); /* wrong_kboard_jmpbuf */
+ }
+ }
+
+ wrong_kboard:
+
+ STOP_POLLING;
+
+ if (NILP (c))
+ {
+ c = read_decoded_event_from_main_queue (end_time, local_getcjmp,
+ prev_event, used_mouse_menu);
+ if (NILP (c) && end_time
+ && timespec_cmp (*end_time, current_timespec ()) <= 0)
+ {
+ goto exit;
+ }
+
+ if (EQ (c, make_number (-2)))
+ {
+ /* This is going to exit from read_char
+ so we had better get rid of this frame's stuff. */
+ UNGCPRO;
+ return c;
+ }
+ }
+
+ non_reread:
+
+ if (!end_time)
+ timer_stop_idle ();
+ RESUME_POLLING;
+
+ if (NILP (c))
+ {
+ if (commandflag >= 0
+ && !input_pending && !detect_input_pending_run_timers (0))
+ redisplay ();
+
+ goto wrong_kboard;
+ }
+
+ /* Buffer switch events are only for internal wakeups
+ so don't show them to the user.
+ Also, don't record a key if we already did. */
+ if (BUFFERP (c))
+ goto exit;
+
+ /* Process special events within read_char
+ and loop around to read another event. */
+ save = Vquit_flag;
+ Vquit_flag = Qnil;
+ tem = access_keymap (get_keymap (Vspecial_event_map, 0, 1), c, 0, 0, 1);
+ Vquit_flag = save;
+
+ if (!NILP (tem))
+ {
+ struct buffer *prev_buffer = current_buffer;
+ last_input_event = c;
+ call4 (Qcommand_execute, tem, Qnil, Fvector (1, &last_input_event), Qt);
+
+ if (CONSP (c) && EQ (XCAR (c), Qselect_window) && !end_time)
+ /* We stopped being idle for this event; undo that. This
+ prevents automatic window selection (under
+ mouse_autoselect_window from acting as a real input event, for
+ example banishing the mouse under mouse-avoidance-mode. */
+ timer_resume_idle ();
+
+ if (current_buffer != prev_buffer)
+ {
+ /* The command may have changed the keymaps. Pretend there
+ is input in another keyboard and return. This will
+ recalculate keymaps. */
+ c = make_number (-2);
+ goto exit;
+ }
+ else
+ goto retry;
+ }
+
+ /* Handle things that only apply to characters. */
+ if (INTEGERP (c))
+ {
+ /* If kbd_buffer_get_event gave us an EOF, return that. */
+ if (XINT (c) == -1)
+ goto exit;
+
+ if ((STRINGP (KVAR (current_kboard, Vkeyboard_translate_table))
+ && UNSIGNED_CMP (XFASTINT (c), <,
+ SCHARS (KVAR (current_kboard,
+ Vkeyboard_translate_table))))
+ || (VECTORP (KVAR (current_kboard, Vkeyboard_translate_table))
+ && UNSIGNED_CMP (XFASTINT (c), <,
+ ASIZE (KVAR (current_kboard,
+ Vkeyboard_translate_table))))
+ || (CHAR_TABLE_P (KVAR (current_kboard, Vkeyboard_translate_table))
+ && CHARACTERP (c)))
+ {
+ Lisp_Object d;
+ d = Faref (KVAR (current_kboard, Vkeyboard_translate_table), c);
+ /* nil in keyboard-translate-table means no translation. */
+ if (!NILP (d))
+ c = d;
+ }
+ }
+
+ /* If this event is a mouse click in the menu bar,
+ return just menu-bar for now. Modify the mouse click event
+ so we won't do this twice, then queue it up. */
+ if (EVENT_HAS_PARAMETERS (c)
+ && CONSP (XCDR (c))
+ && CONSP (EVENT_START (c))
+ && CONSP (XCDR (EVENT_START (c))))
+ {
+ Lisp_Object posn;
+
+ posn = POSN_POSN (EVENT_START (c));
+ /* Handle menu-bar events:
+ insert the dummy prefix event `menu-bar'. */
+ if (EQ (posn, Qmenu_bar) || EQ (posn, Qtool_bar))
+ {
+ /* Change menu-bar to (menu-bar) as the event "position". */
+ POSN_SET_POSN (EVENT_START (c), list1 (posn));
+
+ also_record = c;
+ Vunread_command_events = Fcons (c, Vunread_command_events);
+ c = posn;
+ }
+ }
+
+ /* Store these characters into recent_keys, the dribble file if any,
+ and the keyboard macro being defined, if any. */
+ record_char (c);
+ if (! NILP (also_record))
+ record_char (also_record);
+
+ /* Wipe the echo area.
+ But first, if we are about to use an input method,
+ save the echo area contents for it to refer to. */
+ if (INTEGERP (c)
+ && ! NILP (Vinput_method_function)
+ && ' ' <= XINT (c) && XINT (c) < 256 && XINT (c) != 127)
+ {
+ previous_echo_area_message = Fcurrent_message ();
+ Vinput_method_previous_message = previous_echo_area_message;
+ }
+
+ /* Now wipe the echo area, except for help events which do their
+ own stuff with the echo area. */
+ if (!CONSP (c)
+ || (!(EQ (Qhelp_echo, XCAR (c)))
+ && !(EQ (Qswitch_frame, XCAR (c)))
+ /* Don't wipe echo area for select window events: These might
+ get delayed via `mouse-autoselect-window' (Bug#11304). */
+ && !(EQ (Qselect_window, XCAR (c)))))
+ {
+ if (!NILP (echo_area_buffer[0]))
+ {
+ safe_run_hooks (Qecho_area_clear_hook);
+ clear_message (1, 0);
+ }
+ }
+
+ reread_for_input_method:
+ from_macro:
+ /* Pass this to the input method, if appropriate. */
+ if (INTEGERP (c)
+ && ! NILP (Vinput_method_function)
+ /* Don't run the input method within a key sequence,
+ after the first event of the key sequence. */
+ && NILP (prev_event)
+ && ' ' <= XINT (c) && XINT (c) < 256 && XINT (c) != 127)
+ {
+ Lisp_Object keys;
+ ptrdiff_t key_count;
+ bool key_count_reset;
+ ptrdiff_t command_key_start;
+ struct gcpro gcpro1;
+ ptrdiff_t count = SPECPDL_INDEX ();
+
+ /* Save the echo status. */
+ bool saved_immediate_echo = current_kboard->immediate_echo;
+ struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause;
+ Lisp_Object saved_echo_string = KVAR (current_kboard, echo_string);
+ ptrdiff_t saved_echo_after_prompt = current_kboard->echo_after_prompt;
+
+#if 0
+ if (before_command_restore_flag)
+ {
+ this_command_key_count = before_command_key_count_1;
+ if (this_command_key_count < this_single_command_key_start)
+ this_single_command_key_start = this_command_key_count;
+ echo_truncate (before_command_echo_length_1);
+ before_command_restore_flag = 0;
+ }
+#endif
+
+ /* Save the this_command_keys status. */
+ key_count = this_command_key_count;
+ key_count_reset = this_command_key_count_reset;
+ command_key_start = this_single_command_key_start;
+
+ if (key_count > 0)
+ keys = Fcopy_sequence (this_command_keys);
+ else
+ keys = Qnil;
+ GCPRO1 (keys);
+
+ /* Clear out this_command_keys. */
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
+
+ /* Now wipe the echo area. */
+ if (!NILP (echo_area_buffer[0]))
+ safe_run_hooks (Qecho_area_clear_hook);
+ clear_message (1, 0);
+ echo_truncate (0);
+
+ /* If we are not reading a key sequence,
+ never use the echo area. */
+ if (!KEYMAPP (map))
+ {
+ specbind (Qinput_method_use_echo_area, Qt);
+ }
+
+ /* Call the input method. */
+ tem = call1 (Vinput_method_function, c);
+
+ tem = unbind_to (count, tem);
+
+ /* Restore the saved echoing state
+ and this_command_keys state. */
+ this_command_key_count = key_count;
+ this_command_key_count_reset = key_count_reset;
+ this_single_command_key_start = command_key_start;
+ if (key_count > 0)
+ this_command_keys = keys;
+
+ cancel_echoing ();
+ ok_to_echo_at_next_pause = saved_ok_to_echo;
+ /* Do not restore the echo area string when the user is
+ introducing a prefix argument. Otherwise we end with
+ repetitions of the partially introduced prefix
+ argument. (bug#19875) */
+ if (NILP (intern ("prefix-arg")))
+ {
+ kset_echo_string (current_kboard, saved_echo_string);
+ }
+ current_kboard->echo_after_prompt = saved_echo_after_prompt;
+ if (saved_immediate_echo)
+ echo_now ();
+
+ UNGCPRO;
+
+ /* The input method can return no events. */
+ if (! CONSP (tem))
+ {
+ /* Bring back the previous message, if any. */
+ if (! NILP (previous_echo_area_message))
+ message_with_string ("%s", previous_echo_area_message, 0);
+ goto retry;
+ }
+ /* It returned one event or more. */
+ c = XCAR (tem);
+ Vunread_post_input_method_events
+ = nconc2 (XCDR (tem), Vunread_post_input_method_events);
+ }
+
+ reread_first:
+
+ /* Display help if not echoing. */
+ if (CONSP (c) && EQ (XCAR (c), Qhelp_echo))
+ {
+ /* (help-echo FRAME HELP WINDOW OBJECT POS). */
+ Lisp_Object help, object, position, window, htem;
+
+ htem = Fcdr (XCDR (c));
+ help = Fcar (htem);
+ htem = Fcdr (htem);
+ window = Fcar (htem);
+ htem = Fcdr (htem);
+ object = Fcar (htem);
+ htem = Fcdr (htem);
+ position = Fcar (htem);
+
+ show_help_echo (help, window, object, position);
+
+ /* We stopped being idle for this event; undo that. */
+ if (!end_time)
+ timer_resume_idle ();
+ goto retry;
+ }
+
+ if ((! reread || this_command_key_count == 0
+ || this_command_key_count_reset)
+ && !end_time)
+ {
+
+ /* Don't echo mouse motion events. */
+ if (echo_keystrokes_p ()
+ && ! (EVENT_HAS_PARAMETERS (c)
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_movement)))
+ {
+ echo_char (c);
+ if (! NILP (also_record))
+ echo_char (also_record);
+ /* Once we reread a character, echoing can happen
+ the next time we pause to read a new one. */
+ ok_to_echo_at_next_pause = current_kboard;
+ }
+
+ /* Record this character as part of the current key. */
+ add_command_key (c);
+ if (! NILP (also_record))
+ add_command_key (also_record);
+ }
+
+ last_input_event = c;
+ num_input_events++;
+
+ /* Process the help character specially if enabled. */
+ if (!NILP (Vhelp_form) && help_char_p (c))
+ {
+ ptrdiff_t count = SPECPDL_INDEX ();
+
+ help_form_saved_window_configs
+ = Fcons (Fcurrent_window_configuration (Qnil),
+ help_form_saved_window_configs);
+ record_unwind_protect_void (read_char_help_form_unwind);
+ call0 (Qhelp_form_show);
+
+ cancel_echoing ();
+ do
+ {
+ c = read_char (0, Qnil, Qnil, 0, NULL);
+ if (EVENT_HAS_PARAMETERS (c)
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (c)), Qmouse_click))
+ XSETCAR (help_form_saved_window_configs, Qnil);
+ }
+ while (BUFFERP (c));
+ /* Remove the help from the frame. */
+ unbind_to (count, Qnil);
+
+ redisplay ();
+ if (EQ (c, make_number (040)))
+ {
+ cancel_echoing ();
+ do
+ c = read_char (0, Qnil, Qnil, 0, NULL);
+ while (BUFFERP (c));
+ }
+ }
+
+ exit:
+ RESUME_POLLING;
+ input_was_pending = input_pending;
+ RETURN_UNGCPRO (c);
+}
+
+/* Record a key that came from a mouse menu.
+ Record it for echoing, for this-command-keys, and so on. */
+
+static void
+record_menu_key (Lisp_Object c)
+{
+ /* Wipe the echo area. */
+ clear_message (1, 0);
+
+ record_char (c);
+
+#if 0
+ before_command_key_count = this_command_key_count;
+ before_command_echo_length = echo_length ();
+#endif
+
+ /* Don't echo mouse motion events. */
+ if (echo_keystrokes_p ())
+ {
+ echo_char (c);
+
+ /* Once we reread a character, echoing can happen
+ the next time we pause to read a new one. */
+ ok_to_echo_at_next_pause = 0;
+ }
+
+ /* Record this character as part of the current key. */
+ add_command_key (c);
+
+ /* Re-reading in the middle of a command. */
+ last_input_event = c;
+ num_input_events++;
+}
+
+/* Return true if should recognize C as "the help character". */
+
+static bool
+help_char_p (Lisp_Object c)
+{
+ Lisp_Object tail;
+
+ if (EQ (c, Vhelp_char))
+ return 1;
+ for (tail = Vhelp_event_list; CONSP (tail); tail = XCDR (tail))
+ if (EQ (c, XCAR (tail)))
+ return 1;
+ return 0;
+}
+
+/* Record the input event C in various ways. */
+
+static void
+record_char (Lisp_Object c)
+{
+ int recorded = 0;
+
+ if (CONSP (c) && (EQ (XCAR (c), Qhelp_echo) || EQ (XCAR (c), Qmouse_movement)))
+ {
+ /* To avoid filling recent_keys with help-echo and mouse-movement
+ events, we filter out repeated help-echo events, only store the
+ first and last in a series of mouse-movement events, and don't
+ store repeated help-echo events which are only separated by
+ mouse-movement events. */
+
+ Lisp_Object ev1, ev2, ev3;
+ int ix1, ix2, ix3;
+
+ if ((ix1 = recent_keys_index - 1) < 0)
+ ix1 = NUM_RECENT_KEYS - 1;
+ ev1 = AREF (recent_keys, ix1);
+
+ if ((ix2 = ix1 - 1) < 0)
+ ix2 = NUM_RECENT_KEYS - 1;
+ ev2 = AREF (recent_keys, ix2);
+
+ if ((ix3 = ix2 - 1) < 0)
+ ix3 = NUM_RECENT_KEYS - 1;
+ ev3 = AREF (recent_keys, ix3);
+
+ if (EQ (XCAR (c), Qhelp_echo))
+ {
+ /* Don't record `help-echo' in recent_keys unless it shows some help
+ message, and a different help than the previously recorded
+ event. */
+ Lisp_Object help, last_help;
+
+ help = Fcar_safe (Fcdr_safe (XCDR (c)));
+ if (!STRINGP (help))
+ recorded = 1;
+ else if (CONSP (ev1) && EQ (XCAR (ev1), Qhelp_echo)
+ && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev1))), EQ (last_help, help)))
+ recorded = 1;
+ else if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement)
+ && CONSP (ev2) && EQ (XCAR (ev2), Qhelp_echo)
+ && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev2))), EQ (last_help, help)))
+ recorded = -1;
+ else if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement)
+ && CONSP (ev2) && EQ (XCAR (ev2), Qmouse_movement)
+ && CONSP (ev3) && EQ (XCAR (ev3), Qhelp_echo)
+ && (last_help = Fcar_safe (Fcdr_safe (XCDR (ev3))), EQ (last_help, help)))
+ recorded = -2;
+ }
+ else if (EQ (XCAR (c), Qmouse_movement))
+ {
+ /* Only record one pair of `mouse-movement' on a window in recent_keys.
+ So additional mouse movement events replace the last element. */
+ Lisp_Object last_window, window;
+
+ window = Fcar_safe (Fcar_safe (XCDR (c)));
+ if (CONSP (ev1) && EQ (XCAR (ev1), Qmouse_movement)
+ && (last_window = Fcar_safe (Fcar_safe (XCDR (ev1))), EQ (last_window, window))
+ && CONSP (ev2) && EQ (XCAR (ev2), Qmouse_movement)
+ && (last_window = Fcar_safe (Fcar_safe (XCDR (ev2))), EQ (last_window, window)))
+ {
+ ASET (recent_keys, ix1, c);
+ recorded = 1;
+ }
+ }
+ }
+ else
+ store_kbd_macro_char (c);
+
+ if (!recorded)
+ {
+ total_keys += total_keys < NUM_RECENT_KEYS;
+ ASET (recent_keys, recent_keys_index, c);
+ if (++recent_keys_index >= NUM_RECENT_KEYS)
+ recent_keys_index = 0;
+ }
+ else if (recorded < 0)
+ {
+ /* We need to remove one or two events from recent_keys.
+ To do this, we simply put nil at those events and move the
+ recent_keys_index backwards over those events. Usually,
+ users will never see those nil events, as they will be
+ overwritten by the command keys entered to see recent_keys
+ (e.g. C-h l). */
+
+ while (recorded++ < 0 && total_keys > 0)
+ {
+ if (total_keys < NUM_RECENT_KEYS)
+ total_keys--;
+ if (--recent_keys_index < 0)
+ recent_keys_index = NUM_RECENT_KEYS - 1;
+ ASET (recent_keys, recent_keys_index, Qnil);
+ }
+ }
+
+ num_nonmacro_input_events++;
+
+ /* Write c to the dribble file. If c is a lispy event, write
+ the event's symbol to the dribble file, in <brackets>. Bleaugh.
+ If you, dear reader, have a better idea, you've got the source. :-) */
+ if (dribble)
+ {
+ block_input ();
+ if (INTEGERP (c))
+ {
+ if (XUINT (c) < 0x100)
+ putc (XUINT (c), dribble);
+ else
+ fprintf (dribble, " 0x%"pI"x", XUINT (c));
+ }
+ else
+ {
+ Lisp_Object dribblee;
+
+ /* If it's a structured event, take the event header. */
+ dribblee = EVENT_HEAD (c);
+
+ if (SYMBOLP (dribblee))
+ {
+ putc ('<', dribble);
+ fwrite (SDATA (SYMBOL_NAME (dribblee)), sizeof (char),
+ SBYTES (SYMBOL_NAME (dribblee)),
+ dribble);
+ putc ('>', dribble);
+ }
+ }
+
+ fflush (dribble);
+ unblock_input ();
+ }
+}
+
+/* Copy out or in the info on where C-g should throw to.
+ This is used when running Lisp code from within get_char,
+ in case get_char is called recursively.
+ See read_process_output. */
+
+static void
+save_getcjmp (sys_jmp_buf temp)
+{
+ memcpy (temp, getcjmp, sizeof getcjmp);
+}
+
+static void
+restore_getcjmp (sys_jmp_buf temp)
+{
+ memcpy (getcjmp, temp, sizeof getcjmp);
+}
+\f
+/* Low level keyboard/mouse input.
+ kbd_buffer_store_event places events in kbd_buffer, and
+ kbd_buffer_get_event retrieves them. */
+
+/* Return true if there are any events in the queue that read-char
+ would return. If this returns false, a read-char would block. */
+static bool
+readable_events (int flags)
+{
+ if (flags & READABLE_EVENTS_DO_TIMERS_NOW)
+ timer_check ();
+
+ /* If the buffer contains only FOCUS_IN_EVENT events, and
+ READABLE_EVENTS_FILTER_EVENTS is set, report it as empty. */
+ if (kbd_fetch_ptr != kbd_store_ptr)
+ {
+ if (flags & (READABLE_EVENTS_FILTER_EVENTS
+#ifdef USE_TOOLKIT_SCROLL_BARS
+ | READABLE_EVENTS_IGNORE_SQUEEZABLES
+#endif
+ ))
+ {
+ struct input_event *event;
+
+ event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE)
+ ? kbd_fetch_ptr
+ : kbd_buffer);
+
+ do
+ {
+ if (!(
+#ifdef USE_TOOLKIT_SCROLL_BARS
+ (flags & READABLE_EVENTS_FILTER_EVENTS) &&
+#endif
+ event->kind == FOCUS_IN_EVENT)
+#ifdef USE_TOOLKIT_SCROLL_BARS
+ && !((flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
+ && (event->kind == SCROLL_BAR_CLICK_EVENT
+ || event->kind == HORIZONTAL_SCROLL_BAR_CLICK_EVENT)
+ && event->part == scroll_bar_handle
+ && event->modifiers == 0)
+#endif
+ && !((flags & READABLE_EVENTS_FILTER_EVENTS)
+ && event->kind == BUFFER_SWITCH_EVENT))
+ return 1;
+ event++;
+ if (event == kbd_buffer + KBD_BUFFER_SIZE)
+ event = kbd_buffer;
+ }
+ while (event != kbd_store_ptr);
+ }
+ else
+ return 1;
+ }
+
+ if (!(flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
+ && !NILP (do_mouse_tracking) && some_mouse_moved ())
+ return 1;
+ if (single_kboard)
+ {
+ if (current_kboard->kbd_queue_has_data)
+ return 1;
+ }
+ else
+ {
+ KBOARD *kb;
+ for (kb = all_kboards; kb; kb = kb->next_kboard)
+ if (kb->kbd_queue_has_data)
+ return 1;
+ }
+ return 0;
+}
+
+/* Set this for debugging, to have a way to get out */
+int stop_character EXTERNALLY_VISIBLE;
+
+static KBOARD *
+event_to_kboard (struct input_event *event)
+{
+ /* Not applicable for these special events. */
+ if (event->kind == SELECTION_REQUEST_EVENT
+ || event->kind == SELECTION_CLEAR_EVENT)
+ return NULL;
+ else
+ {
+ Lisp_Object obj = event->frame_or_window;
+ /* There are some events that set this field to nil or string. */
+ if (WINDOWP (obj))
+ obj = WINDOW_FRAME (XWINDOW (obj));
+ /* Also ignore dead frames here. */
+ return ((FRAMEP (obj) && FRAME_LIVE_P (XFRAME (obj)))
+ ? FRAME_KBOARD (XFRAME (obj)) : NULL);
+ }
+}
+
+#ifdef subprocesses
+/* Return the number of slots occupied in kbd_buffer. */
+
+static int
+kbd_buffer_nr_stored (void)
+{
+ return kbd_fetch_ptr == kbd_store_ptr
+ ? 0
+ : (kbd_fetch_ptr < kbd_store_ptr
+ ? kbd_store_ptr - kbd_fetch_ptr
+ : ((kbd_buffer + KBD_BUFFER_SIZE) - kbd_fetch_ptr
+ + (kbd_store_ptr - kbd_buffer)));
+}
+#endif /* Store an event obtained at interrupt level into kbd_buffer, fifo */
+
+void
+kbd_buffer_store_event (register struct input_event *event)
+{
+ kbd_buffer_store_event_hold (event, 0);
+}
+
+/* Store EVENT obtained at interrupt level into kbd_buffer, fifo.
+
+ If HOLD_QUIT is 0, just stuff EVENT into the fifo.
+ Else, if HOLD_QUIT.kind != NO_EVENT, discard EVENT.
+ Else, if EVENT is a quit event, store the quit event
+ in HOLD_QUIT, and return (thus ignoring further events).
+
+ This is used to postpone the processing of the quit event until all
+ subsequent input events have been parsed (and discarded). */
+
+void
+kbd_buffer_store_event_hold (register struct input_event *event,
+ struct input_event *hold_quit)
+{
+ if (event->kind == NO_EVENT)
+ emacs_abort ();
+
+ if (hold_quit && hold_quit->kind != NO_EVENT)
+ return;
+
+ if (event->kind == ASCII_KEYSTROKE_EVENT)
+ {
+ register int c = event->code & 0377;
+
+ if (event->modifiers & ctrl_modifier)
+ c = make_ctrl_char (c);
+
+ c |= (event->modifiers
+ & (meta_modifier | alt_modifier
+ | hyper_modifier | super_modifier));
+
+ if (c == quit_char)
+ {
+ KBOARD *kb = FRAME_KBOARD (XFRAME (event->frame_or_window));
+ struct input_event *sp;
+
+ if (single_kboard && kb != current_kboard)
+ {
+ kset_kbd_queue
+ (kb, list2 (make_lispy_switch_frame (event->frame_or_window),
+ make_number (c)));
+ kb->kbd_queue_has_data = 1;
+ for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++)
+ {
+ if (sp == kbd_buffer + KBD_BUFFER_SIZE)
+ sp = kbd_buffer;
+
+ if (event_to_kboard (sp) == kb)
+ {
+ sp->kind = NO_EVENT;
+ sp->frame_or_window = Qnil;
+ sp->arg = Qnil;
+ }
+ }
+ return;
+ }
+
+ if (hold_quit)
+ {
+ *hold_quit = *event;
+ return;
+ }
+
+ /* If this results in a quit_char being returned to Emacs as
+ input, set Vlast_event_frame properly. If this doesn't
+ get returned to Emacs as an event, the next event read
+ will set Vlast_event_frame again, so this is safe to do. */
+ {
+ Lisp_Object focus;
+
+ focus = FRAME_FOCUS_FRAME (XFRAME (event->frame_or_window));
+ if (NILP (focus))
+ focus = event->frame_or_window;
+ internal_last_event_frame = focus;
+ Vlast_event_frame = focus;
+ }
+
+ handle_interrupt (0);
+ return;
+ }
+
+ if (c && c == stop_character)
+ {
+ sys_suspend ();
+ return;
+ }
+ }
+ /* Don't insert two BUFFER_SWITCH_EVENT's in a row.
+ Just ignore the second one. */
+ else if (event->kind == BUFFER_SWITCH_EVENT
+ && kbd_fetch_ptr != kbd_store_ptr
+ && ((kbd_store_ptr == kbd_buffer
+ ? kbd_buffer + KBD_BUFFER_SIZE - 1
+ : kbd_store_ptr - 1)->kind) == BUFFER_SWITCH_EVENT)
+ return;
+
+ if (kbd_store_ptr - kbd_buffer == KBD_BUFFER_SIZE)
+ kbd_store_ptr = kbd_buffer;
+
+ /* Don't let the very last slot in the buffer become full,
+ since that would make the two pointers equal,
+ and that is indistinguishable from an empty buffer.
+ Discard the event if it would fill the last slot. */
+ if (kbd_fetch_ptr - 1 != kbd_store_ptr)
+ {
+ *kbd_store_ptr = *event;
+ ++kbd_store_ptr;
+#ifdef subprocesses
+ if (kbd_buffer_nr_stored () > KBD_BUFFER_SIZE / 2
+ && ! kbd_on_hold_p ())
+ {
+ /* Don't read keyboard input until we have processed kbd_buffer.
+ This happens when pasting text longer than KBD_BUFFER_SIZE/2. */
+ hold_keyboard_input ();
+ if (!noninteractive)
+ ignore_sigio ();
+ stop_polling ();
+ }
+#endif /* subprocesses */
+ }
+
+ /* If we're inside while-no-input, and this event qualifies
+ as input, set quit-flag to cause an interrupt. */
+ if (!NILP (Vthrow_on_input)
+ && event->kind != FOCUS_IN_EVENT
+ && event->kind != FOCUS_OUT_EVENT
+ && event->kind != HELP_EVENT
+ && event->kind != ICONIFY_EVENT
+ && event->kind != DEICONIFY_EVENT)
+ {
+ Vquit_flag = Vthrow_on_input;
+ /* If we're inside a function that wants immediate quits,
+ do it now. */
+ if (immediate_quit && NILP (Vinhibit_quit))
+ {
+ immediate_quit = 0;
+ QUIT;
+ }
+ }
+}
+
+
+/* Put an input event back in the head of the event queue. */
+
+void
+kbd_buffer_unget_event (register struct input_event *event)
+{
+ if (kbd_fetch_ptr == kbd_buffer)
+ kbd_fetch_ptr = kbd_buffer + KBD_BUFFER_SIZE;
+
+ /* Don't let the very last slot in the buffer become full, */
+ if (kbd_fetch_ptr - 1 != kbd_store_ptr)
+ {
+ --kbd_fetch_ptr;
+ *kbd_fetch_ptr = *event;
+ }
+}
+
+/* Limit help event positions to this range, to avoid overflow problems. */
+#define INPUT_EVENT_POS_MAX \
+ ((ptrdiff_t) min (PTRDIFF_MAX, min (TYPE_MAXIMUM (Time) / 2, \
+ MOST_POSITIVE_FIXNUM)))
+#define INPUT_EVENT_POS_MIN (-1 - INPUT_EVENT_POS_MAX)
+
+/* Return a Time that encodes position POS. POS must be in range. */
+
+static Time
+position_to_Time (ptrdiff_t pos)
+{
+ eassert (INPUT_EVENT_POS_MIN <= pos && pos <= INPUT_EVENT_POS_MAX);
+ return pos;
+}
+
+/* Return the position that ENCODED_POS encodes.
+ Avoid signed integer overflow. */
+
+static ptrdiff_t
+Time_to_position (Time encoded_pos)
+{
+ if (encoded_pos <= INPUT_EVENT_POS_MAX)
+ return encoded_pos;
+ Time encoded_pos_min = INPUT_EVENT_POS_MIN;
+ eassert (encoded_pos_min <= encoded_pos);
+ ptrdiff_t notpos = -1 - encoded_pos;
+ return -1 - notpos;
+}
+
+/* Generate a HELP_EVENT input_event and store it in the keyboard
+ buffer.
+
+ HELP is the help form.
+
+ FRAME and WINDOW are the frame and window where the help is
+ generated. OBJECT is the Lisp object where the help was found (a
+ buffer, a string, an overlay, or nil if neither from a string nor
+ from a buffer). POS is the position within OBJECT where the help
+ was found. */
+
+void
+gen_help_event (Lisp_Object help, Lisp_Object frame, Lisp_Object window,
+ Lisp_Object object, ptrdiff_t pos)
+{
+ struct input_event event;
+
+ event.kind = HELP_EVENT;
+ event.frame_or_window = frame;
+ event.arg = object;
+ event.x = WINDOWP (window) ? window : frame;
+ event.y = help;
+ event.timestamp = position_to_Time (pos);
+ kbd_buffer_store_event (&event);
+}
+
+
+/* Store HELP_EVENTs for HELP on FRAME in the input queue. */
+
+void
+kbd_buffer_store_help_event (Lisp_Object frame, Lisp_Object help)
+{
+ struct input_event event;
+
+ event.kind = HELP_EVENT;
+ event.frame_or_window = frame;
+ event.arg = Qnil;
+ event.x = Qnil;
+ event.y = help;
+ event.timestamp = 0;
+ kbd_buffer_store_event (&event);
+}
+
+\f
+/* Discard any mouse events in the event buffer by setting them to
+ NO_EVENT. */
+void
+discard_mouse_events (void)
+{
+ struct input_event *sp;
+ for (sp = kbd_fetch_ptr; sp != kbd_store_ptr; sp++)
+ {
+ if (sp == kbd_buffer + KBD_BUFFER_SIZE)
+ sp = kbd_buffer;
+
+ if (sp->kind == MOUSE_CLICK_EVENT
+ || sp->kind == WHEEL_EVENT
+ || sp->kind == HORIZ_WHEEL_EVENT
+#ifdef HAVE_GPM
+ || sp->kind == GPM_CLICK_EVENT
+#endif
+ || sp->kind == SCROLL_BAR_CLICK_EVENT
+ || sp->kind == HORIZONTAL_SCROLL_BAR_CLICK_EVENT)
+ {
+ sp->kind = NO_EVENT;
+ }
+ }
+}
+
+
+/* Return true if there are any real events waiting in the event
+ buffer, not counting `NO_EVENT's.
+
+ Discard NO_EVENT events at the front of the input queue, possibly
+ leaving the input queue empty if there are no real input events. */
+
+bool
+kbd_buffer_events_waiting (void)
+{
+ struct input_event *sp;
+
+ for (sp = kbd_fetch_ptr;
+ sp != kbd_store_ptr && sp->kind == NO_EVENT;
+ ++sp)
+ {
+ if (sp == kbd_buffer + KBD_BUFFER_SIZE)
+ sp = kbd_buffer;
+ }
+
+ kbd_fetch_ptr = sp;
+ return sp != kbd_store_ptr && sp->kind != NO_EVENT;
+}
+
+\f
+/* Clear input event EVENT. */
+
+static void
+clear_event (struct input_event *event)
+{
+ event->kind = NO_EVENT;
+}
+
+
+/* Read one event from the event buffer, waiting if necessary.
+ The value is a Lisp object representing the event.
+ The value is nil for an event that should be ignored,
+ or that was handled here.
+ We always read and discard one event. */
+
+static Lisp_Object
+kbd_buffer_get_event (KBOARD **kbp,
+ bool *used_mouse_menu,
+ struct timespec *end_time)
+{
+ Lisp_Object obj;
+
+#ifdef subprocesses
+ if (kbd_on_hold_p () && kbd_buffer_nr_stored () < KBD_BUFFER_SIZE / 4)
+ {
+ /* Start reading input again because we have processed enough to
+ be able to accept new events again. */
+ unhold_keyboard_input ();
+ start_polling ();
+ }
+#endif /* subprocesses */
+
+#if !defined HAVE_DBUS && !defined USE_FILE_NOTIFY
+ if (noninteractive
+ /* In case we are running as a daemon, only do this before
+ detaching from the terminal. */
+ || (IS_DAEMON && DAEMON_RUNNING))
+ {
+ int c = getchar ();
+ XSETINT (obj, c);
+ *kbp = current_kboard;
+ return obj;
+ }
+#endif /* !defined HAVE_DBUS && !defined USE_FILE_NOTIFY */
+
+ /* Wait until there is input available. */
+ for (;;)
+ {
+ /* Break loop if there's an unread command event. Needed in
+ moused window autoselection which uses a timer to insert such
+ events. */
+ if (CONSP (Vunread_command_events))
+ break;
+
+ if (kbd_fetch_ptr != kbd_store_ptr)
+ break;
+ if (!NILP (do_mouse_tracking) && some_mouse_moved ())
+ break;
+
+ /* If the quit flag is set, then read_char will return
+ quit_char, so that counts as "available input." */
+ if (!NILP (Vquit_flag))
+ quit_throw_to_read_char (0);
+
+ /* One way or another, wait until input is available; then, if
+ interrupt handlers have not read it, read it now. */
+
+#ifdef USABLE_SIGIO
+ gobble_input ();
+#endif
+ if (kbd_fetch_ptr != kbd_store_ptr)
+ break;
+ if (!NILP (do_mouse_tracking) && some_mouse_moved ())
+ break;
+ if (end_time)
+ {
+ struct timespec now = current_timespec ();
+ if (timespec_cmp (*end_time, now) <= 0)
+ return Qnil; /* Finished waiting. */
+ else
+ {
+ struct timespec duration = timespec_sub (*end_time, now);
+ wait_reading_process_output (min (duration.tv_sec,
+ WAIT_READING_MAX),
+ duration.tv_nsec,
+ -1, 1, Qnil, NULL, 0);
+ }
+ }
+ else
+ {
+ bool do_display = true;
+
+ if (FRAME_TERMCAP_P (SELECTED_FRAME ()))
+ {
+ struct tty_display_info *tty = CURTTY ();
+
+ /* When this TTY is displaying a menu, we must prevent
+ any redisplay, because we modify the frame's glyph
+ matrix behind the back of the display engine. */
+ if (tty->showing_menu)
+ do_display = false;
+ }
+
+ wait_reading_process_output (0, 0, -1, do_display, Qnil, NULL, 0);
+ }
+
+ if (!interrupt_input && kbd_fetch_ptr == kbd_store_ptr)
+ gobble_input ();
+ }
+
+ if (CONSP (Vunread_command_events))
+ {
+ Lisp_Object first;
+ first = XCAR (Vunread_command_events);
+ Vunread_command_events = XCDR (Vunread_command_events);
+ *kbp = current_kboard;
+ return first;
+ }
+
+ /* At this point, we know that there is a readable event available
+ somewhere. If the event queue is empty, then there must be a
+ mouse movement enabled and available. */
+ if (kbd_fetch_ptr != kbd_store_ptr)
+ {
+ struct input_event *event;
+
+ event = ((kbd_fetch_ptr < kbd_buffer + KBD_BUFFER_SIZE)
+ ? kbd_fetch_ptr
+ : kbd_buffer);
+
+ *kbp = event_to_kboard (event);
+ if (*kbp == 0)
+ *kbp = current_kboard; /* Better than returning null ptr? */
+
+ obj = Qnil;
+
+ /* These two kinds of events get special handling
+ and don't actually appear to the command loop.
+ We return nil for them. */
+ if (event->kind == SELECTION_REQUEST_EVENT
+ || event->kind == SELECTION_CLEAR_EVENT)
+ {
+#ifdef HAVE_X11
+ struct input_event copy;
+
+ /* Remove it from the buffer before processing it,
+ since otherwise swallow_events will see it
+ and process it again. */
+ copy = *event;
+ kbd_fetch_ptr = event + 1;
+ input_pending = readable_events (0);
+ x_handle_selection_event (©);
+#else
+ /* We're getting selection request events, but we don't have
+ a window system. */
+ emacs_abort ();
+#endif
+ }
+
+#if defined (HAVE_NS)
+ else if (event->kind == NS_TEXT_EVENT)
+ {
+ if (event->code == KEY_NS_PUT_WORKING_TEXT)
+ obj = list1 (intern ("ns-put-working-text"));
+ else
+ obj = list1 (intern ("ns-unput-working-text"));
+ kbd_fetch_ptr = event + 1;
+ if (used_mouse_menu)
+ *used_mouse_menu = 1;
+ }
+#endif
+
+#if defined (HAVE_X11) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS)
+ else if (event->kind == DELETE_WINDOW_EVENT)
+ {
+ /* Make an event (delete-frame (FRAME)). */
+ obj = list2 (Qdelete_frame, list1 (event->frame_or_window));
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
+#if defined (HAVE_X11) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS)
+ else if (event->kind == ICONIFY_EVENT)
+ {
+ /* Make an event (iconify-frame (FRAME)). */
+ obj = list2 (Qiconify_frame, list1 (event->frame_or_window));
+ kbd_fetch_ptr = event + 1;
+ }
+ else if (event->kind == DEICONIFY_EVENT)
+ {
+ /* Make an event (make-frame-visible (FRAME)). */
+ obj = list2 (Qmake_frame_visible, list1 (event->frame_or_window));
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
+ else if (event->kind == BUFFER_SWITCH_EVENT)
+ {
+ /* The value doesn't matter here; only the type is tested. */
+ XSETBUFFER (obj, current_buffer);
+ kbd_fetch_ptr = event + 1;
+ }
+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS) || defined (USE_GTK)
+ else if (event->kind == MENU_BAR_ACTIVATE_EVENT)
+ {
+ kbd_fetch_ptr = event + 1;
+ input_pending = readable_events (0);
+ if (FRAME_LIVE_P (XFRAME (event->frame_or_window)))
+ x_activate_menubar (XFRAME (event->frame_or_window));
+ }
+#endif
+#ifdef HAVE_NTGUI
+ else if (event->kind == LANGUAGE_CHANGE_EVENT)
+ {
+ /* Make an event (language-change FRAME CODEPAGE LANGUAGE-ID). */
+ obj = list4 (Qlanguage_change,
+ event->frame_or_window,
+ make_number (event->code),
+ make_number (event->modifiers));
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
+#ifdef USE_FILE_NOTIFY
+ else if (event->kind == FILE_NOTIFY_EVENT)
+ {
+#ifdef HAVE_W32NOTIFY
+ /* Make an event (file-notify (DESCRIPTOR ACTION FILE) CALLBACK). */
+ obj = list3 (Qfile_notify, event->arg, event->frame_or_window);
+#else
+ obj = make_lispy_event (event);
+#endif
+ kbd_fetch_ptr = event + 1;
+ }
+#endif /* USE_FILE_NOTIFY */
+ else if (event->kind == SAVE_SESSION_EVENT)
+ {
+ obj = list2 (Qsave_session, event->arg);
+ kbd_fetch_ptr = event + 1;
+ }
+ /* Just discard these, by returning nil.
+ With MULTI_KBOARD, these events are used as placeholders
+ when we need to randomly delete events from the queue.
+ (They shouldn't otherwise be found in the buffer,
+ but on some machines it appears they do show up
+ even without MULTI_KBOARD.) */
+ /* On Windows NT/9X, NO_EVENT is used to delete extraneous
+ mouse events during a popup-menu call. */
+ else if (event->kind == NO_EVENT)
+ kbd_fetch_ptr = event + 1;
+ else if (event->kind == HELP_EVENT)
+ {
+ Lisp_Object object, position, help, frame, window;
+
+ frame = event->frame_or_window;
+ object = event->arg;
+ position = make_number (Time_to_position (event->timestamp));
+ window = event->x;
+ help = event->y;
+ clear_event (event);
+
+ kbd_fetch_ptr = event + 1;
+ if (!WINDOWP (window))
+ window = Qnil;
+ obj = Fcons (Qhelp_echo,
+ list5 (frame, help, window, object, position));
+ }
+ else if (event->kind == FOCUS_IN_EVENT)
+ {
+ /* Notification of a FocusIn event. The frame receiving the
+ focus is in event->frame_or_window. Generate a
+ switch-frame event if necessary. */
+ Lisp_Object frame, focus;
+
+ frame = event->frame_or_window;
+ focus = FRAME_FOCUS_FRAME (XFRAME (frame));
+ if (FRAMEP (focus))
+ frame = focus;
+
+ if (
+#ifdef HAVE_X11
+ ! NILP (event->arg)
+ &&
+#endif
+ !EQ (frame, internal_last_event_frame)
+ && !EQ (frame, selected_frame))
+ obj = make_lispy_switch_frame (frame);
+ else
+ obj = make_lispy_focus_in (frame);
+
+ internal_last_event_frame = frame;
+ kbd_fetch_ptr = event + 1;
+ }
+ else if (event->kind == FOCUS_OUT_EVENT)
+ {
+#ifdef HAVE_WINDOW_SYSTEM
+
+ Display_Info *di;
+ Lisp_Object frame = event->frame_or_window;
+ bool focused = false;
+
+ for (di = x_display_list; di && ! focused; di = di->next)
+ focused = di->x_highlight_frame != 0;
+
+ if (!focused)
+ obj = make_lispy_focus_out (frame);
+
+#endif /* HAVE_WINDOW_SYSTEM */
+
+ kbd_fetch_ptr = event + 1;
+ }
+#ifdef HAVE_DBUS
+ else if (event->kind == DBUS_EVENT)
+ {
+ obj = make_lispy_event (event);
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
+ else if (event->kind == CONFIG_CHANGED_EVENT)
+ {
+ obj = make_lispy_event (event);
+ kbd_fetch_ptr = event + 1;
+ }
+ else
+ {
+ /* If this event is on a different frame, return a switch-frame this
+ time, and leave the event in the queue for next time. */
+ Lisp_Object frame;
+ Lisp_Object focus;
+
+ frame = event->frame_or_window;
+ if (CONSP (frame))
+ frame = XCAR (frame);
+ else if (WINDOWP (frame))
+ frame = WINDOW_FRAME (XWINDOW (frame));
+
+ focus = FRAME_FOCUS_FRAME (XFRAME (frame));
+ if (! NILP (focus))
+ frame = focus;
+
+ if (! EQ (frame, internal_last_event_frame)
+ && !EQ (frame, selected_frame))
+ obj = make_lispy_switch_frame (frame);
+ internal_last_event_frame = frame;
+
+ /* If we didn't decide to make a switch-frame event, go ahead
+ and build a real event from the queue entry. */
+
+ if (NILP (obj))
+ {
+ obj = make_lispy_event (event);
+
+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS) || defined (USE_GTK)
+ /* If this was a menu selection, then set the flag to inhibit
+ writing to last_nonmenu_event. Don't do this if the event
+ we're returning is (menu-bar), though; that indicates the
+ beginning of the menu sequence, and we might as well leave
+ that as the `event with parameters' for this selection. */
+ if (used_mouse_menu
+ && !EQ (event->frame_or_window, event->arg)
+ && (event->kind == MENU_BAR_EVENT
+ || event->kind == TOOL_BAR_EVENT))
+ *used_mouse_menu = 1;
+#endif
+#ifdef HAVE_NS
+ /* Certain system events are non-key events. */
+ if (used_mouse_menu
+ && event->kind == NS_NONKEY_EVENT)
+ *used_mouse_menu = 1;
+#endif
+
+ /* Wipe out this event, to catch bugs. */
+ clear_event (event);
+ kbd_fetch_ptr = event + 1;
+ }
+ }
+ }
+ /* Try generating a mouse motion event. */
+ else if (!NILP (do_mouse_tracking) && some_mouse_moved ())
+ {
+ struct frame *f = some_mouse_moved ();
+ Lisp_Object bar_window;
+ enum scroll_bar_part part;
+ Lisp_Object x, y;
+ Time t;
+
+ *kbp = current_kboard;
+ /* Note that this uses F to determine which terminal to look at.
+ If there is no valid info, it does not store anything
+ so x remains nil. */
+ x = Qnil;
+
+ /* XXX Can f or mouse_position_hook be NULL here? */
+ if (f && FRAME_TERMINAL (f)->mouse_position_hook)
+ (*FRAME_TERMINAL (f)->mouse_position_hook) (&f, 0, &bar_window,
+ &part, &x, &y, &t);
+
+ obj = Qnil;
+
+ /* Decide if we should generate a switch-frame event. Don't
+ generate switch-frame events for motion outside of all Emacs
+ frames. */
+ if (!NILP (x) && f)
+ {
+ Lisp_Object frame;
+
+ frame = FRAME_FOCUS_FRAME (f);
+ if (NILP (frame))
+ XSETFRAME (frame, f);
+
+ if (! EQ (frame, internal_last_event_frame)
+ && !EQ (frame, selected_frame))
+ obj = make_lispy_switch_frame (frame);
+ internal_last_event_frame = frame;
+ }
+
+ /* If we didn't decide to make a switch-frame event, go ahead and
+ return a mouse-motion event. */
+ if (!NILP (x) && NILP (obj))
+ obj = make_lispy_movement (f, bar_window, part, x, y, t);
+ }
+ else
+ /* We were promised by the above while loop that there was
+ something for us to read! */
+ emacs_abort ();
+
+ input_pending = readable_events (0);
+
+ Vlast_event_frame = internal_last_event_frame;
+
+ return (obj);
+}
+\f
+/* Process any non-user-visible events (currently X selection events),
+ without reading any user-visible events. */
+
+static void
+process_special_events (void)
+{
+ struct input_event *event;
+
+ for (event = kbd_fetch_ptr; event != kbd_store_ptr; ++event)
+ {
+ if (event == kbd_buffer + KBD_BUFFER_SIZE)
+ {
+ event = kbd_buffer;
+ if (event == kbd_store_ptr)
+ break;
+ }
+
+ /* If we find a stored X selection request, handle it now. */
+ if (event->kind == SELECTION_REQUEST_EVENT
+ || event->kind == SELECTION_CLEAR_EVENT)
+ {
+#ifdef HAVE_X11
+
+ /* Remove the event from the fifo buffer before processing;
+ otherwise swallow_events called recursively could see it
+ and process it again. To do this, we move the events
+ between kbd_fetch_ptr and EVENT one slot to the right,
+ cyclically. */
+
+ struct input_event copy = *event;
+ struct input_event *beg
+ = (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE)
+ ? kbd_buffer : kbd_fetch_ptr;
+
+ if (event > beg)
+ memmove (beg + 1, beg, (event - beg) * sizeof (struct input_event));
+ else if (event < beg)
+ {
+ if (event > kbd_buffer)
+ memmove (kbd_buffer + 1, kbd_buffer,
+ (event - kbd_buffer) * sizeof (struct input_event));
+ *kbd_buffer = *(kbd_buffer + KBD_BUFFER_SIZE - 1);
+ if (beg < kbd_buffer + KBD_BUFFER_SIZE - 1)
+ memmove (beg + 1, beg,
+ (kbd_buffer + KBD_BUFFER_SIZE - 1 - beg)
+ * sizeof (struct input_event));
+ }
+
+ if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE)
+ kbd_fetch_ptr = kbd_buffer + 1;
+ else
+ kbd_fetch_ptr++;
+
+ input_pending = readable_events (0);
+ x_handle_selection_event (©);
+#else
+ /* We're getting selection request events, but we don't have
+ a window system. */
+ emacs_abort ();
+#endif
+ }
+ }
+}
+
+/* Process any events that are not user-visible, run timer events that
+ are ripe, and return, without reading any user-visible events. */
+
+void
+swallow_events (bool do_display)
+{
+ unsigned old_timers_run;
+
+ process_special_events ();
+
+ old_timers_run = timers_run;
+ get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW);
+
+ if (!input_pending && timers_run != old_timers_run && do_display)
+ redisplay_preserve_echo_area (7);
+}
+\f
+/* Record the start of when Emacs is idle,
+ for the sake of running idle-time timers. */
+
+static void
+timer_start_idle (void)
+{
+ /* If we are already in the idle state, do nothing. */
+ if (timespec_valid_p (timer_idleness_start_time))
+ return;
+
+ timer_idleness_start_time = current_timespec ();
+ timer_last_idleness_start_time = timer_idleness_start_time;
+
+ /* Mark all idle-time timers as once again candidates for running. */
+ call0 (intern ("internal-timer-start-idle"));
+}
+
+/* Record that Emacs is no longer idle, so stop running idle-time timers. */
+
+static void
+timer_stop_idle (void)
+{
+ timer_idleness_start_time = invalid_timespec ();
+}
+
+/* Resume idle timer from last idle start time. */
+
+static void
+timer_resume_idle (void)
+{
+ if (timespec_valid_p (timer_idleness_start_time))
+ return;
+
+ timer_idleness_start_time = timer_last_idleness_start_time;
+}
+
+/* This is only for debugging. */
+struct input_event last_timer_event EXTERNALLY_VISIBLE;
+
+/* List of elisp functions to call, delayed because they were generated in
+ a context where Elisp could not be safely run (e.g. redisplay, signal,
+ ...). Each element has the form (FUN . ARGS). */
+Lisp_Object pending_funcalls;
+
+/* Return true if TIMER is a valid timer, placing its value into *RESULT. */
+static bool
+decode_timer (Lisp_Object timer, struct timespec *result)
+{
+ Lisp_Object *vec;
+
+ if (! (VECTORP (timer) && ASIZE (timer) == 9))
+ return 0;
+ vec = XVECTOR (timer)->contents;
+ if (! NILP (vec[0]))
+ return 0;
+ if (! INTEGERP (vec[2]))
+ return false;
+
+ struct lisp_time t;
+ if (decode_time_components (vec[1], vec[2], vec[3], vec[8], &t, 0) <= 0)
+ return false;
+ *result = lisp_to_timespec (t);
+ return timespec_valid_p (*result);
+}
+
+
+/* Check whether a timer has fired. To prevent larger problems we simply
+ disregard elements that are not proper timers. Do not make a circular
+ timer list for the time being.
+
+ Returns the time to wait until the next timer fires. If a
+ timer is triggering now, return zero.
+ If no timer is active, return -1.
+
+ If a timer is ripe, we run it, with quitting turned off.
+ In that case we return 0 to indicate that a new timer_check_2 call
+ should be done. */
+
+static struct timespec
+timer_check_2 (Lisp_Object timers, Lisp_Object idle_timers)
+{
+ struct timespec nexttime;
+ struct timespec now;
+ struct timespec idleness_now;
+ Lisp_Object chosen_timer;
+ struct gcpro gcpro1;
+
+ nexttime = invalid_timespec ();
+
+ chosen_timer = Qnil;
+ GCPRO1 (chosen_timer);
+
+ /* First run the code that was delayed. */
+ while (CONSP (pending_funcalls))
+ {
+ Lisp_Object funcall = XCAR (pending_funcalls);
+ pending_funcalls = XCDR (pending_funcalls);
+ safe_call2 (Qapply, XCAR (funcall), XCDR (funcall));
+ }
+
+ if (CONSP (timers) || CONSP (idle_timers))
+ {
+ now = current_timespec ();
+ idleness_now = (timespec_valid_p (timer_idleness_start_time)
+ ? timespec_sub (now, timer_idleness_start_time)
+ : make_timespec (0, 0));
+ }
+
+ while (CONSP (timers) || CONSP (idle_timers))
+ {
+ Lisp_Object timer = Qnil, idle_timer = Qnil;
+ struct timespec timer_time, idle_timer_time;
+ struct timespec difference;
+ struct timespec timer_difference = invalid_timespec ();
+ struct timespec idle_timer_difference = invalid_timespec ();
+ bool ripe, timer_ripe = 0, idle_timer_ripe = 0;
+
+ /* Set TIMER and TIMER_DIFFERENCE
+ based on the next ordinary timer.
+ TIMER_DIFFERENCE is the distance in time from NOW to when
+ this timer becomes ripe.
+ Skip past invalid timers and timers already handled. */
+ if (CONSP (timers))
+ {
+ timer = XCAR (timers);
+ if (! decode_timer (timer, &timer_time))
+ {
+ timers = XCDR (timers);
+ continue;
+ }
+
+ timer_ripe = timespec_cmp (timer_time, now) <= 0;
+ timer_difference = (timer_ripe
+ ? timespec_sub (now, timer_time)
+ : timespec_sub (timer_time, now));
+ }
+
+ /* Likewise for IDLE_TIMER and IDLE_TIMER_DIFFERENCE
+ based on the next idle timer. */
+ if (CONSP (idle_timers))
+ {
+ idle_timer = XCAR (idle_timers);
+ if (! decode_timer (idle_timer, &idle_timer_time))
+ {
+ idle_timers = XCDR (idle_timers);
+ continue;
+ }
+
+ idle_timer_ripe = timespec_cmp (idle_timer_time, idleness_now) <= 0;
+ idle_timer_difference
+ = (idle_timer_ripe
+ ? timespec_sub (idleness_now, idle_timer_time)
+ : timespec_sub (idle_timer_time, idleness_now));
+ }
+
+ /* Decide which timer is the next timer,
+ and set CHOSEN_TIMER, DIFFERENCE, and RIPE accordingly.
+ Also step down the list where we found that timer. */
+
+ if (timespec_valid_p (timer_difference)
+ && (! timespec_valid_p (idle_timer_difference)
+ || idle_timer_ripe < timer_ripe
+ || (idle_timer_ripe == timer_ripe
+ && ((timer_ripe
+ ? timespec_cmp (idle_timer_difference,
+ timer_difference)
+ : timespec_cmp (timer_difference,
+ idle_timer_difference))
+ < 0))))
+ {
+ chosen_timer = timer;
+ timers = XCDR (timers);
+ difference = timer_difference;
+ ripe = timer_ripe;
+ }
+ else
+ {
+ chosen_timer = idle_timer;
+ idle_timers = XCDR (idle_timers);
+ difference = idle_timer_difference;
+ ripe = idle_timer_ripe;
+ }
+
+ /* If timer is ripe, run it if it hasn't been run. */
+ if (ripe)
+ {
+ if (NILP (AREF (chosen_timer, 0)))
+ {
+ ptrdiff_t count = SPECPDL_INDEX ();
+ Lisp_Object old_deactivate_mark = Vdeactivate_mark;
+
+ /* Mark the timer as triggered to prevent problems if the lisp
+ code fails to reschedule it right. */
+ ASET (chosen_timer, 0, Qt);
+
+ specbind (Qinhibit_quit, Qt);
+
+ call1 (Qtimer_event_handler, chosen_timer);
+ Vdeactivate_mark = old_deactivate_mark;
+ timers_run++;
+ unbind_to (count, Qnil);
+
+ /* Since we have handled the event,
+ we don't need to tell the caller to wake up and do it. */
+ /* But the caller must still wait for the next timer, so
+ return 0 to indicate that. */
+ }
+
+ nexttime = make_timespec (0, 0);
+ break;
+ }
+ else
+ /* When we encounter a timer that is still waiting,
+ return the amount of time to wait before it is ripe. */
+ {
+ UNGCPRO;
+ return difference;
+ }
+ }
+
+ /* No timers are pending in the future. */
+ /* Return 0 if we generated an event, and -1 if not. */
+ UNGCPRO;
+ return nexttime;
+}
+
+
+/* Check whether a timer has fired. To prevent larger problems we simply
+ disregard elements that are not proper timers. Do not make a circular
+ timer list for the time being.
+
+ Returns the time to wait until the next timer fires.
+ If no timer is active, return an invalid value.
+
+ As long as any timer is ripe, we run it. */
+
+struct timespec
+timer_check (void)
+{
+ struct timespec nexttime;
+ Lisp_Object timers, idle_timers;
+ struct gcpro gcpro1, gcpro2;
+
+ Lisp_Object tem = Vinhibit_quit;
+ Vinhibit_quit = Qt;
+
+ /* We use copies of the timers' lists to allow a timer to add itself
+ again, without locking up Emacs if the newly added timer is
+ already ripe when added. */
+
+ /* Always consider the ordinary timers. */
+ timers = Fcopy_sequence (Vtimer_list);
+ /* Consider the idle timers only if Emacs is idle. */
+ if (timespec_valid_p (timer_idleness_start_time))
+ idle_timers = Fcopy_sequence (Vtimer_idle_list);
+ else
+ idle_timers = Qnil;
+
+ Vinhibit_quit = tem;
+
+ GCPRO2 (timers, idle_timers);
+
+ do
+ {
+ nexttime = timer_check_2 (timers, idle_timers);
+ }
+ while (nexttime.tv_sec == 0 && nexttime.tv_nsec == 0);
+
+ UNGCPRO;
+ return nexttime;
+}
+
+DEFUN ("current-idle-time", Fcurrent_idle_time, Scurrent_idle_time, 0, 0, 0,
+ doc: /* Return the current length of Emacs idleness, or nil.
+The value when Emacs is idle is a list of four integers (HIGH LOW USEC PSEC)
+in the same style as (current-time).
+
+The value when Emacs is not idle is nil.
+
+PSEC is a multiple of the system clock resolution. */)
+ (void)
+{
+ if (timespec_valid_p (timer_idleness_start_time))
+ return make_lisp_time (timespec_sub (current_timespec (),
+ timer_idleness_start_time));
+
+ return Qnil;
+}
+\f
+/* Caches for modify_event_symbol. */
+static Lisp_Object accent_key_syms;
+static Lisp_Object func_key_syms;
+static Lisp_Object mouse_syms;
+static Lisp_Object wheel_syms;
+static Lisp_Object drag_n_drop_syms;
+
+/* This is a list of keysym codes for special "accent" characters.
+ It parallels lispy_accent_keys. */
+
+static const int lispy_accent_codes[] =
+{
+#ifdef XK_dead_circumflex
+ XK_dead_circumflex,
+#else
+ 0,
+#endif
+#ifdef XK_dead_grave
+ XK_dead_grave,
+#else
+ 0,
+#endif
+#ifdef XK_dead_tilde
+ XK_dead_tilde,
+#else
+ 0,
+#endif
+#ifdef XK_dead_diaeresis
+ XK_dead_diaeresis,
+#else
+ 0,
+#endif
+#ifdef XK_dead_macron
+ XK_dead_macron,
+#else
+ 0,
+#endif
+#ifdef XK_dead_degree
+ XK_dead_degree,
+#else
+ 0,
+#endif
+#ifdef XK_dead_acute
+ XK_dead_acute,
+#else
+ 0,
+#endif
+#ifdef XK_dead_cedilla
+ XK_dead_cedilla,
+#else
+ 0,
+#endif
+#ifdef XK_dead_breve
+ XK_dead_breve,
+#else
+ 0,
+#endif
+#ifdef XK_dead_ogonek
+ XK_dead_ogonek,
+#else
+ 0,
+#endif
+#ifdef XK_dead_caron
+ XK_dead_caron,
+#else
+ 0,
+#endif
+#ifdef XK_dead_doubleacute
+ XK_dead_doubleacute,
+#else
+ 0,
+#endif
+#ifdef XK_dead_abovedot
+ XK_dead_abovedot,
+#else
+ 0,
+#endif
+#ifdef XK_dead_abovering
+ XK_dead_abovering,
+#else
+ 0,
+#endif
+#ifdef XK_dead_iota
+ XK_dead_iota,
+#else
+ 0,
+#endif
+#ifdef XK_dead_belowdot
+ XK_dead_belowdot,
+#else
+ 0,
+#endif
+#ifdef XK_dead_voiced_sound
+ XK_dead_voiced_sound,
+#else
+ 0,
+#endif
+#ifdef XK_dead_semivoiced_sound
+ XK_dead_semivoiced_sound,
+#else
+ 0,
+#endif
+#ifdef XK_dead_hook
+ XK_dead_hook,
+#else
+ 0,
+#endif
+#ifdef XK_dead_horn
+ XK_dead_horn,
+#else
+ 0,
+#endif
+};
+
+/* This is a list of Lisp names for special "accent" characters.
+ It parallels lispy_accent_codes. */
+
+static const char *const lispy_accent_keys[] =
+{
+ "dead-circumflex",
+ "dead-grave",
+ "dead-tilde",
+ "dead-diaeresis",
+ "dead-macron",
+ "dead-degree",
+ "dead-acute",
+ "dead-cedilla",
+ "dead-breve",
+ "dead-ogonek",
+ "dead-caron",
+ "dead-doubleacute",
+ "dead-abovedot",
+ "dead-abovering",
+ "dead-iota",
+ "dead-belowdot",
+ "dead-voiced-sound",
+ "dead-semivoiced-sound",
+ "dead-hook",
+ "dead-horn",
+};
+
+#ifdef HAVE_NTGUI
+#define FUNCTION_KEY_OFFSET 0x0
+
+const char *const lispy_function_keys[] =
+ {
+ 0, /* 0 */
+
+ 0, /* VK_LBUTTON 0x01 */
+ 0, /* VK_RBUTTON 0x02 */
+ "cancel", /* VK_CANCEL 0x03 */
+ 0, /* VK_MBUTTON 0x04 */
+
+ 0, 0, 0, /* 0x05 .. 0x07 */
+
+ "backspace", /* VK_BACK 0x08 */
+ "tab", /* VK_TAB 0x09 */
+
+ 0, 0, /* 0x0A .. 0x0B */
+
+ "clear", /* VK_CLEAR 0x0C */
+ "return", /* VK_RETURN 0x0D */
+
+ 0, 0, /* 0x0E .. 0x0F */
+
+ 0, /* VK_SHIFT 0x10 */
+ 0, /* VK_CONTROL 0x11 */
+ 0, /* VK_MENU 0x12 */
+ "pause", /* VK_PAUSE 0x13 */
+ "capslock", /* VK_CAPITAL 0x14 */
+ "kana", /* VK_KANA/VK_HANGUL 0x15 */
+ 0, /* 0x16 */
+ "junja", /* VK_JUNJA 0x17 */
+ "final", /* VK_FINAL 0x18 */
+ "kanji", /* VK_KANJI/VK_HANJA 0x19 */
+ 0, /* 0x1A */
+ "escape", /* VK_ESCAPE 0x1B */
+ "convert", /* VK_CONVERT 0x1C */
+ "non-convert", /* VK_NONCONVERT 0x1D */
+ "accept", /* VK_ACCEPT 0x1E */
+ "mode-change", /* VK_MODECHANGE 0x1F */
+ 0, /* VK_SPACE 0x20 */
+ "prior", /* VK_PRIOR 0x21 */
+ "next", /* VK_NEXT 0x22 */
+ "end", /* VK_END 0x23 */
+ "home", /* VK_HOME 0x24 */
+ "left", /* VK_LEFT 0x25 */
+ "up", /* VK_UP 0x26 */
+ "right", /* VK_RIGHT 0x27 */
+ "down", /* VK_DOWN 0x28 */
+ "select", /* VK_SELECT 0x29 */
+ "print", /* VK_PRINT 0x2A */
+ "execute", /* VK_EXECUTE 0x2B */
+ "snapshot", /* VK_SNAPSHOT 0x2C */
+ "insert", /* VK_INSERT 0x2D */
+ "delete", /* VK_DELETE 0x2E */
+ "help", /* VK_HELP 0x2F */
+
+ /* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, /* 0x3A .. 0x40 */
+
+ /* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+ "lwindow", /* VK_LWIN 0x5B */
+ "rwindow", /* VK_RWIN 0x5C */
+ "apps", /* VK_APPS 0x5D */
+ 0, /* 0x5E */
+ "sleep",
+ "kp-0", /* VK_NUMPAD0 0x60 */
+ "kp-1", /* VK_NUMPAD1 0x61 */
+ "kp-2", /* VK_NUMPAD2 0x62 */
+ "kp-3", /* VK_NUMPAD3 0x63 */
+ "kp-4", /* VK_NUMPAD4 0x64 */
+ "kp-5", /* VK_NUMPAD5 0x65 */
+ "kp-6", /* VK_NUMPAD6 0x66 */
+ "kp-7", /* VK_NUMPAD7 0x67 */
+ "kp-8", /* VK_NUMPAD8 0x68 */
+ "kp-9", /* VK_NUMPAD9 0x69 */
+ "kp-multiply", /* VK_MULTIPLY 0x6A */
+ "kp-add", /* VK_ADD 0x6B */
+ "kp-separator", /* VK_SEPARATOR 0x6C */
+ "kp-subtract", /* VK_SUBTRACT 0x6D */
+ "kp-decimal", /* VK_DECIMAL 0x6E */
+ "kp-divide", /* VK_DIVIDE 0x6F */
+ "f1", /* VK_F1 0x70 */
+ "f2", /* VK_F2 0x71 */
+ "f3", /* VK_F3 0x72 */
+ "f4", /* VK_F4 0x73 */
+ "f5", /* VK_F5 0x74 */
+ "f6", /* VK_F6 0x75 */
+ "f7", /* VK_F7 0x76 */
+ "f8", /* VK_F8 0x77 */
+ "f9", /* VK_F9 0x78 */
+ "f10", /* VK_F10 0x79 */
+ "f11", /* VK_F11 0x7A */
+ "f12", /* VK_F12 0x7B */
+ "f13", /* VK_F13 0x7C */
+ "f14", /* VK_F14 0x7D */
+ "f15", /* VK_F15 0x7E */
+ "f16", /* VK_F16 0x7F */
+ "f17", /* VK_F17 0x80 */
+ "f18", /* VK_F18 0x81 */
+ "f19", /* VK_F19 0x82 */
+ "f20", /* VK_F20 0x83 */
+ "f21", /* VK_F21 0x84 */
+ "f22", /* VK_F22 0x85 */
+ "f23", /* VK_F23 0x86 */
+ "f24", /* VK_F24 0x87 */
+
+ 0, 0, 0, 0, /* 0x88 .. 0x8B */
+ 0, 0, 0, 0, /* 0x8C .. 0x8F */
+
+ "kp-numlock", /* VK_NUMLOCK 0x90 */
+ "scroll", /* VK_SCROLL 0x91 */
+ /* Not sure where the following block comes from.
+ Windows headers have NEC and Fujitsu specific keys in
+ this block, but nothing generic. */
+ "kp-space", /* VK_NUMPAD_CLEAR 0x92 */
+ "kp-enter", /* VK_NUMPAD_ENTER 0x93 */
+ "kp-prior", /* VK_NUMPAD_PRIOR 0x94 */
+ "kp-next", /* VK_NUMPAD_NEXT 0x95 */
+ "kp-end", /* VK_NUMPAD_END 0x96 */
+ "kp-home", /* VK_NUMPAD_HOME 0x97 */
+ "kp-left", /* VK_NUMPAD_LEFT 0x98 */
+ "kp-up", /* VK_NUMPAD_UP 0x99 */
+ "kp-right", /* VK_NUMPAD_RIGHT 0x9A */
+ "kp-down", /* VK_NUMPAD_DOWN 0x9B */
+ "kp-insert", /* VK_NUMPAD_INSERT 0x9C */
+ "kp-delete", /* VK_NUMPAD_DELETE 0x9D */
+
+ 0, 0, /* 0x9E .. 0x9F */
+
+ /*
+ * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
+ * Used only as parameters to GetAsyncKeyState and GetKeyState.
+ * No other API or message will distinguish left and right keys this way.
+ * 0xA0 .. 0xA5
+ */
+ 0, 0, 0, 0, 0, 0,
+
+ /* Multimedia keys. These are handled as WM_APPCOMMAND, which allows us
+ to enable them selectively, and gives access to a few more functions.
+ See lispy_multimedia_keys below. */
+ 0, 0, 0, 0, 0, 0, 0, /* 0xA6 .. 0xAC Browser */
+ 0, 0, 0, /* 0xAD .. 0xAF Volume */
+ 0, 0, 0, 0, /* 0xB0 .. 0xB3 Media */
+ 0, 0, 0, 0, /* 0xB4 .. 0xB7 Apps */
+
+ /* 0xB8 .. 0xC0 "OEM" keys - all seem to be punctuation. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ /* 0xC1 - 0xDA unallocated, 0xDB-0xDF more OEM keys */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, /* 0xE0 */
+ "ax", /* VK_OEM_AX 0xE1 */
+ 0, /* VK_OEM_102 0xE2 */
+ "ico-help", /* VK_ICO_HELP 0xE3 */
+ "ico-00", /* VK_ICO_00 0xE4 */
+ 0, /* VK_PROCESSKEY 0xE5 - used by IME */
+ "ico-clear", /* VK_ICO_CLEAR 0xE6 */
+ 0, /* VK_PACKET 0xE7 - used to pass Unicode chars */
+ 0, /* 0xE8 */
+ "reset", /* VK_OEM_RESET 0xE9 */
+ "jump", /* VK_OEM_JUMP 0xEA */
+ "oem-pa1", /* VK_OEM_PA1 0xEB */
+ "oem-pa2", /* VK_OEM_PA2 0xEC */
+ "oem-pa3", /* VK_OEM_PA3 0xED */
+ "wsctrl", /* VK_OEM_WSCTRL 0xEE */
+ "cusel", /* VK_OEM_CUSEL 0xEF */
+ "oem-attn", /* VK_OEM_ATTN 0xF0 */
+ "finish", /* VK_OEM_FINISH 0xF1 */
+ "copy", /* VK_OEM_COPY 0xF2 */
+ "auto", /* VK_OEM_AUTO 0xF3 */
+ "enlw", /* VK_OEM_ENLW 0xF4 */
+ "backtab", /* VK_OEM_BACKTAB 0xF5 */
+ "attn", /* VK_ATTN 0xF6 */
+ "crsel", /* VK_CRSEL 0xF7 */
+ "exsel", /* VK_EXSEL 0xF8 */
+ "ereof", /* VK_EREOF 0xF9 */
+ "play", /* VK_PLAY 0xFA */
+ "zoom", /* VK_ZOOM 0xFB */
+ "noname", /* VK_NONAME 0xFC */
+ "pa1", /* VK_PA1 0xFD */
+ "oem_clear", /* VK_OEM_CLEAR 0xFE */
+ 0 /* 0xFF */
+ };
+
+/* Some of these duplicate the "Media keys" on newer keyboards,
+ but they are delivered to the application in a different way. */
+static const char *const lispy_multimedia_keys[] =
+ {
+ 0,
+ "browser-back",
+ "browser-forward",
+ "browser-refresh",
+ "browser-stop",
+ "browser-search",
+ "browser-favorites",
+ "browser-home",
+ "volume-mute",
+ "volume-down",
+ "volume-up",
+ "media-next",
+ "media-previous",
+ "media-stop",
+ "media-play-pause",
+ "mail",
+ "media-select",
+ "app-1",
+ "app-2",
+ "bass-down",
+ "bass-boost",
+ "bass-up",
+ "treble-down",
+ "treble-up",
+ "mic-volume-mute",
+ "mic-volume-down",
+ "mic-volume-up",
+ "help",
+ "find",
+ "new",
+ "open",
+ "close",
+ "save",
+ "print",
+ "undo",
+ "redo",
+ "copy",
+ "cut",
+ "paste",
+ "mail-reply",
+ "mail-forward",
+ "mail-send",
+ "spell-check",
+ "toggle-dictate-command",
+ "mic-toggle",
+ "correction-list",
+ "media-play",
+ "media-pause",
+ "media-record",
+ "media-fast-forward",
+ "media-rewind",
+ "media-channel-up",
+ "media-channel-down"
+ };
+
+#else /* not HAVE_NTGUI */
+
+/* This should be dealt with in XTread_socket now, and that doesn't
+ depend on the client system having the Kana syms defined. See also
+ the XK_kana_A case below. */
+#if 0
+#ifdef XK_kana_A
+static const char *const lispy_kana_keys[] =
+ {
+ /* X Keysym value */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x400 .. 0x40f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x410 .. 0x41f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x420 .. 0x42f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x430 .. 0x43f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x440 .. 0x44f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x450 .. 0x45f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x460 .. 0x46f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,"overline",0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x480 .. 0x48f */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x490 .. 0x49f */
+ 0, "kana-fullstop", "kana-openingbracket", "kana-closingbracket",
+ "kana-comma", "kana-conjunctive", "kana-WO", "kana-a",
+ "kana-i", "kana-u", "kana-e", "kana-o",
+ "kana-ya", "kana-yu", "kana-yo", "kana-tsu",
+ "prolongedsound", "kana-A", "kana-I", "kana-U",
+ "kana-E", "kana-O", "kana-KA", "kana-KI",
+ "kana-KU", "kana-KE", "kana-KO", "kana-SA",
+ "kana-SHI", "kana-SU", "kana-SE", "kana-SO",
+ "kana-TA", "kana-CHI", "kana-TSU", "kana-TE",
+ "kana-TO", "kana-NA", "kana-NI", "kana-NU",
+ "kana-NE", "kana-NO", "kana-HA", "kana-HI",
+ "kana-FU", "kana-HE", "kana-HO", "kana-MA",
+ "kana-MI", "kana-MU", "kana-ME", "kana-MO",
+ "kana-YA", "kana-YU", "kana-YO", "kana-RA",
+ "kana-RI", "kana-RU", "kana-RE", "kana-RO",
+ "kana-WA", "kana-N", "voicedsound", "semivoicedsound",
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4e0 .. 0x4ef */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4f0 .. 0x4ff */
+ };
+#endif /* XK_kana_A */
+#endif /* 0 */
+
+#define FUNCTION_KEY_OFFSET 0xff00
+
+/* You'll notice that this table is arranged to be conveniently
+ indexed by X Windows keysym values. */
+static const char *const lispy_function_keys[] =
+ {
+ /* X Keysym value */
+
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xff00...0f */
+ "backspace", "tab", "linefeed", "clear",
+ 0, "return", 0, 0,
+ 0, 0, 0, "pause", /* 0xff10...1f */
+ 0, 0, 0, 0, 0, 0, 0, "escape",
+ 0, 0, 0, 0,
+ 0, "kanji", "muhenkan", "henkan", /* 0xff20...2f */
+ "romaji", "hiragana", "katakana", "hiragana-katakana",
+ "zenkaku", "hankaku", "zenkaku-hankaku", "touroku",
+ "massyo", "kana-lock", "kana-shift", "eisu-shift",
+ "eisu-toggle", /* 0xff30...3f */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xff40...4f */
+
+ "home", "left", "up", "right", /* 0xff50 */ /* IsCursorKey */
+ "down", "prior", "next", "end",
+ "begin", 0, 0, 0, 0, 0, 0, 0,
+ "select", /* 0xff60 */ /* IsMiscFunctionKey */
+ "print",
+ "execute",
+ "insert",
+ 0, /* 0xff64 */
+ "undo",
+ "redo",
+ "menu",
+ "find",
+ "cancel",
+ "help",
+ "break", /* 0xff6b */
+
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, "backtab", 0, 0, 0, /* 0xff70... */
+ 0, 0, 0, 0, 0, 0, 0, "kp-numlock", /* 0xff78... */
+ "kp-space", /* 0xff80 */ /* IsKeypadKey */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ "kp-tab", /* 0xff89 */
+ 0, 0, 0,
+ "kp-enter", /* 0xff8d */
+ 0, 0, 0,
+ "kp-f1", /* 0xff91 */
+ "kp-f2",
+ "kp-f3",
+ "kp-f4",
+ "kp-home", /* 0xff95 */
+ "kp-left",
+ "kp-up",
+ "kp-right",
+ "kp-down",
+ "kp-prior", /* kp-page-up */
+ "kp-next", /* kp-page-down */
+ "kp-end",
+ "kp-begin",
+ "kp-insert",
+ "kp-delete",
+ 0, /* 0xffa0 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ "kp-multiply", /* 0xffaa */
+ "kp-add",
+ "kp-separator",
+ "kp-subtract",
+ "kp-decimal",
+ "kp-divide", /* 0xffaf */
+ "kp-0", /* 0xffb0 */
+ "kp-1", "kp-2", "kp-3", "kp-4", "kp-5", "kp-6", "kp-7", "kp-8", "kp-9",
+ 0, /* 0xffba */
+ 0, 0,
+ "kp-equal", /* 0xffbd */
+ "f1", /* 0xffbe */ /* IsFunctionKey */
+ "f2",
+ "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", /* 0xffc0 */
+ "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18",
+ "f19", "f20", "f21", "f22", "f23", "f24", "f25", "f26", /* 0xffd0 */
+ "f27", "f28", "f29", "f30", "f31", "f32", "f33", "f34",
+ "f35", 0, 0, 0, 0, 0, 0, 0, /* 0xffe0 */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfff0 */
+ 0, 0, 0, 0, 0, 0, 0, "delete"
+ };
+
+/* ISO 9995 Function and Modifier Keys; the first byte is 0xFE. */
+#define ISO_FUNCTION_KEY_OFFSET 0xfe00
+
+static const char *const iso_lispy_function_keys[] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe00 */
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe08 */
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe10 */
+ 0, 0, 0, 0, 0, 0, 0, 0, /* 0xfe18 */
+ "iso-lefttab", /* 0xfe20 */
+ "iso-move-line-up", "iso-move-line-down",
+ "iso-partial-line-up", "iso-partial-line-down",
+ "iso-partial-space-left", "iso-partial-space-right",
+ "iso-set-margin-left", "iso-set-margin-right", /* 0xffe27, 28 */
+ "iso-release-margin-left", "iso-release-margin-right",
+ "iso-release-both-margins",
+ "iso-fast-cursor-left", "iso-fast-cursor-right",
+ "iso-fast-cursor-up", "iso-fast-cursor-down",
+ "iso-continuous-underline", "iso-discontinuous-underline", /* 0xfe30, 31 */
+ "iso-emphasize", "iso-center-object", "iso-enter", /* ... 0xfe34 */
+ };
+
+#endif /* not HAVE_NTGUI */
+
+static Lisp_Object Vlispy_mouse_stem;
+
+static const char *const lispy_wheel_names[] =
+{
+ "wheel-up", "wheel-down", "wheel-left", "wheel-right"
+};
+
+/* drag-n-drop events are generated when a set of selected files are
+ dragged from another application and dropped onto an Emacs window. */
+static const char *const lispy_drag_n_drop_names[] =
+{
+ "drag-n-drop"
+};
+
+/* An array of symbol indexes of scroll bar parts, indexed by an enum
+ scroll_bar_part value. Note that Qnil corresponds to
+ scroll_bar_nowhere and should not appear in Lisp events. */
+static short const scroll_bar_parts[] = {
+ SYMBOL_INDEX (Qnil), SYMBOL_INDEX (Qabove_handle), SYMBOL_INDEX (Qhandle),
+ SYMBOL_INDEX (Qbelow_handle), SYMBOL_INDEX (Qup), SYMBOL_INDEX (Qdown),
+ SYMBOL_INDEX (Qtop), SYMBOL_INDEX (Qbottom), SYMBOL_INDEX (Qend_scroll),
+ SYMBOL_INDEX (Qratio), SYMBOL_INDEX (Qbefore_handle),
+ SYMBOL_INDEX (Qhorizontal_handle), SYMBOL_INDEX (Qafter_handle),
+ SYMBOL_INDEX (Qleft), SYMBOL_INDEX (Qright), SYMBOL_INDEX (Qleftmost),
+ SYMBOL_INDEX (Qrightmost), SYMBOL_INDEX (Qend_scroll), SYMBOL_INDEX (Qratio)
+};
+
+/* A vector, indexed by button number, giving the down-going location
+ of currently depressed buttons, both scroll bar and non-scroll bar.
+
+ The elements have the form
+ (BUTTON-NUMBER MODIFIER-MASK . REST)
+ where REST is the cdr of a position as it would be reported in the event.
+
+ The make_lispy_event function stores positions here to tell the
+ difference between click and drag events, and to store the starting
+ location to be included in drag events. */
+
+static Lisp_Object button_down_location;
+
+/* Information about the most recent up-going button event: Which
+ button, what location, and what time. */
+
+static int last_mouse_button;
+static int last_mouse_x;
+static int last_mouse_y;
+static Time button_down_time;
+
+/* The number of clicks in this multiple-click. */
+
+static int double_click_count;
+
+/* X and Y are frame-relative coordinates for a click or wheel event.
+ Return a Lisp-style event list. */
+
+static Lisp_Object
+make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
+ Time t)
+{
+ enum window_part part;
+ Lisp_Object posn = Qnil;
+ Lisp_Object extra_info = Qnil;
+ /* Coordinate pixel positions to return. */
+ int xret = 0, yret = 0;
+ /* The window under frame pixel coordinates (x,y) */
+ Lisp_Object window = f
+ ? window_from_coordinates (f, XINT (x), XINT (y), &part, 0)
+ : Qnil;
+
+ if (WINDOWP (window))
+ {
+ /* It's a click in window WINDOW at frame coordinates (X,Y) */
+ struct window *w = XWINDOW (window);
+ Lisp_Object string_info = Qnil;
+ ptrdiff_t textpos = 0;
+ int col = -1, row = -1;
+ int dx = -1, dy = -1;
+ int width = -1, height = -1;
+ Lisp_Object object = Qnil;
+
+ /* Pixel coordinates relative to the window corner. */
+ int wx = XINT (x) - WINDOW_LEFT_EDGE_X (w);
+ int wy = XINT (y) - WINDOW_TOP_EDGE_Y (w);
+
+ /* For text area clicks, return X, Y relative to the corner of
+ this text area. Note that dX, dY etc are set below, by
+ buffer_posn_from_coords. */
+ if (part == ON_TEXT)
+ {
+ xret = XINT (x) - window_box_left (w, TEXT_AREA);
+ yret = wy - WINDOW_HEADER_LINE_HEIGHT (w);
+ }
+ /* For mode line and header line clicks, return X, Y relative to
+ the left window edge. Use mode_line_string to look for a
+ string on the click position. */
+ else if (part == ON_MODE_LINE || part == ON_HEADER_LINE)
+ {
+ Lisp_Object string;
+ ptrdiff_t charpos;
+
+ posn = (part == ON_MODE_LINE) ? Qmode_line : Qheader_line;
+ /* Note that mode_line_string takes COL, ROW as pixels and
+ converts them to characters. */
+ col = wx;
+ row = wy;
+ string = mode_line_string (w, part, &col, &row, &charpos,
+ &object, &dx, &dy, &width, &height);
+ if (STRINGP (string))
+ string_info = Fcons (string, make_number (charpos));
+ textpos = -1;
+
+ xret = wx;
+ yret = wy;
+ }
+ /* For fringes and margins, Y is relative to the area's (and the
+ window's) top edge, while X is meaningless. */
+ else if (part == ON_LEFT_MARGIN || part == ON_RIGHT_MARGIN)
+ {
+ Lisp_Object string;
+ ptrdiff_t charpos;
+
+ posn = (part == ON_LEFT_MARGIN) ? Qleft_margin : Qright_margin;
+ col = wx;
+ row = wy;
+ string = marginal_area_string (w, part, &col, &row, &charpos,
+ &object, &dx, &dy, &width, &height);
+ if (STRINGP (string))
+ string_info = Fcons (string, make_number (charpos));
+ xret = wx;
+ yret = wy - WINDOW_HEADER_LINE_HEIGHT (w);
+ }
+ else if (part == ON_LEFT_FRINGE)
+ {
+ posn = Qleft_fringe;
+ col = 0;
+ xret = wx;
+ dx = wx
+ - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+ ? 0 : window_box_width (w, LEFT_MARGIN_AREA));
+ dy = yret = wy - WINDOW_HEADER_LINE_HEIGHT (w);
+ }
+ else if (part == ON_RIGHT_FRINGE)
+ {
+ posn = Qright_fringe;
+ col = 0;
+ xret = wx;
+ dx = wx
+ - window_box_width (w, LEFT_MARGIN_AREA)
+ - window_box_width (w, TEXT_AREA)
+ - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
+ ? window_box_width (w, RIGHT_MARGIN_AREA)
+ : 0);
+ dy = yret = wy - WINDOW_HEADER_LINE_HEIGHT (w);
+ }
+ else if (part == ON_VERTICAL_BORDER)
+ {
+ posn = Qvertical_line;
+ width = 1;
+ dx = 0;
+ xret = wx;
+ dy = yret = wy;
+ }
+ else if (part == ON_VERTICAL_SCROLL_BAR)
+ {
+ posn = Qvertical_scroll_bar;
+ width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
+ dx = xret = wx;
+ dy = yret = wy;
+ }
+ else if (part == ON_HORIZONTAL_SCROLL_BAR)
+ {
+ posn = Qhorizontal_scroll_bar;
+ width = WINDOW_SCROLL_BAR_AREA_HEIGHT (w);
+ dx = xret = wx;
+ dy = yret = wy;
+ }
+ else if (part == ON_RIGHT_DIVIDER)
+ {
+ posn = Qright_divider;
+ width = WINDOW_RIGHT_DIVIDER_WIDTH (w);
+ dx = xret = wx;
+ dy = yret = wy;
+ }
+ else if (part == ON_BOTTOM_DIVIDER)
+ {
+ posn = Qbottom_divider;
+ width = WINDOW_BOTTOM_DIVIDER_WIDTH (w);
+ dx = xret = wx;
+ dy = yret = wy;
+ }
+
+ /* For clicks in the text area, fringes, margins, or vertical
+ scroll bar, call buffer_posn_from_coords to extract TEXTPOS,
+ the buffer position nearest to the click. */
+ if (!textpos)
+ {
+ Lisp_Object string2, object2 = Qnil;
+ struct display_pos p;
+ int dx2, dy2;
+ int width2, height2;
+ /* The pixel X coordinate passed to buffer_posn_from_coords
+ is the X coordinate relative to the text area for clicks
+ in text-area, right-margin/fringe and right-side vertical
+ scroll bar, zero otherwise. */
+ int x2
+ = (part == ON_TEXT) ? xret
+ : (part == ON_RIGHT_FRINGE || part == ON_RIGHT_MARGIN
+ || (part == ON_VERTICAL_SCROLL_BAR
+ && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)))
+ ? (XINT (x) - window_box_left (w, TEXT_AREA))
+ : 0;
+ int y2 = wy;
+
+ string2 = buffer_posn_from_coords (w, &x2, &y2, &p,
+ &object2, &dx2, &dy2,
+ &width2, &height2);
+ textpos = CHARPOS (p.pos);
+ if (col < 0) col = x2;
+ if (row < 0) row = y2;
+ if (dx < 0) dx = dx2;
+ if (dy < 0) dy = dy2;
+ if (width < 0) width = width2;
+ if (height < 0) height = height2;
+
+ if (NILP (posn))
+ {
+ posn = make_number (textpos);
+ if (STRINGP (string2))
+ string_info = Fcons (string2,
+ make_number (CHARPOS (p.string_pos)));
+ }
+ if (NILP (object))
+ object = object2;
+ }
+
+#ifdef HAVE_WINDOW_SYSTEM
+ if (IMAGEP (object))
+ {
+ Lisp_Object image_map, hotspot;
+ if ((image_map = Fplist_get (XCDR (object), QCmap),
+ !NILP (image_map))
+ && (hotspot = find_hot_spot (image_map, dx, dy),
+ CONSP (hotspot))
+ && (hotspot = XCDR (hotspot), CONSP (hotspot)))
+ posn = XCAR (hotspot);
+ }
+#endif
+
+ /* Object info. */
+ extra_info
+ = list3 (object,
+ Fcons (make_number (dx), make_number (dy)),
+ Fcons (make_number (width), make_number (height)));
+
+ /* String info. */
+ extra_info = Fcons (string_info,
+ Fcons (textpos < 0 ? Qnil : make_number (textpos),
+ Fcons (Fcons (make_number (col),
+ make_number (row)),
+ extra_info)));
+ }
+ else if (f != 0)
+ {
+ /* Return mouse pixel coordinates here. */
+ XSETFRAME (window, f);
+ xret = XINT (x);
+ yret = XINT (y);
+ }
+ else
+ window = Qnil;
+
+ return Fcons (window,
+ Fcons (posn,
+ Fcons (Fcons (make_number (xret),
+ make_number (yret)),
+ Fcons (make_number (t),
+ extra_info))));
+}
+
+/* Return non-zero if F is a GUI frame that uses some toolkit-managed
+ menu bar. This really means that Emacs draws and manages the menu
+ bar as part of its normal display, and therefore can compute its
+ geometry. */
+static bool
+toolkit_menubar_in_use (struct frame *f)
+{
+#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI)
+ return !(!FRAME_WINDOW_P (f));
+#else
+ return false;
+#endif
+}
+
+/* Build the part of Lisp event which represents scroll bar state from
+ EV. TYPE is one of Qvertical_scroll_bar or Qhorizontal_scroll_bar. */
+
+static Lisp_Object
+make_scroll_bar_position (struct input_event *ev, Lisp_Object type)
+{
+ return list5 (ev->frame_or_window, type, Fcons (ev->x, ev->y),
+ make_number (ev->timestamp),
+ builtin_lisp_symbol (scroll_bar_parts[ev->part]));
+}
+
+/* Given a struct input_event, build the lisp event which represents
+ it. If EVENT is 0, build a mouse movement event from the mouse
+ movement buffer, which should have a movement event in it.
+
+ Note that events must be passed to this function in the order they
+ are received; this function stores the location of button presses
+ in order to build drag events when the button is released. */
+
+static Lisp_Object
+make_lispy_event (struct input_event *event)
+{
+ int i;
+
+ switch (event->kind)
+ {
+ /* A simple keystroke. */
+ case ASCII_KEYSTROKE_EVENT:
+ case MULTIBYTE_CHAR_KEYSTROKE_EVENT:
+ {
+ Lisp_Object lispy_c;
+ EMACS_INT c = event->code;
+ if (event->kind == ASCII_KEYSTROKE_EVENT)
+ {
+ c &= 0377;
+ eassert (c == event->code);
+ /* Turn ASCII characters into control characters
+ when proper. */
+ if (event->modifiers & ctrl_modifier)
+ {
+ c = make_ctrl_char (c);
+ event->modifiers &= ~ctrl_modifier;
+ }
+ }
+
+ /* Add in the other modifier bits. The shift key was taken care
+ of by the X code. */
+ c |= (event->modifiers
+ & (meta_modifier | alt_modifier
+ | hyper_modifier | super_modifier | ctrl_modifier));
+ /* Distinguish Shift-SPC from SPC. */
+ if ((event->code) == 040
+ && event->modifiers & shift_modifier)
+ c |= shift_modifier;
+ button_down_time = 0;
+ XSETFASTINT (lispy_c, c);
+ return lispy_c;
+ }
+
+#ifdef HAVE_NS
+ /* NS_NONKEY_EVENTs are just like NON_ASCII_KEYSTROKE_EVENTs,
+ except that they are non-key events (last-nonmenu-event is nil). */
+ case NS_NONKEY_EVENT:
+#endif
+
+ /* A function key. The symbol may need to have modifier prefixes
+ tacked onto it. */
+ case NON_ASCII_KEYSTROKE_EVENT:
+ button_down_time = 0;
+
+ for (i = 0; i < ARRAYELTS (lispy_accent_codes); i++)
+ if (event->code == lispy_accent_codes[i])
+ return modify_event_symbol (i,
+ event->modifiers,
+ Qfunction_key, Qnil,
+ lispy_accent_keys, &accent_key_syms,
+ ARRAYELTS (lispy_accent_keys));
+
+#if 0
+#ifdef XK_kana_A
+ if (event->code >= 0x400 && event->code < 0x500)
+ return modify_event_symbol (event->code - 0x400,
+ event->modifiers & ~shift_modifier,
+ Qfunction_key, Qnil,
+ lispy_kana_keys, &func_key_syms,
+ ARRAYELTS (lispy_kana_keys));
+#endif /* XK_kana_A */
+#endif /* 0 */
+
+#ifdef ISO_FUNCTION_KEY_OFFSET
+ if (event->code < FUNCTION_KEY_OFFSET
+ && event->code >= ISO_FUNCTION_KEY_OFFSET)
+ return modify_event_symbol (event->code - ISO_FUNCTION_KEY_OFFSET,
+ event->modifiers,
+ Qfunction_key, Qnil,
+ iso_lispy_function_keys, &func_key_syms,
+ ARRAYELTS (iso_lispy_function_keys));
+#endif
+
+ if ((FUNCTION_KEY_OFFSET <= event->code
+ && (event->code
+ < FUNCTION_KEY_OFFSET + ARRAYELTS (lispy_function_keys)))
+ && lispy_function_keys[event->code - FUNCTION_KEY_OFFSET])
+ return modify_event_symbol (event->code - FUNCTION_KEY_OFFSET,
+ event->modifiers,
+ Qfunction_key, Qnil,
+ lispy_function_keys, &func_key_syms,
+ ARRAYELTS (lispy_function_keys));
+
+ /* Handle system-specific or unknown keysyms.
+ We need to use an alist rather than a vector as the cache
+ since we can't make a vector long enough. */
+ if (NILP (KVAR (current_kboard, system_key_syms)))
+ kset_system_key_syms (current_kboard, Fcons (Qnil, Qnil));
+ return modify_event_symbol (event->code,
+ event->modifiers,
+ Qfunction_key,
+ KVAR (current_kboard, Vsystem_key_alist),
+ 0, &KVAR (current_kboard, system_key_syms),
+ PTRDIFF_MAX);
+
+#ifdef HAVE_NTGUI
+ case MULTIMEDIA_KEY_EVENT:
+ if (event->code < ARRAYELTS (lispy_multimedia_keys)
+ && event->code > 0 && lispy_multimedia_keys[event->code])
+ {
+ return modify_event_symbol (event->code, event->modifiers,
+ Qfunction_key, Qnil,
+ lispy_multimedia_keys, &func_key_syms,
+ ARRAYELTS (lispy_multimedia_keys));
+ }
+ return Qnil;
+#endif
+
+ /* A mouse click. Figure out where it is, decide whether it's
+ a press, click or drag, and build the appropriate structure. */
+ case MOUSE_CLICK_EVENT:
+#ifdef HAVE_GPM
+ case GPM_CLICK_EVENT:
+#endif
+#ifndef USE_TOOLKIT_SCROLL_BARS
+ case SCROLL_BAR_CLICK_EVENT:
+ case HORIZONTAL_SCROLL_BAR_CLICK_EVENT:
+#endif
+ {
+ int button = event->code;
+ bool is_double;
+ Lisp_Object position;
+ Lisp_Object *start_pos_ptr;
+ Lisp_Object start_pos;
+
+ position = Qnil;
+
+ /* Build the position as appropriate for this mouse click. */
+ if (event->kind == MOUSE_CLICK_EVENT
+#ifdef HAVE_GPM
+ || event->kind == GPM_CLICK_EVENT
+#endif
+ )
+ {
+ struct frame *f = XFRAME (event->frame_or_window);
+ int row, column;
+
+ /* Ignore mouse events that were made on frame that
+ have been deleted. */
+ if (! FRAME_LIVE_P (f))
+ return Qnil;
+
+ /* EVENT->x and EVENT->y are frame-relative pixel
+ coordinates at this place. Under old redisplay, COLUMN
+ and ROW are set to frame relative glyph coordinates
+ which are then used to determine whether this click is
+ in a menu (non-toolkit version). */
+ if (!toolkit_menubar_in_use (f))
+ {
+ pixel_to_glyph_coords (f, XINT (event->x), XINT (event->y),
+ &column, &row, NULL, 1);
+
+ /* In the non-toolkit version, clicks on the menu bar
+ are ordinary button events in the event buffer.
+ Distinguish them, and invoke the menu.
+
+ (In the toolkit version, the toolkit handles the
+ menu bar and Emacs doesn't know about it until
+ after the user makes a selection.) */
+ if (row >= 0 && row < FRAME_MENU_BAR_LINES (f)
+ && (event->modifiers & down_modifier))
+ {
+ Lisp_Object items, item;
+
+ /* Find the menu bar item under `column'. */
+ item = Qnil;
+ items = FRAME_MENU_BAR_ITEMS (f);
+ for (i = 0; i < ASIZE (items); i += 4)
+ {
+ Lisp_Object pos, string;
+ string = AREF (items, i + 1);
+ pos = AREF (items, i + 3);
+ if (NILP (string))
+ break;
+ if (column >= XINT (pos)
+ && column < XINT (pos) + SCHARS (string))
+ {
+ item = AREF (items, i);
+ break;
+ }
+ }
+
+ /* ELisp manual 2.4b says (x y) are window
+ relative but code says they are
+ frame-relative. */
+ position = list4 (event->frame_or_window,
+ Qmenu_bar,
+ Fcons (event->x, event->y),
+ make_number (event->timestamp));
+
+ return list2 (item, position);
+ }
+ }
+
+ position = make_lispy_position (f, event->x, event->y,
+ event->timestamp);
+ }
+#ifndef USE_TOOLKIT_SCROLL_BARS
+ else
+ /* It's a scrollbar click. */
+ position = make_scroll_bar_position (event, Qvertical_scroll_bar);
+#endif /* not USE_TOOLKIT_SCROLL_BARS */
+
+ if (button >= ASIZE (button_down_location))
+ {
+ ptrdiff_t incr = button - ASIZE (button_down_location) + 1;
+ button_down_location = larger_vector (button_down_location,
+ incr, -1);
+ mouse_syms = larger_vector (mouse_syms, incr, -1);
+ }
+
+ start_pos_ptr = aref_addr (button_down_location, button);
+ start_pos = *start_pos_ptr;
+ *start_pos_ptr = Qnil;
+
+ {
+ /* On window-system frames, use the value of
+ double-click-fuzz as is. On other frames, interpret it
+ as a multiple of 1/8 characters. */
+ struct frame *f;
+ int fuzz;
+
+ if (WINDOWP (event->frame_or_window))
+ f = XFRAME (XWINDOW (event->frame_or_window)->frame);
+ else if (FRAMEP (event->frame_or_window))
+ f = XFRAME (event->frame_or_window);
+ else
+ emacs_abort ();
+
+ if (FRAME_WINDOW_P (f))
+ fuzz = double_click_fuzz;
+ else
+ fuzz = double_click_fuzz / 8;
+
+ is_double = (button == last_mouse_button
+ && (eabs (XINT (event->x) - last_mouse_x) <= fuzz)
+ && (eabs (XINT (event->y) - last_mouse_y) <= fuzz)
+ && button_down_time != 0
+ && (EQ (Vdouble_click_time, Qt)
+ || (NATNUMP (Vdouble_click_time)
+ && (event->timestamp - button_down_time
+ < XFASTINT (Vdouble_click_time)))));
+ }
+
+ last_mouse_button = button;
+ last_mouse_x = XINT (event->x);
+ last_mouse_y = XINT (event->y);
+
+ /* If this is a button press, squirrel away the location, so
+ we can decide later whether it was a click or a drag. */
+ if (event->modifiers & down_modifier)
+ {
+ if (is_double)
+ {
+ double_click_count++;
+ event->modifiers |= ((double_click_count > 2)
+ ? triple_modifier
+ : double_modifier);
+ }
+ else
+ double_click_count = 1;
+ button_down_time = event->timestamp;
+ *start_pos_ptr = Fcopy_alist (position);
+ ignore_mouse_drag_p = 0;
+ }
+
+ /* Now we're releasing a button - check the co-ordinates to
+ see if this was a click or a drag. */
+ else if (event->modifiers & up_modifier)
+ {
+ /* If we did not see a down before this up, ignore the up.
+ Probably this happened because the down event chose a
+ menu item. It would be an annoyance to treat the
+ release of the button that chose the menu item as a
+ separate event. */
+
+ if (!CONSP (start_pos))
+ return Qnil;
+
+ event->modifiers &= ~up_modifier;
+
+ {
+ Lisp_Object new_down, down;
+ EMACS_INT xdiff = double_click_fuzz, ydiff = double_click_fuzz;
+
+ /* The third element of every position
+ should be the (x,y) pair. */
+ down = Fcar (Fcdr (Fcdr (start_pos)));
+ new_down = Fcar (Fcdr (Fcdr (position)));
+
+ if (CONSP (down)
+ && INTEGERP (XCAR (down)) && INTEGERP (XCDR (down)))
+ {
+ xdiff = XINT (XCAR (new_down)) - XINT (XCAR (down));
+ ydiff = XINT (XCDR (new_down)) - XINT (XCDR (down));
+ }
+
+ if (ignore_mouse_drag_p)
+ {
+ event->modifiers |= click_modifier;
+ ignore_mouse_drag_p = 0;
+ }
+ else if (xdiff < double_click_fuzz && xdiff > - double_click_fuzz
+ && ydiff < double_click_fuzz && ydiff > - double_click_fuzz
+ /* Maybe the mouse has moved a lot, caused scrolling, and
+ eventually ended up at the same screen position (but
+ not buffer position) in which case it is a drag, not
+ a click. */
+ /* FIXME: OTOH if the buffer position has changed
+ because of a timer or process filter rather than
+ because of mouse movement, it should be considered as
+ a click. But mouse-drag-region completely ignores
+ this case and it hasn't caused any real problem, so
+ it's probably OK to ignore it as well. */
+ && EQ (Fcar (Fcdr (start_pos)), Fcar (Fcdr (position))))
+ /* Mouse hasn't moved (much). */
+ event->modifiers |= click_modifier;
+ else
+ {
+ button_down_time = 0;
+ event->modifiers |= drag_modifier;
+ }
+
+ /* Don't check is_double; treat this as multiple
+ if the down-event was multiple. */
+ if (double_click_count > 1)
+ event->modifiers |= ((double_click_count > 2)
+ ? triple_modifier
+ : double_modifier);
+ }
+ }
+ else
+ /* Every mouse event should either have the down_modifier or
+ the up_modifier set. */
+ emacs_abort ();
+
+ {
+ /* Get the symbol we should use for the mouse click. */
+ Lisp_Object head;
+
+ head = modify_event_symbol (button,
+ event->modifiers,
+ Qmouse_click, Vlispy_mouse_stem,
+ NULL,
+ &mouse_syms,
+ ASIZE (mouse_syms));
+ if (event->modifiers & drag_modifier)
+ return list3 (head, start_pos, position);
+ else if (event->modifiers & (double_modifier | triple_modifier))
+ return list3 (head, position, make_number (double_click_count));
+ else
+ return list2 (head, position);
+ }
+ }
+
+ case WHEEL_EVENT:
+ case HORIZ_WHEEL_EVENT:
+ {
+ Lisp_Object position;
+ Lisp_Object head;
+
+ /* Build the position as appropriate for this mouse click. */
+ struct frame *f = XFRAME (event->frame_or_window);
+
+ /* Ignore wheel events that were made on frame that have been
+ deleted. */
+ if (! FRAME_LIVE_P (f))
+ return Qnil;
+
+ position = make_lispy_position (f, event->x, event->y,
+ event->timestamp);
+
+ /* Set double or triple modifiers to indicate the wheel speed. */
+ {
+ /* On window-system frames, use the value of
+ double-click-fuzz as is. On other frames, interpret it
+ as a multiple of 1/8 characters. */
+ struct frame *fr;
+ int fuzz;
+ int symbol_num;
+ bool is_double;
+
+ if (WINDOWP (event->frame_or_window))
+ fr = XFRAME (XWINDOW (event->frame_or_window)->frame);
+ else if (FRAMEP (event->frame_or_window))
+ fr = XFRAME (event->frame_or_window);
+ else
+ emacs_abort ();
+
+ fuzz = FRAME_WINDOW_P (fr)
+ ? double_click_fuzz : double_click_fuzz / 8;
+
+ if (event->modifiers & up_modifier)
+ {
+ /* Emit a wheel-up event. */
+ event->modifiers &= ~up_modifier;
+ symbol_num = 0;
+ }
+ else if (event->modifiers & down_modifier)
+ {
+ /* Emit a wheel-down event. */
+ event->modifiers &= ~down_modifier;
+ symbol_num = 1;
+ }
+ else
+ /* Every wheel event should either have the down_modifier or
+ the up_modifier set. */
+ emacs_abort ();
+
+ if (event->kind == HORIZ_WHEEL_EVENT)
+ symbol_num += 2;
+
+ is_double = (last_mouse_button == - (1 + symbol_num)
+ && (eabs (XINT (event->x) - last_mouse_x) <= fuzz)
+ && (eabs (XINT (event->y) - last_mouse_y) <= fuzz)
+ && button_down_time != 0
+ && (EQ (Vdouble_click_time, Qt)
+ || (NATNUMP (Vdouble_click_time)
+ && (event->timestamp - button_down_time
+ < XFASTINT (Vdouble_click_time)))));
+ if (is_double)
+ {
+ double_click_count++;
+ event->modifiers |= ((double_click_count > 2)
+ ? triple_modifier
+ : double_modifier);
+ }
+ else
+ {
+ double_click_count = 1;
+ event->modifiers |= click_modifier;
+ }
+
+ button_down_time = event->timestamp;
+ /* Use a negative value to distinguish wheel from mouse button. */
+ last_mouse_button = - (1 + symbol_num);
+ last_mouse_x = XINT (event->x);
+ last_mouse_y = XINT (event->y);
+
+ /* Get the symbol we should use for the wheel event. */
+ head = modify_event_symbol (symbol_num,
+ event->modifiers,
+ Qmouse_click,
+ Qnil,
+ lispy_wheel_names,
+ &wheel_syms,
+ ASIZE (wheel_syms));
+ }
+
+ if (event->modifiers & (double_modifier | triple_modifier))
+ return list3 (head, position, make_number (double_click_count));
+ else
+ return list2 (head, position);
+ }
+
+
+#ifdef USE_TOOLKIT_SCROLL_BARS
+
+ /* We don't have down and up events if using toolkit scroll bars,
+ so make this always a click event. Store in the `part' of
+ the Lisp event a symbol which maps to the following actions:
+
+ `above_handle' page up
+ `below_handle' page down
+ `up' line up
+ `down' line down
+ `top' top of buffer
+ `bottom' bottom of buffer
+ `handle' thumb has been dragged.
+ `end-scroll' end of interaction with scroll bar
+
+ The incoming input_event contains in its `part' member an
+ index of type `enum scroll_bar_part' which we can use as an
+ index in scroll_bar_parts to get the appropriate symbol. */
+
+ case SCROLL_BAR_CLICK_EVENT:
+ {
+ Lisp_Object position, head;
+
+ position = make_scroll_bar_position (event, Qvertical_scroll_bar);
+
+ /* Always treat scroll bar events as clicks. */
+ event->modifiers |= click_modifier;
+ event->modifiers &= ~up_modifier;
+
+ if (event->code >= ASIZE (mouse_syms))
+ mouse_syms = larger_vector (mouse_syms,
+ event->code - ASIZE (mouse_syms) + 1,
+ -1);
+
+ /* Get the symbol we should use for the mouse click. */
+ head = modify_event_symbol (event->code,
+ event->modifiers,
+ Qmouse_click,
+ Vlispy_mouse_stem,
+ NULL, &mouse_syms,
+ ASIZE (mouse_syms));
+ return list2 (head, position);
+ }
+
+ case HORIZONTAL_SCROLL_BAR_CLICK_EVENT:
+ {
+ Lisp_Object position, head;
+
+ position = make_scroll_bar_position (event, Qhorizontal_scroll_bar);
+
+ /* Always treat scroll bar events as clicks. */
+ event->modifiers |= click_modifier;
+ event->modifiers &= ~up_modifier;
+
+ if (event->code >= ASIZE (mouse_syms))
+ mouse_syms = larger_vector (mouse_syms,
+ event->code - ASIZE (mouse_syms) + 1,
+ -1);
+
+ /* Get the symbol we should use for the mouse click. */
+ head = modify_event_symbol (event->code,
+ event->modifiers,
+ Qmouse_click,
+ Vlispy_mouse_stem,
+ NULL, &mouse_syms,
+ ASIZE (mouse_syms));
+ return list2 (head, position);
+ }
+
+#endif /* USE_TOOLKIT_SCROLL_BARS */
+
+ case DRAG_N_DROP_EVENT:
+ {
+ struct frame *f;
+ Lisp_Object head, position;
+ Lisp_Object files;
+
+ f = XFRAME (event->frame_or_window);
+ files = event->arg;
+
+ /* Ignore mouse events that were made on frames that
+ have been deleted. */
+ if (! FRAME_LIVE_P (f))
+ return Qnil;
+
+ position = make_lispy_position (f, event->x, event->y,
+ event->timestamp);
+
+ head = modify_event_symbol (0, event->modifiers,
+ Qdrag_n_drop, Qnil,
+ lispy_drag_n_drop_names,
+ &drag_n_drop_syms, 1);
+ return list3 (head, position, files);
+ }
+
+#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
+ || defined (HAVE_NS) || defined (USE_GTK)
+ case MENU_BAR_EVENT:
+ if (EQ (event->arg, event->frame_or_window))
+ /* This is the prefix key. We translate this to
+ `(menu_bar)' because the code in keyboard.c for menu
+ events, which we use, relies on this. */
+ return list1 (Qmenu_bar);
+ return event->arg;
+#endif
+
+ case SELECT_WINDOW_EVENT:
+ /* Make an event (select-window (WINDOW)). */
+ return list2 (Qselect_window, list1 (event->frame_or_window));
+
+ case TOOL_BAR_EVENT:
+ if (EQ (event->arg, event->frame_or_window))
+ /* This is the prefix key. We translate this to
+ `(tool_bar)' because the code in keyboard.c for tool bar
+ events, which we use, relies on this. */
+ return list1 (Qtool_bar);
+ else if (SYMBOLP (event->arg))
+ return apply_modifiers (event->modifiers, event->arg);
+ return event->arg;
+
+ case USER_SIGNAL_EVENT:
+ /* A user signal. */
+ {
+ char *name = find_user_signal_name (event->code);
+ if (!name)
+ emacs_abort ();
+ return intern (name);
+ }
+
+ case SAVE_SESSION_EVENT:
+ return Qsave_session;
+
+#ifdef HAVE_DBUS
+ case DBUS_EVENT:
+ {
+ return Fcons (Qdbus_event, event->arg);
+ }
+#endif /* HAVE_DBUS */
+
+#if defined HAVE_GFILENOTIFY || defined HAVE_INOTIFY
+ case FILE_NOTIFY_EVENT:
+ {
+ return Fcons (Qfile_notify, event->arg);
+ }
+#endif /* defined HAVE_GFILENOTIFY || defined HAVE_INOTIFY */
+
+ case CONFIG_CHANGED_EVENT:
+ return list3 (Qconfig_changed_event,
+ event->arg, event->frame_or_window);
+
+ /* The 'kind' field of the event is something we don't recognize. */
+ default:
+ emacs_abort ();
+ }
+}
+
+static Lisp_Object
+make_lispy_movement (struct frame *frame, Lisp_Object bar_window, enum scroll_bar_part part,
+ Lisp_Object x, Lisp_Object y, Time t)
+{
+ /* Is it a scroll bar movement? */
+ if (frame && ! NILP (bar_window))
+ {
+ Lisp_Object part_sym;
+
+ part_sym = builtin_lisp_symbol (scroll_bar_parts[part]);
+ return list2 (Qscroll_bar_movement,
+ list5 (bar_window,
+ Qvertical_scroll_bar,
+ Fcons (x, y),
+ make_number (t),
+ part_sym));
+ }
+ /* Or is it an ordinary mouse movement? */
+ else
+ {
+ Lisp_Object position;
+ position = make_lispy_position (frame, x, y, t);
+ return list2 (Qmouse_movement, position);
+ }
+}
+
+/* Construct a switch frame event. */
+static Lisp_Object
+make_lispy_switch_frame (Lisp_Object frame)
+{
+ return list2 (Qswitch_frame, frame);
+}
+
+static Lisp_Object
+make_lispy_focus_in (Lisp_Object frame)
+{
+ return list2 (Qfocus_in, frame);
+}
+
+#ifdef HAVE_WINDOW_SYSTEM
+
+static Lisp_Object
+make_lispy_focus_out (Lisp_Object frame)
+{
+ return list2 (Qfocus_out, frame);
+}
+
+#endif /* HAVE_WINDOW_SYSTEM */
+
+/* Manipulating modifiers. */
+
+/* Parse the name of SYMBOL, and return the set of modifiers it contains.
+
+ If MODIFIER_END is non-zero, set *MODIFIER_END to the position in
+ SYMBOL's name of the end of the modifiers; the string from this
+ position is the unmodified symbol name.
+
+ This doesn't use any caches. */
+
+static int
+parse_modifiers_uncached (Lisp_Object symbol, ptrdiff_t *modifier_end)
+{
+ Lisp_Object name;
+ ptrdiff_t i;
+ int modifiers;
+
+ CHECK_SYMBOL (symbol);
+
+ modifiers = 0;
+ name = SYMBOL_NAME (symbol);
+
+ for (i = 0; i < SBYTES (name) - 1; )
+ {
+ ptrdiff_t this_mod_end = 0;
+ int this_mod = 0;
+
+ /* See if the name continues with a modifier word.
+ Check that the word appears, but don't check what follows it.
+ Set this_mod and this_mod_end to record what we find. */
+
+ switch (SREF (name, i))
+ {
+#define SINGLE_LETTER_MOD(BIT) \
+ (this_mod_end = i + 1, this_mod = BIT)
+
+ case 'A':
+ SINGLE_LETTER_MOD (alt_modifier);
+ break;
+
+ case 'C':
+ SINGLE_LETTER_MOD (ctrl_modifier);
+ break;
+
+ case 'H':
+ SINGLE_LETTER_MOD (hyper_modifier);
+ break;
+
+ case 'M':
+ SINGLE_LETTER_MOD (meta_modifier);
+ break;
+
+ case 'S':
+ SINGLE_LETTER_MOD (shift_modifier);
+ break;
+
+ case 's':
+ SINGLE_LETTER_MOD (super_modifier);
+ break;
+
+#undef SINGLE_LETTER_MOD
+
+#define MULTI_LETTER_MOD(BIT, NAME, LEN) \
+ if (i + LEN + 1 <= SBYTES (name) \
+ && ! memcmp (SDATA (name) + i, NAME, LEN)) \
+ { \
+ this_mod_end = i + LEN; \
+ this_mod = BIT; \
+ }
+
+ case 'd':
+ MULTI_LETTER_MOD (drag_modifier, "drag", 4);
+ MULTI_LETTER_MOD (down_modifier, "down", 4);
+ MULTI_LETTER_MOD (double_modifier, "double", 6);
+ break;
+
+ case 't':
+ MULTI_LETTER_MOD (triple_modifier, "triple", 6);
+ break;
+#undef MULTI_LETTER_MOD
+
+ }
+
+ /* If we found no modifier, stop looking for them. */
+ if (this_mod_end == 0)
+ break;
+
+ /* Check there is a dash after the modifier, so that it
+ really is a modifier. */
+ if (this_mod_end >= SBYTES (name)
+ || SREF (name, this_mod_end) != '-')
+ break;
+
+ /* This modifier is real; look for another. */
+ modifiers |= this_mod;
+ i = this_mod_end + 1;
+ }
+
+ /* Should we include the `click' modifier? */
+ if (! (modifiers & (down_modifier | drag_modifier
+ | double_modifier | triple_modifier))
+ && i + 7 == SBYTES (name)
+ && memcmp (SDATA (name) + i, "mouse-", 6) == 0
+ && ('0' <= SREF (name, i + 6) && SREF (name, i + 6) <= '9'))
+ modifiers |= click_modifier;
+
+ if (! (modifiers & (double_modifier | triple_modifier))
+ && i + 6 < SBYTES (name)
+ && memcmp (SDATA (name) + i, "wheel-", 6) == 0)
+ modifiers |= click_modifier;
+
+ if (modifier_end)
+ *modifier_end = i;
+
+ return modifiers;
+}
+
+/* Return a symbol whose name is the modifier prefixes for MODIFIERS
+ prepended to the string BASE[0..BASE_LEN-1].
+ This doesn't use any caches. */
+static Lisp_Object
+apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_byte)
+{
+ /* Since BASE could contain nulls, we can't use intern here; we have
+ to use Fintern, which expects a genuine Lisp_String, and keeps a
+ reference to it. */
+ char new_mods[sizeof "A-C-H-M-S-s-down-drag-double-triple-"];
+ int mod_len;
+
+ {
+ char *p = new_mods;
+
+ /* Only the event queue may use the `up' modifier; it should always
+ be turned into a click or drag event before presented to lisp code. */
+ if (modifiers & up_modifier)
+ emacs_abort ();
+
+ if (modifiers & alt_modifier) { *p++ = 'A'; *p++ = '-'; }
+ if (modifiers & ctrl_modifier) { *p++ = 'C'; *p++ = '-'; }
+ if (modifiers & hyper_modifier) { *p++ = 'H'; *p++ = '-'; }
+ if (modifiers & meta_modifier) { *p++ = 'M'; *p++ = '-'; }
+ if (modifiers & shift_modifier) { *p++ = 'S'; *p++ = '-'; }
+ if (modifiers & super_modifier) { *p++ = 's'; *p++ = '-'; }
+ if (modifiers & double_modifier) p = stpcpy (p, "double-");
+ if (modifiers & triple_modifier) p = stpcpy (p, "triple-");
+ if (modifiers & down_modifier) p = stpcpy (p, "down-");
+ if (modifiers & drag_modifier) p = stpcpy (p, "drag-");
+ /* The click modifier is denoted by the absence of other modifiers. */
+
+ *p = '\0';
+
+ mod_len = p - new_mods;
+ }
+
+ {
+ Lisp_Object new_name;
+
+ new_name = make_uninit_multibyte_string (mod_len + base_len,
+ mod_len + base_len_byte);
+ memcpy (SDATA (new_name), new_mods, mod_len);
+ memcpy (SDATA (new_name) + mod_len, base, base_len_byte);
+
+ return Fintern (new_name, Qnil);
+ }
+}
+
+
+static const char *const modifier_names[] =
+{
+ "up", "down", "drag", "click", "double", "triple", 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, "alt", "super", "hyper", "shift", "control", "meta"
+};
+#define NUM_MOD_NAMES ARRAYELTS (modifier_names)
+
+static Lisp_Object modifier_symbols;
+
+/* Return the list of modifier symbols corresponding to the mask MODIFIERS. */
+static Lisp_Object
+lispy_modifier_list (int modifiers)
+{
+ Lisp_Object modifier_list;
+ int i;
+
+ modifier_list = Qnil;
+ for (i = 0; (1<<i) <= modifiers && i < NUM_MOD_NAMES; i++)
+ if (modifiers & (1<<i))
+ modifier_list = Fcons (AREF (modifier_symbols, i),
+ modifier_list);
+
+ return modifier_list;
+}
+
+
+/* Parse the modifiers on SYMBOL, and return a list like (UNMODIFIED MASK),
+ where UNMODIFIED is the unmodified form of SYMBOL,
+ MASK is the set of modifiers present in SYMBOL's name.
+ This is similar to parse_modifiers_uncached, but uses the cache in
+ SYMBOL's Qevent_symbol_element_mask property, and maintains the
+ Qevent_symbol_elements property. */
+
+#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTERBITS) - 1))
+
+Lisp_Object
+parse_modifiers (Lisp_Object symbol)
+{
+ Lisp_Object elements;
+
+ if (INTEGERP (symbol))
+ return list2i (KEY_TO_CHAR (symbol), XINT (symbol) & CHAR_MODIFIER_MASK);
+ else if (!SYMBOLP (symbol))
+ return Qnil;
+
+ elements = Fget (symbol, Qevent_symbol_element_mask);
+ if (CONSP (elements))
+ return elements;
+ else
+ {
+ ptrdiff_t end;
+ int modifiers = parse_modifiers_uncached (symbol, &end);
+ Lisp_Object unmodified;
+ Lisp_Object mask;
+
+ unmodified = Fintern (make_string (SSDATA (SYMBOL_NAME (symbol)) + end,
+ SBYTES (SYMBOL_NAME (symbol)) - end),
+ Qnil);
+
+ if (modifiers & ~INTMASK)
+ emacs_abort ();
+ XSETFASTINT (mask, modifiers);
+ elements = list2 (unmodified, mask);
+
+ /* Cache the parsing results on SYMBOL. */
+ Fput (symbol, Qevent_symbol_element_mask,
+ elements);
+ Fput (symbol, Qevent_symbol_elements,
+ Fcons (unmodified, lispy_modifier_list (modifiers)));
+
+ /* Since we know that SYMBOL is modifiers applied to unmodified,
+ it would be nice to put that in unmodified's cache.
+ But we can't, since we're not sure that parse_modifiers is
+ canonical. */
+
+ return elements;
+ }
+}
+
+DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,
+ Sevent_symbol_parse_modifiers, 1, 1, 0,
+ doc: /* Parse the event symbol. For internal use. */)
+ (Lisp_Object symbol)
+{
+ /* Fill the cache if needed. */
+ parse_modifiers (symbol);
+ /* Ignore the result (which is stored on Qevent_symbol_element_mask)
+ and use the Lispier representation stored on Qevent_symbol_elements
+ instead. */
+ return Fget (symbol, Qevent_symbol_elements);
+}
+
+/* Apply the modifiers MODIFIERS to the symbol BASE.
+ BASE must be unmodified.
+
+ This is like apply_modifiers_uncached, but uses BASE's
+ Qmodifier_cache property, if present. It also builds
+ Qevent_symbol_elements properties, since it has that info anyway.
+
+ apply_modifiers copies the value of BASE's Qevent_kind property to
+ the modified symbol. */
+static Lisp_Object
+apply_modifiers (int modifiers, Lisp_Object base)
+{
+ Lisp_Object cache, idx, entry, new_symbol;
+
+ /* Mask out upper bits. We don't know where this value's been. */
+ modifiers &= INTMASK;
+
+ if (INTEGERP (base))
+ return make_number (XINT (base) | modifiers);
+
+ /* The click modifier never figures into cache indices. */
+ cache = Fget (base, Qmodifier_cache);
+ XSETFASTINT (idx, (modifiers & ~click_modifier));
+ entry = assq_no_quit (idx, cache);
+
+ if (CONSP (entry))
+ new_symbol = XCDR (entry);
+ else
+ {
+ /* We have to create the symbol ourselves. */
+ new_symbol = apply_modifiers_uncached (modifiers,
+ SSDATA (SYMBOL_NAME (base)),
+ SCHARS (SYMBOL_NAME (base)),
+ SBYTES (SYMBOL_NAME (base)));
+
+ /* Add the new symbol to the base's cache. */
+ entry = Fcons (idx, new_symbol);
+ Fput (base, Qmodifier_cache, Fcons (entry, cache));
+
+ /* We have the parsing info now for free, so we could add it to
+ the caches:
+ XSETFASTINT (idx, modifiers);
+ Fput (new_symbol, Qevent_symbol_element_mask,
+ list2 (base, idx));
+ Fput (new_symbol, Qevent_symbol_elements,
+ Fcons (base, lispy_modifier_list (modifiers)));
+ Sadly, this is only correct if `base' is indeed a base event,
+ which is not necessarily the case. -stef */
+ }
+
+ /* Make sure this symbol is of the same kind as BASE.
+
+ You'd think we could just set this once and for all when we
+ intern the symbol above, but reorder_modifiers may call us when
+ BASE's property isn't set right; we can't assume that just
+ because it has a Qmodifier_cache property it must have its
+ Qevent_kind set right as well. */
+ if (NILP (Fget (new_symbol, Qevent_kind)))
+ {
+ Lisp_Object kind;
+
+ kind = Fget (base, Qevent_kind);
+ if (! NILP (kind))
+ Fput (new_symbol, Qevent_kind, kind);
+ }
+
+ return new_symbol;
+}
+
+
+/* Given a symbol whose name begins with modifiers ("C-", "M-", etc),
+ return a symbol with the modifiers placed in the canonical order.
+ Canonical order is alphabetical, except for down and drag, which
+ always come last. The 'click' modifier is never written out.
+
+ Fdefine_key calls this to make sure that (for example) C-M-foo
+ and M-C-foo end up being equivalent in the keymap. */
+
+Lisp_Object
+reorder_modifiers (Lisp_Object symbol)
+{
+ /* It's hopefully okay to write the code this way, since everything
+ will soon be in caches, and no consing will be done at all. */
+ Lisp_Object parsed;
+
+ parsed = parse_modifiers (symbol);
+ return apply_modifiers (XFASTINT (XCAR (XCDR (parsed))),
+ XCAR (parsed));
+}
+
+
+/* For handling events, we often want to produce a symbol whose name
+ is a series of modifier key prefixes ("M-", "C-", etcetera) attached
+ to some base, like the name of a function key or mouse button.
+ modify_event_symbol produces symbols of this sort.
+
+ NAME_TABLE should point to an array of strings, such that NAME_TABLE[i]
+ is the name of the i'th symbol. TABLE_SIZE is the number of elements
+ in the table.
+
+ Alternatively, NAME_ALIST_OR_STEM is either an alist mapping codes
+ into symbol names, or a string specifying a name stem used to
+ construct a symbol name or the form `STEM-N', where N is the decimal
+ representation of SYMBOL_NUM. NAME_ALIST_OR_STEM is used if it is
+ non-nil; otherwise NAME_TABLE is used.
+
+ SYMBOL_TABLE should be a pointer to a Lisp_Object whose value will
+ persist between calls to modify_event_symbol that it can use to
+ store a cache of the symbols it's generated for this NAME_TABLE
+ before. The object stored there may be a vector or an alist.
+
+ SYMBOL_NUM is the number of the base name we want from NAME_TABLE.
+
+ MODIFIERS is a set of modifier bits (as given in struct input_events)
+ whose prefixes should be applied to the symbol name.
+
+ SYMBOL_KIND is the value to be placed in the event_kind property of
+ the returned symbol.
+
+ The symbols we create are supposed to have an
+ `event-symbol-elements' property, which lists the modifiers present
+ in the symbol's name. */
+
+static Lisp_Object
+modify_event_symbol (ptrdiff_t symbol_num, int modifiers, Lisp_Object symbol_kind,
+ Lisp_Object name_alist_or_stem, const char *const *name_table,
+ Lisp_Object *symbol_table, ptrdiff_t table_size)
+{
+ Lisp_Object value;
+ Lisp_Object symbol_int;
+
+ /* Get rid of the "vendor-specific" bit here. */
+ XSETINT (symbol_int, symbol_num & 0xffffff);
+
+ /* Is this a request for a valid symbol? */
+ if (symbol_num < 0 || symbol_num >= table_size)
+ return Qnil;
+
+ if (CONSP (*symbol_table))
+ value = Fcdr (assq_no_quit (symbol_int, *symbol_table));
+
+ /* If *symbol_table doesn't seem to be initialized properly, fix that.
+ *symbol_table should be a lisp vector TABLE_SIZE elements long,
+ where the Nth element is the symbol for NAME_TABLE[N], or nil if
+ we've never used that symbol before. */
+ else
+ {
+ if (! VECTORP (*symbol_table)
+ || ASIZE (*symbol_table) != table_size)
+ {
+ Lisp_Object size;
+
+ XSETFASTINT (size, table_size);
+ *symbol_table = Fmake_vector (size, Qnil);
+ }
+
+ value = AREF (*symbol_table, symbol_num);
+ }
+
+ /* Have we already used this symbol before? */
+ if (NILP (value))
+ {
+ /* No; let's create it. */
+ if (CONSP (name_alist_or_stem))
+ value = Fcdr_safe (Fassq (symbol_int, name_alist_or_stem));
+ else if (STRINGP (name_alist_or_stem))
+ {
+ char *buf;
+ ptrdiff_t len = (SBYTES (name_alist_or_stem)
+ + sizeof "-" + INT_STRLEN_BOUND (EMACS_INT));
+ USE_SAFE_ALLOCA;
+ buf = SAFE_ALLOCA (len);
+ esprintf (buf, "%s-%"pI"d", SDATA (name_alist_or_stem),
+ XINT (symbol_int) + 1);
+ value = intern (buf);
+ SAFE_FREE ();
+ }
+ else if (name_table != 0 && name_table[symbol_num])
+ value = intern (name_table[symbol_num]);
+
+#ifdef HAVE_WINDOW_SYSTEM
+ if (NILP (value))
+ {
+ char *name = x_get_keysym_name (symbol_num);
+ if (name)
+ value = intern (name);
+ }
+#endif
+
+ if (NILP (value))
+ {
+ char buf[sizeof "key-" + INT_STRLEN_BOUND (EMACS_INT)];
+ sprintf (buf, "key-%"pD"d", symbol_num);
+ value = intern (buf);
+ }
+
+ if (CONSP (*symbol_table))
+ *symbol_table = Fcons (Fcons (symbol_int, value), *symbol_table);
+ else
+ ASET (*symbol_table, symbol_num, value);
+
+ /* Fill in the cache entries for this symbol; this also
+ builds the Qevent_symbol_elements property, which the user
+ cares about. */
+ apply_modifiers (modifiers & click_modifier, value);
+ Fput (value, Qevent_kind, symbol_kind);
+ }
+
+ /* Apply modifiers to that symbol. */
+ return apply_modifiers (modifiers, value);
+}
+\f
+/* Convert a list that represents an event type,
+ such as (ctrl meta backspace), into the usual representation of that
+ event type as a number or a symbol. */
+
+DEFUN ("event-convert-list", Fevent_convert_list, Sevent_convert_list, 1, 1, 0,
+ doc: /* Convert the event description list EVENT-DESC to an event type.
+EVENT-DESC should contain one base event type (a character or symbol)
+and zero or more modifier names (control, meta, hyper, super, shift, alt,
+drag, down, double or triple). The base must be last.
+The return value is an event type (a character or symbol) which
+has the same base event type and all the specified modifiers. */)
+ (Lisp_Object event_desc)
+{
+ Lisp_Object base;
+ int modifiers = 0;
+ Lisp_Object rest;
+
+ base = Qnil;
+ rest = event_desc;
+ while (CONSP (rest))
+ {
+ Lisp_Object elt;
+ int this = 0;
+
+ elt = XCAR (rest);
+ rest = XCDR (rest);
+
+ /* Given a symbol, see if it is a modifier name. */
+ if (SYMBOLP (elt) && CONSP (rest))
+ this = parse_solitary_modifier (elt);
+
+ if (this != 0)
+ modifiers |= this;
+ else if (!NILP (base))
+ error ("Two bases given in one event");
+ else
+ base = elt;
+
+ }
+
+ /* Let the symbol A refer to the character A. */
+ if (SYMBOLP (base) && SCHARS (SYMBOL_NAME (base)) == 1)
+ XSETINT (base, SREF (SYMBOL_NAME (base), 0));
+
+ if (INTEGERP (base))
+ {
+ /* Turn (shift a) into A. */
+ if ((modifiers & shift_modifier) != 0
+ && (XINT (base) >= 'a' && XINT (base) <= 'z'))
+ {
+ XSETINT (base, XINT (base) - ('a' - 'A'));
+ modifiers &= ~shift_modifier;
+ }
+
+ /* Turn (control a) into C-a. */
+ if (modifiers & ctrl_modifier)
+ return make_number ((modifiers & ~ctrl_modifier)
+ | make_ctrl_char (XINT (base)));
+ else
+ return make_number (modifiers | XINT (base));
+ }
+ else if (SYMBOLP (base))
+ return apply_modifiers (modifiers, base);
+ else
+ error ("Invalid base event");
+}
+
+/* Try to recognize SYMBOL as a modifier name.
+ Return the modifier flag bit, or 0 if not recognized. */
+
+int
+parse_solitary_modifier (Lisp_Object symbol)
+{
+ Lisp_Object name = SYMBOL_NAME (symbol);
+
+ switch (SREF (name, 0))
+ {
+#define SINGLE_LETTER_MOD(BIT) \
+ if (SBYTES (name) == 1) \
+ return BIT;
+
+#define MULTI_LETTER_MOD(BIT, NAME, LEN) \
+ if (LEN == SBYTES (name) \
+ && ! memcmp (SDATA (name), NAME, LEN)) \
+ return BIT;
+
+ case 'A':
+ SINGLE_LETTER_MOD (alt_modifier);
+ break;
+
+ case 'a':
+ MULTI_LETTER_MOD (alt_modifier, "alt", 3);
+ break;
+
+ case 'C':
+ SINGLE_LETTER_MOD (ctrl_modifier);
+ break;
+
+ case 'c':
+ MULTI_LETTER_MOD (ctrl_modifier, "ctrl", 4);
+ MULTI_LETTER_MOD (ctrl_modifier, "control", 7);
+ break;
+
+ case 'H':
+ SINGLE_LETTER_MOD (hyper_modifier);
+ break;
+
+ case 'h':
+ MULTI_LETTER_MOD (hyper_modifier, "hyper", 5);
+ break;
+
+ case 'M':
+ SINGLE_LETTER_MOD (meta_modifier);
+ break;
+
+ case 'm':
+ MULTI_LETTER_MOD (meta_modifier, "meta", 4);
+ break;
+
+ case 'S':
+ SINGLE_LETTER_MOD (shift_modifier);
+ break;
+
+ case 's':
+ MULTI_LETTER_MOD (shift_modifier, "shift", 5);
+ MULTI_LETTER_MOD (super_modifier, "super", 5);
+ SINGLE_LETTER_MOD (super_modifier);
+ break;
+
+ case 'd':
+ MULTI_LETTER_MOD (drag_modifier, "drag", 4);
+ MULTI_LETTER_MOD (down_modifier, "down", 4);
+ MULTI_LETTER_MOD (double_modifier, "double", 6);
+ break;
+
+ case 't':
+ MULTI_LETTER_MOD (triple_modifier, "triple", 6);
+ break;
+
+#undef SINGLE_LETTER_MOD
+#undef MULTI_LETTER_MOD
+ }
+
+ return 0;
+}
+
+/* Return true if EVENT is a list whose elements are all integers or symbols.
+ Such a list is not valid as an event,
+ but it can be a Lucid-style event type list. */
+
+bool
+lucid_event_type_list_p (Lisp_Object object)
+{
+ Lisp_Object tail;
+
+ if (! CONSP (object))
+ return 0;
+
+ if (EQ (XCAR (object), Qhelp_echo)
+ || EQ (XCAR (object), Qvertical_line)
+ || EQ (XCAR (object), Qmode_line)
+ || EQ (XCAR (object), Qheader_line))
+ return 0;
+
+ for (tail = object; CONSP (tail); tail = XCDR (tail))
+ {
+ Lisp_Object elt;
+ elt = XCAR (tail);
+ if (! (INTEGERP (elt) || SYMBOLP (elt)))
+ return 0;
+ }
+
+ return NILP (tail);
+}
+\f
+/* Return true if terminal input chars are available.
+ Also, store the return value into INPUT_PENDING.
+
+ Serves the purpose of ioctl (0, FIONREAD, ...)
+ but works even if FIONREAD does not exist.
+ (In fact, this may actually read some input.)
+
+ If READABLE_EVENTS_DO_TIMERS_NOW is set in FLAGS, actually run
+ timer events that are ripe.
+ If READABLE_EVENTS_FILTER_EVENTS is set in FLAGS, ignore internal
+ events (FOCUS_IN_EVENT).
+ If READABLE_EVENTS_IGNORE_SQUEEZABLES is set in FLAGS, ignore mouse
+ movements and toolkit scroll bar thumb drags. */
+
+static bool
+get_input_pending (int flags)
+{
+ /* First of all, have we already counted some input? */
+ input_pending = (!NILP (Vquit_flag) || readable_events (flags));
+
+ /* If input is being read as it arrives, and we have none, there is none. */
+ if (!input_pending && (!interrupt_input || interrupts_deferred))
+ {
+ /* Try to read some input and see how much we get. */
+ gobble_input ();
+ input_pending = (!NILP (Vquit_flag) || readable_events (flags));
+ }
+
+ return input_pending;
+}
+
+/* Put a BUFFER_SWITCH_EVENT in the buffer
+ so that read_key_sequence will notice the new current buffer. */
+
+void
+record_asynch_buffer_change (void)
+{
+ /* We don't need a buffer-switch event unless Emacs is waiting for input.
+ The purpose of the event is to make read_key_sequence look up the
+ keymaps again. If we aren't in read_key_sequence, we don't need one,
+ and the event could cause trouble by messing up (input-pending-p).
+ Note: Fwaiting_for_user_input_p always returns nil when async
+ subprocesses aren't supported. */
+ if (!NILP (Fwaiting_for_user_input_p ()))
+ {
+ struct input_event event;
+
+ EVENT_INIT (event);
+ event.kind = BUFFER_SWITCH_EVENT;
+ event.frame_or_window = Qnil;
+ event.arg = Qnil;
+
+ /* Make sure no interrupt happens while storing the event. */
+#ifdef USABLE_SIGIO
+ if (interrupt_input)
+ kbd_buffer_store_event (&event);
+ else
+#endif
+ {
+ stop_polling ();
+ kbd_buffer_store_event (&event);
+ start_polling ();
+ }
+ }
+}
+
+/* Read any terminal input already buffered up by the system
+ into the kbd_buffer, but do not wait.
+
+ Return the number of keyboard chars read, or -1 meaning
+ this is a bad time to try to read input. */
+
+int
+gobble_input (void)
+{
+ int nread = 0;
+ bool err = 0;
+ struct terminal *t;
+
+ /* Store pending user signal events, if any. */
+ store_user_signal_events ();
+
+ /* Loop through the available terminals, and call their input hooks. */
+ t = terminal_list;
+ while (t)
+ {
+ struct terminal *next = t->next_terminal;
+
+ if (t->read_socket_hook)
+ {
+ int nr;
+ struct input_event hold_quit;
+
+ if (input_blocked_p ())
+ {
+ pending_signals = 1;
+ break;
+ }
+
+ EVENT_INIT (hold_quit);
+ hold_quit.kind = NO_EVENT;
+
+ /* No need for FIONREAD or fcntl; just say don't wait. */
+ while ((nr = (*t->read_socket_hook) (t, &hold_quit)) > 0)
+ nread += nr;
+
+ if (nr == -1) /* Not OK to read input now. */
+ {
+ err = 1;
+ }
+ else if (nr == -2) /* Non-transient error. */
+ {
+ /* The terminal device terminated; it should be closed. */
+
+ /* Kill Emacs if this was our last terminal. */
+ if (!terminal_list->next_terminal)
+ /* Formerly simply reported no input, but that
+ sometimes led to a failure of Emacs to terminate.
+ SIGHUP seems appropriate if we can't reach the
+ terminal. */
+ /* ??? Is it really right to send the signal just to
+ this process rather than to the whole process
+ group? Perhaps on systems with FIONREAD Emacs is
+ alone in its group. */
+ terminate_due_to_signal (SIGHUP, 10);
+
+ /* XXX Is calling delete_terminal safe here? It calls delete_frame. */
+ {
+ Lisp_Object tmp;
+ XSETTERMINAL (tmp, t);
+ Fdelete_terminal (tmp, Qnoelisp);
+ }
+ }
+
+ /* If there was no error, make sure the pointer
+ is visible for all frames on this terminal. */
+ if (nr >= 0)
+ {
+ Lisp_Object tail, frame;
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ struct frame *f = XFRAME (frame);
+ if (FRAME_TERMINAL (f) == t)
+ frame_make_pointer_visible (f);
+ }
+ }
+
+ if (hold_quit.kind != NO_EVENT)
+ kbd_buffer_store_event (&hold_quit);
+ }
+
+ t = next;
+ }
+
+ if (err && !nread)
+ nread = -1;
+
+ return nread;
+}
+
+/* This is the tty way of reading available input.
+
+ Note that each terminal device has its own `struct terminal' object,
+ and so this function is called once for each individual termcap
+ terminal. The first parameter indicates which terminal to read from. */
+
+int
+tty_read_avail_input (struct terminal *terminal,
+ struct input_event *hold_quit)
+{
+ /* Using KBD_BUFFER_SIZE - 1 here avoids reading more than
+ the kbd_buffer can really hold. That may prevent loss
+ of characters on some systems when input is stuffed at us. */
+ unsigned char cbuf[KBD_BUFFER_SIZE - 1];
+ int n_to_read, i;
+ struct tty_display_info *tty = terminal->display_info.tty;
+ int nread = 0;
+#ifdef subprocesses
+ int buffer_free = KBD_BUFFER_SIZE - kbd_buffer_nr_stored () - 1;
+
+ if (kbd_on_hold_p () || buffer_free <= 0)
+ return 0;
+#endif /* subprocesses */
+
+ if (!terminal->name) /* Don't read from a dead terminal. */
+ return 0;
+
+ if (terminal->type != output_termcap
+ && terminal->type != output_msdos_raw)
+ emacs_abort ();
+
+ /* XXX I think the following code should be moved to separate hook
+ functions in system-dependent files. */
+#ifdef WINDOWSNT
+ /* FIXME: AFAIK, tty_read_avail_input is not used under w32 since the non-GUI
+ code sets read_socket_hook to w32_console_read_socket instead! */
+ return 0;
+#else /* not WINDOWSNT */
+ if (! tty->term_initted) /* In case we get called during bootstrap. */
+ return 0;
+
+ if (! tty->input)
+ return 0; /* The terminal is suspended. */
+
+#ifdef MSDOS
+ n_to_read = dos_keysns ();
+ if (n_to_read == 0)
+ return 0;
+
+ cbuf[0] = dos_keyread ();
+ nread = 1;
+
+#else /* not MSDOS */
+#ifdef HAVE_GPM
+ if (gpm_tty == tty)
+ {
+ Gpm_Event event;
+ struct input_event gpm_hold_quit;
+ int gpm, fd = gpm_fd;
+
+ EVENT_INIT (gpm_hold_quit);
+ gpm_hold_quit.kind = NO_EVENT;
+
+ /* gpm==1 if event received.
+ gpm==0 if the GPM daemon has closed the connection, in which case
+ Gpm_GetEvent closes gpm_fd and clears it to -1, which is why
+ we save it in `fd' so close_gpm can remove it from the
+ select masks.
+ gpm==-1 if a protocol error or EWOULDBLOCK; the latter is normal. */
+ while (gpm = Gpm_GetEvent (&event), gpm == 1) {
+ nread += handle_one_term_event (tty, &event, &gpm_hold_quit);
+ }
+ if (gpm == 0)
+ /* Presumably the GPM daemon has closed the connection. */
+ close_gpm (fd);
+ if (gpm_hold_quit.kind != NO_EVENT)
+ kbd_buffer_store_event (&gpm_hold_quit);
+ if (nread)
+ return nread;
+ }
+#endif /* HAVE_GPM */
+
+/* Determine how many characters we should *try* to read. */
+#ifdef USABLE_FIONREAD
+ /* Find out how much input is available. */
+ if (ioctl (fileno (tty->input), FIONREAD, &n_to_read) < 0)
+ {
+ if (! noninteractive)
+ return -2; /* Close this terminal. */
+ else
+ n_to_read = 0;
+ }
+ if (n_to_read == 0)
+ return 0;
+ if (n_to_read > sizeof cbuf)
+ n_to_read = sizeof cbuf;
+#elif defined USG || defined CYGWIN
+ /* Read some input if available, but don't wait. */
+ n_to_read = sizeof cbuf;
+ fcntl (fileno (tty->input), F_SETFL, O_NONBLOCK);
+#else
+# error "Cannot read without possibly delaying"
+#endif
+
+#ifdef subprocesses
+ /* Don't read more than we can store. */
+ if (n_to_read > buffer_free)
+ n_to_read = buffer_free;
+#endif /* subprocesses */
+
+ /* Now read; for one reason or another, this will not block.
+ NREAD is set to the number of chars read. */
+ do
+ {
+ nread = emacs_read (fileno (tty->input), (char *) cbuf, n_to_read);
+ /* POSIX infers that processes which are not in the session leader's
+ process group won't get SIGHUPs at logout time. BSDI adheres to
+ this part standard and returns -1 from read (0) with errno==EIO
+ when the control tty is taken away.
+ Jeffrey Honig <jch@bsdi.com> says this is generally safe. */
+ if (nread == -1 && errno == EIO)
+ return -2; /* Close this terminal. */
+#if defined (AIX) && defined (_BSD)
+ /* The kernel sometimes fails to deliver SIGHUP for ptys.
+ This looks incorrect, but it isn't, because _BSD causes
+ O_NDELAY to be defined in fcntl.h as O_NONBLOCK,
+ and that causes a value other than 0 when there is no input. */
+ if (nread == 0)
+ return -2; /* Close this terminal. */
+#endif
+ }
+ while (
+ /* We used to retry the read if it was interrupted.
+ But this does the wrong thing when O_NONBLOCK causes
+ an EAGAIN error. Does anybody know of a situation
+ where a retry is actually needed? */
+#if 0
+ nread < 0 && (errno == EAGAIN || errno == EFAULT
+#ifdef EBADSLT
+ || errno == EBADSLT
+#endif
+ )
+#else
+ 0
+#endif
+ );
+
+#ifndef USABLE_FIONREAD
+#if defined (USG) || defined (CYGWIN)
+ fcntl (fileno (tty->input), F_SETFL, 0);
+#endif /* USG or CYGWIN */
+#endif /* no FIONREAD */
+
+ if (nread <= 0)
+ return nread;
+
+#endif /* not MSDOS */
+#endif /* not WINDOWSNT */
+
+ for (i = 0; i < nread; i++)
+ {
+ struct input_event buf;
+ EVENT_INIT (buf);
+ buf.kind = ASCII_KEYSTROKE_EVENT;
+ buf.modifiers = 0;
+ if (tty->meta_key == 1 && (cbuf[i] & 0x80))
+ buf.modifiers = meta_modifier;
+ if (tty->meta_key != 2)
+ cbuf[i] &= ~0x80;
+
+ buf.code = cbuf[i];
+ /* Set the frame corresponding to the active tty. Note that the
+ value of selected_frame is not reliable here, redisplay tends
+ to temporarily change it. */
+ buf.frame_or_window = tty->top_frame;
+ buf.arg = Qnil;
+
+ kbd_buffer_store_event (&buf);
+ /* Don't look at input that follows a C-g too closely.
+ This reduces lossage due to autorepeat on C-g. */
+ if (buf.kind == ASCII_KEYSTROKE_EVENT
+ && buf.code == quit_char)
+ break;
+ }
+
+ return nread;
+}
+\f
+static void
+handle_async_input (void)
+{
+#ifdef USABLE_SIGIO
+ while (1)
+ {
+ int nread = gobble_input ();
+ /* -1 means it's not ok to read the input now.
+ UNBLOCK_INPUT will read it later; now, avoid infinite loop.
+ 0 means there was no keyboard input available. */
+ if (nread <= 0)
+ break;
+ }
+#endif
+}
+
+void
+process_pending_signals (void)
+{
+ pending_signals = 0;
+ handle_async_input ();
+ do_pending_atimers ();
+}
+
+/* Undo any number of BLOCK_INPUT calls down to level LEVEL,
+ and reinvoke any pending signal if the level is now 0 and
+ a fatal error is not already in progress. */
+
+void
+unblock_input_to (int level)
+{
+ interrupt_input_blocked = level;
+ if (level == 0)
+ {
+ if (pending_signals && !fatal_error_in_progress)
+ process_pending_signals ();
+ }
+ else if (level < 0)
+ emacs_abort ();
+}
+
+/* End critical section.
+
+ If doing signal-driven input, and a signal came in when input was
+ blocked, reinvoke the signal handler now to deal with it.
+
+ It will also process queued input, if it was not read before.
+ When a longer code sequence does not use block/unblock input
+ at all, the whole input gathered up to the next call to
+ unblock_input will be processed inside that call. */
+
+void
+unblock_input (void)
+{
+ unblock_input_to (interrupt_input_blocked - 1);
+}
+
+/* Undo any number of BLOCK_INPUT calls,
+ and also reinvoke any pending signal. */
+
+void
+totally_unblock_input (void)
+{
+ unblock_input_to (0);
+}
+
+#ifdef USABLE_SIGIO
+
+void
+handle_input_available_signal (int sig)
+{
+ pending_signals = 1;
+
+ if (input_available_clear_time)
+ *input_available_clear_time = make_timespec (0, 0);
+}
+
+static void
+deliver_input_available_signal (int sig)
+{
+ deliver_process_signal (sig, handle_input_available_signal);
+}
+#endif /* USABLE_SIGIO */
+
+\f
+/* User signal events. */
+
+struct user_signal_info
+{
+ /* Signal number. */
+ int sig;
+
+ /* Name of the signal. */
+ char *name;
+
+ /* Number of pending signals. */
+ int npending;
+
+ struct user_signal_info *next;
+};
+
+/* List of user signals. */
+static struct user_signal_info *user_signals = NULL;
+
+void
+add_user_signal (int sig, const char *name)
+{
+ struct sigaction action;
+ struct user_signal_info *p;
+
+ for (p = user_signals; p; p = p->next)
+ if (p->sig == sig)
+ /* Already added. */
+ return;
+
+ p = xmalloc (sizeof *p);
+ p->sig = sig;
+ p->name = xstrdup (name);
+ p->npending = 0;
+ p->next = user_signals;
+ user_signals = p;
+
+ emacs_sigaction_init (&action, deliver_user_signal);
+ sigaction (sig, &action, 0);
+}
+
+static void
+handle_user_signal (int sig)
+{
+ struct user_signal_info *p;
+ const char *special_event_name = NULL;
+
+ if (SYMBOLP (Vdebug_on_event))
+ special_event_name = SSDATA (SYMBOL_NAME (Vdebug_on_event));
+
+ for (p = user_signals; p; p = p->next)
+ if (p->sig == sig)
+ {
+ if (special_event_name
+ && strcmp (special_event_name, p->name) == 0)
+ {
+ /* Enter the debugger in many ways. */
+ debug_on_next_call = 1;
+ debug_on_quit = 1;
+ Vquit_flag = Qt;
+ Vinhibit_quit = Qnil;
+
+ /* Eat the event. */
+ break;
+ }
+
+ p->npending++;
+#ifdef USABLE_SIGIO
+ if (interrupt_input)
+ handle_input_available_signal (sig);
+ else
+#endif
+ {
+ /* Tell wait_reading_process_output that it needs to wake
+ up and look around. */
+ if (input_available_clear_time)
+ *input_available_clear_time = make_timespec (0, 0);
+ }
+ break;
+ }
+}
+
+static void
+deliver_user_signal (int sig)
+{
+ deliver_process_signal (sig, handle_user_signal);
+}
+
+static char *
+find_user_signal_name (int sig)
+{
+ struct user_signal_info *p;
+
+ for (p = user_signals; p; p = p->next)
+ if (p->sig == sig)
+ return p->name;
+
+ return NULL;
+}
+
+static void
+store_user_signal_events (void)
+{
+ struct user_signal_info *p;
+ struct input_event buf;
+ bool buf_initialized = 0;
+
+ for (p = user_signals; p; p = p->next)
+ if (p->npending > 0)
+ {
+ if (! buf_initialized)
+ {
+ memset (&buf, 0, sizeof buf);
+ buf.kind = USER_SIGNAL_EVENT;
+ buf.frame_or_window = selected_frame;
+ buf_initialized = 1;
+ }
+
+ do
+ {
+ buf.code = p->sig;
+ kbd_buffer_store_event (&buf);
+ p->npending--;
+ }
+ while (p->npending > 0);
+ }
+}
+
+\f
+static void menu_bar_item (Lisp_Object, Lisp_Object, Lisp_Object, void *);
+static Lisp_Object menu_bar_one_keymap_changed_items;
+
+/* These variables hold the vector under construction within
+ menu_bar_items and its subroutines, and the current index
+ for storing into that vector. */
+static Lisp_Object menu_bar_items_vector;
+static int menu_bar_items_index;
+
+
+static const char *separator_names[] = {
+ "space",
+ "no-line",
+ "single-line",
+ "double-line",
+ "single-dashed-line",
+ "double-dashed-line",
+ "shadow-etched-in",
+ "shadow-etched-out",
+ "shadow-etched-in-dash",
+ "shadow-etched-out-dash",
+ "shadow-double-etched-in",
+ "shadow-double-etched-out",
+ "shadow-double-etched-in-dash",
+ "shadow-double-etched-out-dash",
+ 0,
+};
+
+/* Return true if LABEL specifies a separator. */
+
+bool
+menu_separator_name_p (const char *label)
+{
+ if (!label)
+ return 0;
+ else if (strlen (label) > 3
+ && memcmp (label, "--", 2) == 0
+ && label[2] != '-')
+ {
+ int i;
+ label += 2;
+ for (i = 0; separator_names[i]; ++i)
+ if (strcmp (label, separator_names[i]) == 0)
+ return 1;
+ }
+ else
+ {
+ /* It's a separator if it contains only dashes. */
+ while (*label == '-')
+ ++label;
+ return (*label == 0);
+ }
+
+ return 0;
+}
+
+
+/* Return a vector of menu items for a menu bar, appropriate
+ to the current buffer. Each item has three elements in the vector:
+ KEY STRING MAPLIST.
+
+ OLD is an old vector we can optionally reuse, or nil. */
+
+Lisp_Object
+menu_bar_items (Lisp_Object old)
+{
+ /* The number of keymaps we're scanning right now, and the number of
+ keymaps we have allocated space for. */
+ ptrdiff_t nmaps;
+
+ /* maps[0..nmaps-1] are the prefix definitions of KEYBUF[0..t-1]
+ in the current keymaps, or nil where it is not a prefix. */
+ Lisp_Object *maps;
+
+ Lisp_Object mapsbuf[3];
+ Lisp_Object def, tail;
+
+ ptrdiff_t mapno;
+ Lisp_Object oquit;
+
+ USE_SAFE_ALLOCA;
+
+ /* In order to build the menus, we need to call the keymap
+ accessors. They all call QUIT. But this function is called
+ during redisplay, during which a quit is fatal. So inhibit
+ quitting while building the menus.
+ We do this instead of specbind because (1) errors will clear it anyway
+ and (2) this avoids risk of specpdl overflow. */
+ oquit = Vinhibit_quit;
+ Vinhibit_quit = Qt;
+
+ if (!NILP (old))
+ menu_bar_items_vector = old;
+ else
+ menu_bar_items_vector = Fmake_vector (make_number (24), Qnil);
+ menu_bar_items_index = 0;
+
+ /* Build our list of keymaps.
+ If we recognize a function key and replace its escape sequence in
+ keybuf with its symbol, or if the sequence starts with a mouse
+ click and we need to switch buffers, we jump back here to rebuild
+ the initial keymaps from the current buffer. */
+ {
+ Lisp_Object *tmaps;
+
+ /* Should overriding-terminal-local-map and overriding-local-map apply? */
+ if (!NILP (Voverriding_local_map_menu_flag)
+ && !NILP (Voverriding_local_map))
+ {
+ /* Yes, use them (if non-nil) as well as the global map. */
+ maps = mapsbuf;
+ nmaps = 0;
+ if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map)))
+ maps[nmaps++] = KVAR (current_kboard, Voverriding_terminal_local_map);
+ if (!NILP (Voverriding_local_map))
+ maps[nmaps++] = Voverriding_local_map;
+ }
+ else
+ {
+ /* No, so use major and minor mode keymaps and keymap property.
+ Note that menu-bar bindings in the local-map and keymap
+ properties may not work reliable, as they are only
+ recognized when the menu-bar (or mode-line) is updated,
+ which does not normally happen after every command. */
+ Lisp_Object tem;
+ ptrdiff_t nminor;
+ nminor = current_minor_maps (NULL, &tmaps);
+ SAFE_NALLOCA (maps, 1, nminor + 4);
+ nmaps = 0;
+ tem = KVAR (current_kboard, Voverriding_terminal_local_map);
+ if (!NILP (tem) && !NILP (Voverriding_local_map_menu_flag))
+ maps[nmaps++] = tem;
+ if (tem = get_local_map (PT, current_buffer, Qkeymap), !NILP (tem))
+ maps[nmaps++] = tem;
+ memcpy (maps + nmaps, tmaps, nminor * sizeof (maps[0]));
+ nmaps += nminor;
+ maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map);
+ }
+ maps[nmaps++] = current_global_map;
+ }
+
+ /* Look up in each map the dummy prefix key `menu-bar'. */
+
+ for (mapno = nmaps - 1; mapno >= 0; mapno--)
+ if (!NILP (maps[mapno]))
+ {
+ def = get_keymap (access_keymap (maps[mapno], Qmenu_bar, 1, 0, 1),
+ 0, 1);
+ if (CONSP (def))
+ {
+ menu_bar_one_keymap_changed_items = Qnil;
+ map_keymap_canonical (def, menu_bar_item, Qnil, NULL);
+ }
+ }
+
+ /* Move to the end those items that should be at the end. */
+
+ for (tail = Vmenu_bar_final_items; CONSP (tail); tail = XCDR (tail))
+ {
+ int i;
+ int end = menu_bar_items_index;
+
+ for (i = 0; i < end; i += 4)
+ if (EQ (XCAR (tail), AREF (menu_bar_items_vector, i)))
+ {
+ Lisp_Object tem0, tem1, tem2, tem3;
+ /* Move the item at index I to the end,
+ shifting all the others forward. */
+ tem0 = AREF (menu_bar_items_vector, i + 0);
+ tem1 = AREF (menu_bar_items_vector, i + 1);
+ tem2 = AREF (menu_bar_items_vector, i + 2);
+ tem3 = AREF (menu_bar_items_vector, i + 3);
+ if (end > i + 4)
+ memmove (aref_addr (menu_bar_items_vector, i),
+ aref_addr (menu_bar_items_vector, i + 4),
+ (end - i - 4) * word_size);
+ ASET (menu_bar_items_vector, end - 4, tem0);
+ ASET (menu_bar_items_vector, end - 3, tem1);
+ ASET (menu_bar_items_vector, end - 2, tem2);
+ ASET (menu_bar_items_vector, end - 1, tem3);
+ break;
+ }
+ }
+
+ /* Add nil, nil, nil, nil at the end. */
+ {
+ int i = menu_bar_items_index;
+ if (i + 4 > ASIZE (menu_bar_items_vector))
+ menu_bar_items_vector
+ = larger_vector (menu_bar_items_vector, 4, -1);
+ /* Add this item. */
+ ASET (menu_bar_items_vector, i, Qnil); i++;
+ ASET (menu_bar_items_vector, i, Qnil); i++;
+ ASET (menu_bar_items_vector, i, Qnil); i++;
+ ASET (menu_bar_items_vector, i, Qnil); i++;
+ menu_bar_items_index = i;
+ }
+
+ Vinhibit_quit = oquit;
+ SAFE_FREE ();
+ return menu_bar_items_vector;
+}
+\f
+/* Add one item to menu_bar_items_vector, for KEY, ITEM_STRING and DEF.
+ If there's already an item for KEY, add this DEF to it. */
+
+Lisp_Object item_properties;
+
+static void
+menu_bar_item (Lisp_Object key, Lisp_Object item, Lisp_Object dummy1, void *dummy2)
+{
+ struct gcpro gcpro1;
+ int i;
+ bool parsed;
+ Lisp_Object tem;
+
+ if (EQ (item, Qundefined))
+ {
+ /* If a map has an explicit `undefined' as definition,
+ discard any previously made menu bar item. */
+
+ for (i = 0; i < menu_bar_items_index; i += 4)
+ if (EQ (key, AREF (menu_bar_items_vector, i)))
+ {
+ if (menu_bar_items_index > i + 4)
+ memmove (aref_addr (menu_bar_items_vector, i),
+ aref_addr (menu_bar_items_vector, i + 4),
+ (menu_bar_items_index - i - 4) * word_size);
+ menu_bar_items_index -= 4;
+ }
+ }
+
+ /* If this keymap has already contributed to this KEY,
+ don't contribute to it a second time. */
+ tem = Fmemq (key, menu_bar_one_keymap_changed_items);
+ if (!NILP (tem) || NILP (item))
+ return;
+
+ menu_bar_one_keymap_changed_items
+ = Fcons (key, menu_bar_one_keymap_changed_items);
+
+ /* We add to menu_bar_one_keymap_changed_items before doing the
+ parse_menu_item, so that if it turns out it wasn't a menu item,
+ it still correctly hides any further menu item. */
+ GCPRO1 (key);
+ parsed = parse_menu_item (item, 1);
+ UNGCPRO;
+ if (!parsed)
+ return;
+
+ item = AREF (item_properties, ITEM_PROPERTY_DEF);
+
+ /* Find any existing item for this KEY. */
+ for (i = 0; i < menu_bar_items_index; i += 4)
+ if (EQ (key, AREF (menu_bar_items_vector, i)))
+ break;
+
+ /* If we did not find this KEY, add it at the end. */
+ if (i == menu_bar_items_index)
+ {
+ /* If vector is too small, get a bigger one. */
+ if (i + 4 > ASIZE (menu_bar_items_vector))
+ menu_bar_items_vector = larger_vector (menu_bar_items_vector, 4, -1);
+ /* Add this item. */
+ ASET (menu_bar_items_vector, i, key); i++;
+ ASET (menu_bar_items_vector, i,
+ AREF (item_properties, ITEM_PROPERTY_NAME)); i++;
+ ASET (menu_bar_items_vector, i, list1 (item)); i++;
+ ASET (menu_bar_items_vector, i, make_number (0)); i++;
+ menu_bar_items_index = i;
+ }
+ /* We did find an item for this KEY. Add ITEM to its list of maps. */
+ else
+ {
+ Lisp_Object old;
+ old = AREF (menu_bar_items_vector, i + 2);
+ /* If the new and the old items are not both keymaps,
+ the lookup will only find `item'. */
+ item = Fcons (item, KEYMAPP (item) && KEYMAPP (XCAR (old)) ? old : Qnil);
+ ASET (menu_bar_items_vector, i + 2, item);
+ }
+}
+\f
+ /* This is used as the handler when calling menu_item_eval_property. */
+static Lisp_Object
+menu_item_eval_property_1 (Lisp_Object arg)
+{
+ /* If we got a quit from within the menu computation,
+ quit all the way out of it. This takes care of C-] in the debugger. */
+ if (CONSP (arg) && EQ (XCAR (arg), Qquit))
+ Fsignal (Qquit, Qnil);
+
+ return Qnil;
+}
+
+static Lisp_Object
+eval_dyn (Lisp_Object form)
+{
+ return Feval (form, Qnil);
+}
+
+/* Evaluate an expression and return the result (or nil if something
+ went wrong). Used to evaluate dynamic parts of menu items. */
+Lisp_Object
+menu_item_eval_property (Lisp_Object sexpr)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ Lisp_Object val;
+ specbind (Qinhibit_redisplay, Qt);
+ val = internal_condition_case_1 (eval_dyn, sexpr, Qerror,
+ menu_item_eval_property_1);
+ return unbind_to (count, val);
+}
+
+/* This function parses a menu item and leaves the result in the
+ vector item_properties.
+ ITEM is a key binding, a possible menu item.
+ INMENUBAR is > 0 when this is considered for an entry in a menu bar
+ top level.
+ INMENUBAR is < 0 when this is considered for an entry in a keyboard menu.
+ parse_menu_item returns true if the item is a menu item and false
+ otherwise. */
+
+bool
+parse_menu_item (Lisp_Object item, int inmenubar)
+{
+ Lisp_Object def, tem, item_string, start;
+ Lisp_Object filter;
+ Lisp_Object keyhint;
+ int i;
+
+ filter = Qnil;
+ keyhint = Qnil;
+
+ if (!CONSP (item))
+ return 0;
+
+ /* Create item_properties vector if necessary. */
+ if (NILP (item_properties))
+ item_properties
+ = Fmake_vector (make_number (ITEM_PROPERTY_ENABLE + 1), Qnil);
+
+ /* Initialize optional entries. */
+ for (i = ITEM_PROPERTY_DEF; i < ITEM_PROPERTY_ENABLE; i++)
+ ASET (item_properties, i, Qnil);
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt);
+
+ /* Save the item here to protect it from GC. */
+ ASET (item_properties, ITEM_PROPERTY_ITEM, item);
+
+ item_string = XCAR (item);
+
+ start = item;
+ item = XCDR (item);
+ if (STRINGP (item_string))
+ {
+ /* Old format menu item. */
+ ASET (item_properties, ITEM_PROPERTY_NAME, item_string);
+
+ /* Maybe help string. */
+ if (CONSP (item) && STRINGP (XCAR (item)))
+ {
+ ASET (item_properties, ITEM_PROPERTY_HELP, XCAR (item));
+ start = item;
+ item = XCDR (item);
+ }
+
+ /* Maybe an obsolete key binding cache. */
+ if (CONSP (item) && CONSP (XCAR (item))
+ && (NILP (XCAR (XCAR (item)))
+ || VECTORP (XCAR (XCAR (item)))))
+ item = XCDR (item);
+
+ /* This is the real definition--the function to run. */
+ ASET (item_properties, ITEM_PROPERTY_DEF, item);
+
+ /* Get enable property, if any. */
+ if (SYMBOLP (item))
+ {
+ tem = Fget (item, Qmenu_enable);
+ if (!NILP (Venable_disabled_menus_and_buttons))
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt);
+ else if (!NILP (tem))
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, tem);
+ }
+ }
+ else if (EQ (item_string, Qmenu_item) && CONSP (item))
+ {
+ /* New format menu item. */
+ ASET (item_properties, ITEM_PROPERTY_NAME, XCAR (item));
+ start = XCDR (item);
+ if (CONSP (start))
+ {
+ /* We have a real binding. */
+ ASET (item_properties, ITEM_PROPERTY_DEF, XCAR (start));
+
+ item = XCDR (start);
+ /* Is there an obsolete cache list with key equivalences. */
+ if (CONSP (item) && CONSP (XCAR (item)))
+ item = XCDR (item);
+
+ /* Parse properties. */
+ while (CONSP (item) && CONSP (XCDR (item)))
+ {
+ tem = XCAR (item);
+ item = XCDR (item);
+
+ if (EQ (tem, QCenable))
+ {
+ if (!NILP (Venable_disabled_menus_and_buttons))
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, Qt);
+ else
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, XCAR (item));
+ }
+ else if (EQ (tem, QCvisible))
+ {
+ /* If got a visible property and that evaluates to nil
+ then ignore this item. */
+ tem = menu_item_eval_property (XCAR (item));
+ if (NILP (tem))
+ return 0;
+ }
+ else if (EQ (tem, QChelp))
+ ASET (item_properties, ITEM_PROPERTY_HELP, XCAR (item));
+ else if (EQ (tem, QCfilter))
+ filter = item;
+ else if (EQ (tem, QCkey_sequence))
+ {
+ tem = XCAR (item);
+ if (SYMBOLP (tem) || STRINGP (tem) || VECTORP (tem))
+ /* Be GC protected. Set keyhint to item instead of tem. */
+ keyhint = item;
+ }
+ else if (EQ (tem, QCkeys))
+ {
+ tem = XCAR (item);
+ if (CONSP (tem) || STRINGP (tem))
+ ASET (item_properties, ITEM_PROPERTY_KEYEQ, tem);
+ }
+ else if (EQ (tem, QCbutton) && CONSP (XCAR (item)))
+ {
+ Lisp_Object type;
+ tem = XCAR (item);
+ type = XCAR (tem);
+ if (EQ (type, QCtoggle) || EQ (type, QCradio))
+ {
+ ASET (item_properties, ITEM_PROPERTY_SELECTED,
+ XCDR (tem));
+ ASET (item_properties, ITEM_PROPERTY_TYPE, type);
+ }
+ }
+ item = XCDR (item);
+ }
+ }
+ else if (inmenubar || !NILP (start))
+ return 0;
+ }
+ else
+ return 0; /* not a menu item */
+
+ /* If item string is not a string, evaluate it to get string.
+ If we don't get a string, skip this item. */
+ item_string = AREF (item_properties, ITEM_PROPERTY_NAME);
+ if (!(STRINGP (item_string)))
+ {
+ item_string = menu_item_eval_property (item_string);
+ if (!STRINGP (item_string))
+ return 0;
+ ASET (item_properties, ITEM_PROPERTY_NAME, item_string);
+ }
+
+ /* If got a filter apply it on definition. */
+ def = AREF (item_properties, ITEM_PROPERTY_DEF);
+ if (!NILP (filter))
+ {
+ def = menu_item_eval_property (list2 (XCAR (filter),
+ list2 (Qquote, def)));
+
+ ASET (item_properties, ITEM_PROPERTY_DEF, def);
+ }
+
+ /* Enable or disable selection of item. */
+ tem = AREF (item_properties, ITEM_PROPERTY_ENABLE);
+ if (!EQ (tem, Qt))
+ {
+ tem = menu_item_eval_property (tem);
+ if (inmenubar && NILP (tem))
+ return 0; /* Ignore disabled items in menu bar. */
+ ASET (item_properties, ITEM_PROPERTY_ENABLE, tem);
+ }
+
+ /* If we got no definition, this item is just unselectable text which
+ is OK in a submenu but not in the menubar. */
+ if (NILP (def))
+ return (!inmenubar);
+
+ /* See if this is a separate pane or a submenu. */
+ def = AREF (item_properties, ITEM_PROPERTY_DEF);
+ tem = get_keymap (def, 0, 1);
+ /* For a subkeymap, just record its details and exit. */
+ if (CONSP (tem))
+ {
+ ASET (item_properties, ITEM_PROPERTY_MAP, tem);
+ ASET (item_properties, ITEM_PROPERTY_DEF, tem);
+ return 1;
+ }
+
+ /* At the top level in the menu bar, do likewise for commands also.
+ The menu bar does not display equivalent key bindings anyway.
+ ITEM_PROPERTY_DEF is already set up properly. */
+ if (inmenubar > 0)
+ return 1;
+
+ { /* This is a command. See if there is an equivalent key binding. */
+ Lisp_Object keyeq = AREF (item_properties, ITEM_PROPERTY_KEYEQ);
+ AUTO_STRING (space_space, " ");
+
+ /* The previous code preferred :key-sequence to :keys, so we
+ preserve this behavior. */
+ if (STRINGP (keyeq) && !CONSP (keyhint))
+ keyeq = concat2 (space_space, Fsubstitute_command_keys (keyeq));
+ else
+ {
+ Lisp_Object prefix = keyeq;
+ Lisp_Object keys = Qnil;
+
+ if (CONSP (prefix))
+ {
+ def = XCAR (prefix);
+ prefix = XCDR (prefix);
+ }
+ else
+ def = AREF (item_properties, ITEM_PROPERTY_DEF);
+
+ if (CONSP (keyhint) && !NILP (XCAR (keyhint)))
+ {
+ keys = XCAR (keyhint);
+ tem = Fkey_binding (keys, Qnil, Qnil, Qnil);
+
+ /* We have a suggested key. Is it bound to the command? */
+ if (NILP (tem)
+ || (!EQ (tem, def)
+ /* If the command is an alias for another
+ (such as lmenu.el set it up), check if the
+ original command matches the cached command. */
+ && !(SYMBOLP (def)
+ && EQ (tem, XSYMBOL (def)->function))))
+ keys = Qnil;
+ }
+
+ if (NILP (keys))
+ keys = Fwhere_is_internal (def, Qnil, Qt, Qnil, Qnil);
+
+ if (!NILP (keys))
+ {
+ tem = Fkey_description (keys, Qnil);
+ if (CONSP (prefix))
+ {
+ if (STRINGP (XCAR (prefix)))
+ tem = concat2 (XCAR (prefix), tem);
+ if (STRINGP (XCDR (prefix)))
+ tem = concat2 (tem, XCDR (prefix));
+ }
+ keyeq = concat2 (space_space, tem);
+ }
+ else
+ keyeq = Qnil;
+ }
+
+ /* If we have an equivalent key binding, use that. */
+ ASET (item_properties, ITEM_PROPERTY_KEYEQ, keyeq);
+ }
+
+ /* Include this when menu help is implemented.
+ tem = XVECTOR (item_properties)->contents[ITEM_PROPERTY_HELP];
+ if (!(NILP (tem) || STRINGP (tem)))
+ {
+ tem = menu_item_eval_property (tem);
+ if (!STRINGP (tem))
+ tem = Qnil;
+ XVECTOR (item_properties)->contents[ITEM_PROPERTY_HELP] = tem;
+ }
+ */
+
+ /* Handle radio buttons or toggle boxes. */
+ tem = AREF (item_properties, ITEM_PROPERTY_SELECTED);
+ if (!NILP (tem))
+ ASET (item_properties, ITEM_PROPERTY_SELECTED,
+ menu_item_eval_property (tem));
+
+ return 1;
+}
+
+
+\f
+/***********************************************************************
+ Tool-bars
+ ***********************************************************************/
+
+/* A vector holding tool bar items while they are parsed in function
+ tool_bar_items. Each item occupies TOOL_BAR_ITEM_NSCLOTS elements
+ in the vector. */
+
+static Lisp_Object tool_bar_items_vector;
+
+/* A vector holding the result of parse_tool_bar_item. Layout is like
+ the one for a single item in tool_bar_items_vector. */
+
+static Lisp_Object tool_bar_item_properties;
+
+/* Next free index in tool_bar_items_vector. */
+
+static int ntool_bar_items;
+
+/* Function prototypes. */
+
+static void init_tool_bar_items (Lisp_Object);
+static void process_tool_bar_item (Lisp_Object, Lisp_Object, Lisp_Object,
+ void *);
+static bool parse_tool_bar_item (Lisp_Object, Lisp_Object);
+static void append_tool_bar_item (void);
+
+
+/* Return a vector of tool bar items for keymaps currently in effect.
+ Reuse vector REUSE if non-nil. Return in *NITEMS the number of
+ tool bar items found. */
+
+Lisp_Object
+tool_bar_items (Lisp_Object reuse, int *nitems)
+{
+ Lisp_Object *maps;
+ Lisp_Object mapsbuf[3];
+ ptrdiff_t nmaps, i;
+ Lisp_Object oquit;
+ Lisp_Object *tmaps;
+ USE_SAFE_ALLOCA;
+
+ *nitems = 0;
+
+ /* In order to build the menus, we need to call the keymap
+ accessors. They all call QUIT. But this function is called
+ during redisplay, during which a quit is fatal. So inhibit
+ quitting while building the menus. We do this instead of
+ specbind because (1) errors will clear it anyway and (2) this
+ avoids risk of specpdl overflow. */
+ oquit = Vinhibit_quit;
+ Vinhibit_quit = Qt;
+
+ /* Initialize tool_bar_items_vector and protect it from GC. */
+ init_tool_bar_items (reuse);
+
+ /* Build list of keymaps in maps. Set nmaps to the number of maps
+ to process. */
+
+ /* Should overriding-terminal-local-map and overriding-local-map apply? */
+ if (!NILP (Voverriding_local_map_menu_flag)
+ && !NILP (Voverriding_local_map))
+ {
+ /* Yes, use them (if non-nil) as well as the global map. */
+ maps = mapsbuf;
+ nmaps = 0;
+ if (!NILP (KVAR (current_kboard, Voverriding_terminal_local_map)))
+ maps[nmaps++] = KVAR (current_kboard, Voverriding_terminal_local_map);
+ if (!NILP (Voverriding_local_map))
+ maps[nmaps++] = Voverriding_local_map;
+ }
+ else
+ {
+ /* No, so use major and minor mode keymaps and keymap property.
+ Note that tool-bar bindings in the local-map and keymap
+ properties may not work reliable, as they are only
+ recognized when the tool-bar (or mode-line) is updated,
+ which does not normally happen after every command. */
+ Lisp_Object tem;
+ ptrdiff_t nminor;
+ nminor = current_minor_maps (NULL, &tmaps);
+ SAFE_NALLOCA (maps, 1, nminor + 4);
+ nmaps = 0;
+ tem = KVAR (current_kboard, Voverriding_terminal_local_map);
+ if (!NILP (tem) && !NILP (Voverriding_local_map_menu_flag))
+ maps[nmaps++] = tem;
+ if (tem = get_local_map (PT, current_buffer, Qkeymap), !NILP (tem))
+ maps[nmaps++] = tem;
+ memcpy (maps + nmaps, tmaps, nminor * sizeof (maps[0]));
+ nmaps += nminor;
+ maps[nmaps++] = get_local_map (PT, current_buffer, Qlocal_map);
+ }
+
+ /* Add global keymap at the end. */
+ maps[nmaps++] = current_global_map;
+
+ /* Process maps in reverse order and look up in each map the prefix
+ key `tool-bar'. */
+ for (i = nmaps - 1; i >= 0; --i)
+ if (!NILP (maps[i]))
+ {
+ Lisp_Object keymap;
+
+ keymap = get_keymap (access_keymap (maps[i], Qtool_bar, 1, 0, 1), 0, 1);
+ if (CONSP (keymap))
+ map_keymap (keymap, process_tool_bar_item, Qnil, NULL, 1);
+ }
+
+ Vinhibit_quit = oquit;
+ *nitems = ntool_bar_items / TOOL_BAR_ITEM_NSLOTS;
+ SAFE_FREE ();
+ return tool_bar_items_vector;
+}
+
+
+/* Process the definition of KEY which is DEF. */
+
+static void
+process_tool_bar_item (Lisp_Object key, Lisp_Object def, Lisp_Object data, void *args)
+{
+ int i;
+ struct gcpro gcpro1, gcpro2;
+
+ /* Protect KEY and DEF from GC because parse_tool_bar_item may call
+ eval. */
+ GCPRO2 (key, def);
+
+ if (EQ (def, Qundefined))
+ {
+ /* If a map has an explicit `undefined' as definition,
+ discard any previously made item. */
+ for (i = 0; i < ntool_bar_items; i += TOOL_BAR_ITEM_NSLOTS)
+ {
+ Lisp_Object *v = XVECTOR (tool_bar_items_vector)->contents + i;
+
+ if (EQ (key, v[TOOL_BAR_ITEM_KEY]))
+ {
+ if (ntool_bar_items > i + TOOL_BAR_ITEM_NSLOTS)
+ memmove (v, v + TOOL_BAR_ITEM_NSLOTS,
+ ((ntool_bar_items - i - TOOL_BAR_ITEM_NSLOTS)
+ * word_size));
+ ntool_bar_items -= TOOL_BAR_ITEM_NSLOTS;
+ break;
+ }
+ }
+ }
+ else if (parse_tool_bar_item (key, def))
+ /* Append a new tool bar item to tool_bar_items_vector. Accept
+ more than one definition for the same key. */
+ append_tool_bar_item ();
+
+ UNGCPRO;
+}
+
+/* Access slot with index IDX of vector tool_bar_item_properties. */
+#define PROP(IDX) AREF (tool_bar_item_properties, (IDX))
+static void
+set_prop (ptrdiff_t idx, Lisp_Object val)
+{
+ ASET (tool_bar_item_properties, idx, val);
+}
+
+
+/* Parse a tool bar item specification ITEM for key KEY and return the
+ result in tool_bar_item_properties. Value is false if ITEM is
+ invalid.
+
+ ITEM is a list `(menu-item CAPTION BINDING PROPS...)'.
+
+ CAPTION is the caption of the item, If it's not a string, it is
+ evaluated to get a string.
+
+ BINDING is the tool bar item's binding. Tool-bar items with keymaps
+ as binding are currently ignored.
+
+ The following properties are recognized:
+
+ - `:enable FORM'.
+
+ FORM is evaluated and specifies whether the tool bar item is
+ enabled or disabled.
+
+ - `:visible FORM'
+
+ FORM is evaluated and specifies whether the tool bar item is visible.
+
+ - `:filter FUNCTION'
+
+ FUNCTION is invoked with one parameter `(quote BINDING)'. Its
+ result is stored as the new binding.
+
+ - `:button (TYPE SELECTED)'
+
+ TYPE must be one of `:radio' or `:toggle'. SELECTED is evaluated
+ and specifies whether the button is selected (pressed) or not.
+
+ - `:image IMAGES'
+
+ IMAGES is either a single image specification or a vector of four
+ image specifications. See enum tool_bar_item_images.
+
+ - `:help HELP-STRING'.
+
+ Gives a help string to display for the tool bar item.
+
+ - `:label LABEL-STRING'.
+
+ A text label to show with the tool bar button if labels are enabled. */
+
+static bool
+parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
+{
+ Lisp_Object filter = Qnil;
+ Lisp_Object caption;
+ int i;
+ bool have_label = 0;
+
+ /* Definition looks like `(menu-item CAPTION BINDING PROPS...)'.
+ Rule out items that aren't lists, don't start with
+ `menu-item' or whose rest following `tool-bar-item' is not a
+ list. */
+ if (!CONSP (item))
+ return 0;
+
+ /* As an exception, allow old-style menu separators. */
+ if (STRINGP (XCAR (item)))
+ item = list1 (XCAR (item));
+ else if (!EQ (XCAR (item), Qmenu_item)
+ || (item = XCDR (item), !CONSP (item)))
+ return 0;
+
+ /* Create tool_bar_item_properties vector if necessary. Reset it to
+ defaults. */
+ if (VECTORP (tool_bar_item_properties))
+ {
+ for (i = 0; i < TOOL_BAR_ITEM_NSLOTS; ++i)
+ set_prop (i, Qnil);
+ }
+ else
+ tool_bar_item_properties
+ = Fmake_vector (make_number (TOOL_BAR_ITEM_NSLOTS), Qnil);
+
+ /* Set defaults. */
+ set_prop (TOOL_BAR_ITEM_KEY, key);
+ set_prop (TOOL_BAR_ITEM_ENABLED_P, Qt);
+
+ /* Get the caption of the item. If the caption is not a string,
+ evaluate it to get a string. If we don't get a string, skip this
+ item. */
+ caption = XCAR (item);
+ if (!STRINGP (caption))
+ {
+ caption = menu_item_eval_property (caption);
+ if (!STRINGP (caption))
+ return 0;
+ }
+ set_prop (TOOL_BAR_ITEM_CAPTION, caption);
+
+ /* If the rest following the caption is not a list, the menu item is
+ either a separator, or invalid. */
+ item = XCDR (item);
+ if (!CONSP (item))
+ {
+ if (menu_separator_name_p (SSDATA (caption)))
+ {
+ set_prop (TOOL_BAR_ITEM_TYPE, Qt);
+#if !defined (USE_GTK) && !defined (HAVE_NS)
+ /* If we use build_desired_tool_bar_string to render the
+ tool bar, the separator is rendered as an image. */
+ set_prop (TOOL_BAR_ITEM_IMAGES,
+ (menu_item_eval_property
+ (Vtool_bar_separator_image_expression)));
+ set_prop (TOOL_BAR_ITEM_ENABLED_P, Qnil);
+ set_prop (TOOL_BAR_ITEM_SELECTED_P, Qnil);
+ set_prop (TOOL_BAR_ITEM_CAPTION, Qnil);
+#endif
+ return 1;
+ }
+ return 0;
+ }
+
+ /* Store the binding. */
+ set_prop (TOOL_BAR_ITEM_BINDING, XCAR (item));
+ item = XCDR (item);
+
+ /* Ignore cached key binding, if any. */
+ if (CONSP (item) && CONSP (XCAR (item)))
+ item = XCDR (item);
+
+ /* Process the rest of the properties. */
+ for (; CONSP (item) && CONSP (XCDR (item)); item = XCDR (XCDR (item)))
+ {
+ Lisp_Object ikey, value;
+
+ ikey = XCAR (item);
+ value = XCAR (XCDR (item));
+
+ if (EQ (ikey, QCenable))
+ {
+ /* `:enable FORM'. */
+ if (!NILP (Venable_disabled_menus_and_buttons))
+ set_prop (TOOL_BAR_ITEM_ENABLED_P, Qt);
+ else
+ set_prop (TOOL_BAR_ITEM_ENABLED_P, value);
+ }
+ else if (EQ (ikey, QCvisible))
+ {
+ /* `:visible FORM'. If got a visible property and that
+ evaluates to nil then ignore this item. */
+ if (NILP (menu_item_eval_property (value)))
+ return 0;
+ }
+ else if (EQ (ikey, QChelp))
+ /* `:help HELP-STRING'. */
+ set_prop (TOOL_BAR_ITEM_HELP, value);
+ else if (EQ (ikey, QCvert_only))
+ /* `:vert-only t/nil'. */
+ set_prop (TOOL_BAR_ITEM_VERT_ONLY, value);
+ else if (EQ (ikey, QClabel))
+ {
+ const char *bad_label = "!!?GARBLED ITEM?!!";
+ /* `:label LABEL-STRING'. */
+ set_prop (TOOL_BAR_ITEM_LABEL,
+ STRINGP (value) ? value : build_string (bad_label));
+ have_label = 1;
+ }
+ else if (EQ (ikey, QCfilter))
+ /* ':filter FORM'. */
+ filter = value;
+ else if (EQ (ikey, QCbutton) && CONSP (value))
+ {
+ /* `:button (TYPE . SELECTED)'. */
+ Lisp_Object type, selected;
+
+ type = XCAR (value);
+ selected = XCDR (value);
+ if (EQ (type, QCtoggle) || EQ (type, QCradio))
+ {
+ set_prop (TOOL_BAR_ITEM_SELECTED_P, selected);
+ set_prop (TOOL_BAR_ITEM_TYPE, type);
+ }
+ }
+ else if (EQ (ikey, QCimage)
+ && (CONSP (value)
+ || (VECTORP (value) && ASIZE (value) == 4)))
+ /* Value is either a single image specification or a vector
+ of 4 such specifications for the different button states. */
+ set_prop (TOOL_BAR_ITEM_IMAGES, value);
+ else if (EQ (ikey, QCrtl))
+ /* ':rtl STRING' */
+ set_prop (TOOL_BAR_ITEM_RTL_IMAGE, value);
+ }
+
+
+ if (!have_label)
+ {
+ /* Try to make one from caption and key. */
+ Lisp_Object tkey = PROP (TOOL_BAR_ITEM_KEY);
+ Lisp_Object tcapt = PROP (TOOL_BAR_ITEM_CAPTION);
+ const char *label = SYMBOLP (tkey) ? SSDATA (SYMBOL_NAME (tkey)) : "";
+ const char *capt = STRINGP (tcapt) ? SSDATA (tcapt) : "";
+ ptrdiff_t max_lbl =
+ 2 * max (0, min (tool_bar_max_label_size, STRING_BYTES_BOUND / 2));
+ char *buf = xmalloc (max_lbl + 1);
+ Lisp_Object new_lbl;
+ ptrdiff_t caption_len = strlen (capt);
+
+ if (caption_len <= max_lbl && capt[0] != '\0')
+ {
+ strcpy (buf, capt);
+ while (caption_len > 0 && buf[caption_len - 1] == '.')
+ caption_len--;
+ buf[caption_len] = '\0';
+ label = capt = buf;
+ }
+
+ if (strlen (label) <= max_lbl && label[0] != '\0')
+ {
+ ptrdiff_t j;
+ if (label != buf)
+ strcpy (buf, label);
+
+ for (j = 0; buf[j] != '\0'; ++j)
+ if (buf[j] == '-')
+ buf[j] = ' ';
+ label = buf;
+ }
+ else
+ label = "";
+
+ new_lbl = Fupcase_initials (build_string (label));
+ if (SCHARS (new_lbl) <= tool_bar_max_label_size)
+ set_prop (TOOL_BAR_ITEM_LABEL, new_lbl);
+ else
+ set_prop (TOOL_BAR_ITEM_LABEL, empty_unibyte_string);
+ xfree (buf);
+ }
+
+ /* If got a filter apply it on binding. */
+ if (!NILP (filter))
+ set_prop (TOOL_BAR_ITEM_BINDING,
+ (menu_item_eval_property
+ (list2 (filter,
+ list2 (Qquote,
+ PROP (TOOL_BAR_ITEM_BINDING))))));
+
+ /* See if the binding is a keymap. Give up if it is. */
+ if (CONSP (get_keymap (PROP (TOOL_BAR_ITEM_BINDING), 0, 1)))
+ return 0;
+
+ /* Enable or disable selection of item. */
+ if (!EQ (PROP (TOOL_BAR_ITEM_ENABLED_P), Qt))
+ set_prop (TOOL_BAR_ITEM_ENABLED_P,
+ menu_item_eval_property (PROP (TOOL_BAR_ITEM_ENABLED_P)));
+
+ /* Handle radio buttons or toggle boxes. */
+ if (!NILP (PROP (TOOL_BAR_ITEM_SELECTED_P)))
+ set_prop (TOOL_BAR_ITEM_SELECTED_P,
+ menu_item_eval_property (PROP (TOOL_BAR_ITEM_SELECTED_P)));
+
+ return 1;
+
+#undef PROP
+}
+
+
+/* Initialize tool_bar_items_vector. REUSE, if non-nil, is a vector
+ that can be reused. */
+
+static void
+init_tool_bar_items (Lisp_Object reuse)
+{
+ if (VECTORP (reuse))
+ tool_bar_items_vector = reuse;
+ else
+ tool_bar_items_vector = Fmake_vector (make_number (64), Qnil);
+ ntool_bar_items = 0;
+}
+
+
+/* Append parsed tool bar item properties from
+ tool_bar_item_properties */
+
+static void
+append_tool_bar_item (void)
+{
+ ptrdiff_t incr
+ = (ntool_bar_items
+ - (ASIZE (tool_bar_items_vector) - TOOL_BAR_ITEM_NSLOTS));
+
+ /* Enlarge tool_bar_items_vector if necessary. */
+ if (incr > 0)
+ tool_bar_items_vector = larger_vector (tool_bar_items_vector, incr, -1);
+
+ /* Append entries from tool_bar_item_properties to the end of
+ tool_bar_items_vector. */
+ vcopy (tool_bar_items_vector, ntool_bar_items,
+ XVECTOR (tool_bar_item_properties)->contents, TOOL_BAR_ITEM_NSLOTS);
+ ntool_bar_items += TOOL_BAR_ITEM_NSLOTS;
+}
+
+
+
+
+\f
+/* Read a character using menus based on the keymap MAP.
+ Return nil if there are no menus in the maps.
+ Return t if we displayed a menu but the user rejected it.
+
+ PREV_EVENT is the previous input event, or nil if we are reading
+ the first event of a key sequence.
+
+ If USED_MOUSE_MENU is non-null, set *USED_MOUSE_MENU to true
+ if we used a mouse menu to read the input, or false otherwise. If
+ USED_MOUSE_MENU is null, don't dereference it.
+
+ The prompting is done based on the prompt-string of the map
+ and the strings associated with various map elements.
+
+ This can be done with X menus or with menus put in the minibuf.
+ These are done in different ways, depending on how the input will be read.
+ Menus using X are done after auto-saving in read-char, getting the input
+ event from Fx_popup_menu; menus using the minibuf use read_char recursively
+ and do auto-saving in the inner call of read_char. */
+
+static Lisp_Object
+read_char_x_menu_prompt (Lisp_Object map,
+ Lisp_Object prev_event, bool *used_mouse_menu)
+{
+ if (used_mouse_menu)
+ *used_mouse_menu = 0;
+
+ /* Use local over global Menu maps. */
+
+ if (! menu_prompting)
+ return Qnil;
+
+ /* If we got to this point via a mouse click,
+ use a real menu for mouse selection. */
+ if (EVENT_HAS_PARAMETERS (prev_event)
+ && !EQ (XCAR (prev_event), Qmenu_bar)
+ && !EQ (XCAR (prev_event), Qtool_bar))
+ {
+ /* Display the menu and get the selection. */
+ Lisp_Object value;
+
+ value = Fx_popup_menu (prev_event, get_keymap (map, 0, 1));
+ if (CONSP (value))
+ {
+ Lisp_Object tem;
+
+ record_menu_key (XCAR (value));
+
+ /* If we got multiple events, unread all but
+ the first.
+ There is no way to prevent those unread events
+ from showing up later in last_nonmenu_event.
+ So turn symbol and integer events into lists,
+ to indicate that they came from a mouse menu,
+ so that when present in last_nonmenu_event
+ they won't confuse things. */
+ for (tem = XCDR (value); CONSP (tem); tem = XCDR (tem))
+ {
+ record_menu_key (XCAR (tem));
+ if (SYMBOLP (XCAR (tem))
+ || INTEGERP (XCAR (tem)))
+ XSETCAR (tem, Fcons (XCAR (tem), Qdisabled));
+ }
+
+ /* If we got more than one event, put all but the first
+ onto this list to be read later.
+ Return just the first event now. */
+ Vunread_command_events
+ = nconc2 (XCDR (value), Vunread_command_events);
+ value = XCAR (value);
+ }
+ else if (NILP (value))
+ value = Qt;
+ if (used_mouse_menu)
+ *used_mouse_menu = 1;
+ return value;
+ }
+ return Qnil ;
+}
+
+static Lisp_Object
+read_char_minibuf_menu_prompt (int commandflag,
+ Lisp_Object map)
+{
+ Lisp_Object name;
+ ptrdiff_t nlength;
+ /* FIXME: Use the minibuffer's frame width. */
+ ptrdiff_t width = FRAME_COLS (SELECTED_FRAME ()) - 4;
+ ptrdiff_t idx = -1;
+ bool nobindings = 1;
+ Lisp_Object rest, vector;
+ Lisp_Object prompt_strings = Qnil;
+
+ vector = Qnil;
+
+ if (! menu_prompting)
+ return Qnil;
+
+ map = get_keymap (map, 0, 1);
+ name = Fkeymap_prompt (map);
+
+ /* If we don't have any menus, just read a character normally. */
+ if (!STRINGP (name))
+ return Qnil;
+
+#define PUSH_C_STR(str, listvar) \
+ listvar = Fcons (build_unibyte_string (str), listvar)
+
+ /* Prompt string always starts with map's prompt, and a space. */
+ prompt_strings = Fcons (name, prompt_strings);
+ PUSH_C_STR (": ", prompt_strings);
+ nlength = SCHARS (name) + 2;
+
+ rest = map;
+
+ /* Present the documented bindings, a line at a time. */
+ while (1)
+ {
+ bool notfirst = 0;
+ Lisp_Object menu_strings = prompt_strings;
+ ptrdiff_t i = nlength;
+ Lisp_Object obj;
+ Lisp_Object orig_defn_macro;
+
+ /* Loop over elements of map. */
+ while (i < width)
+ {
+ Lisp_Object elt;
+
+ /* FIXME: Use map_keymap to handle new keymap formats. */
+
+ /* At end of map, wrap around if just starting,
+ or end this line if already have something on it. */
+ if (NILP (rest))
+ {
+ if (notfirst || nobindings)
+ break;
+ else
+ rest = map;
+ }
+
+ /* Look at the next element of the map. */
+ if (idx >= 0)
+ elt = AREF (vector, idx);
+ else
+ elt = Fcar_safe (rest);
+
+ if (idx < 0 && VECTORP (elt))
+ {
+ /* If we found a dense table in the keymap,
+ advanced past it, but start scanning its contents. */
+ rest = Fcdr_safe (rest);
+ vector = elt;
+ idx = 0;
+ }
+ else
+ {
+ /* An ordinary element. */
+ Lisp_Object event, tem;
+
+ if (idx < 0)
+ {
+ event = Fcar_safe (elt); /* alist */
+ elt = Fcdr_safe (elt);
+ }
+ else
+ {
+ XSETINT (event, idx); /* vector */
+ }
+
+ /* Ignore the element if it has no prompt string. */
+ if (INTEGERP (event) && parse_menu_item (elt, -1))
+ {
+ /* True if the char to type matches the string. */
+ bool char_matches;
+ Lisp_Object upcased_event, downcased_event;
+ Lisp_Object desc = Qnil;
+ Lisp_Object s
+ = AREF (item_properties, ITEM_PROPERTY_NAME);
+
+ upcased_event = Fupcase (event);
+ downcased_event = Fdowncase (event);
+ char_matches = (XINT (upcased_event) == SREF (s, 0)
+ || XINT (downcased_event) == SREF (s, 0));
+ if (! char_matches)
+ desc = Fsingle_key_description (event, Qnil);
+
+#if 0 /* It is redundant to list the equivalent key bindings because
+ the prefix is what the user has already typed. */
+ tem
+ = XVECTOR (item_properties)->contents[ITEM_PROPERTY_KEYEQ];
+ if (!NILP (tem))
+ /* Insert equivalent keybinding. */
+ s = concat2 (s, tem);
+#endif
+ tem
+ = AREF (item_properties, ITEM_PROPERTY_TYPE);
+ if (EQ (tem, QCradio) || EQ (tem, QCtoggle))
+ {
+ /* Insert button prefix. */
+ Lisp_Object selected
+ = AREF (item_properties, ITEM_PROPERTY_SELECTED);
+ AUTO_STRING (radio_yes, "(*) ");
+ AUTO_STRING (radio_no , "( ) ");
+ AUTO_STRING (check_yes, "[X] ");
+ AUTO_STRING (check_no , "[ ] ");
+ if (EQ (tem, QCradio))
+ tem = NILP (selected) ? radio_yes : radio_no;
+ else
+ tem = NILP (selected) ? check_yes : check_no;
+ s = concat2 (tem, s);
+ }
+
+
+ /* If we have room for the prompt string, add it to this line.
+ If this is the first on the line, always add it. */
+ if ((SCHARS (s) + i + 2
+ + (char_matches ? 0 : SCHARS (desc) + 3))
+ < width
+ || !notfirst)
+ {
+ ptrdiff_t thiswidth;
+
+ /* Punctuate between strings. */
+ if (notfirst)
+ {
+ PUSH_C_STR (", ", menu_strings);
+ i += 2;
+ }
+ notfirst = 1;
+ nobindings = 0;
+
+ /* If the char to type doesn't match the string's
+ first char, explicitly show what char to type. */
+ if (! char_matches)
+ {
+ /* Add as much of string as fits. */
+ thiswidth = min (SCHARS (desc), width - i);
+ menu_strings
+ = Fcons (Fsubstring (desc, make_number (0),
+ make_number (thiswidth)),
+ menu_strings);
+ i += thiswidth;
+ PUSH_C_STR (" = ", menu_strings);
+ i += 3;
+ }
+
+ /* Add as much of string as fits. */
+ thiswidth = min (SCHARS (s), width - i);
+ menu_strings
+ = Fcons (Fsubstring (s, make_number (0),
+ make_number (thiswidth)),
+ menu_strings);
+ i += thiswidth;
+ }
+ else
+ {
+ /* If this element does not fit, end the line now,
+ and save the element for the next line. */
+ PUSH_C_STR ("...", menu_strings);
+ break;
+ }
+ }
+
+ /* Move past this element. */
+ if (idx >= 0 && idx + 1 >= ASIZE (vector))
+ /* Handle reaching end of dense table. */
+ idx = -1;
+ if (idx >= 0)
+ idx++;
+ else
+ rest = Fcdr_safe (rest);
+ }
+ }
+
+ /* Prompt with that and read response. */
+ message3_nolog (apply1 (intern ("concat"), Fnreverse (menu_strings)));
+
+ /* Make believe it's not a keyboard macro in case the help char
+ is pressed. Help characters are not recorded because menu prompting
+ is not used on replay. */
+ orig_defn_macro = KVAR (current_kboard, defining_kbd_macro);
+ kset_defining_kbd_macro (current_kboard, Qnil);
+ do
+ obj = read_char (commandflag, Qnil, Qt, 0, NULL);
+ while (BUFFERP (obj));
+ kset_defining_kbd_macro (current_kboard, orig_defn_macro);
+
+ if (!INTEGERP (obj) || XINT (obj) == -2
+ || (! EQ (obj, menu_prompt_more_char)
+ && (!INTEGERP (menu_prompt_more_char)
+ || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char)))))))
+ {
+ if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
+ store_kbd_macro_char (obj);
+ return obj;
+ }
+ /* Help char - go round again. */
+ }
+}
+\f
+/* Reading key sequences. */
+
+static Lisp_Object
+follow_key (Lisp_Object keymap, Lisp_Object key)
+{
+ return access_keymap (get_keymap (keymap, 0, 1),
+ key, 1, 0, 1);
+}
+
+static Lisp_Object
+active_maps (Lisp_Object first_event)
+{
+ Lisp_Object position
+ = CONSP (first_event) ? CAR_SAFE (XCDR (first_event)) : Qnil;
+ return Fcons (Qkeymap, Fcurrent_active_maps (Qt, position));
+}
+
+/* Structure used to keep track of partial application of key remapping
+ such as Vfunction_key_map and Vkey_translation_map. */
+typedef struct keyremap
+{
+ /* This is the map originally specified for this use. */
+ Lisp_Object parent;
+ /* This is a submap reached by looking up, in PARENT,
+ the events from START to END. */
+ Lisp_Object map;
+ /* Positions [START, END) in the key sequence buffer
+ are the key that we have scanned so far.
+ Those events are the ones that we will replace
+ if PARENT maps them into a key sequence. */
+ int start, end;
+} keyremap;
+
+/* Lookup KEY in MAP.
+ MAP is a keymap mapping keys to key vectors or functions.
+ If the mapping is a function and DO_FUNCALL is true,
+ the function is called with PROMPT as parameter and its return
+ value is used as the return value of this function (after checking
+ that it is indeed a vector). */
+
+static Lisp_Object
+access_keymap_keyremap (Lisp_Object map, Lisp_Object key, Lisp_Object prompt,
+ bool do_funcall)
+{
+ Lisp_Object next;
+
+ next = access_keymap (map, key, 1, 0, 1);
+
+ /* Handle a symbol whose function definition is a keymap
+ or an array. */
+ if (SYMBOLP (next) && !NILP (Ffboundp (next))
+ && (ARRAYP (XSYMBOL (next)->function)
+ || KEYMAPP (XSYMBOL (next)->function)))
+ next = Fautoload_do_load (XSYMBOL (next)->function, next, Qnil);
+
+ /* If the keymap gives a function, not an
+ array, then call the function with one arg and use
+ its value instead. */
+ if (do_funcall && FUNCTIONP (next))
+ {
+ Lisp_Object tem;
+ tem = next;
+
+ next = call1 (next, prompt);
+ /* If the function returned something invalid,
+ barf--don't ignore it.
+ (To ignore it safely, we would need to gcpro a bunch of
+ other variables.) */
+ if (! (NILP (next) || VECTORP (next) || STRINGP (next)))
+ error ("Function %s returns invalid key sequence",
+ SSDATA (SYMBOL_NAME (tem)));
+ }
+ return next;
+}
+
+/* Do one step of the key remapping used for function-key-map and
+ key-translation-map:
+ KEYBUF is the buffer holding the input events.
+ BUFSIZE is its maximum size.
+ FKEY is a pointer to the keyremap structure to use.
+ INPUT is the index of the last element in KEYBUF.
+ DOIT if true says that the remapping can actually take place.
+ DIFF is used to return the number of keys added/removed by the remapping.
+ PARENT is the root of the keymap.
+ PROMPT is the prompt to use if the remapping happens through a function.
+ Return true if the remapping actually took place. */
+
+static bool
+keyremap_step (Lisp_Object *keybuf, int bufsize, volatile keyremap *fkey,
+ int input, bool doit, int *diff, Lisp_Object prompt)
+{
+ Lisp_Object next, key;
+
+ key = keybuf[fkey->end++];
+
+ if (KEYMAPP (fkey->parent))
+ next = access_keymap_keyremap (fkey->map, key, prompt, doit);
+ else
+ next = Qnil;
+
+ /* If keybuf[fkey->start..fkey->end] is bound in the
+ map and we're in a position to do the key remapping, replace it with
+ the binding and restart with fkey->start at the end. */
+ if ((VECTORP (next) || STRINGP (next)) && doit)
+ {
+ int len = XFASTINT (Flength (next));
+ int i;
+
+ *diff = len - (fkey->end - fkey->start);
+
+ if (bufsize - input <= *diff)
+ error ("Key sequence too long");
+
+ /* Shift the keys that follow fkey->end. */
+ if (*diff < 0)
+ for (i = fkey->end; i < input; i++)
+ keybuf[i + *diff] = keybuf[i];
+ else if (*diff > 0)
+ for (i = input - 1; i >= fkey->end; i--)
+ keybuf[i + *diff] = keybuf[i];
+ /* Overwrite the old keys with the new ones. */
+ for (i = 0; i < len; i++)
+ keybuf[fkey->start + i]
+ = Faref (next, make_number (i));
+
+ fkey->start = fkey->end += *diff;
+ fkey->map = fkey->parent;
+
+ return 1;
+ }
+
+ fkey->map = get_keymap (next, 0, 1);
+
+ /* If we no longer have a bound suffix, try a new position for
+ fkey->start. */
+ if (!CONSP (fkey->map))
+ {
+ fkey->end = ++fkey->start;
+ fkey->map = fkey->parent;
+ }
+ return 0;
+}
+
+static bool
+test_undefined (Lisp_Object binding)
+{
+ return (NILP (binding)
+ || EQ (binding, Qundefined)
+ || (SYMBOLP (binding)
+ && EQ (Fcommand_remapping (binding, Qnil, Qnil), Qundefined)));
+}
+
+/* Read a sequence of keys that ends with a non prefix character,
+ storing it in KEYBUF, a buffer of size BUFSIZE.
+ Prompt with PROMPT.
+ Return the length of the key sequence stored.
+ Return -1 if the user rejected a command menu.
+
+ Echo starting immediately unless `prompt' is 0.
+
+ If PREVENT_REDISPLAY is non-zero, avoid redisplay by calling
+ read_char with a suitable COMMANDFLAG argument.
+
+ Where a key sequence ends depends on the currently active keymaps.
+ These include any minor mode keymaps active in the current buffer,
+ the current buffer's local map, and the global map.
+
+ If a key sequence has no other bindings, we check Vfunction_key_map
+ to see if some trailing subsequence might be the beginning of a
+ function key's sequence. If so, we try to read the whole function
+ key, and substitute its symbolic name into the key sequence.
+
+ We ignore unbound `down-' mouse clicks. We turn unbound `drag-' and
+ `double-' events into similar click events, if that would make them
+ bound. We try to turn `triple-' events first into `double-' events,
+ then into clicks.
+
+ If we get a mouse click in a mode line, vertical divider, or other
+ non-text area, we treat the click as if it were prefixed by the
+ symbol denoting that area - `mode-line', `vertical-line', or
+ whatever.
+
+ If the sequence starts with a mouse click, we read the key sequence
+ with respect to the buffer clicked on, not the current buffer.
+
+ If the user switches frames in the midst of a key sequence, we put
+ off the switch-frame event until later; the next call to
+ read_char will return it.
+
+ If FIX_CURRENT_BUFFER, we restore current_buffer
+ from the selected window's buffer. */
+
+static int
+read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
+ bool dont_downcase_last, bool can_return_switch_frame,
+ bool fix_current_buffer, bool prevent_redisplay)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+
+ /* How many keys there are in the current key sequence. */
+ int t;
+
+ /* The length of the echo buffer when we started reading, and
+ the length of this_command_keys when we started reading. */
+ ptrdiff_t echo_start IF_LINT (= 0);
+ ptrdiff_t keys_start;
+
+ Lisp_Object current_binding = Qnil;
+ Lisp_Object first_event = Qnil;
+
+ /* Index of the first key that has no binding.
+ It is useless to try fkey.start larger than that. */
+ int first_unbound;
+
+ /* If t < mock_input, then KEYBUF[t] should be read as the next
+ input key.
+
+ We use this to recover after recognizing a function key. Once we
+ realize that a suffix of the current key sequence is actually a
+ function key's escape sequence, we replace the suffix with the
+ function key's binding from Vfunction_key_map. Now keybuf
+ contains a new and different key sequence, so the echo area,
+ this_command_keys, and the submaps and defs arrays are wrong. In
+ this situation, we set mock_input to t, set t to 0, and jump to
+ restart_sequence; the loop will read keys from keybuf up until
+ mock_input, thus rebuilding the state; and then it will resume
+ reading characters from the keyboard. */
+ int mock_input = 0;
+
+ /* If the sequence is unbound in submaps[], then
+ keybuf[fkey.start..fkey.end-1] is a prefix in Vfunction_key_map,
+ and fkey.map is its binding.
+
+ These might be > t, indicating that all function key scanning
+ should hold off until t reaches them. We do this when we've just
+ recognized a function key, to avoid searching for the function
+ key's again in Vfunction_key_map. */
+ keyremap fkey;
+
+ /* Likewise, for key_translation_map and input-decode-map. */
+ keyremap keytran, indec;
+
+ /* True if we are trying to map a key by changing an upper-case
+ letter to lower case, or a shifted function key to an unshifted
+ one. */
+ bool shift_translated = 0;
+
+ /* If we receive a `switch-frame' or `select-window' event in the middle of
+ a key sequence, we put it off for later.
+ While we're reading, we keep the event here. */
+ Lisp_Object delayed_switch_frame;
+
+ Lisp_Object original_uppercase IF_LINT (= Qnil);
+ int original_uppercase_position = -1;
+
+ /* Gets around Microsoft compiler limitations. */
+ bool dummyflag = 0;
+
+ struct buffer *starting_buffer;
+
+ /* List of events for which a fake prefix key has been generated. */
+ Lisp_Object fake_prefixed_keys = Qnil;
+
+ struct gcpro gcpro1;
+
+ GCPRO1 (fake_prefixed_keys);
+ raw_keybuf_count = 0;
+
+ last_nonmenu_event = Qnil;
+
+ delayed_switch_frame = Qnil;
+
+ if (INTERACTIVE)
+ {
+ if (!NILP (prompt))
+ {
+ /* Install the string PROMPT as the beginning of the string
+ of echoing, so that it serves as a prompt for the next
+ character. */
+ kset_echo_string (current_kboard, prompt);
+ current_kboard->echo_after_prompt = SCHARS (prompt);
+ echo_now ();
+ }
+ else if (cursor_in_echo_area
+ && echo_keystrokes_p ())
+ /* This doesn't put in a dash if the echo buffer is empty, so
+ you don't always see a dash hanging out in the minibuffer. */
+ echo_dash ();
+ }
+
+ /* Record the initial state of the echo area and this_command_keys;
+ we will need to restore them if we replay a key sequence. */
+ if (INTERACTIVE)
+ echo_start = echo_length ();
+ keys_start = this_command_key_count;
+ this_single_command_key_start = keys_start;
+
+ /* We jump here when we need to reinitialize fkey and keytran; this
+ happens if we switch keyboards between rescans. */
+ replay_entire_sequence:
+
+ indec.map = indec.parent = KVAR (current_kboard, Vinput_decode_map);
+ fkey.map = fkey.parent = KVAR (current_kboard, Vlocal_function_key_map);
+ keytran.map = keytran.parent = Vkey_translation_map;
+ indec.start = indec.end = 0;
+ fkey.start = fkey.end = 0;
+ keytran.start = keytran.end = 0;
+
+ /* We jump here when the key sequence has been thoroughly changed, and
+ we need to rescan it starting from the beginning. When we jump here,
+ keybuf[0..mock_input] holds the sequence we should reread. */
+ replay_sequence:
+
+ starting_buffer = current_buffer;
+ first_unbound = bufsize + 1;
+
+ /* Build our list of keymaps.
+ If we recognize a function key and replace its escape sequence in
+ keybuf with its symbol, or if the sequence starts with a mouse
+ click and we need to switch buffers, we jump back here to rebuild
+ the initial keymaps from the current buffer. */
+ current_binding = active_maps (first_event);
+
+ /* Start from the beginning in keybuf. */
+ t = 0;
+
+ /* These are no-ops the first time through, but if we restart, they
+ revert the echo area and this_command_keys to their original state. */
+ this_command_key_count = keys_start;
+ if (INTERACTIVE && t < mock_input)
+ echo_truncate (echo_start);
+
+ /* If the best binding for the current key sequence is a keymap, or
+ we may be looking at a function key's escape sequence, keep on
+ reading. */
+ while (!NILP (current_binding)
+ /* Keep reading as long as there's a prefix binding. */
+ ? KEYMAPP (current_binding)
+ /* Don't return in the middle of a possible function key sequence,
+ if the only bindings we found were via case conversion.
+ Thus, if ESC O a has a function-key-map translation
+ and ESC o has a binding, don't return after ESC O,
+ so that we can translate ESC O plus the next character. */
+ : (/* indec.start < t || fkey.start < t || */ keytran.start < t))
+ {
+ Lisp_Object key;
+ bool used_mouse_menu = 0;
+
+ /* Where the last real key started. If we need to throw away a
+ key that has expanded into more than one element of keybuf
+ (say, a mouse click on the mode line which is being treated
+ as [mode-line (mouse-...)], then we backtrack to this point
+ of keybuf. */
+ int last_real_key_start;
+
+ /* These variables are analogous to echo_start and keys_start;
+ while those allow us to restart the entire key sequence,
+ echo_local_start and keys_local_start allow us to throw away
+ just one key. */
+ ptrdiff_t echo_local_start IF_LINT (= 0);
+ int keys_local_start;
+ Lisp_Object new_binding;
+
+ eassert (indec.end == t || (indec.end > t && indec.end <= mock_input));
+ eassert (indec.start <= indec.end);
+ eassert (fkey.start <= fkey.end);
+ eassert (keytran.start <= keytran.end);
+ /* key-translation-map is applied *after* function-key-map
+ which is itself applied *after* input-decode-map. */
+ eassert (fkey.end <= indec.start);
+ eassert (keytran.end <= fkey.start);
+
+ if (/* first_unbound < indec.start && first_unbound < fkey.start && */
+ first_unbound < keytran.start)
+ { /* The prefix upto first_unbound has no binding and has
+ no translation left to do either, so we know it's unbound.
+ If we don't stop now, we risk staying here indefinitely
+ (if the user keeps entering fkey or keytran prefixes
+ like C-c ESC ESC ESC ESC ...) */
+ int i;
+ for (i = first_unbound + 1; i < t; i++)
+ keybuf[i - first_unbound - 1] = keybuf[i];
+ mock_input = t - first_unbound - 1;
+ indec.end = indec.start -= first_unbound + 1;
+ indec.map = indec.parent;
+ fkey.end = fkey.start -= first_unbound + 1;
+ fkey.map = fkey.parent;
+ keytran.end = keytran.start -= first_unbound + 1;
+ keytran.map = keytran.parent;
+ goto replay_sequence;
+ }
+
+ if (t >= bufsize)
+ error ("Key sequence too long");
+
+ if (INTERACTIVE)
+ echo_local_start = echo_length ();
+ keys_local_start = this_command_key_count;
+
+ replay_key:
+ /* These are no-ops, unless we throw away a keystroke below and
+ jumped back up to replay_key; in that case, these restore the
+ variables to their original state, allowing us to replay the
+ loop. */
+ if (INTERACTIVE && t < mock_input)
+ echo_truncate (echo_local_start);
+ this_command_key_count = keys_local_start;
+
+ /* By default, assume each event is "real". */
+ last_real_key_start = t;
+
+ /* Does mock_input indicate that we are re-reading a key sequence? */
+ if (t < mock_input)
+ {
+ key = keybuf[t];
+ add_command_key (key);
+ if (echo_keystrokes_p ()
+ && current_kboard->immediate_echo)
+ {
+ echo_add_key (key);
+ echo_dash ();
+ }
+ }
+
+ /* If not, we should actually read a character. */
+ else
+ {
+ {
+ KBOARD *interrupted_kboard = current_kboard;
+ struct frame *interrupted_frame = SELECTED_FRAME ();
+ /* Calling read_char with COMMANDFLAG = -2 avoids
+ redisplay in read_char and its subroutines. */
+ key = read_char (prevent_redisplay ? -2 : NILP (prompt),
+ current_binding, last_nonmenu_event,
+ &used_mouse_menu, NULL);
+ if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */
+ /* When switching to a new tty (with a new keyboard),
+ read_char returns the new buffer, rather than -2
+ (Bug#5095). This is because `terminal-init-xterm'
+ calls read-char, which eats the wrong_kboard_jmpbuf
+ return. Any better way to fix this? -- cyd */
+ || (interrupted_kboard != current_kboard))
+ {
+ bool found = 0;
+ struct kboard *k;
+
+ for (k = all_kboards; k; k = k->next_kboard)
+ if (k == interrupted_kboard)
+ found = 1;
+
+ if (!found)
+ {
+ /* Don't touch interrupted_kboard when it's been
+ deleted. */
+ delayed_switch_frame = Qnil;
+ goto replay_entire_sequence;
+ }
+
+ if (!NILP (delayed_switch_frame))
+ {
+ kset_kbd_queue
+ (interrupted_kboard,
+ Fcons (delayed_switch_frame,
+ KVAR (interrupted_kboard, kbd_queue)));
+ delayed_switch_frame = Qnil;
+ }
+
+ while (t > 0)
+ kset_kbd_queue
+ (interrupted_kboard,
+ Fcons (keybuf[--t], KVAR (interrupted_kboard, kbd_queue)));
+
+ /* If the side queue is non-empty, ensure it begins with a
+ switch-frame, so we'll replay it in the right context. */
+ if (CONSP (KVAR (interrupted_kboard, kbd_queue))
+ && (key = XCAR (KVAR (interrupted_kboard, kbd_queue)),
+ !(EVENT_HAS_PARAMETERS (key)
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (key)),
+ Qswitch_frame))))
+ {
+ Lisp_Object frame;
+ XSETFRAME (frame, interrupted_frame);
+ kset_kbd_queue
+ (interrupted_kboard,
+ Fcons (make_lispy_switch_frame (frame),
+ KVAR (interrupted_kboard, kbd_queue)));
+ }
+ mock_input = 0;
+ goto replay_entire_sequence;
+ }
+ }
+
+ /* read_char returns t when it shows a menu and the user rejects it.
+ Just return -1. */
+ if (EQ (key, Qt))
+ {
+ unbind_to (count, Qnil);
+ UNGCPRO;
+ return -1;
+ }
+
+ /* read_char returns -1 at the end of a macro.
+ Emacs 18 handles this by returning immediately with a
+ zero, so that's what we'll do. */
+ if (INTEGERP (key) && XINT (key) == -1)
+ {
+ t = 0;
+ /* The Microsoft C compiler can't handle the goto that
+ would go here. */
+ dummyflag = 1;
+ break;
+ }
+
+ /* If the current buffer has been changed from under us, the
+ keymap may have changed, so replay the sequence. */
+ if (BUFFERP (key))
+ {
+ timer_resume_idle ();
+
+ mock_input = t;
+ /* Reset the current buffer from the selected window
+ in case something changed the former and not the latter.
+ This is to be more consistent with the behavior
+ of the command_loop_1. */
+ if (fix_current_buffer)
+ {
+ if (! FRAME_LIVE_P (XFRAME (selected_frame)))
+ Fkill_emacs (Qnil);
+ if (XBUFFER (XWINDOW (selected_window)->contents)
+ != current_buffer)
+ Fset_buffer (XWINDOW (selected_window)->contents);
+ }
+
+ goto replay_sequence;
+ }
+
+ /* If we have a quit that was typed in another frame, and
+ quit_throw_to_read_char switched buffers,
+ replay to get the right keymap. */
+ if (INTEGERP (key)
+ && XINT (key) == quit_char
+ && current_buffer != starting_buffer)
+ {
+ GROW_RAW_KEYBUF;
+ ASET (raw_keybuf, raw_keybuf_count, key);
+ raw_keybuf_count++;
+ keybuf[t++] = key;
+ mock_input = t;
+ Vquit_flag = Qnil;
+ goto replay_sequence;
+ }
+
+ Vquit_flag = Qnil;
+
+ if (EVENT_HAS_PARAMETERS (key)
+ /* Either a `switch-frame' or a `select-window' event. */
+ && EQ (EVENT_HEAD_KIND (EVENT_HEAD (key)), Qswitch_frame))
+ {
+ /* If we're at the beginning of a key sequence, and the caller
+ says it's okay, go ahead and return this event. If we're
+ in the midst of a key sequence, delay it until the end. */
+ if (t > 0 || !can_return_switch_frame)
+ {
+ delayed_switch_frame = key;
+ goto replay_key;
+ }
+ }
+
+ if (NILP (first_event))
+ {
+ first_event = key;
+ /* Even if first_event does not specify a particular
+ window/position, it's important to recompute the maps here
+ since a long time might have passed since we entered
+ read_key_sequence, and a timer (or process-filter or
+ special-event-map, ...) might have switched the current buffer
+ or the selected window from under us in the mean time. */
+ if (fix_current_buffer
+ && (XBUFFER (XWINDOW (selected_window)->contents)
+ != current_buffer))
+ Fset_buffer (XWINDOW (selected_window)->contents);
+ current_binding = active_maps (first_event);
+ }
+
+ GROW_RAW_KEYBUF;
+ ASET (raw_keybuf, raw_keybuf_count, key);
+ raw_keybuf_count++;
+ }
+
+ /* Clicks in non-text areas get prefixed by the symbol
+ in their CHAR-ADDRESS field. For example, a click on
+ the mode line is prefixed by the symbol `mode-line'.
+
+ Furthermore, key sequences beginning with mouse clicks
+ are read using the keymaps of the buffer clicked on, not
+ the current buffer. So we may have to switch the buffer
+ here.
+
+ When we turn one event into two events, we must make sure
+ that neither of the two looks like the original--so that,
+ if we replay the events, they won't be expanded again.
+ If not for this, such reexpansion could happen either here
+ or when user programs play with this-command-keys. */
+ if (EVENT_HAS_PARAMETERS (key))
+ {
+ Lisp_Object kind = EVENT_HEAD_KIND (EVENT_HEAD (key));
+ if (EQ (kind, Qmouse_click))
+ {
+ Lisp_Object window = POSN_WINDOW (EVENT_START (key));
+ Lisp_Object posn = POSN_POSN (EVENT_START (key));
+
+ if (CONSP (posn)
+ || (!NILP (fake_prefixed_keys)
+ && !NILP (Fmemq (key, fake_prefixed_keys))))
+ {
+ /* We're looking a second time at an event for which
+ we generated a fake prefix key. Set
+ last_real_key_start appropriately. */
+ if (t > 0)
+ last_real_key_start = t - 1;
+ }
+
+ if (last_real_key_start == 0)
+ {
+ /* Key sequences beginning with mouse clicks are
+ read using the keymaps in the buffer clicked on,
+ not the current buffer. If we're at the
+ beginning of a key sequence, switch buffers. */
+ if (WINDOWP (window)
+ && BUFFERP (XWINDOW (window)->contents)
+ && XBUFFER (XWINDOW (window)->contents) != current_buffer)
+ {
+ ASET (raw_keybuf, raw_keybuf_count, key);
+ raw_keybuf_count++;
+ keybuf[t] = key;
+ mock_input = t + 1;
+
+ /* Arrange to go back to the original buffer once we're
+ done reading the key sequence. Note that we can't
+ use save_excursion_{save,restore} here, because they
+ save point as well as the current buffer; we don't
+ want to save point, because redisplay may change it,
+ to accommodate a Fset_window_start or something. We
+ don't want to do this at the top of the function,
+ because we may get input from a subprocess which
+ wants to change the selected window and stuff (say,
+ emacsclient). */
+ record_unwind_current_buffer ();
+
+ if (! FRAME_LIVE_P (XFRAME (selected_frame)))
+ Fkill_emacs (Qnil);
+ set_buffer_internal (XBUFFER (XWINDOW (window)->contents));
+ goto replay_sequence;
+ }
+ }
+
+ /* Expand mode-line and scroll-bar events into two events:
+ use posn as a fake prefix key. */
+ if (SYMBOLP (posn)
+ && (NILP (fake_prefixed_keys)
+ || NILP (Fmemq (key, fake_prefixed_keys))))
+ {
+ if (bufsize - t <= 1)
+ error ("Key sequence too long");
+
+ keybuf[t] = posn;
+ keybuf[t + 1] = key;
+ mock_input = t + 2;
+
+ /* Record that a fake prefix key has been generated
+ for KEY. Don't modify the event; this would
+ prevent proper action when the event is pushed
+ back into unread-command-events. */
+ fake_prefixed_keys = Fcons (key, fake_prefixed_keys);
+ goto replay_key;
+ }
+ }
+ else if (CONSP (XCDR (key))
+ && CONSP (EVENT_START (key))
+ && CONSP (XCDR (EVENT_START (key))))
+ {
+ Lisp_Object posn;
+
+ posn = POSN_POSN (EVENT_START (key));
+ /* Handle menu-bar events:
+ insert the dummy prefix event `menu-bar'. */
+ if (EQ (posn, Qmenu_bar) || EQ (posn, Qtool_bar))
+ {
+ if (bufsize - t <= 1)
+ error ("Key sequence too long");
+ keybuf[t] = posn;
+ keybuf[t + 1] = key;
+
+ /* Zap the position in key, so we know that we've
+ expanded it, and don't try to do so again. */
+ POSN_SET_POSN (EVENT_START (key), list1 (posn));
+
+ mock_input = t + 2;
+ goto replay_sequence;
+ }
+ else if (CONSP (posn))
+ {
+ /* We're looking at the second event of a
+ sequence which we expanded before. Set
+ last_real_key_start appropriately. */
+ if (last_real_key_start == t && t > 0)
+ last_real_key_start = t - 1;
+ }
+ }
+ }
+
+ /* We have finally decided that KEY is something we might want
+ to look up. */
+ new_binding = follow_key (current_binding, key);
+
+ /* If KEY wasn't bound, we'll try some fallbacks. */
+ if (!NILP (new_binding))
+ /* This is needed for the following scenario:
+ event 0: a down-event that gets dropped by calling replay_key.
+ event 1: some normal prefix like C-h.
+ After event 0, first_unbound is 0, after event 1 indec.start,
+ fkey.start, and keytran.start are all 1, so when we see that
+ C-h is bound, we need to update first_unbound. */
+ first_unbound = max (t + 1, first_unbound);
+ else
+ {
+ Lisp_Object head;
+
+ /* Remember the position to put an upper bound on indec.start. */
+ first_unbound = min (t, first_unbound);
+
+ head = EVENT_HEAD (key);
+
+ if (SYMBOLP (head))
+ {
+ Lisp_Object breakdown;
+ int modifiers;
+
+ breakdown = parse_modifiers (head);
+ modifiers = XINT (XCAR (XCDR (breakdown)));
+ /* Attempt to reduce an unbound mouse event to a simpler
+ event that is bound:
+ Drags reduce to clicks.
+ Double-clicks reduce to clicks.
+ Triple-clicks reduce to double-clicks, then to clicks.
+ Down-clicks are eliminated.
+ Double-downs reduce to downs, then are eliminated.
+ Triple-downs reduce to double-downs, then to downs,
+ then are eliminated. */
+ if (modifiers & (down_modifier | drag_modifier
+ | double_modifier | triple_modifier))
+ {
+ while (modifiers & (down_modifier | drag_modifier
+ | double_modifier | triple_modifier))
+ {
+ Lisp_Object new_head, new_click;
+ if (modifiers & triple_modifier)
+ modifiers ^= (double_modifier | triple_modifier);
+ else if (modifiers & double_modifier)
+ modifiers &= ~double_modifier;
+ else if (modifiers & drag_modifier)
+ modifiers &= ~drag_modifier;
+ else
+ {
+ /* Dispose of this `down' event by simply jumping
+ back to replay_key, to get another event.
+
+ Note that if this event came from mock input,
+ then just jumping back to replay_key will just
+ hand it to us again. So we have to wipe out any
+ mock input.
+
+ We could delete keybuf[t] and shift everything
+ after that to the left by one spot, but we'd also
+ have to fix up any variable that points into
+ keybuf, and shifting isn't really necessary
+ anyway.
+
+ Adding prefixes for non-textual mouse clicks
+ creates two characters of mock input, and both
+ must be thrown away. If we're only looking at
+ the prefix now, we can just jump back to
+ replay_key. On the other hand, if we've already
+ processed the prefix, and now the actual click
+ itself is giving us trouble, then we've lost the
+ state of the keymaps we want to backtrack to, and
+ we need to replay the whole sequence to rebuild
+ it.
+
+ Beyond that, only function key expansion could
+ create more than two keys, but that should never
+ generate mouse events, so it's okay to zero
+ mock_input in that case too.
+
+ FIXME: The above paragraph seems just plain
+ wrong, if you consider things like
+ xterm-mouse-mode. -stef
+
+ Isn't this just the most wonderful code ever? */
+
+ /* If mock_input > t + 1, the above simplification
+ will actually end up dropping keys on the floor.
+ This is probably OK for now, but even
+ if mock_input <= t + 1, we need to adjust indec,
+ fkey, and keytran.
+ Typical case [header-line down-mouse-N]:
+ mock_input = 2, t = 1, fkey.end = 1,
+ last_real_key_start = 0. */
+ if (indec.end > last_real_key_start)
+ {
+ indec.end = indec.start
+ = min (last_real_key_start, indec.start);
+ indec.map = indec.parent;
+ if (fkey.end > last_real_key_start)
+ {
+ fkey.end = fkey.start
+ = min (last_real_key_start, fkey.start);
+ fkey.map = fkey.parent;
+ if (keytran.end > last_real_key_start)
+ {
+ keytran.end = keytran.start
+ = min (last_real_key_start, keytran.start);
+ keytran.map = keytran.parent;
+ }
+ }
+ }
+ if (t == last_real_key_start)
+ {
+ mock_input = 0;
+ goto replay_key;
+ }
+ else
+ {
+ mock_input = last_real_key_start;
+ goto replay_sequence;
+ }
+ }
+
+ new_head
+ = apply_modifiers (modifiers, XCAR (breakdown));
+ new_click = list2 (new_head, EVENT_START (key));
+
+ /* Look for a binding for this new key. */
+ new_binding = follow_key (current_binding, new_click);
+
+ /* If that click is bound, go for it. */
+ if (!NILP (new_binding))
+ {
+ current_binding = new_binding;
+ key = new_click;
+ break;
+ }
+ /* Otherwise, we'll leave key set to the drag event. */
+ }
+ }
+ }
+ }
+ current_binding = new_binding;
+
+ keybuf[t++] = key;
+ /* Normally, last_nonmenu_event gets the previous key we read.
+ But when a mouse popup menu is being used,
+ we don't update last_nonmenu_event; it continues to hold the mouse
+ event that preceded the first level of menu. */
+ if (!used_mouse_menu)
+ last_nonmenu_event = key;
+
+ /* Record what part of this_command_keys is the current key sequence. */
+ this_single_command_key_start = this_command_key_count - t;
+ /* When 'input-method-function' called above causes events to be
+ put on 'unread-post-input-method-events', and as result
+ 'reread' is set to 'true', the value of 't' can become larger
+ than 'this_command_key_count', because 'add_command_key' is
+ not called to update 'this_command_key_count'. If this
+ happens, 'this_single_command_key_start' will become negative
+ above, and any call to 'this-single-command-keys' will return
+ a garbled vector. See bug #20223 for one such situation.
+ Here we force 'this_single_command_key_start' to never become
+ negative, to avoid that. */
+ if (this_single_command_key_start < 0)
+ this_single_command_key_start = 0;
+
+ /* Look for this sequence in input-decode-map.
+ Scan from indec.end until we find a bound suffix. */
+ while (indec.end < t)
+ {
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+ bool done;
+ int diff;
+
+ GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
+ done = keyremap_step (keybuf, bufsize, &indec, max (t, mock_input),
+ 1, &diff, prompt);
+ UNGCPRO;
+ if (done)
+ {
+ mock_input = diff + max (t, mock_input);
+ goto replay_sequence;
+ }
+ }
+
+ if (!KEYMAPP (current_binding)
+ && !test_undefined (current_binding)
+ && indec.start >= t)
+ /* There is a binding and it's not a prefix.
+ (and it doesn't have any input-decode-map translation pending).
+ There is thus no function-key in this sequence.
+ Moving fkey.start is important in this case to allow keytran.start
+ to go over the sequence before we return (since we keep the
+ invariant that keytran.end <= fkey.start). */
+ {
+ if (fkey.start < t)
+ (fkey.start = fkey.end = t, fkey.map = fkey.parent);
+ }
+ else
+ /* If the sequence is unbound, see if we can hang a function key
+ off the end of it. */
+ /* Continue scan from fkey.end until we find a bound suffix. */
+ while (fkey.end < indec.start)
+ {
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+ bool done;
+ int diff;
+
+ GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
+ done = keyremap_step (keybuf, bufsize, &fkey,
+ max (t, mock_input),
+ /* If there's a binding (i.e.
+ first_binding >= nmaps) we don't want
+ to apply this function-key-mapping. */
+ fkey.end + 1 == t
+ && (test_undefined (current_binding)),
+ &diff, prompt);
+ UNGCPRO;
+ if (done)
+ {
+ mock_input = diff + max (t, mock_input);
+ /* Adjust the input-decode-map counters. */
+ indec.end += diff;
+ indec.start += diff;
+
+ goto replay_sequence;
+ }
+ }
+
+ /* Look for this sequence in key-translation-map.
+ Scan from keytran.end until we find a bound suffix. */
+ while (keytran.end < fkey.start)
+ {
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+ bool done;
+ int diff;
+
+ GCPRO4 (indec.map, fkey.map, keytran.map, delayed_switch_frame);
+ done = keyremap_step (keybuf, bufsize, &keytran, max (t, mock_input),
+ 1, &diff, prompt);
+ UNGCPRO;
+ if (done)
+ {
+ mock_input = diff + max (t, mock_input);
+ /* Adjust the function-key-map and input-decode-map counters. */
+ indec.end += diff;
+ indec.start += diff;
+ fkey.end += diff;
+ fkey.start += diff;
+
+ goto replay_sequence;
+ }
+ }
+
+ /* If KEY is not defined in any of the keymaps,
+ and cannot be part of a function key or translation,
+ and is an upper case letter
+ use the corresponding lower-case letter instead. */
+ if (NILP (current_binding)
+ && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t
+ && INTEGERP (key)
+ && ((CHARACTERP (make_number (XINT (key) & ~CHAR_MODIFIER_MASK))
+ && uppercasep (XINT (key) & ~CHAR_MODIFIER_MASK))
+ || (XINT (key) & shift_modifier)))
+ {
+ Lisp_Object new_key;
+
+ original_uppercase = key;
+ original_uppercase_position = t - 1;
+
+ if (XINT (key) & shift_modifier)
+ XSETINT (new_key, XINT (key) & ~shift_modifier);
+ else
+ XSETINT (new_key, (downcase (XINT (key) & ~CHAR_MODIFIER_MASK)
+ | (XINT (key) & CHAR_MODIFIER_MASK)));
+
+ /* We have to do this unconditionally, regardless of whether
+ the lower-case char is defined in the keymaps, because they
+ might get translated through function-key-map. */
+ keybuf[t - 1] = new_key;
+ mock_input = max (t, mock_input);
+ shift_translated = 1;
+
+ goto replay_sequence;
+ }
+
+ if (NILP (current_binding)
+ && help_char_p (EVENT_HEAD (key)) && t > 1)
+ {
+ read_key_sequence_cmd = Vprefix_help_command;
+ /* The Microsoft C compiler can't handle the goto that
+ would go here. */
+ dummyflag = 1;
+ break;
+ }
+
+ /* If KEY is not defined in any of the keymaps,
+ and cannot be part of a function key or translation,
+ and is a shifted function key,
+ use the corresponding unshifted function key instead. */
+ if (NILP (current_binding)
+ && /* indec.start >= t && fkey.start >= t && */ keytran.start >= t)
+ {
+ Lisp_Object breakdown = parse_modifiers (key);
+ int modifiers
+ = CONSP (breakdown) ? (XINT (XCAR (XCDR (breakdown)))) : 0;
+
+ if (modifiers & shift_modifier
+ /* Treat uppercase keys as shifted. */
+ || (INTEGERP (key)
+ && (KEY_TO_CHAR (key)
+ < XCHAR_TABLE (BVAR (current_buffer, downcase_table))->header.size)
+ && uppercasep (KEY_TO_CHAR (key))))
+ {
+ Lisp_Object new_key
+ = (modifiers & shift_modifier
+ ? apply_modifiers (modifiers & ~shift_modifier,
+ XCAR (breakdown))
+ : make_number (downcase (KEY_TO_CHAR (key)) | modifiers));
+
+ original_uppercase = key;
+ original_uppercase_position = t - 1;
+
+ /* We have to do this unconditionally, regardless of whether
+ the lower-case char is defined in the keymaps, because they
+ might get translated through function-key-map. */
+ keybuf[t - 1] = new_key;
+ mock_input = max (t, mock_input);
+ /* Reset fkey (and consequently keytran) to apply
+ function-key-map on the result, so that S-backspace is
+ correctly mapped to DEL (via backspace). OTOH,
+ input-decode-map doesn't need to go through it again. */
+ fkey.start = fkey.end = 0;
+ keytran.start = keytran.end = 0;
+ shift_translated = 1;
+
+ goto replay_sequence;
+ }
+ }
+ }
+ if (!dummyflag)
+ read_key_sequence_cmd = current_binding;
+ read_key_sequence_remapped
+ /* Remap command through active keymaps.
+ Do the remapping here, before the unbind_to so it uses the keymaps
+ of the appropriate buffer. */
+ = SYMBOLP (read_key_sequence_cmd)
+ ? Fcommand_remapping (read_key_sequence_cmd, Qnil, Qnil)
+ : Qnil;
+
+ unread_switch_frame = delayed_switch_frame;
+ unbind_to (count, Qnil);
+
+ /* Don't downcase the last character if the caller says don't.
+ Don't downcase it if the result is undefined, either. */
+ if ((dont_downcase_last || NILP (current_binding))
+ && t > 0
+ && t - 1 == original_uppercase_position)
+ {
+ keybuf[t - 1] = original_uppercase;
+ shift_translated = 0;
+ }
+
+ if (shift_translated)
+ Vthis_command_keys_shift_translated = Qt;
+
+ /* Occasionally we fabricate events, perhaps by expanding something
+ according to function-key-map, or by adding a prefix symbol to a
+ mouse click in the scroll bar or modeline. In this cases, return
+ the entire generated key sequence, even if we hit an unbound
+ prefix or a definition before the end. This means that you will
+ be able to push back the event properly, and also means that
+ read-key-sequence will always return a logical unit.
+
+ Better ideas? */
+ for (; t < mock_input; t++)
+ {
+ if (echo_keystrokes_p ())
+ echo_char (keybuf[t]);
+ add_command_key (keybuf[t]);
+ }
+
+ UNGCPRO;
+ return t;
+}
+
+static Lisp_Object
+read_key_sequence_vs (Lisp_Object prompt, Lisp_Object continue_echo,
+ Lisp_Object dont_downcase_last,
+ Lisp_Object can_return_switch_frame,
+ Lisp_Object cmd_loop, bool allow_string)
+{
+ Lisp_Object keybuf[30];
+ register int i;
+ struct gcpro gcpro1;
+ ptrdiff_t count = SPECPDL_INDEX ();
+
+ if (!NILP (prompt))
+ CHECK_STRING (prompt);
+ QUIT;
+
+ specbind (Qinput_method_exit_on_first_char,
+ (NILP (cmd_loop) ? Qt : Qnil));
+ specbind (Qinput_method_use_echo_area,
+ (NILP (cmd_loop) ? Qt : Qnil));
+
+ memset (keybuf, 0, sizeof keybuf);
+ GCPRO1 (keybuf[0]);
+ gcpro1.nvars = ARRAYELTS (keybuf);
+
+ if (NILP (continue_echo))
+ {
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+ this_single_command_key_start = 0;
+ }
+
+#ifdef HAVE_WINDOW_SYSTEM
+ if (display_hourglass_p)
+ cancel_hourglass ();
+#endif
+
+ i = read_key_sequence (keybuf, ARRAYELTS (keybuf),
+ prompt, ! NILP (dont_downcase_last),
+ ! NILP (can_return_switch_frame), 0, 0);
+
+#if 0 /* The following is fine for code reading a key sequence and
+ then proceeding with a lengthy computation, but it's not good
+ for code reading keys in a loop, like an input method. */
+#ifdef HAVE_WINDOW_SYSTEM
+ if (display_hourglass_p)
+ start_hourglass ();
+#endif
+#endif
+
+ if (i == -1)
+ {
+ Vquit_flag = Qt;
+ QUIT;
+ }
+ UNGCPRO;
+ return unbind_to (count,
+ ((allow_string ? make_event_array : Fvector)
+ (i, keybuf)));
+}
+
+DEFUN ("read-key-sequence", Fread_key_sequence, Sread_key_sequence, 1, 5, 0,
+ doc: /* Read a sequence of keystrokes and return as a string or vector.
+The sequence is sufficient to specify a non-prefix command in the
+current local and global maps.
+
+First arg PROMPT is a prompt string. If nil, do not prompt specially.
+Second (optional) arg CONTINUE-ECHO, if non-nil, means this key echos
+as a continuation of the previous key.
+
+The third (optional) arg DONT-DOWNCASE-LAST, if non-nil, means do not
+convert the last event to lower case. (Normally any upper case event
+is converted to lower case if the original event is undefined and the lower
+case equivalent is defined.) A non-nil value is appropriate for reading
+a key sequence to be defined.
+
+A C-g typed while in this function is treated like any other character,
+and `quit-flag' is not set.
+
+If the key sequence starts with a mouse click, then the sequence is read
+using the keymaps of the buffer of the window clicked in, not the buffer
+of the selected window as normal.
+
+`read-key-sequence' drops unbound button-down events, since you normally
+only care about the click or drag events which follow them. If a drag
+or multi-click event is unbound, but the corresponding click event would
+be bound, `read-key-sequence' turns the event into a click event at the
+drag's starting position. This means that you don't have to distinguish
+between click and drag, double, or triple events unless you want to.
+
+`read-key-sequence' prefixes mouse events on mode lines, the vertical
+lines separating windows, and scroll bars with imaginary keys
+`mode-line', `vertical-line', and `vertical-scroll-bar'.
+
+Optional fourth argument CAN-RETURN-SWITCH-FRAME non-nil means that this
+function will process a switch-frame event if the user switches frames
+before typing anything. If the user switches frames in the middle of a
+key sequence, or at the start of the sequence but CAN-RETURN-SWITCH-FRAME
+is nil, then the event will be put off until after the current key sequence.
+
+`read-key-sequence' checks `function-key-map' for function key
+sequences, where they wouldn't conflict with ordinary bindings. See
+`function-key-map' for more details.
+
+The optional fifth argument CMD-LOOP, if non-nil, means
+that this key sequence is being read by something that will
+read commands one after another. It should be nil if the caller
+will read just one key sequence. */)
+ (Lisp_Object prompt, Lisp_Object continue_echo, Lisp_Object dont_downcase_last, Lisp_Object can_return_switch_frame, Lisp_Object cmd_loop)
+{
+ return read_key_sequence_vs (prompt, continue_echo, dont_downcase_last,
+ can_return_switch_frame, cmd_loop, true);
+}
+
+DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,
+ Sread_key_sequence_vector, 1, 5, 0,
+ doc: /* Like `read-key-sequence' but always return a vector. */)
+ (Lisp_Object prompt, Lisp_Object continue_echo, Lisp_Object dont_downcase_last, Lisp_Object can_return_switch_frame, Lisp_Object cmd_loop)
+{
+ return read_key_sequence_vs (prompt, continue_echo, dont_downcase_last,
+ can_return_switch_frame, cmd_loop, false);
+}
+\f
+/* Return true if input events are pending. */
+
+bool
+detect_input_pending (void)
+{
+ return input_pending || get_input_pending (0);
+}
+
+/* Return true if input events other than mouse movements are
+ pending. */
+
+bool
+detect_input_pending_ignore_squeezables (void)
+{
+ return input_pending || get_input_pending (READABLE_EVENTS_IGNORE_SQUEEZABLES);
+}
+
+/* Return true if input events are pending, and run any pending timers. */
+
+bool
+detect_input_pending_run_timers (bool do_display)
+{
+ unsigned old_timers_run = timers_run;
+
+ if (!input_pending)
+ get_input_pending (READABLE_EVENTS_DO_TIMERS_NOW);
+
+ if (old_timers_run != timers_run && do_display)
+ redisplay_preserve_echo_area (8);
+
+ return input_pending;
+}
+
+/* This is called in some cases before a possible quit.
+ It cases the next call to detect_input_pending to recompute input_pending.
+ So calling this function unnecessarily can't do any harm. */
+
+void
+clear_input_pending (void)
+{
+ input_pending = 0;
+}
+
+/* Return true if there are pending requeued events.
+ This isn't used yet. The hope is to make wait_reading_process_output
+ call it, and return if it runs Lisp code that unreads something.
+ The problem is, kbd_buffer_get_event needs to be fixed to know what
+ to do in that case. It isn't trivial. */
+
+bool
+requeued_events_pending_p (void)
+{
+ return (!NILP (Vunread_command_events));
+}
+
+DEFUN ("input-pending-p", Finput_pending_p, Sinput_pending_p, 0, 1, 0,
+ doc: /* Return t if command input is currently available with no wait.
+Actually, the value is nil only if we can be sure that no input is available;
+if there is a doubt, the value is t.
+
+If CHECK-TIMERS is non-nil, timers that are ready to run will do so. */)
+ (Lisp_Object check_timers)
+{
+ if (!NILP (Vunread_command_events)
+ || !NILP (Vunread_post_input_method_events)
+ || !NILP (Vunread_input_method_events))
+ return (Qt);
+
+ /* Process non-user-visible events (Bug#10195). */
+ process_special_events ();
+
+ return (get_input_pending ((NILP (check_timers)
+ ? 0 : READABLE_EVENTS_DO_TIMERS_NOW)
+ | READABLE_EVENTS_FILTER_EVENTS)
+ ? Qt : Qnil);
+}
+
+DEFUN ("recent-keys", Frecent_keys, Srecent_keys, 0, 1, 0,
+ doc: /* Return vector of last few events, not counting those from keyboard macros.
+If INCLUDE-CMDS is non-nil, include the commands that were run,
+represented as events of the form (nil . COMMAND). */)
+ (Lisp_Object include_cmds)
+{
+ bool cmds = !NILP (include_cmds);
+
+ if (!total_keys
+ || (cmds && total_keys < NUM_RECENT_KEYS))
+ return Fvector (total_keys,
+ XVECTOR (recent_keys)->contents);
+ else
+ {
+ Lisp_Object es = Qnil;
+ int i = (total_keys < NUM_RECENT_KEYS
+ ? 0 : recent_keys_index);
+ eassert (recent_keys_index < NUM_RECENT_KEYS);
+ do
+ {
+ Lisp_Object e = AREF (recent_keys, i);
+ if (cmds || !CONSP (e) || !NILP (XCAR (e)))
+ es = Fcons (e, es);
+ if (++i >= NUM_RECENT_KEYS)
+ i = 0;
+ } while (i != recent_keys_index);
+ es = Fnreverse (es);
+ return Fvconcat (1, &es);
+ }
+}
+
+DEFUN ("this-command-keys", Fthis_command_keys, Sthis_command_keys, 0, 0, 0,
+ doc: /* Return the key sequence that invoked this command.
+However, if the command has called `read-key-sequence', it returns
+the last key sequence that has been read.
+The value is a string or a vector.
+
+See also `this-command-keys-vector'. */)
+ (void)
+{
+ return make_event_array (this_command_key_count,
+ XVECTOR (this_command_keys)->contents);
+}
+
+DEFUN ("this-command-keys-vector", Fthis_command_keys_vector, Sthis_command_keys_vector, 0, 0, 0,
+ doc: /* Return the key sequence that invoked this command, as a vector.
+However, if the command has called `read-key-sequence', it returns
+the last key sequence that has been read.
+
+See also `this-command-keys'. */)
+ (void)
+{
+ return Fvector (this_command_key_count,
+ XVECTOR (this_command_keys)->contents);
+}
+
+DEFUN ("this-single-command-keys", Fthis_single_command_keys,
+ Sthis_single_command_keys, 0, 0, 0,
+ doc: /* Return the key sequence that invoked this command.
+More generally, it returns the last key sequence read, either by
+the command loop or by `read-key-sequence'.
+Unlike `this-command-keys', this function's value
+does not include prefix arguments.
+The value is always a vector. */)
+ (void)
+{
+ return Fvector (this_command_key_count
+ - this_single_command_key_start,
+ (XVECTOR (this_command_keys)->contents
+ + this_single_command_key_start));
+}
+
+DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,
+ Sthis_single_command_raw_keys, 0, 0, 0,
+ doc: /* Return the raw events that were read for this command.
+More generally, it returns the last key sequence read, either by
+the command loop or by `read-key-sequence'.
+Unlike `this-single-command-keys', this function's value
+shows the events before all translations (except for input methods).
+The value is always a vector. */)
+ (void)
+{
+ return Fvector (raw_keybuf_count, XVECTOR (raw_keybuf)->contents);
+}
+
+DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,
+ Sreset_this_command_lengths, 0, 0, 0,
+ doc: /* Make the unread events replace the last command and echo.
+Used in `universal-argument-other-key'.
+
+`universal-argument-other-key' rereads the event just typed.
+It then gets translated through `function-key-map'.
+The translated event has to replace the real events,
+both in the value of (this-command-keys) and in echoing.
+To achieve this, `universal-argument-other-key' calls
+`reset-this-command-lengths', which discards the record of reading
+these events the first time. */)
+ (void)
+{
+ this_command_key_count = before_command_key_count;
+ if (this_command_key_count < this_single_command_key_start)
+ this_single_command_key_start = this_command_key_count;
+
+ echo_truncate (before_command_echo_length);
+
+ /* Cause whatever we put into unread-command-events
+ to echo as if it were being freshly read from the keyboard. */
+ this_command_key_count_reset = 1;
+
+ return Qnil;
+}
+
+DEFUN ("clear-this-command-keys", Fclear_this_command_keys,
+ Sclear_this_command_keys, 0, 1, 0,
+ doc: /* Clear out the vector that `this-command-keys' returns.
+Also clear the record of the last 100 events, unless optional arg
+KEEP-RECORD is non-nil. */)
+ (Lisp_Object keep_record)
+{
+ int i;
+
+ this_command_key_count = 0;
+ this_command_key_count_reset = 0;
+
+ if (NILP (keep_record))
+ {
+ for (i = 0; i < ASIZE (recent_keys); ++i)
+ ASET (recent_keys, i, Qnil);
+ total_keys = 0;
+ recent_keys_index = 0;
+ }
+ return Qnil;
+}
+
+DEFUN ("recursion-depth", Frecursion_depth, Srecursion_depth, 0, 0, 0,
+ doc: /* Return the current depth in recursive edits. */)
+ (void)
+{
+ Lisp_Object temp;
+ /* Wrap around reliably on integer overflow. */
+ EMACS_INT sum = (command_loop_level & INTMASK) + (minibuf_level & INTMASK);
+ XSETINT (temp, sum);
+ return temp;
+}
+
+DEFUN ("open-dribble-file", Fopen_dribble_file, Sopen_dribble_file, 1, 1,
+ "FOpen dribble file: ",
+ doc: /* Start writing all keyboard characters to a dribble file called FILE.
+If FILE is nil, close any open dribble file.
+The file will be closed when Emacs exits.
+
+Be aware that this records ALL characters you type!
+This may include sensitive information such as passwords. */)
+ (Lisp_Object file)
+{
+ if (dribble)
+ {
+ block_input ();
+ fclose (dribble);
+ unblock_input ();
+ dribble = 0;
+ }
+ if (!NILP (file))
+ {
+ int fd;
+ Lisp_Object encfile;
+
+ file = Fexpand_file_name (file, Qnil);
+ encfile = ENCODE_FILE (file);
+ fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
+ if (fd < 0 && errno == EEXIST && unlink (SSDATA (encfile)) == 0)
+ fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
+ dribble = fd < 0 ? 0 : fdopen (fd, "w");
+ if (dribble == 0)
+ report_file_error ("Opening dribble", file);
+ }
+ return Qnil;
+}
+
+DEFUN ("discard-input", Fdiscard_input, Sdiscard_input, 0, 0, 0,
+ doc: /* Discard the contents of the terminal input buffer.
+Also end any kbd macro being defined. */)
+ (void)
+{
+ if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
+ {
+ /* Discard the last command from the macro. */
+ Fcancel_kbd_macro_events ();
+ end_kbd_macro ();
+ }
+
+ Vunread_command_events = Qnil;
+
+ discard_tty_input ();
+
+ kbd_fetch_ptr = kbd_store_ptr;
+ input_pending = 0;
+
+ return Qnil;
+}
+\f
+DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_emacs, 0, 1, "",
+ doc: /* Stop Emacs and return to superior process. You can resume later.
+If `cannot-suspend' is non-nil, or if the system doesn't support job
+control, run a subshell instead.
+
+If optional arg STUFFSTRING is non-nil, its characters are stuffed
+to be read as terminal input by Emacs's parent, after suspension.
+
+Before suspending, run the normal hook `suspend-hook'.
+After resumption run the normal hook `suspend-resume-hook'.
+
+Some operating systems cannot stop the Emacs process and resume it later.
+On such systems, Emacs starts a subshell instead of suspending. */)
+ (Lisp_Object stuffstring)
+{
+ ptrdiff_t count = SPECPDL_INDEX ();
+ int old_height, old_width;
+ int width, height;
+ struct gcpro gcpro1;
+
+ if (tty_list && tty_list->next)
+ error ("There are other tty frames open; close them before suspending Emacs");
+
+ if (!NILP (stuffstring))
+ CHECK_STRING (stuffstring);
+
+ run_hook (intern ("suspend-hook"));
+
+ GCPRO1 (stuffstring);
+ get_tty_size (fileno (CURTTY ()->input), &old_width, &old_height);
+ reset_all_sys_modes ();
+ /* sys_suspend can get an error if it tries to fork a subshell
+ and the system resources aren't available for that. */
+ record_unwind_protect_void (init_all_sys_modes);
+ stuff_buffered_input (stuffstring);
+ if (cannot_suspend)
+ sys_subshell ();
+ else
+ sys_suspend ();
+ unbind_to (count, Qnil);
+
+ /* Check if terminal/window size has changed.
+ Note that this is not useful when we are running directly
+ with a window system; but suspend should be disabled in that case. */
+ get_tty_size (fileno (CURTTY ()->input), &width, &height);
+ if (width != old_width || height != old_height)
+ change_frame_size (SELECTED_FRAME (), width,
+ height - FRAME_MENU_BAR_LINES (SELECTED_FRAME ()),
+ 0, 0, 0, 0);
+
+ run_hook (intern ("suspend-resume-hook"));
+
+ UNGCPRO;
+ return Qnil;
+}
+
+/* If STUFFSTRING is a string, stuff its contents as pending terminal input.
+ Then in any case stuff anything Emacs has read ahead and not used. */
+
+void
+stuff_buffered_input (Lisp_Object stuffstring)
+{
+#ifdef SIGTSTP /* stuff_char is defined if SIGTSTP. */
+ register unsigned char *p;
+
+ if (STRINGP (stuffstring))
+ {
+ register ptrdiff_t count;
+
+ p = SDATA (stuffstring);
+ count = SBYTES (stuffstring);
+ while (count-- > 0)
+ stuff_char (*p++);
+ stuff_char ('\n');
+ }
+
+ /* Anything we have read ahead, put back for the shell to read. */
+ /* ?? What should this do when we have multiple keyboards??
+ Should we ignore anything that was typed in at the "wrong" kboard?
+
+ rms: we should stuff everything back into the kboard
+ it came from. */
+ for (; kbd_fetch_ptr != kbd_store_ptr; kbd_fetch_ptr++)
+ {
+
+ if (kbd_fetch_ptr == kbd_buffer + KBD_BUFFER_SIZE)
+ kbd_fetch_ptr = kbd_buffer;
+ if (kbd_fetch_ptr->kind == ASCII_KEYSTROKE_EVENT)
+ stuff_char (kbd_fetch_ptr->code);
+
+ clear_event (kbd_fetch_ptr);
+ }
+
+ input_pending = 0;
+#endif /* SIGTSTP */
+}
+\f
+void
+set_waiting_for_input (struct timespec *time_to_clear)
+{
+ input_available_clear_time = time_to_clear;
+
+ /* Tell handle_interrupt to throw back to read_char, */
+ waiting_for_input = 1;
+
+ /* If handle_interrupt was called before and buffered a C-g,
+ make it run again now, to avoid timing error. */
+ if (!NILP (Vquit_flag))
+ quit_throw_to_read_char (0);
+}
+
+void
+clear_waiting_for_input (void)
+{
+ /* Tell handle_interrupt not to throw back to read_char, */
+ waiting_for_input = 0;
+ input_available_clear_time = 0;
+}
+
+/* The SIGINT handler.
+
+ If we have a frame on the controlling tty, we assume that the
+ SIGINT was generated by C-g, so we call handle_interrupt.
+ Otherwise, tell QUIT to kill Emacs. */
+
+static void
+handle_interrupt_signal (int sig)
+{
+ /* See if we have an active terminal on our controlling tty. */
+ struct terminal *terminal = get_named_terminal ("/dev/tty");
+ if (!terminal)
+ {
+ /* If there are no frames there, let's pretend that we are a
+ well-behaving UN*X program and quit. We must not call Lisp
+ in a signal handler, so tell QUIT to exit when it is
+ safe. */
+ Vquit_flag = Qkill_emacs;
+ }
+ else
+ {
+ /* Otherwise, the SIGINT was probably generated by C-g. */
+
+ /* Set internal_last_event_frame to the top frame of the
+ controlling tty, if we have a frame there. We disable the
+ interrupt key on secondary ttys, so the SIGINT must have come
+ from the controlling tty. */
+ internal_last_event_frame = terminal->display_info.tty->top_frame;
+
+ handle_interrupt (1);
+ }
+}
+
+static void
+deliver_interrupt_signal (int sig)
+{
+ deliver_process_signal (sig, handle_interrupt_signal);
+}
+
+
+/* If Emacs is stuck because `inhibit-quit' is true, then keep track
+ of the number of times C-g has been requested. If C-g is pressed
+ enough times, then quit anyway. See bug#6585. */
+static int volatile force_quit_count;
+
+/* This routine is called at interrupt level in response to C-g.
+
+ It is called from the SIGINT handler or kbd_buffer_store_event.
+
+ If `waiting_for_input' is non zero, then unless `echoing' is
+ nonzero, immediately throw back to read_char.
+
+ Otherwise it sets the Lisp variable quit-flag not-nil. This causes
+ eval to throw, when it gets a chance. If quit-flag is already
+ non-nil, it stops the job right away. */
+
+static void
+handle_interrupt (bool in_signal_handler)
+{
+ char c;
+
+ cancel_echoing ();
+
+ /* XXX This code needs to be revised for multi-tty support. */
+ if (!NILP (Vquit_flag) && get_named_terminal ("/dev/tty"))
+ {
+ if (! in_signal_handler)
+ {
+ /* If SIGINT isn't blocked, don't let us be interrupted by
+ a SIGINT. It might be harmful due to non-reentrancy
+ in I/O functions. */
+ sigset_t blocked;
+ sigemptyset (&blocked);
+ sigaddset (&blocked, SIGINT);
+ pthread_sigmask (SIG_BLOCK, &blocked, 0);
+ }
+
+ fflush (stdout);
+ reset_all_sys_modes ();
+
+#ifdef SIGTSTP
+/*
+ * On systems which can suspend the current process and return to the original
+ * shell, this command causes the user to end up back at the shell.
+ * The "Auto-save" and "Abort" questions are not asked until
+ * the user elects to return to emacs, at which point he can save the current
+ * job and either dump core or continue.
+ */
+ sys_suspend ();
+#else
+ /* Perhaps should really fork an inferior shell?
+ But that would not provide any way to get back
+ to the original shell, ever. */
+ printf ("No support for stopping a process on this operating system;\n");
+ printf ("you can continue or abort.\n");
+#endif /* not SIGTSTP */
+#ifdef MSDOS
+ /* We must remain inside the screen area when the internal terminal
+ is used. Note that [Enter] is not echoed by dos. */
+ cursor_to (SELECTED_FRAME (), 0, 0);
+#endif
+ /* It doesn't work to autosave while GC is in progress;
+ the code used for auto-saving doesn't cope with the mark bit. */
+ if (!gc_in_progress)
+ {
+ printf ("Auto-save? (y or n) ");
+ fflush (stdout);
+ if (((c = getchar ()) & ~040) == 'Y')
+ {
+ Fdo_auto_save (Qt, Qnil);
+#ifdef MSDOS
+ printf ("\r\nAuto-save done");
+#else /* not MSDOS */
+ printf ("Auto-save done\n");
+#endif /* not MSDOS */
+ }
+ while (c != '\n') c = getchar ();
+ }
+ else
+ {
+ /* During GC, it must be safe to reenable quitting again. */
+ Vinhibit_quit = Qnil;
+#ifdef MSDOS
+ printf ("\r\n");
+#endif /* not MSDOS */
+ printf ("Garbage collection in progress; cannot auto-save now\r\n");
+ printf ("but will instead do a real quit after garbage collection ends\r\n");
+ fflush (stdout);
+ }
+
+#ifdef MSDOS
+ printf ("\r\nAbort? (y or n) ");
+#else /* not MSDOS */
+ printf ("Abort (and dump core)? (y or n) ");
+#endif /* not MSDOS */
+ fflush (stdout);
+ if (((c = getchar ()) & ~040) == 'Y')
+ emacs_abort ();
+ while (c != '\n') c = getchar ();
+#ifdef MSDOS
+ printf ("\r\nContinuing...\r\n");
+#else /* not MSDOS */
+ printf ("Continuing...\n");
+#endif /* not MSDOS */
+ fflush (stdout);
+ init_all_sys_modes ();
+ }
+ else
+ {
+ /* If executing a function that wants to be interrupted out of
+ and the user has not deferred quitting by binding `inhibit-quit'
+ then quit right away. */
+ if (immediate_quit && NILP (Vinhibit_quit))
+ {
+ struct gl_state_s saved;
+ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+
+ immediate_quit = 0;
+ pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
+ saved = gl_state;
+ GCPRO4 (saved.object, saved.global_code,
+ saved.current_syntax_table, saved.old_prop);
+ Fsignal (Qquit, Qnil);
+ gl_state = saved;
+ UNGCPRO;
+ }
+ else
+ { /* Else request quit when it's safe. */
+ int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1;
+ force_quit_count = count;
+ if (count == 3)
+ {
+ immediate_quit = 1;
+ Vinhibit_quit = Qnil;
+ }
+ Vquit_flag = Qt;
+ }
+ }
+
+ pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
+
+/* TODO: The longjmp in this call throws the NS event loop integration off,
+ and it seems to do fine without this. Probably some attention
+ needs to be paid to the setting of waiting_for_input in
+ wait_reading_process_output() under HAVE_NS because of the call
+ to ns_select there (needed because otherwise events aren't picked up
+ outside of polling since we don't get SIGIO like X and we don't have a
+ separate event loop thread like W32. */
+#ifndef HAVE_NS
+ if (waiting_for_input && !echoing)
+ quit_throw_to_read_char (in_signal_handler);
+#endif
+}
+
+/* Handle a C-g by making read_char return C-g. */
+
+static void
+quit_throw_to_read_char (bool from_signal)
+{
+ /* When not called from a signal handler it is safe to call
+ Lisp. */
+ if (!from_signal && EQ (Vquit_flag, Qkill_emacs))
+ Fkill_emacs (Qnil);
+
+ /* Prevent another signal from doing this before we finish. */
+ clear_waiting_for_input ();
+ input_pending = 0;
+
+ Vunread_command_events = Qnil;
+
+ if (FRAMEP (internal_last_event_frame)
+ && !EQ (internal_last_event_frame, selected_frame))
+ do_switch_frame (make_lispy_switch_frame (internal_last_event_frame),
+ 0, 0, Qnil);
+
+ sys_longjmp (getcjmp, 1);
+}
+\f
+DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,
+ Sset_input_interrupt_mode, 1, 1, 0,
+ doc: /* Set interrupt mode of reading keyboard input.
+If INTERRUPT is non-nil, Emacs will use input interrupts;
+otherwise Emacs uses CBREAK mode.
+
+See also `current-input-mode'. */)
+ (Lisp_Object interrupt)
+{
+ bool new_interrupt_input;
+#ifdef USABLE_SIGIO
+#ifdef HAVE_X_WINDOWS
+ if (x_display_list != NULL)
+ {
+ /* When using X, don't give the user a real choice,
+ because we haven't implemented the mechanisms to support it. */
+ new_interrupt_input = 1;
+ }
+ else
+#endif /* HAVE_X_WINDOWS */
+ new_interrupt_input = !NILP (interrupt);
+#else /* not USABLE_SIGIO */
+ new_interrupt_input = 0;
+#endif /* not USABLE_SIGIO */
+
+ if (new_interrupt_input != interrupt_input)
+ {
+#ifdef POLL_FOR_INPUT
+ stop_polling ();
+#endif
+#ifndef DOS_NT
+ /* this causes startup screen to be restored and messes with the mouse */
+ reset_all_sys_modes ();
+ interrupt_input = new_interrupt_input;
+ init_all_sys_modes ();
+#else
+ interrupt_input = new_interrupt_input;
+#endif
+
+#ifdef POLL_FOR_INPUT
+ poll_suppress_count = 1;
+ start_polling ();
+#endif
+ }
+ return Qnil;
+}
+
+DEFUN ("set-output-flow-control", Fset_output_flow_control, Sset_output_flow_control, 1, 2, 0,
+ doc: /* Enable or disable ^S/^Q flow control for output to TERMINAL.
+If FLOW is non-nil, flow control is enabled and you cannot use C-s or
+C-q in key sequences.
+
+This setting only has an effect on tty terminals and only when
+Emacs reads input in CBREAK mode; see `set-input-interrupt-mode'.
+
+See also `current-input-mode'. */)
+ (Lisp_Object flow, Lisp_Object terminal)
+{
+ struct terminal *t = decode_tty_terminal (terminal);
+ struct tty_display_info *tty;
+
+ if (!t)
+ return Qnil;
+ tty = t->display_info.tty;
+
+ if (tty->flow_control != !NILP (flow))
+ {
+#ifndef DOS_NT
+ /* This causes startup screen to be restored and messes with the mouse. */
+ reset_sys_modes (tty);
+#endif
+
+ tty->flow_control = !NILP (flow);
+
+#ifndef DOS_NT
+ init_sys_modes (tty);
+#endif
+ }
+ return Qnil;
+}
+
+DEFUN ("set-input-meta-mode", Fset_input_meta_mode, Sset_input_meta_mode, 1, 2, 0,
+ doc: /* Enable or disable 8-bit input on TERMINAL.
+If META is t, Emacs will accept 8-bit input, and interpret the 8th
+bit as the Meta modifier.
+
+If META is nil, Emacs will ignore the top bit, on the assumption it is
+parity.
+
+Otherwise, Emacs will accept and pass through 8-bit input without
+specially interpreting the top bit.
+
+This setting only has an effect on tty terminal devices.
+
+Optional parameter TERMINAL specifies the tty terminal device to use.
+It may be a terminal object, a frame, or nil for the terminal used by
+the currently selected frame.
+
+See also `current-input-mode'. */)
+ (Lisp_Object meta, Lisp_Object terminal)
+{
+ struct terminal *t = decode_tty_terminal (terminal);
+ struct tty_display_info *tty;
+ int new_meta;
+
+ if (!t)
+ return Qnil;
+ tty = t->display_info.tty;
+
+ if (NILP (meta))
+ new_meta = 0;
+ else if (EQ (meta, Qt))
+ new_meta = 1;
+ else
+ new_meta = 2;
+
+ if (tty->meta_key != new_meta)
+ {
+#ifndef DOS_NT
+ /* this causes startup screen to be restored and messes with the mouse */
+ reset_sys_modes (tty);
+#endif
+
+ tty->meta_key = new_meta;
+
+#ifndef DOS_NT
+ init_sys_modes (tty);
+#endif
+ }
+ return Qnil;
+}
+
+DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_char, 1, 1, 0,
+ doc: /* Specify character used for quitting.
+QUIT must be an ASCII character.
+
+This function only has an effect on the controlling tty of the Emacs
+process.
+
+See also `current-input-mode'. */)
+ (Lisp_Object quit)
+{
+ struct terminal *t = get_named_terminal ("/dev/tty");
+ struct tty_display_info *tty;
+
+ if (!t)
+ return Qnil;
+ tty = t->display_info.tty;
+
+ if (NILP (quit) || !INTEGERP (quit) || XINT (quit) < 0 || XINT (quit) > 0400)
+ error ("QUIT must be an ASCII character");
+
+#ifndef DOS_NT
+ /* this causes startup screen to be restored and messes with the mouse */
+ reset_sys_modes (tty);
+#endif
+
+ /* Don't let this value be out of range. */
+ quit_char = XINT (quit) & (tty->meta_key == 0 ? 0177 : 0377);
+
+#ifndef DOS_NT
+ init_sys_modes (tty);
+#endif
+
+ return Qnil;
+}
+
+DEFUN ("set-input-mode", Fset_input_mode, Sset_input_mode, 3, 4, 0,
+ doc: /* Set mode of reading keyboard input.
+First arg INTERRUPT non-nil means use input interrupts;
+ nil means use CBREAK mode.
+Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
+ (no effect except in CBREAK mode).
+Third arg META t means accept 8-bit input (for a Meta key).
+ META nil means ignore the top bit, on the assumption it is parity.
+ Otherwise, accept 8-bit input and don't use the top bit for Meta.
+Optional fourth arg QUIT if non-nil specifies character to use for quitting.
+See also `current-input-mode'. */)
+ (Lisp_Object interrupt, Lisp_Object flow, Lisp_Object meta, Lisp_Object quit)
+{
+ Fset_input_interrupt_mode (interrupt);
+ Fset_output_flow_control (flow, Qnil);
+ Fset_input_meta_mode (meta, Qnil);
+ if (!NILP (quit))
+ Fset_quit_char (quit);
+ return Qnil;
+}
+
+DEFUN ("current-input-mode", Fcurrent_input_mode, Scurrent_input_mode, 0, 0, 0,
+ doc: /* Return information about the way Emacs currently reads keyboard input.
+The value is a list of the form (INTERRUPT FLOW META QUIT), where
+ INTERRUPT is non-nil if Emacs is using interrupt-driven input; if
+ nil, Emacs is using CBREAK mode.
+ FLOW is non-nil if Emacs uses ^S/^Q flow control for output to the
+ terminal; this does not apply if Emacs uses interrupt-driven input.
+ META is t if accepting 8-bit input with 8th bit as Meta flag.
+ META nil means ignoring the top bit, on the assumption it is parity.
+ META is neither t nor nil if accepting 8-bit input and using
+ all 8 bits as the character code.
+ QUIT is the character Emacs currently uses to quit.
+The elements of this list correspond to the arguments of
+`set-input-mode'. */)
+ (void)
+{
+ struct frame *sf = XFRAME (selected_frame);
+
+ Lisp_Object interrupt = interrupt_input ? Qt : Qnil;
+ Lisp_Object flow, meta;
+ if (FRAME_TERMCAP_P (sf) || FRAME_MSDOS_P (sf))
+ {
+ flow = FRAME_TTY (sf)->flow_control ? Qt : Qnil;
+ meta = (FRAME_TTY (sf)->meta_key == 2
+ ? make_number (0)
+ : (CURTTY ()->meta_key == 1 ? Qt : Qnil));
+ }
+ else
+ {
+ flow = Qnil;
+ meta = Qt;
+ }
+ Lisp_Object quit = make_number (quit_char);
+
+ return list4 (interrupt, flow, meta, quit);
+}
+
+DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, 2, 4, 0,
+ doc: /* Return position information for pixel coordinates X and Y.
+By default, X and Y are relative to text area of the selected window.
+Optional third arg FRAME-OR-WINDOW non-nil specifies frame or window.
+If optional fourth arg WHOLE is non-nil, X is relative to the left
+edge of the window.
+
+The return value is similar to a mouse click position:
+ (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
+ IMAGE (DX . DY) (WIDTH . HEIGHT))
+The `posn-' functions access elements of such lists. */)
+ (Lisp_Object x, Lisp_Object y, Lisp_Object frame_or_window, Lisp_Object whole)
+{
+ CHECK_NATNUM (x);
+ CHECK_NATNUM (y);
+
+ if (NILP (frame_or_window))
+ frame_or_window = selected_window;
+
+ if (WINDOWP (frame_or_window))
+ {
+ struct window *w = decode_live_window (frame_or_window);
+
+ XSETINT (x, (XINT (x)
+ + WINDOW_LEFT_EDGE_X (w)
+ + (NILP (whole)
+ ? window_box_left_offset (w, TEXT_AREA)
+ : 0)));
+ XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y)));
+ frame_or_window = w->frame;
+ }
+
+ CHECK_LIVE_FRAME (frame_or_window);
+
+ return make_lispy_position (XFRAME (frame_or_window), x, y, 0);
+}
+
+DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_point, 0, 2, 0,
+ doc: /* Return position information for buffer POS in WINDOW.
+POS defaults to point in WINDOW; WINDOW defaults to the selected window.
+
+Return nil if position is not visible in window. Otherwise,
+the return value is similar to that returned by `event-start' for
+a mouse click at the upper left corner of the glyph corresponding
+to the given buffer position:
+ (WINDOW AREA-OR-POS (X . Y) TIMESTAMP OBJECT POS (COL . ROW)
+ IMAGE (DX . DY) (WIDTH . HEIGHT))
+The `posn-' functions access elements of such lists. */)
+ (Lisp_Object pos, Lisp_Object window)
+{
+ Lisp_Object tem;
+
+ if (NILP (window))
+ window = selected_window;
+
+ tem = Fpos_visible_in_window_p (pos, window, Qt);
+ if (!NILP (tem))
+ {
+ Lisp_Object x = XCAR (tem);
+ Lisp_Object y = XCAR (XCDR (tem));
+
+ /* Point invisible due to hscrolling? */
+ if (XINT (x) < 0)
+ return Qnil;
+ tem = Fposn_at_x_y (x, y, window, Qnil);
+ }
+
+ return tem;
+}
+
+/* Set up a new kboard object with reasonable initial values.
+ TYPE is a window system for which this keyboard is used. */
+
+static void
+init_kboard (KBOARD *kb, Lisp_Object type)
+{
+ kset_overriding_terminal_local_map (kb, Qnil);
+ kset_last_command (kb, Qnil);
+ kset_real_last_command (kb, Qnil);
+ kset_keyboard_translate_table (kb, Qnil);
+ kset_last_repeatable_command (kb, Qnil);
+ kset_prefix_arg (kb, Qnil);
+ kset_last_prefix_arg (kb, Qnil);
+ kset_kbd_queue (kb, Qnil);
+ kb->kbd_queue_has_data = 0;
+ kb->immediate_echo = 0;
+ kset_echo_string (kb, Qnil);
+ kb->echo_after_prompt = -1;
+ kb->kbd_macro_buffer = 0;
+ kb->kbd_macro_bufsize = 0;
+ kset_defining_kbd_macro (kb, Qnil);
+ kset_last_kbd_macro (kb, Qnil);
+ kb->reference_count = 0;
+ kset_system_key_alist (kb, Qnil);
+ kset_system_key_syms (kb, Qnil);
+ kset_window_system (kb, type);
+ kset_input_decode_map (kb, Fmake_sparse_keymap (Qnil));
+ kset_local_function_key_map (kb, Fmake_sparse_keymap (Qnil));
+ Fset_keymap_parent (KVAR (kb, Vlocal_function_key_map), Vfunction_key_map);
+ kset_default_minibuffer_frame (kb, Qnil);
+}
+
+/* Allocate and basically initialize keyboard
+ object to use with window system TYPE. */
+
+KBOARD *
+allocate_kboard (Lisp_Object type)
+{
+ KBOARD *kb = xmalloc (sizeof *kb);
+
+ init_kboard (kb, type);
+ kb->next_kboard = all_kboards;
+ all_kboards = kb;
+ return kb;
+}
+
+/*
+ * Destroy the contents of a kboard object, but not the object itself.
+ * We use this just before deleting it, or if we're going to initialize
+ * it a second time.
+ */
+static void
+wipe_kboard (KBOARD *kb)
+{
+ xfree (kb->kbd_macro_buffer);
+}
+
+/* Free KB and memory referenced from it. */
+
+void
+delete_kboard (KBOARD *kb)
+{
+ KBOARD **kbp;
+
+ for (kbp = &all_kboards; *kbp != kb; kbp = &(*kbp)->next_kboard)
+ if (*kbp == NULL)
+ emacs_abort ();
+ *kbp = kb->next_kboard;
+
+ /* Prevent a dangling reference to KB. */
+ if (kb == current_kboard
+ && FRAMEP (selected_frame)
+ && FRAME_LIVE_P (XFRAME (selected_frame)))
+ {
+ current_kboard = FRAME_KBOARD (XFRAME (selected_frame));
+ single_kboard = 0;
+ if (current_kboard == kb)
+ emacs_abort ();
+ }
+
+ wipe_kboard (kb);
+ xfree (kb);
+}
+
+void
+init_keyboard (void)
+{
+ /* This is correct before outermost invocation of the editor loop. */
+ command_loop_level = -1;
+ immediate_quit = 0;
+ quit_char = Ctl ('g');
+ Vunread_command_events = Qnil;
+ timer_idleness_start_time = invalid_timespec ();
+ total_keys = 0;
+ recent_keys_index = 0;
+ kbd_fetch_ptr = kbd_buffer;
+ kbd_store_ptr = kbd_buffer;
+ do_mouse_tracking = Qnil;
+ input_pending = 0;
+ interrupt_input_blocked = 0;
+ pending_signals = 0;
+
+ /* This means that command_loop_1 won't try to select anything the first
+ time through. */
+ internal_last_event_frame = Qnil;
+ Vlast_event_frame = internal_last_event_frame;
+
+ current_kboard = initial_kboard;
+ /* Re-initialize the keyboard again. */
+ wipe_kboard (current_kboard);
+ /* A value of nil for Vwindow_system normally means a tty, but we also use
+ it for the initial terminal since there is no window system there. */
+ init_kboard (current_kboard, Qnil);
+
+ if (!noninteractive)
+ {
+ /* Before multi-tty support, these handlers used to be installed
+ only if the current session was a tty session. Now an Emacs
+ session may have multiple display types, so we always handle
+ SIGINT. There is special code in handle_interrupt_signal to exit
+ Emacs on SIGINT when there are no termcap frames on the
+ controlling terminal. */
+ struct sigaction action;
+ emacs_sigaction_init (&action, deliver_interrupt_signal);
+ sigaction (SIGINT, &action, 0);
+#ifndef DOS_NT
+ /* For systems with SysV TERMIO, C-g is set up for both SIGINT and
+ SIGQUIT and we can't tell which one it will give us. */
+ sigaction (SIGQUIT, &action, 0);
+#endif /* not DOS_NT */
+ }
+#ifdef USABLE_SIGIO
+ if (!noninteractive)
+ {
+ struct sigaction action;
+ emacs_sigaction_init (&action, deliver_input_available_signal);
+ sigaction (SIGIO, &action, 0);
+ }
+#endif
+
+/* Use interrupt input by default, if it works and noninterrupt input
+ has deficiencies. */
+
+#ifdef INTERRUPT_INPUT
+ interrupt_input = 1;
+#else
+ interrupt_input = 0;
+#endif
+
+ pthread_sigmask (SIG_SETMASK, &empty_mask, 0);
+ dribble = 0;
+
+ if (keyboard_init_hook)
+ (*keyboard_init_hook) ();
+
+#ifdef POLL_FOR_INPUT
+ poll_timer = NULL;
+ poll_suppress_count = 1;
+ start_polling ();
+#endif
+}
+
+/* This type's only use is in syms_of_keyboard, to put properties on the
+ event header symbols. */
+struct event_head
+{
+ short var;
+ short kind;
+};
+
+static const struct event_head head_table[] = {
+ {SYMBOL_INDEX (Qmouse_movement), SYMBOL_INDEX (Qmouse_movement)},
+ {SYMBOL_INDEX (Qscroll_bar_movement), SYMBOL_INDEX (Qmouse_movement)},
+
+ /* Some of the event heads. */
+ {SYMBOL_INDEX (Qswitch_frame), SYMBOL_INDEX (Qswitch_frame)},
+
+ {SYMBOL_INDEX (Qfocus_in), SYMBOL_INDEX (Qfocus_in)},
+ {SYMBOL_INDEX (Qfocus_out), SYMBOL_INDEX (Qfocus_out)},
+ {SYMBOL_INDEX (Qdelete_frame), SYMBOL_INDEX (Qdelete_frame)},
+ {SYMBOL_INDEX (Qiconify_frame), SYMBOL_INDEX (Qiconify_frame)},
+ {SYMBOL_INDEX (Qmake_frame_visible), SYMBOL_INDEX (Qmake_frame_visible)},
+ /* `select-window' should be handled just like `switch-frame'
+ in read_key_sequence. */
+ {SYMBOL_INDEX (Qselect_window), SYMBOL_INDEX (Qswitch_frame)}
+};
+
+void
+syms_of_keyboard (void)
+{
+ pending_funcalls = Qnil;
+ staticpro (&pending_funcalls);
+
+ Vlispy_mouse_stem = build_pure_c_string ("mouse");
+ staticpro (&Vlispy_mouse_stem);
+
+ regular_top_level_message = build_pure_c_string ("Back to top level");
+#ifdef HAVE_STACK_OVERFLOW_HANDLING
+ recover_top_level_message
+ = build_pure_c_string ("Re-entering top level after C stack overflow");
+#endif
+ DEFVAR_LISP ("internal--top-level-message", Vinternal__top_level_message,
+ doc: /* Message displayed by `normal-top-level'. */);
+ Vinternal__top_level_message = regular_top_level_message;
+
+ /* Tool-bars. */
+ DEFSYM (QCimage, ":image");
+ DEFSYM (Qhelp_echo, "help-echo");
+ DEFSYM (QCrtl, ":rtl");
+
+ staticpro (&item_properties);
+ item_properties = Qnil;
+
+ staticpro (&tool_bar_item_properties);
+ tool_bar_item_properties = Qnil;
+ staticpro (&tool_bar_items_vector);
+ tool_bar_items_vector = Qnil;
+
+ DEFSYM (Qtimer_event_handler, "timer-event-handler");
+ DEFSYM (Qdisabled_command_function, "disabled-command-function");
+ DEFSYM (Qself_insert_command, "self-insert-command");
+ DEFSYM (Qforward_char, "forward-char");
+ DEFSYM (Qbackward_char, "backward-char");
+
+ /* Non-nil disable property on a command means do not execute it;
+ call disabled-command-function's value instead. */
+ DEFSYM (Qdisabled, "disabled");
+
+ DEFSYM (Qundefined, "undefined");
+
+ /* Hooks to run before and after each command. */
+ DEFSYM (Qpre_command_hook, "pre-command-hook");
+ DEFSYM (Qpost_command_hook, "post-command-hook");
+
+ DEFSYM (Qdeferred_action_function, "deferred-action-function");
+ DEFSYM (Qdelayed_warnings_hook, "delayed-warnings-hook");
+ DEFSYM (Qfunction_key, "function-key");
+
+ /* The values of Qevent_kind properties. */
+ DEFSYM (Qmouse_click, "mouse-click");
+
+ DEFSYM (Qdrag_n_drop, "drag-n-drop");
+ DEFSYM (Qsave_session, "save-session");
+ DEFSYM (Qconfig_changed_event, "config-changed-event");
+
+ /* Menu and tool bar item parts. */
+ DEFSYM (Qmenu_enable, "menu-enable");
+
+#ifdef HAVE_NTGUI
+ DEFSYM (Qlanguage_change, "language-change");
+#endif
+
+#ifdef HAVE_DBUS
+ DEFSYM (Qdbus_event, "dbus-event");
+#endif
+
+#ifdef USE_FILE_NOTIFY
+ DEFSYM (Qfile_notify, "file-notify");
+#endif /* USE_FILE_NOTIFY */
+
+ /* Menu and tool bar item parts. */
+ DEFSYM (QCenable, ":enable");
+ DEFSYM (QCvisible, ":visible");
+ DEFSYM (QChelp, ":help");
+ DEFSYM (QCfilter, ":filter");
+ DEFSYM (QCbutton, ":button");
+ DEFSYM (QCkeys, ":keys");
+ DEFSYM (QCkey_sequence, ":key-sequence");
+
+ /* Non-nil disable property on a command means
+ do not execute it; call disabled-command-function's value instead. */
+ DEFSYM (QCtoggle, ":toggle");
+ DEFSYM (QCradio, ":radio");
+ DEFSYM (QClabel, ":label");
+ DEFSYM (QCvert_only, ":vert-only");
+
+ /* Symbols to use for parts of windows. */
+ DEFSYM (Qvertical_line, "vertical-line");
+ DEFSYM (Qright_divider, "right-divider");
+ DEFSYM (Qbottom_divider, "bottom-divider");
+
+ DEFSYM (Qmouse_fixup_help_message, "mouse-fixup-help-message");
+
+ DEFSYM (Qabove_handle, "above-handle");
+ DEFSYM (Qhandle, "handle");
+ DEFSYM (Qbelow_handle, "below-handle");
+ DEFSYM (Qup, "up");
+ DEFSYM (Qdown, "down");
+ DEFSYM (Qtop, "top");
+ DEFSYM (Qbottom, "bottom");
+ DEFSYM (Qend_scroll, "end-scroll");
+ DEFSYM (Qratio, "ratio");
+ DEFSYM (Qbefore_handle, "before-handle");
+ DEFSYM (Qhorizontal_handle, "horizontal-handle");
+ DEFSYM (Qafter_handle, "after-handle");
+ DEFSYM (Qleft, "left");
+ DEFSYM (Qright, "right");
+ DEFSYM (Qleftmost, "leftmost");
+ DEFSYM (Qrightmost, "rightmost");
+
+ /* Properties of event headers. */
+ DEFSYM (Qevent_kind, "event-kind");
+ DEFSYM (Qevent_symbol_elements, "event-symbol-elements");
+
+ /* An event header symbol HEAD may have a property named
+ Qevent_symbol_element_mask, which is of the form (BASE MODIFIERS);
+ BASE is the base, unmodified version of HEAD, and MODIFIERS is the
+ mask of modifiers applied to it. If present, this is used to help
+ speed up parse_modifiers. */
+ DEFSYM (Qevent_symbol_element_mask, "event-symbol-element-mask");
+
+ /* An unmodified event header BASE may have a property named
+ Qmodifier_cache, which is an alist mapping modifier masks onto
+ modified versions of BASE. If present, this helps speed up
+ apply_modifiers. */
+ DEFSYM (Qmodifier_cache, "modifier-cache");
+
+ DEFSYM (Qrecompute_lucid_menubar, "recompute-lucid-menubar");
+ DEFSYM (Qactivate_menubar_hook, "activate-menubar-hook");
+
+ DEFSYM (Qpolling_period, "polling-period");
+
+ DEFSYM (Qgui_set_selection, "gui-set-selection");
+
+ /* The primary selection. */
+ DEFSYM (QPRIMARY, "PRIMARY");
+
+ DEFSYM (Qhandle_switch_frame, "handle-switch-frame");
+ DEFSYM (Qhandle_select_window, "handle-select-window");
+
+ DEFSYM (Qinput_method_function, "input-method-function");
+ DEFSYM (Qinput_method_exit_on_first_char, "input-method-exit-on-first-char");
+ DEFSYM (Qinput_method_use_echo_area, "input-method-use-echo-area");
+
+ DEFSYM (Qhelp_form_show, "help-form-show");
+
+ DEFSYM (Qecho_keystrokes, "echo-keystrokes");
+
+ Fset (Qinput_method_exit_on_first_char, Qnil);
+ Fset (Qinput_method_use_echo_area, Qnil);
+
+ /* Symbols to head events. */
+ DEFSYM (Qmouse_movement, "mouse-movement");
+ DEFSYM (Qscroll_bar_movement, "scroll-bar-movement");
+ DEFSYM (Qswitch_frame, "switch-frame");
+ DEFSYM (Qfocus_in, "focus-in");
+ DEFSYM (Qfocus_out, "focus-out");
+ DEFSYM (Qdelete_frame, "delete-frame");
+ DEFSYM (Qiconify_frame, "iconify-frame");
+ DEFSYM (Qmake_frame_visible, "make-frame-visible");
+ DEFSYM (Qselect_window, "select-window");
+ {
+ int i;
+
+ for (i = 0; i < ARRAYELTS (head_table); i++)
+ {
+ const struct event_head *p = &head_table[i];
+ Lisp_Object var = builtin_lisp_symbol (p->var);
+ Lisp_Object kind = builtin_lisp_symbol (p->kind);
+ Fput (var, Qevent_kind, kind);
+ Fput (var, Qevent_symbol_elements, list1 (var));
+ }
+ }
+
+ button_down_location = Fmake_vector (make_number (5), Qnil);
+ staticpro (&button_down_location);
+ mouse_syms = Fmake_vector (make_number (5), Qnil);
+ staticpro (&mouse_syms);
+ wheel_syms = Fmake_vector (make_number (ARRAYELTS (lispy_wheel_names)),
+ Qnil);
+ staticpro (&wheel_syms);
+
+ {
+ int i;
+ int len = ARRAYELTS (modifier_names);
+
+ modifier_symbols = Fmake_vector (make_number (len), Qnil);
+ for (i = 0; i < len; i++)
+ if (modifier_names[i])
+ ASET (modifier_symbols, i, intern_c_string (modifier_names[i]));
+ staticpro (&modifier_symbols);
+ }
+
+ recent_keys = Fmake_vector (make_number (NUM_RECENT_KEYS), Qnil);
+ staticpro (&recent_keys);
+
+ this_command_keys = Fmake_vector (make_number (40), Qnil);
+ staticpro (&this_command_keys);
+
+ raw_keybuf = Fmake_vector (make_number (30), Qnil);
+ staticpro (&raw_keybuf);
+
+ DEFSYM (Qcommand_execute, "command-execute");
+
+ accent_key_syms = Qnil;
+ staticpro (&accent_key_syms);
+
+ func_key_syms = Qnil;
+ staticpro (&func_key_syms);
+
+ drag_n_drop_syms = Qnil;
+ staticpro (&drag_n_drop_syms);
+
+ unread_switch_frame = Qnil;
+ staticpro (&unread_switch_frame);
+
+ internal_last_event_frame = Qnil;
+ staticpro (&internal_last_event_frame);
+
+ read_key_sequence_cmd = Qnil;
+ staticpro (&read_key_sequence_cmd);
+ read_key_sequence_remapped = Qnil;
+ staticpro (&read_key_sequence_remapped);
+
+ menu_bar_one_keymap_changed_items = Qnil;
+ staticpro (&menu_bar_one_keymap_changed_items);
+
+ menu_bar_items_vector = Qnil;
+ staticpro (&menu_bar_items_vector);
+
+ help_form_saved_window_configs = Qnil;
+ staticpro (&help_form_saved_window_configs);
+
+ defsubr (&Scurrent_idle_time);
+ defsubr (&Sevent_symbol_parse_modifiers);
+ defsubr (&Sevent_convert_list);
+ defsubr (&Sread_key_sequence);
+ defsubr (&Sread_key_sequence_vector);
+ defsubr (&Srecursive_edit);
+ defsubr (&Strack_mouse);
+ defsubr (&Sinput_pending_p);
+ defsubr (&Srecent_keys);
+ defsubr (&Sthis_command_keys);
+ defsubr (&Sthis_command_keys_vector);
+ defsubr (&Sthis_single_command_keys);
+ defsubr (&Sthis_single_command_raw_keys);
+ defsubr (&Sreset_this_command_lengths);
+ defsubr (&Sclear_this_command_keys);
+ defsubr (&Ssuspend_emacs);
+ defsubr (&Sabort_recursive_edit);
+ defsubr (&Sexit_recursive_edit);
+ defsubr (&Srecursion_depth);
+ defsubr (&Scommand_error_default_function);
+ defsubr (&Stop_level);
+ defsubr (&Sdiscard_input);
+ defsubr (&Sopen_dribble_file);
+ defsubr (&Sset_input_interrupt_mode);
+ defsubr (&Sset_output_flow_control);
+ defsubr (&Sset_input_meta_mode);
+ defsubr (&Sset_quit_char);
+ defsubr (&Sset_input_mode);
+ defsubr (&Scurrent_input_mode);
+ defsubr (&Sposn_at_point);
+ defsubr (&Sposn_at_x_y);
+
+ DEFVAR_LISP ("last-command-event", last_command_event,
+ doc: /* Last input event that was part of a command. */);
+
+ DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_event,
+ doc: /* Last input event in a command, except for mouse menu events.
+Mouse menus give back keys that don't look like mouse events;
+this variable holds the actual mouse event that led to the menu,
+so that you can determine whether the command was run by mouse or not. */);
+
+ DEFVAR_LISP ("last-input-event", last_input_event,
+ doc: /* Last input event. */);
+
+ DEFVAR_LISP ("unread-command-events", Vunread_command_events,
+ doc: /* List of events to be read as the command input.
+These events are processed first, before actual keyboard input.
+Events read from this list are not normally added to `this-command-keys',
+as they will already have been added once as they were read for the first time.
+An element of the form (t . EVENT) forces EVENT to be added to that list. */);
+ Vunread_command_events = Qnil;
+
+ DEFVAR_LISP ("unread-post-input-method-events", Vunread_post_input_method_events,
+ doc: /* List of events to be processed as input by input methods.
+These events are processed before `unread-command-events'
+and actual keyboard input, but are not given to `input-method-function'. */);
+ Vunread_post_input_method_events = Qnil;
+
+ DEFVAR_LISP ("unread-input-method-events", Vunread_input_method_events,
+ doc: /* List of events to be processed as input by input methods.
+These events are processed after `unread-command-events', but
+before actual keyboard input.
+If there's an active input method, the events are given to
+`input-method-function'. */);
+ Vunread_input_method_events = Qnil;
+
+ DEFVAR_LISP ("meta-prefix-char", meta_prefix_char,
+ doc: /* Meta-prefix character code.
+Meta-foo as command input turns into this character followed by foo. */);
+ XSETINT (meta_prefix_char, 033);
+
+ DEFVAR_KBOARD ("last-command", Vlast_command,
+ doc: /* The last command executed.
+Normally a symbol with a function definition, but can be whatever was found
+in the keymap, or whatever the variable `this-command' was set to by that
+command.
+
+The value `mode-exit' is special; it means that the previous command
+read an event that told it to exit, and it did so and unread that event.
+In other words, the present command is the event that made the previous
+command exit.
+
+The value `kill-region' is special; it means that the previous command
+was a kill command.
+
+`last-command' has a separate binding for each terminal device.
+See Info node `(elisp)Multiple Terminals'. */);
+
+ DEFVAR_KBOARD ("real-last-command", Vreal_last_command,
+ doc: /* Same as `last-command', but never altered by Lisp code.
+Taken from the previous value of `real-this-command'. */);
+
+ DEFVAR_KBOARD ("last-repeatable-command", Vlast_repeatable_command,
+ doc: /* Last command that may be repeated.
+The last command executed that was not bound to an input event.
+This is the command `repeat' will try to repeat.
+Taken from a previous value of `real-this-command'. */);
+
+ DEFVAR_LISP ("this-command", Vthis_command,
+ doc: /* The command now being executed.
+The command can set this variable; whatever is put here
+will be in `last-command' during the following command. */);
+ Vthis_command = Qnil;
+
+ DEFVAR_LISP ("real-this-command", Vreal_this_command,
+ doc: /* This is like `this-command', except that commands should never modify it. */);
+ Vreal_this_command = Qnil;
+
+ DEFVAR_LISP ("this-command-keys-shift-translated",
+ Vthis_command_keys_shift_translated,
+ doc: /* Non-nil if the key sequence activating this command was shift-translated.
+Shift-translation occurs when there is no binding for the key sequence
+as entered, but a binding was found by changing an upper-case letter
+to lower-case, or a shifted function key to an unshifted one. */);
+ Vthis_command_keys_shift_translated = Qnil;
+
+ DEFVAR_LISP ("this-original-command", Vthis_original_command,
+ doc: /* The command bound to the current key sequence before remapping.
+It equals `this-command' if the original command was not remapped through
+any of the active keymaps. Otherwise, the value of `this-command' is the
+result of looking up the original command in the active keymaps. */);
+ Vthis_original_command = Qnil;
+
+ DEFVAR_INT ("auto-save-interval", auto_save_interval,
+ doc: /* Number of input events between auto-saves.
+Zero means disable autosaving due to number of characters typed. */);
+ auto_save_interval = 300;
+
+ DEFVAR_LISP ("auto-save-timeout", Vauto_save_timeout,
+ doc: /* Number of seconds idle time before auto-save.
+Zero or nil means disable auto-saving due to idleness.
+After auto-saving due to this many seconds of idle time,
+Emacs also does a garbage collection if that seems to be warranted. */);
+ XSETFASTINT (Vauto_save_timeout, 30);
+
+ DEFVAR_LISP ("echo-keystrokes", Vecho_keystrokes,
+ doc: /* Nonzero means echo unfinished commands after this many seconds of pause.
+The value may be integer or floating point.
+If the value is zero, don't echo at all. */);
+ Vecho_keystrokes = make_number (1);
+
+ DEFVAR_INT ("polling-period", polling_period,
+ doc: /* Interval between polling for input during Lisp execution.
+The reason for polling is to make C-g work to stop a running program.
+Polling is needed only when using X windows and SIGIO does not work.
+Polling is automatically disabled in all other cases. */);
+ polling_period = 2;
+
+ DEFVAR_LISP ("double-click-time", Vdouble_click_time,
+ doc: /* Maximum time between mouse clicks to make a double-click.
+Measured in milliseconds. The value nil means disable double-click
+recognition; t means double-clicks have no time limit and are detected
+by position only. */);
+ Vdouble_click_time = make_number (500);
+
+ DEFVAR_INT ("double-click-fuzz", double_click_fuzz,
+ doc: /* Maximum mouse movement between clicks to make a double-click.
+On window-system frames, value is the number of pixels the mouse may have
+moved horizontally or vertically between two clicks to make a double-click.
+On non window-system frames, value is interpreted in units of 1/8 characters
+instead of pixels.
+
+This variable is also the threshold for motion of the mouse
+to count as a drag. */);
+ double_click_fuzz = 3;
+
+ DEFVAR_INT ("num-input-keys", num_input_keys,
+ doc: /* Number of complete key sequences read as input so far.
+This includes key sequences read from keyboard macros.
+The number is effectively the number of interactive command invocations. */);
+ num_input_keys = 0;
+
+ DEFVAR_INT ("num-nonmacro-input-events", num_nonmacro_input_events,
+ doc: /* Number of input events read from the keyboard so far.
+This does not include events generated by keyboard macros. */);
+ num_nonmacro_input_events = 0;
+
+ DEFVAR_LISP ("last-event-frame", Vlast_event_frame,
+ doc: /* The frame in which the most recently read event occurred.
+If the last event came from a keyboard macro, this is set to `macro'. */);
+ Vlast_event_frame = Qnil;
+
+ /* This variable is set up in sysdep.c. */
+ DEFVAR_LISP ("tty-erase-char", Vtty_erase_char,
+ doc: /* The ERASE character as set by the user with stty. */);
+
+ DEFVAR_LISP ("help-char", Vhelp_char,
+ doc: /* Character to recognize as meaning Help.
+When it is read, do `(eval help-form)', and display result if it's a string.
+If the value of `help-form' is nil, this char can be read normally. */);
+ XSETINT (Vhelp_char, Ctl ('H'));
+
+ DEFVAR_LISP ("help-event-list", Vhelp_event_list,
+ doc: /* List of input events to recognize as meaning Help.
+These work just like the value of `help-char' (see that). */);
+ Vhelp_event_list = Qnil;
+
+ DEFVAR_LISP ("help-form", Vhelp_form,
+ doc: /* Form to execute when character `help-char' is read.
+If the form returns a string, that string is displayed.
+If `help-form' is nil, the help char is not recognized. */);
+ Vhelp_form = Qnil;
+
+ DEFVAR_LISP ("prefix-help-command", Vprefix_help_command,
+ doc: /* Command to run when `help-char' character follows a prefix key.
+This command is used only when there is no actual binding
+for that character after that prefix key. */);
+ Vprefix_help_command = Qnil;
+
+ DEFVAR_LISP ("top-level", Vtop_level,
+ doc: /* Form to evaluate when Emacs starts up.
+Useful to set before you dump a modified Emacs. */);
+ Vtop_level = Qnil;
+ XSYMBOL (Qtop_level)->declared_special = false;
+
+ DEFVAR_KBOARD ("keyboard-translate-table", Vkeyboard_translate_table,
+ doc: /* Translate table for local keyboard input, or nil.
+If non-nil, the value should be a char-table. Each character read
+from the keyboard is looked up in this char-table. If the value found
+there is non-nil, then it is used instead of the actual input character.
+
+The value can also be a string or vector, but this is considered obsolete.
+If it is a string or vector of length N, character codes N and up are left
+untranslated. In a vector, an element which is nil means "no translation".
+
+This is applied to the characters supplied to input methods, not their
+output. See also `translation-table-for-input'.
+
+This variable has a separate binding for each terminal.
+See Info node `(elisp)Multiple Terminals'. */);
+
+ DEFVAR_BOOL ("cannot-suspend", cannot_suspend,
+ doc: /* Non-nil means to always spawn a subshell instead of suspending.
+\(Even if the operating system has support for stopping a process.\) */);
+ cannot_suspend = 0;
+
+ DEFVAR_BOOL ("menu-prompting", menu_prompting,
+ doc: /* Non-nil means prompt with menus when appropriate.
+This is done when reading from a keymap that has a prompt string,
+for elements that have prompt strings.
+The menu is displayed on the screen
+if X menus were enabled at configuration
+time and the previous event was a mouse click prefix key.
+Otherwise, menu prompting uses the echo area. */);
+ menu_prompting = 1;
+
+ DEFVAR_LISP ("menu-prompt-more-char", menu_prompt_more_char,
+ doc: /* Character to see next line of menu prompt.
+Type this character while in a menu prompt to rotate around the lines of it. */);
+ XSETINT (menu_prompt_more_char, ' ');
+
+ DEFVAR_INT ("extra-keyboard-modifiers", extra_keyboard_modifiers,
+ doc: /* A mask of additional modifier keys to use with every keyboard character.
+Emacs applies the modifiers of the character stored here to each keyboard
+character it reads. For example, after evaluating the expression
+ (setq extra-keyboard-modifiers ?\\C-x)
+all input characters will have the control modifier applied to them.
+
+Note that the character ?\\C-@, equivalent to the integer zero, does
+not count as a control character; rather, it counts as a character
+with no modifiers; thus, setting `extra-keyboard-modifiers' to zero
+cancels any modification. */);
+ extra_keyboard_modifiers = 0;
+
+ DEFSYM (Qdeactivate_mark, "deactivate-mark");
+ DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark,
+ doc: /* If an editing command sets this to t, deactivate the mark afterward.
+The command loop sets this to nil before each command,
+and tests the value when the command returns.
+Buffer modification stores t in this variable. */);
+ Vdeactivate_mark = Qnil;
+ Fmake_variable_buffer_local (Qdeactivate_mark);
+
+ DEFVAR_LISP ("pre-command-hook", Vpre_command_hook,
+ doc: /* Normal hook run before each command is executed.
+If an unhandled error happens in running this hook,
+the function in which the error occurred is unconditionally removed, since
+otherwise the error might happen repeatedly and make Emacs nonfunctional. */);
+ Vpre_command_hook = Qnil;
+
+ DEFVAR_LISP ("post-command-hook", Vpost_command_hook,
+ doc: /* Normal hook run after each command is executed.
+If an unhandled error happens in running this hook,
+the function in which the error occurred is unconditionally removed, since
+otherwise the error might happen repeatedly and make Emacs nonfunctional. */);
+ Vpost_command_hook = Qnil;
+
+#if 0
+ DEFVAR_LISP ("echo-area-clear-hook", ...,
+ doc: /* Normal hook run when clearing the echo area. */);
+#endif
+ DEFSYM (Qecho_area_clear_hook, "echo-area-clear-hook");
+ Fset (Qecho_area_clear_hook, Qnil);
+
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag", Vlucid_menu_bar_dirty_flag,
+ doc: /* Non-nil means menu bar, specified Lucid style, needs to be recomputed. */);
+ Vlucid_menu_bar_dirty_flag = Qnil;
+
+ DEFVAR_LISP ("menu-bar-final-items", Vmenu_bar_final_items,
+ doc: /* List of menu bar items to move to the end of the menu bar.
+The elements of the list are event types that may have menu bar bindings. */);
+ Vmenu_bar_final_items = Qnil;
+
+ DEFVAR_LISP ("tool-bar-separator-image-expression", Vtool_bar_separator_image_expression,
+ doc: /* Expression evaluating to the image spec for a tool-bar separator.
+This is used internally by graphical displays that do not render
+tool-bar separators natively. Otherwise it is unused (e.g. on GTK). */);
+ Vtool_bar_separator_image_expression = Qnil;
+
+ DEFVAR_KBOARD ("overriding-terminal-local-map",
+ Voverriding_terminal_local_map,
+ doc: /* Per-terminal keymap that takes precedence over all other keymaps.
+This variable is intended to let commands such as `universal-argument'
+set up a different keymap for reading the next command.
+
+`overriding-terminal-local-map' has a separate binding for each
+terminal device. See Info node `(elisp)Multiple Terminals'. */);
+
+ DEFVAR_LISP ("overriding-local-map", Voverriding_local_map,
+ doc: /* Keymap that replaces (overrides) local keymaps.
+If this variable is non-nil, Emacs looks up key bindings in this
+keymap INSTEAD OF the keymap char property, minor mode maps, and the
+buffer's local map. Hence, the only active keymaps would be
+`overriding-terminal-local-map', this keymap, and `global-keymap', in
+order of precedence. */);
+ Voverriding_local_map = Qnil;
+
+ DEFVAR_LISP ("overriding-local-map-menu-flag", Voverriding_local_map_menu_flag,
+ doc: /* Non-nil means `overriding-local-map' applies to the menu bar.
+Otherwise, the menu bar continues to reflect the buffer's local map
+and the minor mode maps regardless of `overriding-local-map'. */);
+ Voverriding_local_map_menu_flag = Qnil;
+
+ DEFVAR_LISP ("special-event-map", Vspecial_event_map,
+ doc: /* Keymap defining bindings for special events to execute at low level. */);
+ Vspecial_event_map = list1 (Qkeymap);
+
+ DEFVAR_LISP ("track-mouse", do_mouse_tracking,
+ doc: /* Non-nil means generate motion events for mouse motion. */);
+
+ DEFVAR_KBOARD ("system-key-alist", Vsystem_key_alist,
+ doc: /* Alist of system-specific X windows key symbols.
+Each element should have the form (N . SYMBOL) where N is the
+numeric keysym code (sans the \"system-specific\" bit 1<<28)
+and SYMBOL is its name.
+
+`system-key-alist' has a separate binding for each terminal device.
+See Info node `(elisp)Multiple Terminals'. */);
+
+ DEFVAR_KBOARD ("local-function-key-map", Vlocal_function_key_map,
+ doc: /* Keymap that translates key sequences to key sequences during input.
+This is used mainly for mapping key sequences into some preferred
+key events (symbols).
+
+The `read-key-sequence' function replaces any subsequence bound by
+`local-function-key-map' with its binding. More precisely, when the
+active keymaps have no binding for the current key sequence but
+`local-function-key-map' binds a suffix of the sequence to a vector or
+string, `read-key-sequence' replaces the matching suffix with its
+binding, and continues with the new sequence.
+
+If the binding is a function, it is called with one argument (the prompt)
+and its return value (a key sequence) is used.
+
+The events that come from bindings in `local-function-key-map' are not
+themselves looked up in `local-function-key-map'.
+
+For example, suppose `local-function-key-map' binds `ESC O P' to [f1].
+Typing `ESC O P' to `read-key-sequence' would return [f1]. Typing
+`C-x ESC O P' would return [?\\C-x f1]. If [f1] were a prefix key,
+typing `ESC O P x' would return [f1 x].
+
+`local-function-key-map' has a separate binding for each terminal
+device. See Info node `(elisp)Multiple Terminals'. If you need to
+define a binding on all terminals, change `function-key-map'
+instead. Initially, `local-function-key-map' is an empty keymap that
+has `function-key-map' as its parent on all terminal devices. */);
+
+ DEFVAR_KBOARD ("input-decode-map", Vinput_decode_map,
+ doc: /* Keymap that decodes input escape sequences.
+This is used mainly for mapping ASCII function key sequences into
+real Emacs function key events (symbols).
+
+The `read-key-sequence' function replaces any subsequence bound by
+`input-decode-map' with its binding. Contrary to `function-key-map',
+this map applies its rebinding regardless of the presence of an ordinary
+binding. So it is more like `key-translation-map' except that it applies
+before `function-key-map' rather than after.
+
+If the binding is a function, it is called with one argument (the prompt)
+and its return value (a key sequence) is used.
+
+The events that come from bindings in `input-decode-map' are not
+themselves looked up in `input-decode-map'. */);
+
+ DEFVAR_LISP ("function-key-map", Vfunction_key_map,
+ doc: /* The parent keymap of all `local-function-key-map' instances.
+Function key definitions that apply to all terminal devices should go
+here. If a mapping is defined in both the current
+`local-function-key-map' binding and this variable, then the local
+definition will take precedence. */);
+ Vfunction_key_map = Fmake_sparse_keymap (Qnil);
+
+ DEFVAR_LISP ("key-translation-map", Vkey_translation_map,
+ doc: /* Keymap of key translations that can override keymaps.
+This keymap works like `input-decode-map', but comes after `function-key-map'.
+Another difference is that it is global rather than terminal-local. */);
+ Vkey_translation_map = Fmake_sparse_keymap (Qnil);
+
+ DEFVAR_LISP ("deferred-action-list", Vdeferred_action_list,
+ doc: /* List of deferred actions to be performed at a later time.
+The precise format isn't relevant here; we just check whether it is nil. */);
+ Vdeferred_action_list = Qnil;
+
+ DEFVAR_LISP ("deferred-action-function", Vdeferred_action_function,
+ doc: /* Function to call to handle deferred actions, after each command.
+This function is called with no arguments after each command
+whenever `deferred-action-list' is non-nil. */);
+ Vdeferred_action_function = Qnil;
+
+ DEFVAR_LISP ("delayed-warnings-list", Vdelayed_warnings_list,
+ doc: /* List of warnings to be displayed after this command.
+Each element must be a list (TYPE MESSAGE [LEVEL [BUFFER-NAME]]),
+as per the args of `display-warning' (which see).
+If this variable is non-nil, `delayed-warnings-hook' will be run
+immediately after running `post-command-hook'. */);
+ Vdelayed_warnings_list = Qnil;
+
+ DEFVAR_LISP ("timer-list", Vtimer_list,
+ doc: /* List of active absolute time timers in order of increasing time. */);
+ Vtimer_list = Qnil;
+
+ DEFVAR_LISP ("timer-idle-list", Vtimer_idle_list,
+ doc: /* List of active idle-time timers in order of increasing time. */);
+ Vtimer_idle_list = Qnil;
+
+ DEFVAR_LISP ("input-method-function", Vinput_method_function,
+ doc: /* If non-nil, the function that implements the current input method.
+It's called with one argument, a printing character that was just read.
+\(That means a character with code 040...0176.)
+Typically this function uses `read-event' to read additional events.
+When it does so, it should first bind `input-method-function' to nil
+so it will not be called recursively.
+
+The function should return a list of zero or more events
+to be used as input. If it wants to put back some events
+to be reconsidered, separately, by the input method,
+it can add them to the beginning of `unread-command-events'.
+
+The input method function can find in `input-method-previous-message'
+the previous echo area message.
+
+The input method function should refer to the variables
+`input-method-use-echo-area' and `input-method-exit-on-first-char'
+for guidance on what to do. */);
+ Vinput_method_function = Qlist;
+
+ DEFVAR_LISP ("input-method-previous-message",
+ Vinput_method_previous_message,
+ doc: /* When `input-method-function' is called, hold the previous echo area message.
+This variable exists because `read-event' clears the echo area
+before running the input method. It is nil if there was no message. */);
+ Vinput_method_previous_message = Qnil;
+
+ DEFVAR_LISP ("show-help-function", Vshow_help_function,
+ doc: /* If non-nil, the function that implements the display of help.
+It's called with one argument, the help string to display. */);
+ Vshow_help_function = Qnil;
+
+ DEFVAR_LISP ("disable-point-adjustment", Vdisable_point_adjustment,
+ doc: /* If non-nil, suppress point adjustment after executing a command.
+
+After a command is executed, if point is moved into a region that has
+special properties (e.g. composition, display), we adjust point to
+the boundary of the region. But, when a command sets this variable to
+non-nil, we suppress the point adjustment.
+
+This variable is set to nil before reading a command, and is checked
+just after executing the command. */);
+ Vdisable_point_adjustment = Qnil;
+
+ DEFVAR_LISP ("global-disable-point-adjustment",
+ Vglobal_disable_point_adjustment,
+ doc: /* If non-nil, always suppress point adjustment.
+
+The default value is nil, in which case, point adjustment are
+suppressed only after special commands that set
+`disable-point-adjustment' (which see) to non-nil. */);
+ Vglobal_disable_point_adjustment = Qnil;
+
+ DEFVAR_LISP ("minibuffer-message-timeout", Vminibuffer_message_timeout,
+ doc: /* How long to display an echo-area message when the minibuffer is active.
+If the value is not a number, such messages don't time out. */);
+ Vminibuffer_message_timeout = make_number (2);
+
+ DEFVAR_LISP ("throw-on-input", Vthrow_on_input,
+ doc: /* If non-nil, any keyboard input throws to this symbol.
+The value of that variable is passed to `quit-flag' and later causes a
+peculiar kind of quitting. */);
+ Vthrow_on_input = Qnil;
+
+ DEFVAR_LISP ("command-error-function", Vcommand_error_function,
+ doc: /* Function to output error messages.
+Called with three arguments:
+- the error data, a list of the form (SIGNALED-CONDITION . SIGNAL-DATA)
+ such as what `condition-case' would bind its variable to,
+- the context (a string which normally goes at the start of the message),
+- the Lisp function within which the error was signaled. */);
+ Vcommand_error_function = intern ("command-error-default-function");
+
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons",
+ Venable_disabled_menus_and_buttons,
+ doc: /* If non-nil, don't ignore events produced by disabled menu items and tool-bar.
+
+Help functions bind this to allow help on disabled menu items
+and tool-bar buttons. */);
+ Venable_disabled_menus_and_buttons = Qnil;
+
+ DEFVAR_LISP ("select-active-regions",
+ Vselect_active_regions,
+ doc: /* If non-nil, an active region automatically sets the primary selection.
+If the value is `only', only temporarily active regions (usually made
+by mouse-dragging or shift-selection) set the window selection.
+
+This takes effect only when Transient Mark mode is enabled. */);
+ Vselect_active_regions = Qt;
+
+ DEFVAR_LISP ("saved-region-selection",
+ Vsaved_region_selection,
+ doc: /* Contents of active region prior to buffer modification.
+If `select-active-regions' is non-nil, Emacs sets this to the
+text in the region before modifying the buffer. The next call to
+the function `deactivate-mark' uses this to set the window selection. */);
+ Vsaved_region_selection = Qnil;
+
+ DEFVAR_LISP ("selection-inhibit-update-commands",
+ Vselection_inhibit_update_commands,
+ doc: /* List of commands which should not update the selection.
+Normally, if `select-active-regions' is non-nil and the mark remains
+active after a command (i.e. the mark was not deactivated), the Emacs
+command loop sets the selection to the text in the region. However,
+if the command is in this list, the selection is not updated. */);
+ Vselection_inhibit_update_commands
+ = list2 (Qhandle_switch_frame, Qhandle_select_window);
+
+ DEFVAR_LISP ("debug-on-event",
+ Vdebug_on_event,
+ doc: /* Enter debugger on this event. When Emacs
+receives the special event specified by this variable, it will try to
+break into the debugger as soon as possible instead of processing the
+event normally through `special-event-map'.
+
+Currently, the only supported values for this
+variable are `sigusr1' and `sigusr2'. */);
+ Vdebug_on_event = intern_c_string ("sigusr2");
+
+ /* Create the initial keyboard. Qt means 'unset'. */
+ initial_kboard = allocate_kboard (Qt);
+}
+
+void
+keys_of_keyboard (void)
+{
+ initial_define_key (global_map, Ctl ('Z'), "suspend-emacs");
+ initial_define_key (control_x_map, Ctl ('Z'), "suspend-emacs");
+ initial_define_key (meta_map, Ctl ('C'), "exit-recursive-edit");
+ initial_define_key (global_map, Ctl (']'), "abort-recursive-edit");
+ initial_define_key (meta_map, 'x', "execute-extended-command");
+
+ initial_define_lispy_key (Vspecial_event_map, "delete-frame",
+ "handle-delete-frame");
+ initial_define_lispy_key (Vspecial_event_map, "ns-put-working-text",
+ "ns-put-working-text");
+ initial_define_lispy_key (Vspecial_event_map, "ns-unput-working-text",
+ "ns-unput-working-text");
+ /* Here we used to use `ignore-event' which would simple set prefix-arg to
+ current-prefix-arg, as is done in `handle-switch-frame'.
+ But `handle-switch-frame is not run from the special-map.
+ Commands from that map are run in a special way that automatically
+ preserves the prefix-arg. Restoring the prefix arg here is not just
+ redundant but harmful:
+ - C-u C-x v =
+ - current-prefix-arg is set to non-nil, prefix-arg is set to nil.
+ - after the first prompt, the exit-minibuffer-hook is run which may
+ iconify a frame and thus push a `iconify-frame' event.
+ - after running exit-minibuffer-hook, current-prefix-arg is
+ restored to the non-nil value it had before the prompt.
+ - we enter the second prompt.
+ current-prefix-arg is non-nil, prefix-arg is nil.
+ - before running the first real event, we run the special iconify-frame
+ event, but we pass the `special' arg to command-execute so
+ current-prefix-arg and prefix-arg are left untouched.
+ - here we foolishly copy the non-nil current-prefix-arg to prefix-arg.
+ - the next key event will have a spuriously non-nil current-prefix-arg. */
+ initial_define_lispy_key (Vspecial_event_map, "iconify-frame",
+ "ignore");
+ initial_define_lispy_key (Vspecial_event_map, "make-frame-visible",
+ "ignore");
+ /* Handling it at such a low-level causes read_key_sequence to get
+ * confused because it doesn't realize that the current_buffer was
+ * changed by read_char.
+ *
+ * initial_define_lispy_key (Vspecial_event_map, "select-window",
+ * "handle-select-window"); */
+ initial_define_lispy_key (Vspecial_event_map, "save-session",
+ "handle-save-session");
+
+#ifdef HAVE_DBUS
+ /* Define a special event which is raised for dbus callback
+ functions. */
+ initial_define_lispy_key (Vspecial_event_map, "dbus-event",
+ "dbus-handle-event");
+#endif
+
+#ifdef USE_FILE_NOTIFY
+ /* Define a special event which is raised for notification callback
+ functions. */
+ initial_define_lispy_key (Vspecial_event_map, "file-notify",
+ "file-notify-handle-event");
+#endif /* USE_FILE_NOTIFY */
+
+ initial_define_lispy_key (Vspecial_event_map, "config-changed-event",
+ "ignore");
+#if defined (WINDOWSNT)
+ initial_define_lispy_key (Vspecial_event_map, "language-change",
+ "ignore");
+#endif
+ initial_define_lispy_key (Vspecial_event_map, "focus-in",
+ "handle-focus-in");
+ initial_define_lispy_key (Vspecial_event_map, "focus-out",
+ "handle-focus-out");
+}
+
+/* Mark the pointers in the kboard objects.
+ Called by Fgarbage_collect. */
+void
+mark_kboards (void)
+{
+ KBOARD *kb;
+ Lisp_Object *p;
+ for (kb = all_kboards; kb; kb = kb->next_kboard)
+ {
+ if (kb->kbd_macro_buffer)
+ for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++)
+ mark_object (*p);
+ mark_object (KVAR (kb, Voverriding_terminal_local_map));
+ mark_object (KVAR (kb, Vlast_command));
+ mark_object (KVAR (kb, Vreal_last_command));
+ mark_object (KVAR (kb, Vkeyboard_translate_table));
+ mark_object (KVAR (kb, Vlast_repeatable_command));
+ mark_object (KVAR (kb, Vprefix_arg));
+ mark_object (KVAR (kb, Vlast_prefix_arg));
+ mark_object (KVAR (kb, kbd_queue));
+ mark_object (KVAR (kb, defining_kbd_macro));
+ mark_object (KVAR (kb, Vlast_kbd_macro));
+ mark_object (KVAR (kb, Vsystem_key_alist));
+ mark_object (KVAR (kb, system_key_syms));
+ mark_object (KVAR (kb, Vwindow_system));
+ mark_object (KVAR (kb, Vinput_decode_map));
+ mark_object (KVAR (kb, Vlocal_function_key_map));
+ mark_object (KVAR (kb, Vdefault_minibuffer_frame));
+ mark_object (KVAR (kb, echo_string));
+ }
+ {
+ struct input_event *event;
+ for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++)
+ {
+ if (event == kbd_buffer + KBD_BUFFER_SIZE)
+ event = kbd_buffer;
+ /* These two special event types has no Lisp_Objects to mark. */
+ if (event->kind != SELECTION_REQUEST_EVENT
+ && event->kind != SELECTION_CLEAR_EVENT)
+ {
+ mark_object (event->x);
+ mark_object (event->y);
+ mark_object (event->frame_or_window);
+ mark_object (event->arg);
+ }
+ }
+ }
+}
--- /dev/null
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+/* Fundamental definitions for GNU Emacs Lisp interpreter.
+
+Copyright (C) 1985-1987, 1993-1995, 1997-2016 Free Software Foundation,
+Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
++the Free Software Foundation, either version 3 of the License, or (at
++your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef EMACS_LISP_H
+#define EMACS_LISP_H
+
+#include <setjmp.h>
+#include <stdalign.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <float.h>
+#include <inttypes.h>
+#include <limits.h>
+
+#include <intprops.h>
+#include <verify.h>
+
+INLINE_HEADER_BEGIN
+
+/* Define a TYPE constant ID as an externally visible name. Use like this:
+
+ DEFINE_GDB_SYMBOL_BEGIN (TYPE, ID)
+ # define ID (some integer preprocessor expression of type TYPE)
+ DEFINE_GDB_SYMBOL_END (ID)
+
+ This hack is for the benefit of compilers that do not make macro
+ definitions or enums visible to the debugger. It's used for symbols
+ that .gdbinit needs. */
+
+#define DECLARE_GDB_SYM(type, id) type const id EXTERNALLY_VISIBLE
+#ifdef MAIN_PROGRAM
+# define DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE_GDB_SYM (type, id)
+# define DEFINE_GDB_SYMBOL_END(id) = id;
+#else
+# define DEFINE_GDB_SYMBOL_BEGIN(type, id) extern DECLARE_GDB_SYM (type, id)
+# define DEFINE_GDB_SYMBOL_END(val) ;
+#endif
+
+/* The ubiquitous max and min macros. */
+#undef min
+#undef max
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define min(a, b) ((a) < (b) ? (a) : (b))
+
+/* Number of elements in an array. */
+#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0])
+
+/* Number of bits in a Lisp_Object tag. */
+DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)
+#define GCTYPEBITS 3
+DEFINE_GDB_SYMBOL_END (GCTYPEBITS)
+
+/* The number of bits needed in an EMACS_INT over and above the number
+ of bits in a pointer. This is 0 on systems where:
+ 1. We can specify multiple-of-8 alignment on static variables.
+ 2. We know malloc returns a multiple of 8. */
+#if (defined alignas \
+ && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
+ || defined DARWIN_OS || defined __sun || defined __MINGW32__ \
+ || defined CYGWIN))
+# define NONPOINTER_BITS 0
+#else
+# define NONPOINTER_BITS GCTYPEBITS
+#endif
+
+/* EMACS_INT - signed integer wide enough to hold an Emacs value
+ EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if
+ pI - printf length modifier for EMACS_INT
+ EMACS_UINT - unsigned variant of EMACS_INT */
+#ifndef EMACS_INT_MAX
+# if INTPTR_MAX <= 0
+# error "INTPTR_MAX misconfigured"
+# elif INTPTR_MAX <= INT_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
+typedef int EMACS_INT;
+typedef unsigned int EMACS_UINT;
+# define EMACS_INT_MAX INT_MAX
+# define pI ""
+# elif INTPTR_MAX <= LONG_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
+typedef long int EMACS_INT;
+typedef unsigned long EMACS_UINT;
+# define EMACS_INT_MAX LONG_MAX
+# define pI "l"
+/* Check versus LLONG_MAX, not LLONG_MAX >> NONPOINTER_BITS.
+ In theory this is not safe, but in practice it seems to be OK. */
+# elif INTPTR_MAX <= LLONG_MAX
+typedef long long int EMACS_INT;
+typedef unsigned long long int EMACS_UINT;
+# define EMACS_INT_MAX LLONG_MAX
+# define pI "ll"
+# else
+# error "INTPTR_MAX too large"
+# endif
+#endif
+
+/* Number of bits to put in each character in the internal representation
+ of bool vectors. This should not vary across implementations. */
+enum { BOOL_VECTOR_BITS_PER_CHAR =
+#define BOOL_VECTOR_BITS_PER_CHAR 8
+ BOOL_VECTOR_BITS_PER_CHAR
+};
+
+/* An unsigned integer type representing a fixed-length bit sequence,
+ suitable for bool vector words, GC mark bits, etc. Normally it is size_t
+ for speed, but it is unsigned char on weird platforms. */
+#if BOOL_VECTOR_BITS_PER_CHAR == CHAR_BIT
+typedef size_t bits_word;
+# define BITS_WORD_MAX SIZE_MAX
+enum { BITS_PER_BITS_WORD = CHAR_BIT * sizeof (bits_word) };
+#else
+typedef unsigned char bits_word;
+# define BITS_WORD_MAX ((1u << BOOL_VECTOR_BITS_PER_CHAR) - 1)
+enum { BITS_PER_BITS_WORD = BOOL_VECTOR_BITS_PER_CHAR };
+#endif
+verify (BITS_WORD_MAX >> (BITS_PER_BITS_WORD - 1) == 1);
+
+/* Number of bits in some machine integer types. */
+enum
+ {
+ BITS_PER_CHAR = CHAR_BIT,
+ BITS_PER_SHORT = CHAR_BIT * sizeof (short),
+ BITS_PER_LONG = CHAR_BIT * sizeof (long int),
+ BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT)
+ };
+
+/* printmax_t and uprintmax_t are types for printing large integers.
+ These are the widest integers that are supported for printing.
+ pMd etc. are conversions for printing them.
+ On C99 hosts, there's no problem, as even the widest integers work.
+ Fall back on EMACS_INT on pre-C99 hosts. */
+#ifdef PRIdMAX
+typedef intmax_t printmax_t;
+typedef uintmax_t uprintmax_t;
+# define pMd PRIdMAX
+# define pMu PRIuMAX
+#else
+typedef EMACS_INT printmax_t;
+typedef EMACS_UINT uprintmax_t;
+# define pMd pI"d"
+# define pMu pI"u"
+#endif
+
+/* Use pD to format ptrdiff_t values, which suffice for indexes into
+ buffers and strings. Emacs never allocates objects larger than
+ PTRDIFF_MAX bytes, as they cause problems with pointer subtraction.
+ In C99, pD can always be "t"; configure it here for the sake of
+ pre-C99 libraries such as glibc 2.0 and Solaris 8. */
+#if PTRDIFF_MAX == INT_MAX
+# define pD ""
+#elif PTRDIFF_MAX == LONG_MAX
+# define pD "l"
+#elif PTRDIFF_MAX == LLONG_MAX
+# define pD "ll"
+#else
+# define pD "t"
+#endif
+
+/* Extra internal type checking? */
+
+/* Define Emacs versions of <assert.h>'s 'assert (COND)' and <verify.h>'s
+ 'assume (COND)'. COND should be free of side effects, as it may or
+ may not be evaluated.
+
+ 'eassert (COND)' checks COND at runtime if ENABLE_CHECKING is
+ defined and suppress_checking is false, and does nothing otherwise.
+ Emacs dies if COND is checked and is false. The suppress_checking
+ variable is initialized to 0 in alloc.c. Set it to 1 using a
+ debugger to temporarily disable aborting on detected internal
+ inconsistencies or error conditions.
+
+ In some cases, a good compiler may be able to optimize away the
+ eassert macro even if ENABLE_CHECKING is true, e.g., if XSTRING (x)
+ uses eassert to test STRINGP (x), but a particular use of XSTRING
+ is invoked only after testing that STRINGP (x) is true, making the
+ test redundant.
+
+ eassume is like eassert except that it also causes the compiler to
+ assume that COND is true afterwards, regardless of whether runtime
+ checking is enabled. This can improve performance in some cases,
+ though it can degrade performance in others. It's often suboptimal
+ for COND to call external functions or access volatile storage. */
+
+#ifndef ENABLE_CHECKING
+# define eassert(cond) ((void) (false && (cond))) /* Check COND compiles. */
+# define eassume(cond) assume (cond)
+#else /* ENABLE_CHECKING */
+
+extern _Noreturn void die (const char *, const char *, int);
+
+extern bool suppress_checking EXTERNALLY_VISIBLE;
+
+# define eassert(cond) \
+ (suppress_checking || (cond) \
+ ? (void) 0 \
+ : die (# cond, __FILE__, __LINE__))
+# define eassume(cond) \
+ (suppress_checking \
+ ? assume (cond) \
+ : (cond) \
+ ? (void) 0 \
+ : die (# cond, __FILE__, __LINE__))
+#endif /* ENABLE_CHECKING */
+
+\f
+/* Use the configure flag --enable-check-lisp-object-type to make
+ Lisp_Object use a struct type instead of the default int. The flag
+ causes CHECK_LISP_OBJECT_TYPE to be defined. */
+
+/***** Select the tagging scheme. *****/
+/* The following option controls the tagging scheme:
+ - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
+ always 0, and we can thus use them to hold tag bits, without
+ restricting our addressing space.
+
+ If ! USE_LSB_TAG, then use the top 3 bits for tagging, thus
+ restricting our possible address range.
+
+ USE_LSB_TAG not only requires the least 3 bits of pointers returned by
+ malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
+ on the few static Lisp_Objects used: lispsym, all the defsubr, and
+ the two special buffers buffer_defaults and buffer_local_symbols. */
+
+enum Lisp_Bits
+ {
+ /* 2**GCTYPEBITS. This must be a macro that expands to a literal
+ integer constant, for MSVC. */
+#define GCALIGNMENT 8
+
+ /* Number of bits in a Lisp_Object value, not counting the tag. */
+ VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS,
+
+ /* Number of bits in a Lisp fixnum tag. */
+ INTTYPEBITS = GCTYPEBITS - 1,
+
+ /* Number of bits in a Lisp fixnum value, not counting the tag. */
+ FIXNUM_BITS = VALBITS + 1
+ };
+
+#if GCALIGNMENT != 1 << GCTYPEBITS
+# error "GCALIGNMENT and GCTYPEBITS are inconsistent"
+#endif
+
+/* The maximum value that can be stored in a EMACS_INT, assuming all
+ bits other than the type bits contribute to a nonnegative signed value.
+ This can be used in #if, e.g., '#if USB_TAG' below expands to an
+ expression involving VAL_MAX. */
+#define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1))
+
+/* Whether the least-significant bits of an EMACS_INT contain the tag.
+ On hosts where pointers-as-ints do not exceed VAL_MAX / 2, USE_LSB_TAG is:
+ a. unnecessary, because the top bits of an EMACS_INT are unused, and
+ b. slower, because it typically requires extra masking.
+ So, USE_LSB_TAG is true only on hosts where it might be useful. */
+DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)
+#define USE_LSB_TAG (VAL_MAX / 2 < INTPTR_MAX)
+DEFINE_GDB_SYMBOL_END (USE_LSB_TAG)
+
+#if !USE_LSB_TAG && !defined WIDE_EMACS_INT
+# error "USE_LSB_TAG not supported on this platform; please report this." \
+ "Try 'configure --with-wide-int' to work around the problem."
+error !;
+#endif
+
+#ifndef alignas
+# define alignas(alignment) /* empty */
+# if USE_LSB_TAG
+# error "USE_LSB_TAG requires alignas"
+# endif
+#endif
+
+#ifdef HAVE_STRUCT_ATTRIBUTE_ALIGNED
+# define GCALIGNED __attribute__ ((aligned (GCALIGNMENT)))
+#else
+# define GCALIGNED /* empty */
+#endif
+
+/* Some operations are so commonly executed that they are implemented
+ as macros, not functions, because otherwise runtime performance would
+ suffer too much when compiling with GCC without optimization.
+ There's no need to inline everything, just the operations that
+ would otherwise cause a serious performance problem.
+
+ For each such operation OP, define a macro lisp_h_OP that contains
+ the operation's implementation. That way, OP can be implemented
+ via a macro definition like this:
+
+ #define OP(x) lisp_h_OP (x)
+
+ and/or via a function definition like this:
+
+ LISP_MACRO_DEFUN (OP, Lisp_Object, (Lisp_Object x), (x))
+
+ which macro-expands to this:
+
+ Lisp_Object (OP) (Lisp_Object x) { return lisp_h_OP (x); }
+
+ without worrying about the implementations diverging, since
+ lisp_h_OP defines the actual implementation. The lisp_h_OP macros
+ are intended to be private to this include file, and should not be
+ used elsewhere.
+
+ FIXME: Remove the lisp_h_OP macros, and define just the inline OP
+ functions, once most developers have access to GCC 4.8 or later and
+ can use "gcc -Og" to debug. Maybe in the year 2016. See
+ Bug#11935.
+
+ Commentary for these macros can be found near their corresponding
+ functions, below. */
+
+#if CHECK_LISP_OBJECT_TYPE
+# define lisp_h_XLI(o) ((o).i)
+# define lisp_h_XIL(i) ((Lisp_Object) { i })
+#else
+# define lisp_h_XLI(o) (o)
+# define lisp_h_XIL(i) (i)
+#endif
+#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (CONSP (x), Qlistp, y)
+#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGERP (x), Qintegerp, x)
+#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP (x), Qsymbolp, x)
+#define lisp_h_CHECK_TYPE(ok, predicate, x) \
+ ((ok) ? (void) 0 : (void) wrong_type_argument (predicate, x))
+#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)
+#define lisp_h_EQ(x, y) (XLI (x) == XLI (y))
+#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)
+#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int0 | ~Lisp_Int1)) == Lisp_Int0)
+#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
+#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)
+#define lisp_h_NILP(x) EQ (x, Qnil)
+#define lisp_h_SET_SYMBOL_VAL(sym, v) \
+ (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value = (v))
+#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sym)->constant)
+#define lisp_h_SYMBOL_VAL(sym) \
+ (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value)
+#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbol)
+#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_Vectorlike)
+#define lisp_h_XCAR(c) XCONS (c)->car
+#define lisp_h_XCDR(c) XCONS (c)->u.cdr
+#define lisp_h_XCONS(a) \
+ (eassert (CONSP (a)), (struct Lisp_Cons *) XUNTAG (a, Lisp_Cons))
+#define lisp_h_XHASH(a) XUINT (a)
+#define lisp_h_XPNTR(a) \
+ (SYMBOLP (a) ? XSYMBOL (a) : (void *) ((intptr_t) (XLI (a) & VALMASK)))
+#ifndef GC_CHECK_CONS_LIST
+# define lisp_h_check_cons_list() ((void) 0)
+#endif
+#if USE_LSB_TAG
+# define lisp_h_make_number(n) \
+ XIL ((EMACS_INT) (((EMACS_UINT) (n) << INTTYPEBITS) + Lisp_Int0))
+# define lisp_h_XFASTINT(a) XINT (a)
+# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)
+# define lisp_h_XSYMBOL(a) \
+ (eassert (SYMBOLP (a)), \
+ (struct Lisp_Symbol *) ((uintptr_t) XLI (a) - Lisp_Symbol \
+ + (char *) lispsym))
+# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
+# define lisp_h_XUNTAG(a, type) ((void *) (intptr_t) (XLI (a) - (type)))
+#endif
+
+/* When compiling via gcc -O0, define the key operations as macros, as
+ Emacs is too slow otherwise. To disable this optimization, compile
+ with -DINLINING=false. */
+#if (defined __NO_INLINE__ \
+ && ! defined __OPTIMIZE__ && ! defined __OPTIMIZE_SIZE__ \
+ && ! (defined INLINING && ! INLINING))
+# define XLI(o) lisp_h_XLI (o)
+# define XIL(i) lisp_h_XIL (i)
+# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_CONS (x, y)
+# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x)
+# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)
+# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK_TYPE (ok, predicate, x)
+# define CONSP(x) lisp_h_CONSP (x)
+# define EQ(x, y) lisp_h_EQ (x, y)
+# define FLOATP(x) lisp_h_FLOATP (x)
+# define INTEGERP(x) lisp_h_INTEGERP (x)
+# define MARKERP(x) lisp_h_MARKERP (x)
+# define MISCP(x) lisp_h_MISCP (x)
+# define NILP(x) lisp_h_NILP (x)
+# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_VAL (sym, v)
+# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONSTANT_P (sym)
+# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym)
+# define SYMBOLP(x) lisp_h_SYMBOLP (x)
+# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x)
+# define XCAR(c) lisp_h_XCAR (c)
+# define XCDR(c) lisp_h_XCDR (c)
+# define XCONS(a) lisp_h_XCONS (a)
+# define XHASH(a) lisp_h_XHASH (a)
+# define XPNTR(a) lisp_h_XPNTR (a)
+# ifndef GC_CHECK_CONS_LIST
+# define check_cons_list() lisp_h_check_cons_list ()
+# endif
+# if USE_LSB_TAG
+# define make_number(n) lisp_h_make_number (n)
+# define XFASTINT(a) lisp_h_XFASTINT (a)
+# define XINT(a) lisp_h_XINT (a)
+# define XSYMBOL(a) lisp_h_XSYMBOL (a)
+# define XTYPE(a) lisp_h_XTYPE (a)
+# define XUNTAG(a, type) lisp_h_XUNTAG (a, type)
+# endif
+#endif
+
+/* Define NAME as a lisp.h inline function that returns TYPE and has
+ arguments declared as ARGDECLS and passed as ARGS. ARGDECLS and
+ ARGS should be parenthesized. Implement the function by calling
+ lisp_h_NAME ARGS. */
+#define LISP_MACRO_DEFUN(name, type, argdecls, args) \
+ INLINE type (name) argdecls { return lisp_h_##name args; }
+
+/* like LISP_MACRO_DEFUN, except NAME returns void. */
+#define LISP_MACRO_DEFUN_VOID(name, argdecls, args) \
+ INLINE void (name) argdecls { lisp_h_##name args; }
+
+
+/* Define the fundamental Lisp data structures. */
+
+/* This is the set of Lisp data types. If you want to define a new
+ data type, read the comments after Lisp_Fwd_Type definition
+ below. */
+
+/* Lisp integers use 2 tags, to give them one extra bit, thus
+ extending their range from, e.g., -2^28..2^28-1 to -2^29..2^29-1. */
+#define INTMASK (EMACS_INT_MAX >> (INTTYPEBITS - 1))
+#define case_Lisp_Int case Lisp_Int0: case Lisp_Int1
+
+/* Idea stolen from GDB. Pedantic GCC complains about enum bitfields,
+ MSVC doesn't support them, and xlc and Oracle Studio c99 complain
+ vociferously about them. */
+#if (defined __STRICT_ANSI__ || defined _MSC_VER || defined __IBMC__ \
+ || (defined __SUNPRO_C && __STDC__))
+#define ENUM_BF(TYPE) unsigned int
+#else
+#define ENUM_BF(TYPE) enum TYPE
+#endif
+
+
+enum Lisp_Type
+ {
+ /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */
+ Lisp_Symbol = 0,
+
+ /* Miscellaneous. XMISC (object) points to a union Lisp_Misc,
+ whose first member indicates the subtype. */
+ Lisp_Misc = 1,
+
+ /* Integer. XINT (obj) is the integer value. */
+ Lisp_Int0 = 2,
+ Lisp_Int1 = USE_LSB_TAG ? 6 : 3,
+
+ /* String. XSTRING (object) points to a struct Lisp_String.
+ The length of the string, and its contents, are stored therein. */
+ Lisp_String = 4,
+
+ /* Vector of Lisp objects, or something resembling it.
+ XVECTOR (object) points to a struct Lisp_Vector, which contains
+ the size and contents. The size field also contains the type
+ information, if it's not a real vector object. */
+ Lisp_Vectorlike = 5,
+
+ /* Cons. XCONS (object) points to a struct Lisp_Cons. */
+ Lisp_Cons = USE_LSB_TAG ? 3 : 6,
+
+ Lisp_Float = 7
+ };
+
+/* This is the set of data types that share a common structure.
+ The first member of the structure is a type code from this set.
+ The enum values are arbitrary, but we'll use large numbers to make it
+ more likely that we'll spot the error if a random word in memory is
+ mistakenly interpreted as a Lisp_Misc. */
+enum Lisp_Misc_Type
+ {
+ Lisp_Misc_Free = 0x5eab,
+ Lisp_Misc_Marker,
+ Lisp_Misc_Overlay,
+ Lisp_Misc_Save_Value,
+ Lisp_Misc_Finalizer,
+ /* Currently floats are not a misc type,
+ but let's define this in case we want to change that. */
+ Lisp_Misc_Float,
+ /* This is not a type code. It is for range checking. */
+ Lisp_Misc_Limit
+ };
+
+/* These are the types of forwarding objects used in the value slot
+ of symbols for special built-in variables whose value is stored in
+ C variables. */
+enum Lisp_Fwd_Type
+ {
+ Lisp_Fwd_Int, /* Fwd to a C `int' variable. */
+ Lisp_Fwd_Bool, /* Fwd to a C boolean var. */
+ Lisp_Fwd_Obj, /* Fwd to a C Lisp_Object variable. */
+ Lisp_Fwd_Buffer_Obj, /* Fwd to a Lisp_Object field of buffers. */
+ Lisp_Fwd_Kboard_Obj /* Fwd to a Lisp_Object field of kboards. */
+ };
+
+/* If you want to define a new Lisp data type, here are some
+ instructions. See the thread at
+ http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00561.html
+ for more info.
+
+ First, there are already a couple of Lisp types that can be used if
+ your new type does not need to be exposed to Lisp programs nor
+ displayed to users. These are Lisp_Save_Value, a Lisp_Misc
+ subtype; and PVEC_OTHER, a kind of vectorlike object. The former
+ is suitable for temporarily stashing away pointers and integers in
+ a Lisp object. The latter is useful for vector-like Lisp objects
+ that need to be used as part of other objects, but which are never
+ shown to users or Lisp code (search for PVEC_OTHER in xterm.c for
+ an example).
+
+ These two types don't look pretty when printed, so they are
+ unsuitable for Lisp objects that can be exposed to users.
+
+ To define a new data type, add one more Lisp_Misc subtype or one
+ more pseudovector subtype. Pseudovectors are more suitable for
+ objects with several slots that need to support fast random access,
+ while Lisp_Misc types are for everything else. A pseudovector object
+ provides one or more slots for Lisp objects, followed by struct
+ members that are accessible only from C. A Lisp_Misc object is a
+ wrapper for a C struct that can contain anything you like.
+
+ Explicit freeing is discouraged for Lisp objects in general. But if
+ you really need to exploit this, use Lisp_Misc (check free_misc in
+ alloc.c to see why). There is no way to free a vectorlike object.
+
+ To add a new pseudovector type, extend the pvec_type enumeration;
+ to add a new Lisp_Misc, extend the Lisp_Misc_Type enumeration.
+
+ For a Lisp_Misc, you will also need to add your entry to union
+ Lisp_Misc (but make sure the first word has the same structure as
+ the others, starting with a 16-bit member of the Lisp_Misc_Type
+ enumeration and a 1-bit GC markbit) and make sure the overall size
+ of the union is not increased by your addition.
+
+ For a new pseudovector, it's highly desirable to limit the size
+ of your data type by VBLOCK_BYTES_MAX bytes (defined in alloc.c).
+ Otherwise you will need to change sweep_vectors (also in alloc.c).
+
+ Then you will need to add switch branches in print.c (in
+ print_object, to print your object, and possibly also in
+ print_preprocess) and to alloc.c, to mark your object (in
+ mark_object) and to free it (in gc_sweep). The latter is also the
+ right place to call any code specific to your data type that needs
+ to run when the object is recycled -- e.g., free any additional
+ resources allocated for it that are not Lisp objects. You can even
+ make a pointer to the function that frees the resources a slot in
+ your object -- this way, the same object could be used to represent
+ several disparate C structures. */
+
+#ifdef CHECK_LISP_OBJECT_TYPE
+
+typedef struct { EMACS_INT i; } Lisp_Object;
+
+#define LISP_INITIALLY(i) {i}
+
+#undef CHECK_LISP_OBJECT_TYPE
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = true };
+#else /* CHECK_LISP_OBJECT_TYPE */
+
+/* If a struct type is not wanted, define Lisp_Object as just a number. */
+
+typedef EMACS_INT Lisp_Object;
+#define LISP_INITIALLY(i) (i)
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = false };
+#endif /* CHECK_LISP_OBJECT_TYPE */
+
+#define LISP_INITIALLY_ZERO LISP_INITIALLY (0)
+\f
+/* Forward declarations. */
+
+/* Defined in this file. */
+union Lisp_Fwd;
+INLINE bool BOOL_VECTOR_P (Lisp_Object);
+INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *);
+INLINE bool BUFFERP (Lisp_Object);
+INLINE bool CHAR_TABLE_P (Lisp_Object);
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t);
+INLINE bool (CONSP) (Lisp_Object);
+INLINE bool (FLOATP) (Lisp_Object);
+INLINE bool functionp (Lisp_Object);
+INLINE bool (INTEGERP) (Lisp_Object);
+INLINE bool (MARKERP) (Lisp_Object);
+INLINE bool (MISCP) (Lisp_Object);
+INLINE bool (NILP) (Lisp_Object);
+INLINE bool OVERLAYP (Lisp_Object);
+INLINE bool PROCESSP (Lisp_Object);
+INLINE bool PSEUDOVECTORP (Lisp_Object, int);
+INLINE bool SAVE_VALUEP (Lisp_Object);
+INLINE bool FINALIZERP (Lisp_Object);
+INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t,
+ Lisp_Object);
+INLINE bool STRINGP (Lisp_Object);
+INLINE bool SUB_CHAR_TABLE_P (Lisp_Object);
+INLINE bool SUBRP (Lisp_Object);
+INLINE bool (SYMBOLP) (Lisp_Object);
+INLINE bool (VECTORLIKEP) (Lisp_Object);
+INLINE bool WINDOWP (Lisp_Object);
+INLINE bool TERMINALP (Lisp_Object);
+INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object);
+INLINE struct Lisp_Finalizer *XFINALIZER (Lisp_Object);
+INLINE struct Lisp_Symbol *(XSYMBOL) (Lisp_Object);
+INLINE void *(XUNTAG) (Lisp_Object, int);
+
+/* Defined in chartab.c. */
+extern Lisp_Object char_table_ref (Lisp_Object, int);
+extern void char_table_set (Lisp_Object, int, Lisp_Object);
+
+/* Defined in data.c. */
+extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
+extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object);
+
+/* Defined in emacs.c. */
+extern bool might_dump;
+/* True means Emacs has already been initialized.
+ Used during startup to detect startup of dumped Emacs. */
+extern bool initialized;
+
+/* Defined in floatfns.c. */
+extern double extract_float (Lisp_Object);
+
+\f
+/* Interned state of a symbol. */
+
+enum symbol_interned
+{
+ SYMBOL_UNINTERNED = 0,
+ SYMBOL_INTERNED = 1,
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY = 2
+};
+
+enum symbol_redirect
+{
+ SYMBOL_PLAINVAL = 4,
+ SYMBOL_VARALIAS = 1,
+ SYMBOL_LOCALIZED = 2,
+ SYMBOL_FORWARDED = 3
+};
+
+struct Lisp_Symbol
+{
+ bool_bf gcmarkbit : 1;
+
+ /* Indicates where the value can be found:
+ 0 : it's a plain var, the value is in the `value' field.
+ 1 : it's a varalias, the value is really in the `alias' symbol.
+ 2 : it's a localized var, the value is in the `blv' object.
+ 3 : it's a forwarding variable, the value is in `forward'. */
+ ENUM_BF (symbol_redirect) redirect : 3;
+
+ /* Non-zero means symbol is constant, i.e. changing its value
+ should signal an error. If the value is 3, then the var
+ can be changed, but only by `defconst'. */
+ unsigned constant : 2;
+
+ /* Interned state of the symbol. This is an enumerator from
+ enum symbol_interned. */
+ unsigned interned : 2;
+
+ /* True means that this variable has been explicitly declared
+ special (with `defvar' etc), and shouldn't be lexically bound. */
+ bool_bf declared_special : 1;
+
+ /* True if pointed to from purespace and hence can't be GC'd. */
+ bool_bf pinned : 1;
+
+ /* The symbol's name, as a Lisp string. */
+ Lisp_Object name;
+
+ /* Value of the symbol or Qunbound if unbound. Which alternative of the
+ union is used depends on the `redirect' field above. */
+ union {
+ Lisp_Object value;
+ struct Lisp_Symbol *alias;
+ struct Lisp_Buffer_Local_Value *blv;
+ union Lisp_Fwd *fwd;
+ } val;
+
+ /* Function value of the symbol or Qnil if not fboundp. */
+ Lisp_Object function;
+
+ /* The symbol's property list. */
+ Lisp_Object plist;
+
+ /* Next symbol in obarray bucket, if the symbol is interned. */
+ struct Lisp_Symbol *next;
+};
+
+/* Declare a Lisp-callable function. The MAXARGS parameter has the same
+ meaning as in the DEFUN macro, and is used to construct a prototype. */
+/* We can use the same trick as in the DEFUN macro to generate the
+ appropriate prototype. */
+#define EXFUN(fnname, maxargs) \
+ extern Lisp_Object fnname DEFUN_ARGS_ ## maxargs
+
+/* Note that the weird token-substitution semantics of ANSI C makes
+ this work for MANY and UNEVALLED. */
+#define DEFUN_ARGS_MANY (ptrdiff_t, Lisp_Object *)
+#define DEFUN_ARGS_UNEVALLED (Lisp_Object)
+#define DEFUN_ARGS_0 (void)
+#define DEFUN_ARGS_1 (Lisp_Object)
+#define DEFUN_ARGS_2 (Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_3 (Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object)
+#define DEFUN_ARGS_6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
+
+/* Yield an integer that contains TAG along with PTR. */
+#define TAG_PTR(tag, ptr) \
+ ((USE_LSB_TAG ? (tag) : (EMACS_UINT) (tag) << VALBITS) + (uintptr_t) (ptr))
+
+/* Yield an integer that contains a symbol tag along with OFFSET.
+ OFFSET should be the offset in bytes from 'lispsym' to the symbol. */
+#define TAG_SYMOFFSET(offset) \
+ TAG_PTR (Lisp_Symbol, \
+ ((uintptr_t) (offset) >> (USE_LSB_TAG ? 0 : GCTYPEBITS)))
+
+/* XLI_BUILTIN_LISPSYM (iQwhatever) is equivalent to
+ XLI (builtin_lisp_symbol (Qwhatever)),
+ except the former expands to an integer constant expression. */
+#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET ((iname) * sizeof *lispsym)
+
+/* Declare extern constants for Lisp symbols. These can be helpful
+ when using a debugger like GDB, on older platforms where the debug
+ format does not represent C macros. */
+#define DEFINE_LISP_SYMBOL(name) \
+ DEFINE_GDB_SYMBOL_BEGIN (Lisp_Object, name) \
+ DEFINE_GDB_SYMBOL_END (LISP_INITIALLY (XLI_BUILTIN_LISPSYM (i##name)))
+
+/* By default, define macros for Qt, etc., as this leads to a bit
+ better performance in the core Emacs interpreter. A plugin can
+ define DEFINE_NON_NIL_Q_SYMBOL_MACROS to be false, to be portable to
+ other Emacs instances that assign different values to Qt, etc. */
+#ifndef DEFINE_NON_NIL_Q_SYMBOL_MACROS
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS true
+#endif
+
+#include "globals.h"
+
+/* Convert a Lisp_Object to the corresponding EMACS_INT and vice versa.
+ At the machine level, these operations are no-ops. */
+LISP_MACRO_DEFUN (XLI, EMACS_INT, (Lisp_Object o), (o))
+LISP_MACRO_DEFUN (XIL, Lisp_Object, (EMACS_INT i), (i))
+
+/* In the size word of a vector, this bit means the vector has been marked. */
+
+DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, ARRAY_MARK_FLAG)
+# define ARRAY_MARK_FLAG PTRDIFF_MIN
+DEFINE_GDB_SYMBOL_END (ARRAY_MARK_FLAG)
+
+/* In the size word of a struct Lisp_Vector, this bit means it's really
+ some other vector-like object. */
+DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, PSEUDOVECTOR_FLAG)
+# define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2)
+DEFINE_GDB_SYMBOL_END (PSEUDOVECTOR_FLAG)
+
+/* In a pseudovector, the size field actually contains a word with one
+ PSEUDOVECTOR_FLAG bit set, and one of the following values extracted
+ with PVEC_TYPE_MASK to indicate the actual type. */
+enum pvec_type
+{
+ PVEC_NORMAL_VECTOR,
+ PVEC_FREE,
+ PVEC_PROCESS,
+ PVEC_FRAME,
+ PVEC_WINDOW,
+ PVEC_BOOL_VECTOR,
+ PVEC_BUFFER,
+ PVEC_HASH_TABLE,
+ PVEC_TERMINAL,
+ PVEC_WINDOW_CONFIGURATION,
+ PVEC_SUBR,
+ PVEC_OTHER,
+ /* These should be last, check internal_equal to see why. */
+ PVEC_COMPILED,
+ PVEC_CHAR_TABLE,
+ PVEC_SUB_CHAR_TABLE,
+ PVEC_FONT /* Should be last because it's used for range checking. */
+};
+
+enum More_Lisp_Bits
+ {
+ /* For convenience, we also store the number of elements in these bits.
+ Note that this size is not necessarily the memory-footprint size, but
+ only the number of Lisp_Object fields (that need to be traced by GC).
+ The distinction is used, e.g., by Lisp_Process, which places extra
+ non-Lisp_Object fields at the end of the structure. */
+ PSEUDOVECTOR_SIZE_BITS = 12,
+ PSEUDOVECTOR_SIZE_MASK = (1 << PSEUDOVECTOR_SIZE_BITS) - 1,
+
+ /* To calculate the memory footprint of the pseudovector, it's useful
+ to store the size of non-Lisp area in word_size units here. */
+ PSEUDOVECTOR_REST_BITS = 12,
+ PSEUDOVECTOR_REST_MASK = (((1 << PSEUDOVECTOR_REST_BITS) - 1)
+ << PSEUDOVECTOR_SIZE_BITS),
+
+ /* Used to extract pseudovector subtype information. */
+ PSEUDOVECTOR_AREA_BITS = PSEUDOVECTOR_SIZE_BITS + PSEUDOVECTOR_REST_BITS,
+ PVEC_TYPE_MASK = 0x3f << PSEUDOVECTOR_AREA_BITS
+ };
+\f
+/* These functions extract various sorts of values from a Lisp_Object.
+ For example, if tem is a Lisp_Object whose type is Lisp_Cons,
+ XCONS (tem) is the struct Lisp_Cons * pointing to the memory for
+ that cons. */
+
+/* Mask for the value (as opposed to the type bits) of a Lisp object. */
+DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK)
+# define VALMASK (USE_LSB_TAG ? - (1 << GCTYPEBITS) : VAL_MAX)
+DEFINE_GDB_SYMBOL_END (VALMASK)
+
+/* Largest and smallest representable fixnum values. These are the C
+ values. They are macros for use in static initializers. */
+#define MOST_POSITIVE_FIXNUM (EMACS_INT_MAX >> INTTYPEBITS)
+#define MOST_NEGATIVE_FIXNUM (-1 - MOST_POSITIVE_FIXNUM)
+
+#if USE_LSB_TAG
+
+LISP_MACRO_DEFUN (make_number, Lisp_Object, (EMACS_INT n), (n))
+LISP_MACRO_DEFUN (XINT, EMACS_INT, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XFASTINT, EMACS_INT, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XSYMBOL, struct Lisp_Symbol *, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XTYPE, enum Lisp_Type, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XUNTAG, void *, (Lisp_Object a, int type), (a, type))
+
+#else /* ! USE_LSB_TAG */
+
+/* Although compiled only if ! USE_LSB_TAG, the following functions
+ also work when USE_LSB_TAG; this is to aid future maintenance when
+ the lisp_h_* macros are eventually removed. */
+
+/* Make a Lisp integer representing the value of the low order
+ bits of N. */
+INLINE Lisp_Object
+make_number (EMACS_INT n)
+{
+ EMACS_INT int0 = Lisp_Int0;
+ if (USE_LSB_TAG)
+ {
+ EMACS_UINT u = n;
+ n = u << INTTYPEBITS;
+ n += int0;
+ }
+ else
+ {
+ n &= INTMASK;
+ n += (int0 << VALBITS);
+ }
+ return XIL (n);
+}
+
+/* Extract A's value as a signed integer. */
+INLINE EMACS_INT
+XINT (Lisp_Object a)
+{
+ EMACS_INT i = XLI (a);
+ if (! USE_LSB_TAG)
+ {
+ EMACS_UINT u = i;
+ i = u << INTTYPEBITS;
+ }
+ return i >> INTTYPEBITS;
+}
+
+/* Like XINT (A), but may be faster. A must be nonnegative.
+ If ! USE_LSB_TAG, this takes advantage of the fact that Lisp
+ integers have zero-bits in their tags. */
+INLINE EMACS_INT
+XFASTINT (Lisp_Object a)
+{
+ EMACS_INT int0 = Lisp_Int0;
+ EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a) - (int0 << VALBITS);
+ eassert (0 <= n);
+ return n;
+}
+
+/* Extract A's value as a symbol. */
+INLINE struct Lisp_Symbol *
+XSYMBOL (Lisp_Object a)
+{
+ uintptr_t i = (uintptr_t) XUNTAG (a, Lisp_Symbol);
+ if (! USE_LSB_TAG)
+ i <<= GCTYPEBITS;
+ void *p = (char *) lispsym + i;
+ return p;
+}
+
+/* Extract A's type. */
+INLINE enum Lisp_Type
+XTYPE (Lisp_Object a)
+{
+ EMACS_UINT i = XLI (a);
+ return USE_LSB_TAG ? i & ~VALMASK : i >> VALBITS;
+}
+
+/* Extract A's pointer value, assuming A's type is TYPE. */
+INLINE void *
+XUNTAG (Lisp_Object a, int type)
+{
+ intptr_t i = USE_LSB_TAG ? XLI (a) - type : XLI (a) & VALMASK;
+ return (void *) i;
+}
+
+#endif /* ! USE_LSB_TAG */
+
+/* Extract the pointer hidden within A. */
+LISP_MACRO_DEFUN (XPNTR, void *, (Lisp_Object a), (a))
+
+/* Extract A's value as an unsigned integer. */
+INLINE EMACS_UINT
+XUINT (Lisp_Object a)
+{
+ EMACS_UINT i = XLI (a);
+ return USE_LSB_TAG ? i >> INTTYPEBITS : i & INTMASK;
+}
+
+/* Return A's (Lisp-integer sized) hash. Happens to be like XUINT
+ right now, but XUINT should only be applied to objects we know are
+ integers. */
+LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a), (a))
+
+/* Like make_number (N), but may be faster. N must be in nonnegative range. */
+INLINE Lisp_Object
+make_natnum (EMACS_INT n)
+{
+ eassert (0 <= n && n <= MOST_POSITIVE_FIXNUM);
+ EMACS_INT int0 = Lisp_Int0;
+ return USE_LSB_TAG ? make_number (n) : XIL (n + (int0 << VALBITS));
+}
+
+/* Return true if X and Y are the same object. */
+LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_Object y), (x, y))
+
+/* Value is true if I doesn't fit into a Lisp fixnum. It is
+ written this way so that it also works if I is of unsigned
+ type or if I is a NaN. */
+
+#define FIXNUM_OVERFLOW_P(i) \
+ (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM))
+
+INLINE ptrdiff_t
+clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
+{
+ return num < lower ? lower : num <= upper ? num : upper;
+}
+\f
+
+/* Extract a value or address from a Lisp_Object. */
+
+LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp_Object a), (a))
+
+INLINE struct Lisp_Vector *
+XVECTOR (Lisp_Object a)
+{
+ eassert (VECTORLIKEP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_String *
+XSTRING (Lisp_Object a)
+{
+ eassert (STRINGP (a));
+ return XUNTAG (a, Lisp_String);
+}
+
+/* The index of the C-defined Lisp symbol SYM.
+ This can be used in a static initializer. */
+#define SYMBOL_INDEX(sym) i##sym
+
+INLINE struct Lisp_Float *
+XFLOAT (Lisp_Object a)
+{
+ eassert (FLOATP (a));
+ return XUNTAG (a, Lisp_Float);
+}
+
+/* Pseudovector types. */
+
+INLINE struct Lisp_Process *
+XPROCESS (Lisp_Object a)
+{
+ eassert (PROCESSP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct window *
+XWINDOW (Lisp_Object a)
+{
+ eassert (WINDOWP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct terminal *
+XTERMINAL (Lisp_Object a)
+{
+ eassert (TERMINALP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Subr *
+XSUBR (Lisp_Object a)
+{
+ eassert (SUBRP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct buffer *
+XBUFFER (Lisp_Object a)
+{
+ eassert (BUFFERP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Char_Table *
+XCHAR_TABLE (Lisp_Object a)
+{
+ eassert (CHAR_TABLE_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Sub_Char_Table *
+XSUB_CHAR_TABLE (Lisp_Object a)
+{
+ eassert (SUB_CHAR_TABLE_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Bool_Vector *
+XBOOL_VECTOR (Lisp_Object a)
+{
+ eassert (BOOL_VECTOR_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+/* Construct a Lisp_Object from a value or address. */
+
+INLINE Lisp_Object
+make_lisp_ptr (void *ptr, enum Lisp_Type type)
+{
+ Lisp_Object a = XIL (TAG_PTR (type, ptr));
+ eassert (XTYPE (a) == type && XUNTAG (a, type) == ptr);
+ return a;
+}
+
+INLINE Lisp_Object
+make_lisp_symbol (struct Lisp_Symbol *sym)
+{
+ Lisp_Object a = XIL (TAG_SYMOFFSET ((char *) sym - (char *) lispsym));
+ eassert (XSYMBOL (a) == sym);
+ return a;
+}
+
+INLINE Lisp_Object
+builtin_lisp_symbol (int index)
+{
+ return make_lisp_symbol (lispsym + index);
+}
+
+#define XSETINT(a, b) ((a) = make_number (b))
+#define XSETFASTINT(a, b) ((a) = make_natnum (b))
+#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons))
+#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike))
+#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String))
+#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (b))
+#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float))
+#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Lisp_Misc))
+
+/* Pseudovector types. */
+
+#define XSETPVECTYPE(v, code) \
+ ((v)->header.size |= PSEUDOVECTOR_FLAG | ((code) << PSEUDOVECTOR_AREA_BITS))
+#define XSETPVECTYPESIZE(v, code, lispsize, restsize) \
+ ((v)->header.size = (PSEUDOVECTOR_FLAG \
+ | ((code) << PSEUDOVECTOR_AREA_BITS) \
+ | ((restsize) << PSEUDOVECTOR_SIZE_BITS) \
+ | (lispsize)))
+
+/* The cast to struct vectorlike_header * avoids aliasing issues. */
+#define XSETPSEUDOVECTOR(a, b, code) \
+ XSETTYPED_PSEUDOVECTOR (a, b, \
+ (((struct vectorlike_header *) \
+ XUNTAG (a, Lisp_Vectorlike)) \
+ ->size), \
+ code)
+#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) \
+ (XSETVECTOR (a, b), \
+ eassert ((size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \
+ == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS))))
+
+#define XSETWINDOW_CONFIGURATION(a, b) \
+ (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION))
+#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_PROCESS))
+#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW))
+#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL))
+#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR))
+#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED))
+#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER))
+#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE))
+#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR))
+#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE))
+
+/* Efficiently convert a pointer to a Lisp object and back. The
+ pointer is represented as a Lisp integer, so the garbage collector
+ does not know about it. The pointer should not have both Lisp_Int1
+ bits set, which makes this conversion inherently unportable. */
+
+INLINE void *
+XINTPTR (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Int0);
+}
+
+INLINE Lisp_Object
+make_pointer_integer (void *p)
+{
+ Lisp_Object a = XIL (TAG_PTR (Lisp_Int0, p));
+ eassert (INTEGERP (a) && XINTPTR (a) == p);
+ return a;
+}
+
+/* Type checking. */
+
+LISP_MACRO_DEFUN_VOID (CHECK_TYPE,
+ (int ok, Lisp_Object predicate, Lisp_Object x),
+ (ok, predicate, x))
+
+/* See the macros in intervals.h. */
+
+typedef struct interval *INTERVAL;
+
+struct GCALIGNED Lisp_Cons
+ {
+ /* Car of this cons cell. */
+ Lisp_Object car;
+
+ union
+ {
+ /* Cdr of this cons cell. */
+ Lisp_Object cdr;
+
+ /* Used to chain conses on a free list. */
+ struct Lisp_Cons *chain;
+ } u;
+ };
+
+/* Take the car or cdr of something known to be a cons cell. */
+/* The _addr functions shouldn't be used outside of the minimal set
+ of code that has to know what a cons cell looks like. Other code not
+ part of the basic lisp implementation should assume that the car and cdr
+ fields are not accessible. (What if we want to switch to
+ a copying collector someday? Cached cons cell field addresses may be
+ invalidated at arbitrary points.) */
+INLINE Lisp_Object *
+xcar_addr (Lisp_Object c)
+{
+ return &XCONS (c)->car;
+}
+INLINE Lisp_Object *
+xcdr_addr (Lisp_Object c)
+{
+ return &XCONS (c)->u.cdr;
+}
+
+/* Use these from normal code. */
+LISP_MACRO_DEFUN (XCAR, Lisp_Object, (Lisp_Object c), (c))
+LISP_MACRO_DEFUN (XCDR, Lisp_Object, (Lisp_Object c), (c))
+
+/* Use these to set the fields of a cons cell.
+
+ Note that both arguments may refer to the same object, so 'n'
+ should not be read after 'c' is first modified. */
+INLINE void
+XSETCAR (Lisp_Object c, Lisp_Object n)
+{
+ *xcar_addr (c) = n;
+}
+INLINE void
+XSETCDR (Lisp_Object c, Lisp_Object n)
+{
+ *xcdr_addr (c) = n;
+}
+
+/* Take the car or cdr of something whose type is not known. */
+INLINE Lisp_Object
+CAR (Lisp_Object c)
+{
+ return (CONSP (c) ? XCAR (c)
+ : NILP (c) ? Qnil
+ : wrong_type_argument (Qlistp, c));
+}
+INLINE Lisp_Object
+CDR (Lisp_Object c)
+{
+ return (CONSP (c) ? XCDR (c)
+ : NILP (c) ? Qnil
+ : wrong_type_argument (Qlistp, c));
+}
+
+/* Take the car or cdr of something whose type is not known. */
+INLINE Lisp_Object
+CAR_SAFE (Lisp_Object c)
+{
+ return CONSP (c) ? XCAR (c) : Qnil;
+}
+INLINE Lisp_Object
+CDR_SAFE (Lisp_Object c)
+{
+ return CONSP (c) ? XCDR (c) : Qnil;
+}
+
+/* In a string or vector, the sign bit of the `size' is the gc mark bit. */
+
+struct GCALIGNED Lisp_String
+ {
+ ptrdiff_t size;
+ ptrdiff_t size_byte;
+ INTERVAL intervals; /* Text properties in this string. */
+ unsigned char *data;
+ };
+
+/* True if STR is a multibyte string. */
+INLINE bool
+STRING_MULTIBYTE (Lisp_Object str)
+{
+ return 0 <= XSTRING (str)->size_byte;
+}
+
+/* An upper bound on the number of bytes in a Lisp string, not
+ counting the terminating null. This a tight enough bound to
+ prevent integer overflow errors that would otherwise occur during
+ string size calculations. A string cannot contain more bytes than
+ a fixnum can represent, nor can it be so long that C pointer
+ arithmetic stops working on the string plus its terminating null.
+ Although the actual size limit (see STRING_BYTES_MAX in alloc.c)
+ may be a bit smaller than STRING_BYTES_BOUND, calculating it here
+ would expose alloc.c internal details that we'd rather keep
+ private.
+
+ This is a macro for use in static initializers. The cast to
+ ptrdiff_t ensures that the macro is signed. */
+#define STRING_BYTES_BOUND \
+ ((ptrdiff_t) min (MOST_POSITIVE_FIXNUM, min (SIZE_MAX, PTRDIFF_MAX) - 1))
+
+/* Mark STR as a unibyte string. */
+#define STRING_SET_UNIBYTE(STR) \
+ do { \
+ if (EQ (STR, empty_multibyte_string)) \
+ (STR) = empty_unibyte_string; \
+ else \
+ XSTRING (STR)->size_byte = -1; \
+ } while (false)
+
+/* Mark STR as a multibyte string. Assure that STR contains only
+ ASCII characters in advance. */
+#define STRING_SET_MULTIBYTE(STR) \
+ do { \
+ if (EQ (STR, empty_unibyte_string)) \
+ (STR) = empty_multibyte_string; \
+ else \
+ XSTRING (STR)->size_byte = XSTRING (STR)->size; \
+ } while (false)
+
+/* Convenience functions for dealing with Lisp strings. */
+
+INLINE unsigned char *
+SDATA (Lisp_Object string)
+{
+ return XSTRING (string)->data;
+}
+INLINE char *
+SSDATA (Lisp_Object string)
+{
+ /* Avoid "differ in sign" warnings. */
+ return (char *) SDATA (string);
+}
+INLINE unsigned char
+SREF (Lisp_Object string, ptrdiff_t index)
+{
+ return SDATA (string)[index];
+}
+INLINE void
+SSET (Lisp_Object string, ptrdiff_t index, unsigned char new)
+{
+ SDATA (string)[index] = new;
+}
+INLINE ptrdiff_t
+SCHARS (Lisp_Object string)
+{
+ return XSTRING (string)->size;
+}
+
+#ifdef GC_CHECK_STRING_BYTES
+extern ptrdiff_t string_bytes (struct Lisp_String *);
+#endif
+INLINE ptrdiff_t
+STRING_BYTES (struct Lisp_String *s)
+{
+#ifdef GC_CHECK_STRING_BYTES
+ return string_bytes (s);
+#else
+ return s->size_byte < 0 ? s->size : s->size_byte;
+#endif
+}
+
+INLINE ptrdiff_t
+SBYTES (Lisp_Object string)
+{
+ return STRING_BYTES (XSTRING (string));
+}
+INLINE void
+STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize)
+{
+ XSTRING (string)->size = newsize;
+}
+
+/* Header of vector-like objects. This documents the layout constraints on
+ vectors and pseudovectors (objects of PVEC_xxx subtype). It also prevents
+ compilers from being fooled by Emacs's type punning: XSETPSEUDOVECTOR
+ and PSEUDOVECTORP cast their pointers to struct vectorlike_header *,
+ because when two such pointers potentially alias, a compiler won't
+ incorrectly reorder loads and stores to their size fields. See
+ Bug#8546. */
+struct vectorlike_header
+ {
+ /* The only field contains various pieces of information:
+ - The MSB (ARRAY_MARK_FLAG) holds the gcmarkbit.
+ - The next bit (PSEUDOVECTOR_FLAG) indicates whether this is a plain
+ vector (0) or a pseudovector (1).
+ - If PSEUDOVECTOR_FLAG is 0, the rest holds the size (number
+ of slots) of the vector.
+ - If PSEUDOVECTOR_FLAG is 1, the rest is subdivided into three fields:
+ - a) pseudovector subtype held in PVEC_TYPE_MASK field;
+ - b) number of Lisp_Objects slots at the beginning of the object
+ held in PSEUDOVECTOR_SIZE_MASK field. These objects are always
+ traced by the GC;
+ - c) size of the rest fields held in PSEUDOVECTOR_REST_MASK and
+ measured in word_size units. Rest fields may also include
+ Lisp_Objects, but these objects usually needs some special treatment
+ during GC.
+ There are some exceptions. For PVEC_FREE, b) is always zero. For
+ PVEC_BOOL_VECTOR and PVEC_SUBR, both b) and c) are always zero.
+ Current layout limits the pseudovectors to 63 PVEC_xxx subtypes,
+ 4095 Lisp_Objects in GC-ed area and 4095 word-sized other slots. */
+ ptrdiff_t size;
+ };
+
+/* A regular vector is just a header plus an array of Lisp_Objects. */
+
+struct Lisp_Vector
+ {
+ struct vectorlike_header header;
+ Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+/* C11 prohibits alignof (struct Lisp_Vector), so compute it manually. */
+enum
+ {
+ ALIGNOF_STRUCT_LISP_VECTOR
+ = alignof (union { struct vectorlike_header a; Lisp_Object b; })
+ };
+
+/* A boolvector is a kind of vectorlike, with contents like a string. */
+
+struct Lisp_Bool_Vector
+ {
+ /* HEADER.SIZE is the vector's size field. It doesn't have the real size,
+ just the subtype information. */
+ struct vectorlike_header header;
+ /* This is the size in bits. */
+ EMACS_INT size;
+ /* The actual bits, packed into bytes.
+ Zeros fill out the last word if needed.
+ The bits are in little-endian order in the bytes, and
+ the bytes are in little-endian order in the words. */
+ bits_word data[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+INLINE EMACS_INT
+bool_vector_size (Lisp_Object a)
+{
+ EMACS_INT size = XBOOL_VECTOR (a)->size;
+ eassume (0 <= size);
+ return size;
+}
+
+INLINE bits_word *
+bool_vector_data (Lisp_Object a)
+{
+ return XBOOL_VECTOR (a)->data;
+}
+
+INLINE unsigned char *
+bool_vector_uchar_data (Lisp_Object a)
+{
+ return (unsigned char *) bool_vector_data (a);
+}
+
+/* The number of data words and bytes in a bool vector with SIZE bits. */
+
+INLINE EMACS_INT
+bool_vector_words (EMACS_INT size)
+{
+ eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1));
+ return (size + BITS_PER_BITS_WORD - 1) / BITS_PER_BITS_WORD;
+}
+
+INLINE EMACS_INT
+bool_vector_bytes (EMACS_INT size)
+{
+ eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1));
+ return (size + BOOL_VECTOR_BITS_PER_CHAR - 1) / BOOL_VECTOR_BITS_PER_CHAR;
+}
+
+/* True if A's Ith bit is set. */
+
+INLINE bool
+bool_vector_bitref (Lisp_Object a, EMACS_INT i)
+{
+ eassume (0 <= i && i < bool_vector_size (a));
+ return !! (bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR]
+ & (1 << (i % BOOL_VECTOR_BITS_PER_CHAR)));
+}
+
+INLINE Lisp_Object
+bool_vector_ref (Lisp_Object a, EMACS_INT i)
+{
+ return bool_vector_bitref (a, i) ? Qt : Qnil;
+}
+
+/* Set A's Ith bit to B. */
+
+INLINE void
+bool_vector_set (Lisp_Object a, EMACS_INT i, bool b)
+{
+ unsigned char *addr;
+
+ eassume (0 <= i && i < bool_vector_size (a));
+ addr = &bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR];
+
+ if (b)
+ *addr |= 1 << (i % BOOL_VECTOR_BITS_PER_CHAR);
+ else
+ *addr &= ~ (1 << (i % BOOL_VECTOR_BITS_PER_CHAR));
+}
+
+/* Some handy constants for calculating sizes
+ and offsets, mostly of vectorlike objects. */
+
+enum
+ {
+ header_size = offsetof (struct Lisp_Vector, contents),
+ bool_header_size = offsetof (struct Lisp_Bool_Vector, data),
+ word_size = sizeof (Lisp_Object)
+ };
+
+/* Conveniences for dealing with Lisp arrays. */
+
+INLINE Lisp_Object
+AREF (Lisp_Object array, ptrdiff_t idx)
+{
+ return XVECTOR (array)->contents[idx];
+}
+
+INLINE Lisp_Object *
+aref_addr (Lisp_Object array, ptrdiff_t idx)
+{
+ return & XVECTOR (array)->contents[idx];
+}
+
+INLINE ptrdiff_t
+ASIZE (Lisp_Object array)
+{
+ return XVECTOR (array)->header.size;
+}
+
+INLINE void
+ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < ASIZE (array));
+ XVECTOR (array)->contents[idx] = val;
+}
+
+INLINE void
+gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
+{
+ /* Like ASET, but also can be used in the garbage collector:
+ sweep_weak_table calls set_hash_key etc. while the table is marked. */
+ eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG));
+ XVECTOR (array)->contents[idx] = val;
+}
+
+/* True, since Qnil's representation is zero. Every place in the code
+ that assumes Qnil is zero should verify (NIL_IS_ZERO), to make it easy
+ to find such assumptions later if we change Qnil to be nonzero. */
+enum { NIL_IS_ZERO = XLI_BUILTIN_LISPSYM (iQnil) == 0 };
+
+/* Clear the object addressed by P, with size NBYTES, so that all its
+ bytes are zero and all its Lisp values are nil. */
+INLINE void
+memclear (void *p, ptrdiff_t nbytes)
+{
+ eassert (0 <= nbytes);
+ verify (NIL_IS_ZERO);
+ /* Since Qnil is zero, memset suffices. */
+ memset (p, 0, nbytes);
+}
+
+/* If a struct is made to look like a vector, this macro returns the length
+ of the shortest vector that would hold that struct. */
+
+#define VECSIZE(type) \
+ ((sizeof (type) - header_size + word_size - 1) / word_size)
+
+/* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields
+ at the end and we need to compute the number of Lisp_Object fields (the
+ ones that the GC needs to trace). */
+
+#define PSEUDOVECSIZE(type, nonlispfield) \
+ ((offsetof (type, nonlispfield) - header_size) / word_size)
+
+/* Compute A OP B, using the unsigned comparison operator OP. A and B
+ should be integer expressions. This is not the same as
+ mathematical comparison; for example, UNSIGNED_CMP (0, <, -1)
+ returns true. For efficiency, prefer plain unsigned comparison if A
+ and B's sizes both fit (after integer promotion). */
+#define UNSIGNED_CMP(a, op, b) \
+ (max (sizeof ((a) + 0), sizeof ((b) + 0)) <= sizeof (unsigned) \
+ ? ((a) + (unsigned) 0) op ((b) + (unsigned) 0) \
+ : ((a) + (uintmax_t) 0) op ((b) + (uintmax_t) 0))
+
+/* True iff C is an ASCII character. */
+#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)
+
+/* A char-table is a kind of vectorlike, with contents are like a
+ vector but with a few other slots. For some purposes, it makes
+ sense to handle a char-table with type struct Lisp_Vector. An
+ element of a char table can be any Lisp objects, but if it is a sub
+ char-table, we treat it a table that contains information of a
+ specific range of characters. A sub char-table is like a vector but
+ with two integer fields between the header and Lisp data, which means
+ that it has to be marked with some precautions (see mark_char_table
+ in alloc.c). A sub char-table appears only in an element of a char-table,
+ and there's no way to access it directly from Emacs Lisp program. */
+
+enum CHARTAB_SIZE_BITS
+ {
+ CHARTAB_SIZE_BITS_0 = 6,
+ CHARTAB_SIZE_BITS_1 = 4,
+ CHARTAB_SIZE_BITS_2 = 5,
+ CHARTAB_SIZE_BITS_3 = 7
+ };
+
+extern const int chartab_size[4];
+
+struct Lisp_Char_Table
+ {
+ /* HEADER.SIZE is the vector's size field, which also holds the
+ pseudovector type information. It holds the size, too.
+ The size counts the defalt, parent, purpose, ascii,
+ contents, and extras slots. */
+ struct vectorlike_header header;
+
+ /* This holds a default value,
+ which is used whenever the value for a specific character is nil. */
+ Lisp_Object defalt;
+
+ /* This points to another char table, which we inherit from when the
+ value for a specific character is nil. The `defalt' slot takes
+ precedence over this. */
+ Lisp_Object parent;
+
+ /* This is a symbol which says what kind of use this char-table is
+ meant for. */
+ Lisp_Object purpose;
+
+ /* The bottom sub char-table for characters of the range 0..127. It
+ is nil if none of ASCII character has a specific value. */
+ Lisp_Object ascii;
+
+ Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)];
+
+ /* These hold additional data. It is a vector. */
+ Lisp_Object extras[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+struct Lisp_Sub_Char_Table
+ {
+ /* HEADER.SIZE is the vector's size field, which also holds the
+ pseudovector type information. It holds the size, too. */
+ struct vectorlike_header header;
+
+ /* Depth of this sub char-table. It should be 1, 2, or 3. A sub
+ char-table of depth 1 contains 16 elements, and each element
+ covers 4096 (128*32) characters. A sub char-table of depth 2
+ contains 32 elements, and each element covers 128 characters. A
+ sub char-table of depth 3 contains 128 elements, and each element
+ is for one character. */
+ int depth;
+
+ /* Minimum character covered by the sub char-table. */
+ int min_char;
+
+ /* Use set_sub_char_table_contents to set this. */
+ Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+INLINE Lisp_Object
+CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx)
+{
+ struct Lisp_Char_Table *tbl = NULL;
+ Lisp_Object val;
+ do
+ {
+ tbl = tbl ? XCHAR_TABLE (tbl->parent) : XCHAR_TABLE (ct);
+ val = (! SUB_CHAR_TABLE_P (tbl->ascii) ? tbl->ascii
+ : XSUB_CHAR_TABLE (tbl->ascii)->contents[idx]);
+ if (NILP (val))
+ val = tbl->defalt;
+ }
+ while (NILP (val) && ! NILP (tbl->parent));
+
+ return val;
+}
+
+/* Almost equivalent to Faref (CT, IDX) with optimization for ASCII
+ characters. Do not check validity of CT. */
+INLINE Lisp_Object
+CHAR_TABLE_REF (Lisp_Object ct, int idx)
+{
+ return (ASCII_CHAR_P (idx)
+ ? CHAR_TABLE_REF_ASCII (ct, idx)
+ : char_table_ref (ct, idx));
+}
+
+/* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and
+ 8-bit European characters. Do not check validity of CT. */
+INLINE void
+CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val)
+{
+ if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii))
+ set_sub_char_table_contents (XCHAR_TABLE (ct)->ascii, idx, val);
+ else
+ char_table_set (ct, idx, val);
+}
+
+/* This structure describes a built-in function.
+ It is generated by the DEFUN macro only.
+ defsubr makes it into a Lisp object. */
+
+struct Lisp_Subr
+ {
+ struct vectorlike_header header;
+ union {
+ Lisp_Object (*a0) (void);
+ Lisp_Object (*a1) (Lisp_Object);
+ Lisp_Object (*a2) (Lisp_Object, Lisp_Object);
+ Lisp_Object (*a3) (Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a4) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a5) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a6) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a7) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a8) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*aUNEVALLED) (Lisp_Object args);
+ Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object *);
+ } function;
+ short min_args, max_args;
+ const char *symbol_name;
+ const char *intspec;
+ const char *doc;
+ };
+
+enum char_table_specials
+ {
+ /* This is the number of slots that every char table must have. This
+ counts the ordinary slots and the top, defalt, parent, and purpose
+ slots. */
+ CHAR_TABLE_STANDARD_SLOTS = PSEUDOVECSIZE (struct Lisp_Char_Table, extras),
+
+ /* This is an index of first Lisp_Object field in Lisp_Sub_Char_Table
+ when the latter is treated as an ordinary Lisp_Vector. */
+ SUB_CHAR_TABLE_OFFSET = PSEUDOVECSIZE (struct Lisp_Sub_Char_Table, contents)
+ };
+
+/* Return the number of "extra" slots in the char table CT. */
+
+INLINE int
+CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct)
+{
+ return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK)
+ - CHAR_TABLE_STANDARD_SLOTS);
+}
+
+/* Make sure that sub char-table contents slot is where we think it is. */
+verify (offsetof (struct Lisp_Sub_Char_Table, contents)
+ == offsetof (struct Lisp_Vector, contents[SUB_CHAR_TABLE_OFFSET]));
+
+/***********************************************************************
+ Symbols
+ ***********************************************************************/
+
+/* Value is name of symbol. */
+
+LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct Lisp_Symbol *sym), (sym))
+
+INLINE struct Lisp_Symbol *
+SYMBOL_ALIAS (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_VARALIAS);
+ return sym->val.alias;
+}
+INLINE struct Lisp_Buffer_Local_Value *
+SYMBOL_BLV (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_LOCALIZED);
+ return sym->val.blv;
+}
+INLINE union Lisp_Fwd *
+SYMBOL_FWD (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_FORWARDED);
+ return sym->val.fwd;
+}
+
+LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL,
+ (struct Lisp_Symbol *sym, Lisp_Object v), (sym, v))
+
+INLINE void
+SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v)
+{
+ eassert (sym->redirect == SYMBOL_VARALIAS);
+ sym->val.alias = v;
+}
+INLINE void
+SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v)
+{
+ eassert (sym->redirect == SYMBOL_LOCALIZED);
+ sym->val.blv = v;
+}
+INLINE void
+SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lisp_Fwd *v)
+{
+ eassert (sym->redirect == SYMBOL_FORWARDED);
+ sym->val.fwd = v;
+}
+
+INLINE Lisp_Object
+SYMBOL_NAME (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->name;
+}
+
+/* Value is true if SYM is an interned symbol. */
+
+INLINE bool
+SYMBOL_INTERNED_P (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->interned != SYMBOL_UNINTERNED;
+}
+
+/* Value is true if SYM is interned in initial_obarray. */
+
+INLINE bool
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY;
+}
+
+/* Value is non-zero if symbol is considered a constant, i.e. its
+ value cannot be changed (there is an exception for keyword symbols,
+ whose value can be set to the keyword symbol itself). */
+
+LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, (Lisp_Object sym), (sym))
+
+/* Placeholder for make-docfile to process. The actual symbol
+ definition is done by lread.c's defsym. */
+#define DEFSYM(sym, name) /* empty */
+
+\f
+/***********************************************************************
+ Hash Tables
+ ***********************************************************************/
+
+/* The structure of a Lisp hash table. */
+
+struct hash_table_test
+{
+ /* Name of the function used to compare keys. */
+ Lisp_Object name;
+
+ /* User-supplied hash function, or nil. */
+ Lisp_Object user_hash_function;
+
+ /* User-supplied key comparison function, or nil. */
+ Lisp_Object user_cmp_function;
+
+ /* C function to compare two keys. */
+ bool (*cmpfn) (struct hash_table_test *t, Lisp_Object, Lisp_Object);
+
+ /* C function to compute hash code. */
+ EMACS_UINT (*hashfn) (struct hash_table_test *t, Lisp_Object);
+};
+
+struct Lisp_Hash_Table
+{
+ /* This is for Lisp; the hash table code does not refer to it. */
+ struct vectorlike_header header;
+
+ /* Nil if table is non-weak. Otherwise a symbol describing the
+ weakness of the table. */
+ Lisp_Object weak;
+
+ /* When the table is resized, and this is an integer, compute the
+ new size by adding this to the old size. If a float, compute the
+ new size by multiplying the old size with this factor. */
+ Lisp_Object rehash_size;
+
+ /* Resize hash table when number of entries/ table size is >= this
+ ratio, a float. */
+ Lisp_Object rehash_threshold;
+
+ /* Vector of hash codes. If hash[I] is nil, this means that the
+ I-th entry is unused. */
+ Lisp_Object hash;
+
+ /* Vector used to chain entries. If entry I is free, next[I] is the
+ entry number of the next free item. If entry I is non-free,
+ next[I] is the index of the next entry in the collision chain. */
+ Lisp_Object next;
+
+ /* Index of first free entry in free list. */
+ Lisp_Object next_free;
+
+ /* Bucket vector. A non-nil entry is the index of the first item in
+ a collision chain. This vector's size can be larger than the
+ hash table size to reduce collisions. */
+ Lisp_Object index;
+
+ /* Only the fields above are traced normally by the GC. The ones below
+ `count' are special and are either ignored by the GC or traced in
+ a special way (e.g. because of weakness). */
+
+ /* Number of key/value entries in the table. */
+ ptrdiff_t count;
+
+ /* Vector of keys and values. The key of item I is found at index
+ 2 * I, the value is found at index 2 * I + 1.
+ This is gc_marked specially if the table is weak. */
+ Lisp_Object key_and_value;
+
+ /* The comparison and hash functions. */
+ struct hash_table_test test;
+
+ /* Next weak hash table if this is a weak hash table. The head
+ of the list is in weak_hash_tables. */
+ struct Lisp_Hash_Table *next_weak;
+};
+
+
+INLINE struct Lisp_Hash_Table *
+XHASH_TABLE (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+#define XSET_HASH_TABLE(VAR, PTR) \
+ (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE))
+
+INLINE bool
+HASH_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_HASH_TABLE);
+}
+
+/* Value is the key part of entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->key_and_value, 2 * idx);
+}
+
+/* Value is the value part of entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->key_and_value, 2 * idx + 1);
+}
+
+/* Value is the index of the next entry following the one at IDX
+ in hash table H. */
+INLINE Lisp_Object
+HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->next, idx);
+}
+
+/* Value is the hash code computed for entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->hash, idx);
+}
+
+/* Value is the index of the element in hash table H that is the
+ start of the collision list at index IDX in the index vector of H. */
+INLINE Lisp_Object
+HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->index, idx);
+}
+
+/* Value is the size of hash table H. */
+INLINE ptrdiff_t
+HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)
+{
+ return ASIZE (h->next);
+}
+
+/* Default size for hash tables if not specified. */
+
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE = 65 };
+
+/* Default threshold specifying when to resize a hash table. The
+ value gives the ratio of current entries in the hash table and the
+ size of the hash table. */
+
+static double const DEFAULT_REHASH_THRESHOLD = 0.8;
+
+/* Default factor by which to increase the size of a hash table. */
+
+static double const DEFAULT_REHASH_SIZE = 1.5;
+
+/* Combine two integers X and Y for hashing. The result might not fit
+ into a Lisp integer. */
+
+INLINE EMACS_UINT
+sxhash_combine (EMACS_UINT x, EMACS_UINT y)
+{
+ return (x << 4) + (x >> (BITS_PER_EMACS_INT - 4)) + y;
+}
+
+/* Hash X, returning a value that fits into a fixnum. */
+
+INLINE EMACS_UINT
+SXHASH_REDUCE (EMACS_UINT x)
+{
+ return (x ^ x >> (BITS_PER_EMACS_INT - FIXNUM_BITS)) & INTMASK;
+}
+
+/* These structures are used for various misc types. */
+
+struct Lisp_Misc_Any /* Supertype of all Misc types. */
+{
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+};
+
+struct Lisp_Marker
+{
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Marker */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 13;
+ /* This flag is temporarily used in the functions
+ decode/encode_coding_object to record that the marker position
+ must be adjusted after the conversion. */
+ bool_bf need_adjustment : 1;
+ /* True means normal insertion at the marker's position
+ leaves the marker after the inserted text. */
+ bool_bf insertion_type : 1;
+ /* This is the buffer that the marker points into, or 0 if it points nowhere.
+ Note: a chain of markers can contain markers pointing into different
+ buffers (the chain is per buffer_text rather than per buffer, so it's
+ shared between indirect buffers). */
+ /* This is used for (other than NULL-checking):
+ - Fmarker_buffer
+ - Fset_marker: check eq(oldbuf, newbuf) to avoid unchain+rechain.
+ - unchain_marker: to find the list from which to unchain.
+ - Fkill_buffer: to only unchain the markers of current indirect buffer.
+ */
+ struct buffer *buffer;
+
+ /* The remaining fields are meaningless in a marker that
+ does not point anywhere. */
+
+ /* For markers that point somewhere,
+ this is used to chain of all the markers in a given buffer. */
+ /* We could remove it and use an array in buffer_text instead.
+ That would also allow us to preserve it ordered. */
+ struct Lisp_Marker *next;
+ /* This is the char position where the marker points. */
+ ptrdiff_t charpos;
+ /* This is the byte position.
+ It's mostly used as a charpos<->bytepos cache (i.e. it's not directly
+ used to implement the functionality of markers, but rather to (ab)use
+ markers as a cache for char<->byte mappings). */
+ ptrdiff_t bytepos;
+};
+
+/* START and END are markers in the overlay's buffer, and
+ PLIST is the overlay's property list. */
+struct Lisp_Overlay
+/* An overlay's real data content is:
+ - plist
+ - buffer (really there are two buffer pointers, one per marker,
+ and both points to the same buffer)
+ - insertion type of both ends (per-marker fields)
+ - start & start byte (of start marker)
+ - end & end byte (of end marker)
+ - next (singly linked list of overlays)
+ - next fields of start and end markers (singly linked list of markers).
+ I.e. 9words plus 2 bits, 3words of which are for external linked lists.
+*/
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Overlay */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+ struct Lisp_Overlay *next;
+ Lisp_Object start;
+ Lisp_Object end;
+ Lisp_Object plist;
+ };
+
+/* Types of data which may be saved in a Lisp_Save_Value. */
+
+enum
+ {
+ SAVE_UNUSED,
+ SAVE_INTEGER,
+ SAVE_FUNCPOINTER,
+ SAVE_POINTER,
+ SAVE_OBJECT
+ };
+
+/* Number of bits needed to store one of the above values. */
+enum { SAVE_SLOT_BITS = 3 };
+
+/* Number of slots in a save value where save_type is nonzero. */
+enum { SAVE_VALUE_SLOTS = 4 };
+
+/* Bit-width and values for struct Lisp_Save_Value's save_type member. */
+
+enum { SAVE_TYPE_BITS = SAVE_VALUE_SLOTS * SAVE_SLOT_BITS + 1 };
+
+enum Lisp_Save_Type
+ {
+ SAVE_TYPE_INT_INT = SAVE_INTEGER + (SAVE_INTEGER << SAVE_SLOT_BITS),
+ SAVE_TYPE_INT_INT_INT
+ = (SAVE_INTEGER + (SAVE_TYPE_INT_INT << SAVE_SLOT_BITS)),
+ SAVE_TYPE_OBJ_OBJ = SAVE_OBJECT + (SAVE_OBJECT << SAVE_SLOT_BITS),
+ SAVE_TYPE_OBJ_OBJ_OBJ = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ << SAVE_SLOT_BITS),
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ
+ = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ_OBJ << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_INT = SAVE_POINTER + (SAVE_INTEGER << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_OBJ = SAVE_POINTER + (SAVE_OBJECT << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_PTR = SAVE_POINTER + (SAVE_POINTER << SAVE_SLOT_BITS),
+ SAVE_TYPE_FUNCPTR_PTR_OBJ
+ = SAVE_FUNCPOINTER + (SAVE_TYPE_PTR_OBJ << SAVE_SLOT_BITS),
+
+ /* This has an extra bit indicating it's raw memory. */
+ SAVE_TYPE_MEMORY = SAVE_TYPE_PTR_INT + (1 << (SAVE_TYPE_BITS - 1))
+ };
+
+/* Special object used to hold a different values for later use.
+
+ This is mostly used to package C integers and pointers to call
+ record_unwind_protect when two or more values need to be saved.
+ For example:
+
+ ...
+ struct my_data *md = get_my_data ();
+ ptrdiff_t mi = get_my_integer ();
+ record_unwind_protect (my_unwind, make_save_ptr_int (md, mi));
+ ...
+
+ Lisp_Object my_unwind (Lisp_Object arg)
+ {
+ struct my_data *md = XSAVE_POINTER (arg, 0);
+ ptrdiff_t mi = XSAVE_INTEGER (arg, 1);
+ ...
+ }
+
+ If ENABLE_CHECKING is in effect, XSAVE_xxx macros do type checking of the
+ saved objects and raise eassert if type of the saved object doesn't match
+ the type which is extracted. In the example above, XSAVE_INTEGER (arg, 2)
+ and XSAVE_OBJECT (arg, 0) are wrong because nothing was saved in slot 2 and
+ slot 0 is a pointer. */
+
+typedef void (*voidfuncptr) (void);
+
+struct Lisp_Save_Value
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Save_Value */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 32 - (16 + 1 + SAVE_TYPE_BITS);
+
+ /* V->data may hold up to SAVE_VALUE_SLOTS entries. The type of
+ V's data entries are determined by V->save_type. E.g., if
+ V->save_type == SAVE_TYPE_PTR_OBJ, V->data[0] is a pointer,
+ V->data[1] is an integer, and V's other data entries are unused.
+
+ If V->save_type == SAVE_TYPE_MEMORY, V->data[0].pointer is the address of
+ a memory area containing V->data[1].integer potential Lisp_Objects. */
+ ENUM_BF (Lisp_Save_Type) save_type : SAVE_TYPE_BITS;
+ union {
+ void *pointer;
+ voidfuncptr funcpointer;
+ ptrdiff_t integer;
+ Lisp_Object object;
+ } data[SAVE_VALUE_SLOTS];
+ };
+
+/* Return the type of V's Nth saved value. */
+INLINE int
+save_type (struct Lisp_Save_Value *v, int n)
+{
+ eassert (0 <= n && n < SAVE_VALUE_SLOTS);
+ return (v->save_type >> (SAVE_SLOT_BITS * n) & ((1 << SAVE_SLOT_BITS) - 1));
+}
+
+/* Get and set the Nth saved pointer. */
+
+INLINE void *
+XSAVE_POINTER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
+ return XSAVE_VALUE (obj)->data[n].pointer;
+}
+INLINE void
+set_save_pointer (Lisp_Object obj, int n, void *val)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
+ XSAVE_VALUE (obj)->data[n].pointer = val;
+}
+INLINE voidfuncptr
+XSAVE_FUNCPOINTER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_FUNCPOINTER);
+ return XSAVE_VALUE (obj)->data[n].funcpointer;
+}
+
+/* Likewise for the saved integer. */
+
+INLINE ptrdiff_t
+XSAVE_INTEGER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
+ return XSAVE_VALUE (obj)->data[n].integer;
+}
+INLINE void
+set_save_integer (Lisp_Object obj, int n, ptrdiff_t val)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
+ XSAVE_VALUE (obj)->data[n].integer = val;
+}
+
+/* Extract Nth saved object. */
+
+INLINE Lisp_Object
+XSAVE_OBJECT (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_OBJECT);
+ return XSAVE_VALUE (obj)->data[n].object;
+}
+
+/* A finalizer sentinel. */
+struct Lisp_Finalizer
+ {
+ struct Lisp_Misc_Any base;
+
+ /* Circular list of all active weak references. */
+ struct Lisp_Finalizer *prev;
+ struct Lisp_Finalizer *next;
+
+ /* Call FUNCTION when the finalizer becomes unreachable, even if
+ FUNCTION contains a reference to the finalizer; i.e., call
+ FUNCTION when it is reachable _only_ through finalizers. */
+ Lisp_Object function;
+ };
+
+/* A miscellaneous object, when it's on the free list. */
+struct Lisp_Free
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Free */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+ union Lisp_Misc *chain;
+ };
+
+/* To get the type field of a union Lisp_Misc, use XMISCTYPE.
+ It uses one of these struct subtypes to get the type field. */
+
+union Lisp_Misc
+ {
+ struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */
+ struct Lisp_Free u_free;
+ struct Lisp_Marker u_marker;
+ struct Lisp_Overlay u_overlay;
+ struct Lisp_Save_Value u_save_value;
+ struct Lisp_Finalizer u_finalizer;
+ };
+
+INLINE union Lisp_Misc *
+XMISC (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Misc);
+}
+
+INLINE struct Lisp_Misc_Any *
+XMISCANY (Lisp_Object a)
+{
+ eassert (MISCP (a));
+ return & XMISC (a)->u_any;
+}
+
+INLINE enum Lisp_Misc_Type
+XMISCTYPE (Lisp_Object a)
+{
+ return XMISCANY (a)->type;
+}
+
+INLINE struct Lisp_Marker *
+XMARKER (Lisp_Object a)
+{
+ eassert (MARKERP (a));
+ return & XMISC (a)->u_marker;
+}
+
+INLINE struct Lisp_Overlay *
+XOVERLAY (Lisp_Object a)
+{
+ eassert (OVERLAYP (a));
+ return & XMISC (a)->u_overlay;
+}
+
+INLINE struct Lisp_Save_Value *
+XSAVE_VALUE (Lisp_Object a)
+{
+ eassert (SAVE_VALUEP (a));
+ return & XMISC (a)->u_save_value;
+}
+
+INLINE struct Lisp_Finalizer *
+XFINALIZER (Lisp_Object a)
+{
+ eassert (FINALIZERP (a));
+ return & XMISC (a)->u_finalizer;
+}
+
+\f
+/* Forwarding pointer to an int variable.
+ This is allowed only in the value cell of a symbol,
+ and it means that the symbol's value really lives in the
+ specified int variable. */
+struct Lisp_Intfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Int */
+ EMACS_INT *intvar;
+ };
+
+/* Boolean forwarding pointer to an int variable.
+ This is like Lisp_Intfwd except that the ostensible
+ "value" of the symbol is t if the bool variable is true,
+ nil if it is false. */
+struct Lisp_Boolfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Bool */
+ bool *boolvar;
+ };
+
+/* Forwarding pointer to a Lisp_Object variable.
+ This is allowed only in the value cell of a symbol,
+ and it means that the symbol's value really lives in the
+ specified variable. */
+struct Lisp_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Obj */
+ Lisp_Object *objvar;
+ };
+
+/* Like Lisp_Objfwd except that value lives in a slot in the
+ current buffer. Value is byte index of slot within buffer. */
+struct Lisp_Buffer_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Buffer_Obj */
+ int offset;
+ /* One of Qnil, Qintegerp, Qsymbolp, Qstringp, Qfloatp or Qnumberp. */
+ Lisp_Object predicate;
+ };
+
+/* struct Lisp_Buffer_Local_Value is used in a symbol value cell when
+ the symbol has buffer-local or frame-local bindings. (Exception:
+ some buffer-local variables are built-in, with their values stored
+ in the buffer structure itself. They are handled differently,
+ using struct Lisp_Buffer_Objfwd.)
+
+ The `realvalue' slot holds the variable's current value, or a
+ forwarding pointer to where that value is kept. This value is the
+ one that corresponds to the loaded binding. To read or set the
+ variable, you must first make sure the right binding is loaded;
+ then you can access the value in (or through) `realvalue'.
+
+ `buffer' and `frame' are the buffer and frame for which the loaded
+ binding was found. If those have changed, to make sure the right
+ binding is loaded it is necessary to find which binding goes with
+ the current buffer and selected frame, then load it. To load it,
+ first unload the previous binding, then copy the value of the new
+ binding into `realvalue' (or through it). Also update
+ LOADED-BINDING to point to the newly loaded binding.
+
+ `local_if_set' indicates that merely setting the variable creates a
+ local binding for the current buffer. Otherwise the latter, setting
+ the variable does not do that; only make-local-variable does that. */
+
+struct Lisp_Buffer_Local_Value
+ {
+ /* True means that merely setting the variable creates a local
+ binding for the current buffer. */
+ bool_bf local_if_set : 1;
+ /* True means this variable can have frame-local bindings, otherwise, it is
+ can have buffer-local bindings. The two cannot be combined. */
+ bool_bf frame_local : 1;
+ /* True means that the binding now loaded was found.
+ Presumably equivalent to (defcell!=valcell). */
+ bool_bf found : 1;
+ /* If non-NULL, a forwarding to the C var where it should also be set. */
+ union Lisp_Fwd *fwd; /* Should never be (Buffer|Kboard)_Objfwd. */
+ /* The buffer or frame for which the loaded binding was found. */
+ Lisp_Object where;
+ /* A cons cell that holds the default value. It has the form
+ (SYMBOL . DEFAULT-VALUE). */
+ Lisp_Object defcell;
+ /* The cons cell from `where's parameter alist.
+ It always has the form (SYMBOL . VALUE)
+ Note that if `forward' is non-nil, VALUE may be out of date.
+ Also if the currently loaded binding is the default binding, then
+ this is `eq'ual to defcell. */
+ Lisp_Object valcell;
+ };
+
+/* Like Lisp_Objfwd except that value lives in a slot in the
+ current kboard. */
+struct Lisp_Kboard_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Kboard_Obj */
+ int offset;
+ };
+
+union Lisp_Fwd
+ {
+ struct Lisp_Intfwd u_intfwd;
+ struct Lisp_Boolfwd u_boolfwd;
+ struct Lisp_Objfwd u_objfwd;
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;
+ };
+
+INLINE enum Lisp_Fwd_Type
+XFWDTYPE (union Lisp_Fwd *a)
+{
+ return a->u_intfwd.type;
+}
+
+INLINE struct Lisp_Buffer_Objfwd *
+XBUFFER_OBJFWD (union Lisp_Fwd *a)
+{
+ eassert (BUFFER_OBJFWDP (a));
+ return &a->u_buffer_objfwd;
+}
+\f
+/* Lisp floating point type. */
+struct Lisp_Float
+ {
+ union
+ {
+ double data;
+ struct Lisp_Float *chain;
+ } u;
+ };
+
+INLINE double
+XFLOAT_DATA (Lisp_Object f)
+{
+ return XFLOAT (f)->u.data;
+}
+
+/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
+ representations, have infinities and NaNs, and do not trap on
+ exceptions. Define IEEE_FLOATING_POINT if this host is one of the
+ typical ones. The C11 macro __STDC_IEC_559__ is close to what is
+ wanted here, but is not quite right because Emacs does not require
+ all the features of C11 Annex F (and does not require C11 at all,
+ for that matter). */
+enum
+ {
+ IEEE_FLOATING_POINT
+ = (FLT_RADIX == 2 && FLT_MANT_DIG == 24
+ && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
+ };
+
+/* A character, declared with the following typedef, is a member
+ of some character set associated with the current buffer. */
+#ifndef _UCHAR_T /* Protect against something in ctab.h on AIX. */
+#define _UCHAR_T
+typedef unsigned char UCHAR;
+#endif
+
+/* Meanings of slots in a Lisp_Compiled: */
+
+enum Lisp_Compiled
+ {
+ COMPILED_ARGLIST = 0,
+ COMPILED_BYTECODE = 1,
+ COMPILED_CONSTANTS = 2,
+ COMPILED_STACK_DEPTH = 3,
+ COMPILED_DOC_STRING = 4,
+ COMPILED_INTERACTIVE = 5
+ };
+
+/* Flag bits in a character. These also get used in termhooks.h.
+ Richard Stallman <rms@gnu.ai.mit.edu> thinks that MULE
+ (MUlti-Lingual Emacs) might need 22 bits for the character value
+ itself, so we probably shouldn't use any bits lower than 0x0400000. */
+enum char_bits
+ {
+ CHAR_ALT = 0x0400000,
+ CHAR_SUPER = 0x0800000,
+ CHAR_HYPER = 0x1000000,
+ CHAR_SHIFT = 0x2000000,
+ CHAR_CTL = 0x4000000,
+ CHAR_META = 0x8000000,
+
+ CHAR_MODIFIER_MASK =
+ CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META,
+
+ /* Actually, the current Emacs uses 22 bits for the character value
+ itself. */
+ CHARACTERBITS = 22
+ };
+\f
+/* Data type checking. */
+
+LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x))
+
+INLINE bool
+NUMBERP (Lisp_Object x)
+{
+ return INTEGERP (x) || FLOATP (x);
+}
+INLINE bool
+NATNUMP (Lisp_Object x)
+{
+ return INTEGERP (x) && 0 <= XINT (x);
+}
+
+INLINE bool
+RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intmax_t hi)
+{
+ return INTEGERP (x) && lo <= XINT (x) && XINT (x) <= hi;
+}
+
+#define TYPE_RANGED_INTEGERP(type, x) \
+ (INTEGERP (x) \
+ && (TYPE_SIGNED (type) ? TYPE_MINIMUM (type) <= XINT (x) : 0 <= XINT (x)) \
+ && XINT (x) <= TYPE_MAXIMUM (type))
+
+LISP_MACRO_DEFUN (CONSP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (FLOATP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (MISCP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (SYMBOLP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (INTEGERP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (VECTORLIKEP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (MARKERP, bool, (Lisp_Object x), (x))
+
+INLINE bool
+STRINGP (Lisp_Object x)
+{
+ return XTYPE (x) == Lisp_String;
+}
+INLINE bool
+VECTORP (Lisp_Object x)
+{
+ return VECTORLIKEP (x) && ! (ASIZE (x) & PSEUDOVECTOR_FLAG);
+}
+INLINE bool
+OVERLAYP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay;
+}
+INLINE bool
+SAVE_VALUEP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value;
+}
+
+INLINE bool
+FINALIZERP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Finalizer;
+}
+
+INLINE bool
+AUTOLOADP (Lisp_Object x)
+{
+ return CONSP (x) && EQ (Qautoload, XCAR (x));
+}
+
+INLINE bool
+BUFFER_OBJFWDP (union Lisp_Fwd *a)
+{
+ return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj;
+}
+
+INLINE bool
+PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code)
+{
+ return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK))
+ == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS)));
+}
+
+/* True if A is a pseudovector whose code is CODE. */
+INLINE bool
+PSEUDOVECTORP (Lisp_Object a, int code)
+{
+ if (! VECTORLIKEP (a))
+ return false;
+ else
+ {
+ /* Converting to struct vectorlike_header * avoids aliasing issues. */
+ struct vectorlike_header *h = XUNTAG (a, Lisp_Vectorlike);
+ return PSEUDOVECTOR_TYPEP (h, code);
+ }
+}
+
+
+/* Test for specific pseudovector types. */
+
+INLINE bool
+WINDOW_CONFIGURATIONP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION);
+}
+
+INLINE bool
+PROCESSP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_PROCESS);
+}
+
+INLINE bool
+WINDOWP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_WINDOW);
+}
+
+INLINE bool
+TERMINALP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_TERMINAL);
+}
+
+INLINE bool
+SUBRP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_SUBR);
+}
+
+INLINE bool
+COMPILEDP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_COMPILED);
+}
+
+INLINE bool
+BUFFERP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_BUFFER);
+}
+
+INLINE bool
+CHAR_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_CHAR_TABLE);
+}
+
+INLINE bool
+SUB_CHAR_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE);
+}
+
+INLINE bool
+BOOL_VECTOR_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR);
+}
+
+INLINE bool
+FRAMEP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_FRAME);
+}
+
+/* Test for image (image . spec) */
+INLINE bool
+IMAGEP (Lisp_Object x)
+{
+ return CONSP (x) && EQ (XCAR (x), Qimage);
+}
+
+/* Array types. */
+INLINE bool
+ARRAYP (Lisp_Object x)
+{
+ return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x);
+}
+\f
+INLINE void
+CHECK_LIST (Lisp_Object x)
+{
+ CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x);
+}
+
+LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Object x, Lisp_Object y), (x, y))
+LISP_MACRO_DEFUN_VOID (CHECK_SYMBOL, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN_VOID (CHECK_NUMBER, (Lisp_Object x), (x))
+
+INLINE void
+CHECK_STRING (Lisp_Object x)
+{
+ CHECK_TYPE (STRINGP (x), Qstringp, x);
+}
+INLINE void
+CHECK_STRING_CAR (Lisp_Object x)
+{
+ CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x));
+}
+INLINE void
+CHECK_CONS (Lisp_Object x)
+{
+ CHECK_TYPE (CONSP (x), Qconsp, x);
+}
+INLINE void
+CHECK_VECTOR (Lisp_Object x)
+{
+ CHECK_TYPE (VECTORP (x), Qvectorp, x);
+}
+INLINE void
+CHECK_BOOL_VECTOR (Lisp_Object x)
+{
+ CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x);
+}
+/* This is a bit special because we always need size afterwards. */
+INLINE ptrdiff_t
+CHECK_VECTOR_OR_STRING (Lisp_Object x)
+{
+ if (VECTORP (x))
+ return ASIZE (x);
+ if (STRINGP (x))
+ return SCHARS (x);
+ wrong_type_argument (Qarrayp, x);
+}
+INLINE void
+CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate)
+{
+ CHECK_TYPE (ARRAYP (x), predicate, x);
+}
+INLINE void
+CHECK_BUFFER (Lisp_Object x)
+{
+ CHECK_TYPE (BUFFERP (x), Qbufferp, x);
+}
+INLINE void
+CHECK_WINDOW (Lisp_Object x)
+{
+ CHECK_TYPE (WINDOWP (x), Qwindowp, x);
+}
+#ifdef subprocesses
+INLINE void
+CHECK_PROCESS (Lisp_Object x)
+{
+ CHECK_TYPE (PROCESSP (x), Qprocessp, x);
+}
+#endif
+INLINE void
+CHECK_NATNUM (Lisp_Object x)
+{
+ CHECK_TYPE (NATNUMP (x), Qwholenump, x);
+}
+
+#define CHECK_RANGED_INTEGER(x, lo, hi) \
+ do { \
+ CHECK_NUMBER (x); \
+ if (! ((lo) <= XINT (x) && XINT (x) <= (hi))) \
+ args_out_of_range_3 \
+ (x, \
+ make_number ((lo) < 0 && (lo) < MOST_NEGATIVE_FIXNUM \
+ ? MOST_NEGATIVE_FIXNUM \
+ : (lo)), \
+ make_number (min (hi, MOST_POSITIVE_FIXNUM))); \
+ } while (false)
+#define CHECK_TYPE_RANGED_INTEGER(type, x) \
+ do { \
+ if (TYPE_SIGNED (type)) \
+ CHECK_RANGED_INTEGER (x, TYPE_MINIMUM (type), TYPE_MAXIMUM (type)); \
+ else \
+ CHECK_RANGED_INTEGER (x, 0, TYPE_MAXIMUM (type)); \
+ } while (false)
+
+#define CHECK_NUMBER_COERCE_MARKER(x) \
+ do { \
+ if (MARKERP ((x))) \
+ XSETFASTINT (x, marker_position (x)); \
+ else \
+ CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); \
+ } while (false)
+
+INLINE double
+XFLOATINT (Lisp_Object n)
+{
+ return extract_float (n);
+}
+
+INLINE void
+CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
+{
+ CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x);
+}
+
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) \
+ do { \
+ if (MARKERP (x)) \
+ XSETFASTINT (x, marker_position (x)); \
+ else \
+ CHECK_TYPE (INTEGERP (x) || FLOATP (x), Qnumber_or_marker_p, x); \
+ } while (false)
+
+/* Since we can't assign directly to the CAR or CDR fields of a cons
+ cell, use these when checking that those fields contain numbers. */
+INLINE void
+CHECK_NUMBER_CAR (Lisp_Object x)
+{
+ Lisp_Object tmp = XCAR (x);
+ CHECK_NUMBER (tmp);
+ XSETCAR (x, tmp);
+}
+
+INLINE void
+CHECK_NUMBER_CDR (Lisp_Object x)
+{
+ Lisp_Object tmp = XCDR (x);
+ CHECK_NUMBER (tmp);
+ XSETCDR (x, tmp);
+}
+\f
+/* Define a built-in function for calling from Lisp.
+ `lname' should be the name to give the function in Lisp,
+ as a null-terminated C string.
+ `fnname' should be the name of the function in C.
+ By convention, it starts with F.
+ `sname' should be the name for the C constant structure
+ that records information on this function for internal use.
+ By convention, it should be the same as `fnname' but with S instead of F.
+ It's too bad that C macros can't compute this from `fnname'.
+ `minargs' should be a number, the minimum number of arguments allowed.
+ `maxargs' should be a number, the maximum number of arguments allowed,
+ or else MANY or UNEVALLED.
+ MANY means pass a vector of evaluated arguments,
+ in the form of an integer number-of-arguments
+ followed by the address of a vector of Lisp_Objects
+ which contains the argument values.
+ UNEVALLED means pass the list of unevaluated arguments
+ `intspec' says how interactive arguments are to be fetched.
+ If the string starts with a `(', `intspec' is evaluated and the resulting
+ list is the list of arguments.
+ If it's a string that doesn't start with `(', the value should follow
+ the one of the doc string for `interactive'.
+ A null string means call interactively with no arguments.
+ `doc' is documentation for the user. */
+
+/* This version of DEFUN declares a function prototype with the right
+ arguments, so we can catch errors with maxargs at compile-time. */
+#ifdef _MSC_VER
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
+ Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
+ static struct Lisp_Subr alignas (GCALIGNMENT) sname = \
+ { { (PVEC_SUBR << PSEUDOVECTOR_AREA_BITS) \
+ | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)) }, \
+ { (Lisp_Object (__cdecl *)(void))fnname }, \
+ minargs, maxargs, lname, intspec, 0}; \
+ Lisp_Object fnname
+#else /* not _MSC_VER */
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
+ static struct Lisp_Subr alignas (GCALIGNMENT) sname = \
+ { { PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, \
+ { .a ## maxargs = fnname }, \
+ minargs, maxargs, lname, intspec, 0}; \
+ Lisp_Object fnname
+#endif
+
+/* True if OBJ is a Lisp function. */
+INLINE bool
+FUNCTIONP (Lisp_Object obj)
+{
+ return functionp (obj);
+}
+
+/* defsubr (Sname);
+ is how we define the symbol for function `name' at start-up time. */
+extern void defsubr (struct Lisp_Subr *);
+
+enum maxargs
+ {
+ MANY = -2,
+ UNEVALLED = -1
+ };
+
+/* Call a function F that accepts many args, passing it ARRAY's elements. */
+#define CALLMANY(f, array) (f) (ARRAYELTS (array), array)
+
+/* Call a function F that accepts many args, passing it the remaining args,
+ E.g., 'return CALLN (Fformat, fmt, text);' is less error-prone than
+ '{ Lisp_Object a[2]; a[0] = fmt; a[1] = text; return Fformat (2, a); }'.
+ CALLN is overkill for simple usages like 'Finsert (1, &text);'. */
+#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__}))
+
+extern void defvar_lisp (struct Lisp_Objfwd *, const char *, Lisp_Object *);
+extern void defvar_lisp_nopro (struct Lisp_Objfwd *, const char *, Lisp_Object *);
+extern void defvar_bool (struct Lisp_Boolfwd *, const char *, bool *);
+extern void defvar_int (struct Lisp_Intfwd *, const char *, EMACS_INT *);
+extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int);
+
+/* Macros we use to define forwarded Lisp variables.
+ These are used in the syms_of_FILENAME functions.
+
+ An ordinary (not in buffer_defaults, per-buffer, or per-keyboard)
+ lisp variable is actually a field in `struct emacs_globals'. The
+ field's name begins with "f_", which is a convention enforced by
+ these macros. Each such global has a corresponding #define in
+ globals.h; the plain name should be used in the code.
+
+ E.g., the global "cons_cells_consed" is declared as "int
+ f_cons_cells_consed" in globals.h, but there is a define:
+
+ #define cons_cells_consed globals.f_cons_cells_consed
+
+ All C code uses the `cons_cells_consed' name. This is all done
+ this way to support indirection for multi-threaded Emacs. */
+
+#define DEFVAR_LISP(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp (&o_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_LISP_NOPRO(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp_nopro (&o_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_BOOL(lname, vname, doc) \
+ do { \
+ static struct Lisp_Boolfwd b_fwd; \
+ defvar_bool (&b_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_INT(lname, vname, doc) \
+ do { \
+ static struct Lisp_Intfwd i_fwd; \
+ defvar_int (&i_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+
+#define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp_nopro (&o_fwd, lname, &BVAR (&buffer_defaults, vname)); \
+ } while (false)
+
+#define DEFVAR_KBOARD(lname, vname, doc) \
+ do { \
+ static struct Lisp_Kboard_Objfwd ko_fwd; \
+ defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \
+ } while (false)
+\f
+/* Save and restore the instruction and environment pointers,
+ without affecting the signal mask. */
+
+#ifdef HAVE__SETJMP
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) _setjmp (j)
+# define sys_longjmp(j, v) _longjmp (j, v)
+#elif defined HAVE_SIGSETJMP
+typedef sigjmp_buf sys_jmp_buf;
+# define sys_setjmp(j) sigsetjmp (j, 0)
+# define sys_longjmp(j, v) siglongjmp (j, v)
+#else
+/* A platform that uses neither _longjmp nor siglongjmp; assume
+ longjmp does not affect the sigmask. */
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) setjmp (j)
+# define sys_longjmp(j, v) longjmp (j, v)
+#endif
+
+\f
+/* Elisp uses several stacks:
+ - the C stack.
+ - the bytecode stack: used internally by the bytecode interpreter.
+ Allocated from the C stack.
+ - The specpdl stack: keeps track of active unwind-protect and
+ dynamic-let-bindings. Allocated from the `specpdl' array, a manually
+ managed stack.
+ - The handler stack: keeps track of active catch tags and condition-case
+ handlers. Allocated in a manually managed stack implemented by a
+ doubly-linked list allocated via xmalloc and never freed. */
+
+/* Structure for recording Lisp call stack for backtrace purposes. */
+
+/* The special binding stack holds the outer values of variables while
+ they are bound by a function application or a let form, stores the
+ code to be executed for unwind-protect forms.
+
+ NOTE: The specbinding union is defined here, because SPECPDL_INDEX is
+ used all over the place, needs to be fast, and needs to know the size of
+ union specbinding. But only eval.c should access it. */
+
+enum specbind_tag {
+ SPECPDL_UNWIND, /* An unwind_protect function on Lisp_Object. */
+ SPECPDL_UNWIND_PTR, /* Likewise, on void *. */
+ SPECPDL_UNWIND_INT, /* Likewise, on int. */
+ SPECPDL_UNWIND_VOID, /* Likewise, with no arg. */
+ SPECPDL_BACKTRACE, /* An element of the backtrace. */
+ SPECPDL_LET, /* A plain and simple dynamic let-binding. */
+ /* Tags greater than SPECPDL_LET must be "subkinds" of LET. */
+ SPECPDL_LET_LOCAL, /* A buffer-local let-binding. */
+ SPECPDL_LET_DEFAULT /* A global binding for a localized var. */
+};
+
+union specbinding
+ {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (Lisp_Object);
+ Lisp_Object arg;
+ } unwind;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (void *);
+ void *arg;
+ } unwind_ptr;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (int);
+ int arg;
+ } unwind_int;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (void);
+ } unwind_void;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ /* `where' is not used in the case of SPECPDL_LET. */
+ Lisp_Object symbol, old_value, where;
+ } let;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ bool_bf debug_on_exit : 1;
+ Lisp_Object function;
+ Lisp_Object *args;
+ ptrdiff_t nargs;
+ } bt;
+ };
+
+extern union specbinding *specpdl;
+extern union specbinding *specpdl_ptr;
+extern ptrdiff_t specpdl_size;
+
+INLINE ptrdiff_t
+SPECPDL_INDEX (void)
+{
+ return specpdl_ptr - specpdl;
+}
+
+/* This structure helps implement the `catch/throw' and `condition-case/signal'
+ control structures. A struct handler contains all the information needed to
+ restore the state of the interpreter after a non-local jump.
+
+ handler structures are chained together in a doubly linked list; the `next'
+ member points to the next outer catchtag and the `nextfree' member points in
+ the other direction to the next inner element (which is typically the next
+ free element since we mostly use it on the deepest handler).
+
+ A call like (throw TAG VAL) searches for a catchtag whose `tag_or_ch'
+ member is TAG, and then unbinds to it. The `val' member is used to
+ hold VAL while the stack is unwound; `val' is returned as the value
+ of the catch form.
+
+ All the other members are concerned with restoring the interpreter
+ state.
+
+ Members are volatile if their values need to survive _longjmp when
+ a 'struct handler' is a local variable. */
+
+enum handlertype { CATCHER, CONDITION_CASE };
+
+struct handler
+{
+ enum handlertype type;
+ Lisp_Object tag_or_ch;
+ Lisp_Object val;
+ struct handler *next;
+ struct handler *nextfree;
+
+ /* The bytecode interpreter can have several handlers active at the same
+ time, so when we longjmp to one of them, it needs to know which handler
+ this was and what was the corresponding internal state. This is stored
+ here, and when we longjmp we make sure that handlerlist points to the
+ proper handler. */
+ Lisp_Object *bytecode_top;
+ int bytecode_dest;
+
+ /* Most global vars are reset to their value via the specpdl mechanism,
+ but a few others are handled by storing their value here. */
+#if true /* GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS, but defined later. */
+ struct gcpro *gcpro;
+#endif
+ sys_jmp_buf jmp;
+ EMACS_INT lisp_eval_depth;
+ ptrdiff_t pdlcount;
+ int poll_suppress_count;
+ int interrupt_input_blocked;
+ struct byte_stack *byte_stack;
+};
+
+/* Fill in the components of c, and put it on the list. */
+#define PUSH_HANDLER(c, tag_ch_val, handlertype) \
+ if (handlerlist->nextfree) \
+ (c) = handlerlist->nextfree; \
+ else \
+ { \
+ (c) = xmalloc (sizeof (struct handler)); \
+ (c)->nextfree = NULL; \
+ handlerlist->nextfree = (c); \
+ } \
+ (c)->type = (handlertype); \
+ (c)->tag_or_ch = (tag_ch_val); \
+ (c)->val = Qnil; \
+ (c)->next = handlerlist; \
+ (c)->lisp_eval_depth = lisp_eval_depth; \
+ (c)->pdlcount = SPECPDL_INDEX (); \
+ (c)->poll_suppress_count = poll_suppress_count; \
+ (c)->interrupt_input_blocked = interrupt_input_blocked;\
+ (c)->gcpro = gcprolist; \
+ (c)->byte_stack = byte_stack_list; \
+ handlerlist = (c);
+
+
+extern Lisp_Object memory_signal_data;
+
+/* An address near the bottom of the stack.
+ Tells GC how to save a copy of the stack. */
+extern char *stack_bottom;
+
+/* Check quit-flag and quit if it is non-nil.
+ Typing C-g does not directly cause a quit; it only sets Vquit_flag.
+ So the program needs to do QUIT at times when it is safe to quit.
+ Every loop that might run for a long time or might not exit
+ ought to do QUIT at least once, at a safe place.
+ Unless that is impossible, of course.
+ But it is very desirable to avoid creating loops where QUIT is impossible.
+
+ Exception: if you set immediate_quit to true,
+ then the handler that responds to the C-g does the quit itself.
+ This is a good thing to do around a loop that has no side effects
+ and (in particular) cannot call arbitrary Lisp code.
+
+ If quit-flag is set to `kill-emacs' the SIGINT handler has received
+ a request to exit Emacs when it is safe to do. */
+
+extern void process_pending_signals (void);
+extern bool volatile pending_signals;
+
+extern void process_quit_flag (void);
+#define QUIT \
+ do { \
+ if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
+ process_quit_flag (); \
+ else if (pending_signals) \
+ process_pending_signals (); \
+ } while (false)
+
+
+/* True if ought to quit now. */
+
+#define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
+\f
+extern Lisp_Object Vascii_downcase_table;
+extern Lisp_Object Vascii_canon_table;
+\f
+/* Structure for recording stack slots that need marking. */
+
+/* This is a chain of structures, each of which points at a Lisp_Object
+ variable whose value should be marked in garbage collection.
+ Normally every link of the chain is an automatic variable of a function,
+ and its `val' points to some argument or local variable of the function.
+ On exit to the function, the chain is set back to the value it had on entry.
+ This way, no link remains in the chain when the stack frame containing the
+ link disappears.
+
+ Every function that can call Feval must protect in this fashion all
+ Lisp_Object variables whose contents will be used again. */
+
+extern struct gcpro *gcprolist;
+
+struct gcpro
+{
+ struct gcpro *next;
+
+ /* Address of first protected variable. */
+ volatile Lisp_Object *var;
+
+ /* Number of consecutive protected variables. */
+ ptrdiff_t nvars;
+
+#ifdef DEBUG_GCPRO
+ /* File name where this record is used. */
+ const char *name;
+
+ /* Line number in this file. */
+ int lineno;
+
+ /* Index in the local chain of records. */
+ int idx;
+
+ /* Nesting level. */
+ int level;
+#endif
+};
+
+/* Values of GC_MARK_STACK during compilation:
+
+ 0 Use GCPRO as before
+ 1 Do the real thing, make GCPROs and UNGCPRO no-ops.
+ 2 Mark the stack, and check that everything GCPRO'd is
+ marked.
+ 3 Mark using GCPRO's, mark stack last, and count how many
+ dead objects are kept alive.
+
+ Formerly, method 0 was used. Currently, method 1 is used unless
+ otherwise specified by hand when building, e.g.,
+ "make CPPFLAGS='-DGC_MARK_STACK=GC_USE_GCPROS_AS_BEFORE'".
+ Methods 2 and 3 are present mainly to debug the transition from 0 to 1. */
+
+#define GC_USE_GCPROS_AS_BEFORE 0
+#define GC_MAKE_GCPROS_NOOPS 1
+#define GC_MARK_STACK_CHECK_GCPROS 2
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3
+
+#ifndef GC_MARK_STACK
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+#endif
+
+/* Whether we do the stack marking manually. */
+#define BYTE_MARK_STACK !(GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \
+ || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
+
+
+#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
+
+/* Do something silly with gcproN vars just so gcc shuts up. */
+/* You get warnings from MIPSPro... */
+
+#define GCPRO1(varname) ((void) gcpro1)
+#define GCPRO2(varname1, varname2) ((void) gcpro2, (void) gcpro1)
+#define GCPRO3(varname1, varname2, varname3) \
+ ((void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO4(varname1, varname2, varname3, varname4) \
+ ((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
+ ((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
+ ((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, \
+ (void) gcpro1)
+#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 (a, b, c, d, e, f), (void) gcpro7)
+#define UNGCPRO ((void) 0)
+
+#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
+
+#ifndef DEBUG_GCPRO
+
+#define GCPRO1(a) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcprolist = &gcpro1; }
+
+#define GCPRO2(a, b) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcprolist = &gcpro2; }
+
+#define GCPRO3(a, b, c) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcprolist = &gcpro3; }
+
+#define GCPRO4(a, b, c, d) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcprolist = &gcpro4; }
+
+#define GCPRO5(a, b, c, d, e) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcprolist = &gcpro5; }
+
+#define GCPRO6(a, b, c, d, e, f) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \
+ gcprolist = &gcpro6; }
+
+#define GCPRO7(a, b, c, d, e, f, g) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \
+ gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1; \
+ gcprolist = &gcpro7; }
+
+#define UNGCPRO (gcprolist = gcpro1.next)
+
+#else /* !DEBUG_GCPRO */
+
+extern int gcpro_level;
+
+#define GCPRO1(a) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level++; \
+ gcprolist = &gcpro1; }
+
+#define GCPRO2(a, b) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro2.level = gcpro_level++; \
+ gcprolist = &gcpro2; }
+
+#define GCPRO3(a, b, c) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro3.level = gcpro_level++; \
+ gcprolist = &gcpro3; }
+
+#define GCPRO4(a, b, c, d) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro4.level = gcpro_level++; \
+ gcprolist = &gcpro4; }
+
+#define GCPRO5(a, b, c, d, e) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro5.level = gcpro_level++; \
+ gcprolist = &gcpro5; }
+
+#define GCPRO6(a, b, c, d, e, f) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \
+ gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \
+ gcpro6.level = gcpro_level++; \
+ gcprolist = &gcpro6; }
+
+#define GCPRO7(a, b, c, d, e, f, g) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1; \
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1; \
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1; \
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1; \
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1; \
+ gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \
+ gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1; \
+ gcpro7.name = __FILE__; gcpro7.lineno = __LINE__; gcpro7.idx = 7; \
+ gcpro7.level = gcpro_level++; \
+ gcprolist = &gcpro7; }
+
+#define UNGCPRO \
+ (--gcpro_level != gcpro1.level \
+ ? emacs_abort () \
+ : (void) (gcprolist = gcpro1.next))
+
+#endif /* DEBUG_GCPRO */
+#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
+
+
+/* Evaluate expr, UNGCPRO, and then return the value of expr. */
+#define RETURN_UNGCPRO(expr) \
+ do \
+ { \
+ Lisp_Object ret_ungc_val; \
+ ret_ungc_val = (expr); \
+ UNGCPRO; \
+ return ret_ungc_val; \
+ } \
+ while (false)
+
+/* Call staticpro (&var) to protect static variable `var'. */
+
+void staticpro (Lisp_Object *);
+\f
+/* Forward declarations for prototypes. */
+struct window;
+struct frame;
+
+/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */
+
+INLINE void
+vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count)
+{
+ eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v));
+ memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args);
+}
+
+/* Functions to modify hash tables. */
+
+INLINE void
+set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
+{
+ gc_aset (h->key_and_value, 2 * idx, val);
+}
+
+INLINE void
+set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
+{
+ gc_aset (h->key_and_value, 2 * idx + 1, val);
+}
+
+/* Use these functions to set Lisp_Object
+ or pointer slots of struct Lisp_Symbol. */
+
+INLINE void
+set_symbol_function (Lisp_Object sym, Lisp_Object function)
+{
+ XSYMBOL (sym)->function = function;
+}
+
+INLINE void
+set_symbol_plist (Lisp_Object sym, Lisp_Object plist)
+{
+ XSYMBOL (sym)->plist = plist;
+}
+
+INLINE void
+set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next)
+{
+ XSYMBOL (sym)->next = next;
+}
+
+/* Buffer-local (also frame-local) variable access functions. */
+
+INLINE int
+blv_found (struct Lisp_Buffer_Local_Value *blv)
+{
+ eassert (blv->found == !EQ (blv->defcell, blv->valcell));
+ return blv->found;
+}
+
+/* Set overlay's property list. */
+
+INLINE void
+set_overlay_plist (Lisp_Object overlay, Lisp_Object plist)
+{
+ XOVERLAY (overlay)->plist = plist;
+}
+
+/* Get text properties of S. */
+
+INLINE INTERVAL
+string_intervals (Lisp_Object s)
+{
+ return XSTRING (s)->intervals;
+}
+
+/* Set text properties of S to I. */
+
+INLINE void
+set_string_intervals (Lisp_Object s, INTERVAL i)
+{
+ XSTRING (s)->intervals = i;
+}
+
+/* Set a Lisp slot in TABLE to VAL. Most code should use this instead
+ of setting slots directly. */
+
+INLINE void
+set_char_table_defalt (Lisp_Object table, Lisp_Object val)
+{
+ XCHAR_TABLE (table)->defalt = val;
+}
+INLINE void
+set_char_table_purpose (Lisp_Object table, Lisp_Object val)
+{
+ XCHAR_TABLE (table)->purpose = val;
+}
+
+/* Set different slots in (sub)character tables. */
+
+INLINE void
+set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table)));
+ XCHAR_TABLE (table)->extras[idx] = val;
+}
+
+INLINE void
+set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0));
+ XCHAR_TABLE (table)->contents[idx] = val;
+}
+
+INLINE void
+set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ XSUB_CHAR_TABLE (table)->contents[idx] = val;
+}
+
+/* Defined in data.c. */
+extern Lisp_Object indirect_function (Lisp_Object);
+extern Lisp_Object find_symbol_value (Lisp_Object);
+enum Arith_Comparison {
+ ARITH_EQUAL,
+ ARITH_NOTEQUAL,
+ ARITH_LESS,
+ ARITH_GRTR,
+ ARITH_LESS_OR_EQUAL,
+ ARITH_GRTR_OR_EQUAL
+};
+extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2,
+ enum Arith_Comparison comparison);
+
+/* Convert the integer I to an Emacs representation, either the integer
+ itself, or a cons of two or three integers, or if all else fails a float.
+ I should not have side effects. */
+#define INTEGER_TO_CONS(i) \
+ (! FIXNUM_OVERFLOW_P (i) \
+ ? make_number (i) \
+ : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16) \
+ || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16)) \
+ && FIXNUM_OVERFLOW_P ((i) >> 16)) \
+ ? Fcons (make_number ((i) >> 16), make_number ((i) & 0xffff)) \
+ : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16 >> 24) \
+ || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16 >> 24)) \
+ && FIXNUM_OVERFLOW_P ((i) >> 16 >> 24)) \
+ ? Fcons (make_number ((i) >> 16 >> 24), \
+ Fcons (make_number ((i) >> 16 & 0xffffff), \
+ make_number ((i) & 0xffff))) \
+ : make_float (i))
+
+/* Convert the Emacs representation CONS back to an integer of type
+ TYPE, storing the result the variable VAR. Signal an error if CONS
+ is not a valid representation or is out of range for TYPE. */
+#define CONS_TO_INTEGER(cons, type, var) \
+ (TYPE_SIGNED (type) \
+ ? ((var) = cons_to_signed (cons, TYPE_MINIMUM (type), TYPE_MAXIMUM (type))) \
+ : ((var) = cons_to_unsigned (cons, TYPE_MAXIMUM (type))))
+extern intmax_t cons_to_signed (Lisp_Object, intmax_t, intmax_t);
+extern uintmax_t cons_to_unsigned (Lisp_Object, uintmax_t);
+
+extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *);
+extern _Noreturn void args_out_of_range (Lisp_Object, Lisp_Object);
+extern _Noreturn void args_out_of_range_3 (Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *);
+extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool);
+extern void syms_of_data (void);
+extern void swap_in_global_binding (struct Lisp_Symbol *);
+
+/* Defined in cmds.c */
+extern void syms_of_cmds (void);
+extern void keys_of_cmds (void);
+
+/* Defined in coding.c. */
+extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
+ ptrdiff_t, bool, bool, Lisp_Object);
+extern void init_coding (void);
+extern void init_coding_once (void);
+extern void syms_of_coding (void);
+
+/* Defined in character.c. */
+extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t);
+extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t);
+extern void syms_of_character (void);
+
+/* Defined in charset.c. */
+extern void init_charset (void);
+extern void init_charset_once (void);
+extern void syms_of_charset (void);
+/* Structure forward declarations. */
+struct charset;
+
+/* Defined in syntax.c. */
+extern void init_syntax_once (void);
+extern void syms_of_syntax (void);
+
+/* Defined in fns.c. */
+enum { NEXT_ALMOST_PRIME_LIMIT = 11 };
+extern EMACS_INT next_almost_prime (EMACS_INT) ATTRIBUTE_CONST;
+extern Lisp_Object larger_vector (Lisp_Object, ptrdiff_t, ptrdiff_t);
+extern void sweep_weak_hash_tables (void);
+EMACS_UINT hash_string (char const *, ptrdiff_t);
+EMACS_UINT sxhash (Lisp_Object, int);
+Lisp_Object make_hash_table (struct hash_table_test, Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object);
+ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *);
+ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
+ EMACS_UINT);
+extern struct hash_table_test hashtest_eql, hashtest_equal;
+extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object,
+ ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
+extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object do_yes_or_no_p (Lisp_Object);
+extern Lisp_Object concat2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object);
+extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object);
+extern void clear_string_char_byte_cache (void);
+extern ptrdiff_t string_char_to_byte (Lisp_Object, ptrdiff_t);
+extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t);
+extern Lisp_Object string_to_multibyte (Lisp_Object);
+extern Lisp_Object string_make_unibyte (Lisp_Object);
+extern void syms_of_fns (void);
+
+/* Defined in floatfns.c. */
+extern void syms_of_floatfns (void);
+extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y);
+
+/* Defined in fringe.c. */
+extern void syms_of_fringe (void);
+extern void init_fringe (void);
+#ifdef HAVE_WINDOW_SYSTEM
+extern void mark_fringe_data (void);
+extern void init_fringe_once (void);
+#endif /* HAVE_WINDOW_SYSTEM */
+
+/* Defined in image.c. */
+extern int x_bitmap_mask (struct frame *, ptrdiff_t);
+extern void reset_image_types (void);
+extern void syms_of_image (void);
+
+/* Defined in insdel.c. */
+extern void move_gap_both (ptrdiff_t, ptrdiff_t);
+extern _Noreturn void buffer_overflow (void);
+extern void make_gap (ptrdiff_t);
+extern void make_gap_1 (struct buffer *, ptrdiff_t);
+extern ptrdiff_t copy_text (const unsigned char *, unsigned char *,
+ ptrdiff_t, bool, bool);
+extern int count_combining_before (const unsigned char *,
+ ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern int count_combining_after (const unsigned char *,
+ ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern void insert (const char *, ptrdiff_t);
+extern void insert_and_inherit (const char *, ptrdiff_t);
+extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
+ bool, bool, bool);
+extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
+extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, bool);
+extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
+extern void insert_char (int);
+extern void insert_string (const char *);
+extern void insert_before_markers (const char *, ptrdiff_t);
+extern void insert_before_markers_and_inherit (const char *, ptrdiff_t);
+extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern void del_range (ptrdiff_t, ptrdiff_t);
+extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool);
+extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool);
+extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, bool);
+extern void modify_text (ptrdiff_t, ptrdiff_t);
+extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
+extern void prepare_to_modify_buffer_1 (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
+extern void invalidate_buffer_caches (struct buffer *, ptrdiff_t, ptrdiff_t);
+extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool, bool);
+extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ const char *, ptrdiff_t, ptrdiff_t, bool);
+extern void syms_of_insdel (void);
+
+/* Defined in dispnew.c. */
+#if (defined PROFILING \
+ && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__))
+_Noreturn void __executable_start (void);
+#endif
+extern Lisp_Object Vwindow_system;
+extern Lisp_Object sit_for (Lisp_Object, bool, int);
+
+/* Defined in xdisp.c. */
+extern bool noninteractive_need_newline;
+extern Lisp_Object echo_area_buffer[2];
+extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
+extern void check_message_stack (void);
+extern void setup_echo_area_for_printing (bool);
+extern bool push_message (void);
+extern void pop_message_unwind (void);
+extern Lisp_Object restore_message_unwind (Lisp_Object);
+extern void restore_message (void);
+extern Lisp_Object current_message (void);
+extern void clear_message (bool, bool);
+extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+extern void message1 (const char *);
+extern void message1_nolog (const char *);
+extern void message3 (Lisp_Object);
+extern void message3_nolog (Lisp_Object);
+extern void message_dolog (const char *, ptrdiff_t, bool, bool);
+extern void message_with_string (const char *, Lisp_Object, bool);
+extern void message_log_maybe_newline (void);
+extern void update_echo_area (void);
+extern void truncate_echo_area (ptrdiff_t);
+extern void redisplay (void);
+
+void set_frame_cursor_types (struct frame *, Lisp_Object);
+extern void syms_of_xdisp (void);
+extern void init_xdisp (void);
+extern Lisp_Object safe_eval (Lisp_Object);
+extern bool pos_visible_p (struct window *, ptrdiff_t, int *,
+ int *, int *, int *, int *, int *);
+
+/* Defined in xsettings.c. */
+extern void syms_of_xsettings (void);
+
+/* Defined in vm-limit.c. */
+extern void memory_warnings (void *, void (*warnfun) (const char *));
+
+/* Defined in character.c. */
+extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
+ ptrdiff_t *, ptrdiff_t *);
+
+/* Defined in alloc.c. */
+extern void check_pure_size (void);
+extern void free_misc (Lisp_Object);
+extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT);
+extern void malloc_warning (const char *);
+extern _Noreturn void memory_full (size_t);
+extern _Noreturn void buffer_memory_full (ptrdiff_t);
+extern bool survives_gc_p (Lisp_Object);
+extern void mark_object (Lisp_Object);
+#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
+extern void refill_memory_reserve (void);
+#endif
+extern const char *pending_malloc_warning;
+extern Lisp_Object zero_vector;
+extern Lisp_Object *stack_base;
+extern EMACS_INT consing_since_gc;
+extern EMACS_INT gc_relative_threshold;
+extern EMACS_INT memory_full_cons_threshold;
+extern Lisp_Object list1 (Lisp_Object);
+extern Lisp_Object list2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object);
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE};
+extern Lisp_Object listn (enum constype, ptrdiff_t, Lisp_Object, ...);
+
+/* Build a frequently used 2/3/4-integer lists. */
+
+INLINE Lisp_Object
+list2i (EMACS_INT x, EMACS_INT y)
+{
+ return list2 (make_number (x), make_number (y));
+}
+
+INLINE Lisp_Object
+list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)
+{
+ return list3 (make_number (x), make_number (y), make_number (w));
+}
+
+INLINE Lisp_Object
+list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h)
+{
+ return list4 (make_number (x), make_number (y),
+ make_number (w), make_number (h));
+}
+
+extern Lisp_Object make_uninit_bool_vector (EMACS_INT);
+extern Lisp_Object bool_vector_fill (Lisp_Object, Lisp_Object);
+extern _Noreturn void string_overflow (void);
+extern Lisp_Object make_string (const char *, ptrdiff_t);
+extern Lisp_Object make_formatted_string (char *, const char *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (2, 3);
+extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
+
+/* Make unibyte string from C string when the length isn't known. */
+
+INLINE Lisp_Object
+build_unibyte_string (const char *str)
+{
+ return make_unibyte_string (str, strlen (str));
+}
+
+extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_event_array (ptrdiff_t, Lisp_Object *);
+extern Lisp_Object make_uninit_string (EMACS_INT);
+extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
+extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_specified_string (const char *,
+ ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t);
+
+/* Make a string allocated in pure space, use STR as string data. */
+
+INLINE Lisp_Object
+build_pure_c_string (const char *str)
+{
+ return make_pure_c_string (str, strlen (str));
+}
+
+/* Make a string from the data at STR, treating it as multibyte if the
+ data warrants. */
+
+INLINE Lisp_Object
+build_string (const char *str)
+{
+ return make_string (str, strlen (str));
+}
+
+extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object);
+extern void make_byte_code (struct Lisp_Vector *);
+extern struct Lisp_Vector *allocate_vector (EMACS_INT);
+
+/* Make an uninitialized vector for SIZE objects. NOTE: you must
+ be sure that GC cannot happen until the vector is completely
+ initialized. E.g. the following code is likely to crash:
+
+ v = make_uninit_vector (3);
+ ASET (v, 0, obj0);
+ ASET (v, 1, Ffunction_can_gc ());
+ ASET (v, 2, obj1); */
+
+INLINE Lisp_Object
+make_uninit_vector (ptrdiff_t size)
+{
+ Lisp_Object v;
+ struct Lisp_Vector *p;
+
+ p = allocate_vector (size);
+ XSETVECTOR (v, p);
+ return v;
+}
+
+/* Like above, but special for sub char-tables. */
+
+INLINE Lisp_Object
+make_uninit_sub_char_table (int depth, int min_char)
+{
+ int slots = SUB_CHAR_TABLE_OFFSET + chartab_size[depth];
+ Lisp_Object v = make_uninit_vector (slots);
+
+ XSETPVECTYPE (XVECTOR (v), PVEC_SUB_CHAR_TABLE);
+ XSUB_CHAR_TABLE (v)->depth = depth;
+ XSUB_CHAR_TABLE (v)->min_char = min_char;
+ return v;
+}
+
+extern struct Lisp_Vector *allocate_pseudovector (int, int, int,
+ enum pvec_type);
+
+/* Allocate partially initialized pseudovector where all Lisp_Object
+ slots are set to Qnil but the rest (if any) is left uninitialized. */
+
+#define ALLOCATE_PSEUDOVECTOR(type, field, tag) \
+ ((type *) allocate_pseudovector (VECSIZE (type), \
+ PSEUDOVECSIZE (type, field), \
+ PSEUDOVECSIZE (type, field), tag))
+
+/* Allocate fully initialized pseudovector where all Lisp_Object
+ slots are set to Qnil and the rest (if any) is zeroed. */
+
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, tag) \
+ ((type *) allocate_pseudovector (VECSIZE (type), \
+ PSEUDOVECSIZE (type, field), \
+ VECSIZE (type), tag))
+
+extern bool gc_in_progress;
+extern bool abort_on_gc;
+extern Lisp_Object make_float (double);
+extern void display_malloc_warning (void);
+extern ptrdiff_t inhibit_garbage_collection (void);
+extern Lisp_Object make_save_int_int_int (ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_save_obj_obj_obj_obj (Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object);
+extern Lisp_Object make_save_ptr (void *);
+extern Lisp_Object make_save_ptr_int (void *, ptrdiff_t);
+extern Lisp_Object make_save_ptr_ptr (void *, void *);
+extern Lisp_Object make_save_funcptr_ptr_obj (void (*) (void), void *,
+ Lisp_Object);
+extern Lisp_Object make_save_memory (Lisp_Object *, ptrdiff_t);
+extern void free_save_value (Lisp_Object);
+extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void free_marker (Lisp_Object);
+extern void free_cons (struct Lisp_Cons *);
+extern void init_alloc_once (void);
+extern void init_alloc (void);
+extern void syms_of_alloc (void);
+extern struct buffer * allocate_buffer (void);
+extern int valid_lisp_object_p (Lisp_Object);
+extern int relocatable_string_data_p (const char *);
+#ifdef GC_CHECK_CONS_LIST
+extern void check_cons_list (void);
+#else
+INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); }
+#endif
+
+#ifdef REL_ALLOC
+/* Defined in ralloc.c. */
+extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void r_alloc_free (void **);
+extern void *r_re_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void r_alloc_reset_variable (void **, void **);
+extern void r_alloc_inhibit_buffer_relocation (int);
+#endif
+
+/* Defined in chartab.c. */
+extern Lisp_Object copy_char_table (Lisp_Object);
+extern Lisp_Object char_table_ref_and_range (Lisp_Object, int,
+ int *, int *);
+extern void char_table_set_range (Lisp_Object, int, int, Lisp_Object);
+extern void map_char_table (void (*) (Lisp_Object, Lisp_Object,
+ Lisp_Object),
+ Lisp_Object, Lisp_Object, Lisp_Object);
+extern void map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object),
+ Lisp_Object, Lisp_Object,
+ Lisp_Object, struct charset *,
+ unsigned, unsigned);
+extern Lisp_Object uniprop_table (Lisp_Object);
+extern void syms_of_chartab (void);
+
+/* Defined in print.c. */
+extern Lisp_Object Vprin1_to_string_buffer;
+extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
+extern void temp_output_buffer_setup (const char *);
+extern int print_level;
+extern void write_string (const char *);
+extern void print_error_message (Lisp_Object, Lisp_Object, const char *,
+ Lisp_Object);
+extern Lisp_Object internal_with_output_to_temp_buffer
+ (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object);
+#define FLOAT_TO_STRING_BUFSIZE 350
+extern int float_to_string (char *, double);
+extern void init_print_once (void);
+extern void syms_of_print (void);
+
+/* Defined in doprnt.c. */
+extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *,
+ va_list);
+extern ptrdiff_t esprintf (char *, char const *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (2, 3);
+extern ptrdiff_t exprintf (char **, ptrdiff_t *, char const *, ptrdiff_t,
+ char const *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (5, 6);
+extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char const *, ptrdiff_t,
+ char const *, va_list)
+ ATTRIBUTE_FORMAT_PRINTF (5, 0);
+
+/* Defined in lread.c. */
+extern Lisp_Object check_obarray (Lisp_Object);
+extern Lisp_Object intern_1 (const char *, ptrdiff_t);
+extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t);
+extern Lisp_Object intern_driver (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void init_symbol (Lisp_Object, Lisp_Object);
+extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t);
+INLINE void
+LOADHIST_ATTACH (Lisp_Object x)
+{
+ if (initialized)
+ Vcurrent_load_list = Fcons (x, Vcurrent_load_list);
+}
+extern int openp (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object *, Lisp_Object, bool);
+extern Lisp_Object string_to_number (char const *, int, bool);
+extern void map_obarray (Lisp_Object, void (*) (Lisp_Object, Lisp_Object),
+ Lisp_Object);
+extern void dir_warning (const char *, Lisp_Object);
+extern void init_obarray (void);
+extern void init_lread (void);
+extern void syms_of_lread (void);
+
+INLINE Lisp_Object
+intern (const char *str)
+{
+ return intern_1 (str, strlen (str));
+}
+
+INLINE Lisp_Object
+intern_c_string (const char *str)
+{
+ return intern_c_string_1 (str, strlen (str));
+}
+
+/* Defined in eval.c. */
+extern EMACS_INT lisp_eval_depth;
+extern Lisp_Object Vautoload_queue;
+extern Lisp_Object Vrun_hooks;
+extern Lisp_Object Vsignaling_function;
+extern Lisp_Object inhibit_lisp_code;
+extern struct handler *handlerlist;
+
+/* To run a normal hook, use the appropriate function from the list below.
+ The calling convention:
+
+ if (!NILP (Vrun_hooks))
+ call1 (Vrun_hooks, Qmy_funny_hook);
+
+ should no longer be used. */
+extern void run_hook (Lisp_Object);
+extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args,
+ Lisp_Object (*funcall)
+ (ptrdiff_t nargs, Lisp_Object *args));
+extern _Noreturn void xsignal (Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal0 (Lisp_Object);
+extern _Noreturn void xsignal1 (Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern _Noreturn void signal_error (const char *, Lisp_Object);
+extern Lisp_Object eval_sub (Lisp_Object form);
+extern Lisp_Object apply1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object call0 (Lisp_Object);
+extern Lisp_Object call1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object call2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call3 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object);
+extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object));
+extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
+extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
+extern Lisp_Object internal_condition_case_n
+ (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *,
+ Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *));
+extern void specbind (Lisp_Object, Lisp_Object);
+extern void record_unwind_protect (void (*) (Lisp_Object), Lisp_Object);
+extern void record_unwind_protect_ptr (void (*) (void *), void *);
+extern void record_unwind_protect_int (void (*) (int), int);
+extern void record_unwind_protect_void (void (*) (void));
+extern void record_unwind_protect_nothing (void);
+extern void clear_unwind_protect (ptrdiff_t);
+extern void set_unwind_protect (ptrdiff_t, void (*) (Lisp_Object), Lisp_Object);
+extern void set_unwind_protect_ptr (ptrdiff_t, void (*) (void *), void *);
+extern Lisp_Object unbind_to (ptrdiff_t, Lisp_Object);
+extern _Noreturn void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+extern _Noreturn void verror (const char *, va_list)
+ ATTRIBUTE_FORMAT_PRINTF (1, 0);
+extern void un_autoload (Lisp_Object);
+extern Lisp_Object call_debugger (Lisp_Object arg);
+extern void init_eval_once (void);
+extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...);
+extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void init_eval (void);
+extern void syms_of_eval (void);
+extern void unwind_body (Lisp_Object);
+extern ptrdiff_t record_in_backtrace (Lisp_Object, Lisp_Object *, ptrdiff_t);
+extern void mark_specpdl (void);
+extern void get_backtrace (Lisp_Object array);
+Lisp_Object backtrace_top_function (void);
+extern bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol);
+extern bool let_shadows_global_binding_p (Lisp_Object symbol);
+
+
+/* Defined in editfns.c. */
+extern void insert1 (Lisp_Object);
+extern Lisp_Object format2 (const char *, Lisp_Object, Lisp_Object);
+extern Lisp_Object save_excursion_save (void);
+extern Lisp_Object save_restriction_save (void);
+extern void save_excursion_restore (Lisp_Object);
+extern void save_restriction_restore (Lisp_Object);
+extern _Noreturn void time_overflow (void);
+extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern void init_editfns (void);
+extern void syms_of_editfns (void);
+
+/* Defined in buffer.c. */
+extern bool mouse_face_overlay_overlaps (Lisp_Object);
+extern _Noreturn void nsberror (Lisp_Object);
+extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
+extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
+extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
+extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool,
+ Lisp_Object, Lisp_Object, Lisp_Object);
+extern bool overlay_touches_p (ptrdiff_t);
+extern Lisp_Object other_buffer_safely (Lisp_Object);
+extern Lisp_Object get_truename_buffer (Lisp_Object);
+extern void init_buffer_once (void);
+extern void init_buffer (int);
+extern void syms_of_buffer (void);
+extern void keys_of_buffer (void);
+
+/* Defined in marker.c. */
+
+extern ptrdiff_t marker_position (Lisp_Object);
+extern ptrdiff_t marker_byte_position (Lisp_Object);
+extern void clear_charpos_cache (struct buffer *);
+extern ptrdiff_t buf_charpos_to_bytepos (struct buffer *, ptrdiff_t);
+extern ptrdiff_t buf_bytepos_to_charpos (struct buffer *, ptrdiff_t);
+extern void unchain_marker (struct Lisp_Marker *marker);
+extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object,
+ ptrdiff_t, ptrdiff_t);
+extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t);
+extern void syms_of_marker (void);
+
+/* Defined in fileio.c. */
+
+extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
+extern Lisp_Object write_region (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, int);
+extern void close_file_unwind (int);
+extern void fclose_unwind (void *);
+extern void restore_point_unwind (Lisp_Object);
+extern _Noreturn void report_file_errno (const char *, Lisp_Object, int);
+extern _Noreturn void report_file_error (const char *, Lisp_Object);
+extern bool internal_delete_file (Lisp_Object);
+extern Lisp_Object emacs_readlinkat (int, const char *);
+extern bool file_directory_p (const char *);
+extern bool file_accessible_directory_p (Lisp_Object);
+extern void init_fileio (void);
+extern void syms_of_fileio (void);
+extern Lisp_Object make_temp_name (Lisp_Object, bool);
+
+/* Defined in search.c. */
+extern void shrink_regexp_cache (void);
+extern void restore_search_regs (void);
+extern void record_unwind_save_match_data (void);
+struct re_registers;
+extern struct re_pattern_buffer *compile_pattern (Lisp_Object,
+ struct re_registers *,
+ Lisp_Object, bool, bool);
+extern ptrdiff_t fast_string_match_internal (Lisp_Object, Lisp_Object,
+ Lisp_Object);
+
+INLINE ptrdiff_t
+fast_string_match (Lisp_Object regexp, Lisp_Object string)
+{
+ return fast_string_match_internal (regexp, string, Qnil);
+}
+
+INLINE ptrdiff_t
+fast_string_match_ignore_case (Lisp_Object regexp, Lisp_Object string)
+{
+ return fast_string_match_internal (regexp, string, Vascii_canon_table);
+}
+
+extern ptrdiff_t fast_c_string_match_ignore_case (Lisp_Object, const char *,
+ ptrdiff_t);
+extern ptrdiff_t fast_looking_at (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, Lisp_Object);
+extern ptrdiff_t find_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *, ptrdiff_t *, bool);
+extern ptrdiff_t scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern ptrdiff_t scan_newline_from_point (ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
+extern ptrdiff_t find_newline_no_quit (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *);
+extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *);
+extern void syms_of_search (void);
+extern void clear_regexp_cache (void);
+
+/* Defined in minibuf.c. */
+
+extern Lisp_Object Vminibuffer_list;
+extern Lisp_Object last_minibuf_string;
+extern Lisp_Object get_minibuffer (EMACS_INT);
+extern void init_minibuf_once (void);
+extern void syms_of_minibuf (void);
+
+/* Defined in callint.c. */
+
+extern void syms_of_callint (void);
+
+/* Defined in casefiddle.c. */
+
+extern void syms_of_casefiddle (void);
+extern void keys_of_casefiddle (void);
+
+/* Defined in casetab.c. */
+
+extern void init_casetab_once (void);
+extern void syms_of_casetab (void);
+
+/* Defined in keyboard.c. */
+
+extern Lisp_Object echo_message_buffer;
+extern struct kboard *echo_kboard;
+extern void cancel_echoing (void);
+extern Lisp_Object last_undo_boundary;
+extern bool input_pending;
+#ifdef HAVE_STACK_OVERFLOW_HANDLING
+extern sigjmp_buf return_to_command_loop;
+#endif
+extern Lisp_Object menu_bar_items (Lisp_Object);
+extern Lisp_Object tool_bar_items (Lisp_Object, int *);
+extern void discard_mouse_events (void);
+#ifdef USABLE_SIGIO
+void handle_input_available_signal (int);
+#endif
+extern Lisp_Object pending_funcalls;
+extern bool detect_input_pending (void);
+extern bool detect_input_pending_ignore_squeezables (void);
+extern bool detect_input_pending_run_timers (bool);
+extern void safe_run_hooks (Lisp_Object);
+extern void cmd_error_internal (Lisp_Object, const char *);
+extern Lisp_Object command_loop_1 (void);
+extern Lisp_Object read_menu_command (void);
+extern Lisp_Object recursive_edit_1 (void);
+extern void record_auto_save (void);
+extern void force_auto_save_soon (void);
+extern void init_keyboard (void);
+extern void syms_of_keyboard (void);
+extern void keys_of_keyboard (void);
+
+/* Defined in indent.c. */
+extern ptrdiff_t current_column (void);
+extern void invalidate_current_column (void);
+extern bool indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT);
+extern void syms_of_indent (void);
+
+/* Defined in frame.c. */
+extern void store_frame_param (struct frame *, Lisp_Object, Lisp_Object);
+extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object);
+extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object);
+extern Lisp_Object get_frame_param (struct frame *, Lisp_Object);
+extern void frames_discard_buffer (Lisp_Object);
+extern void syms_of_frame (void);
+
+/* Defined in emacs.c. */
+extern char **initial_argv;
+extern int initial_argc;
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
+extern bool display_arg;
+#endif
+extern Lisp_Object decode_env_path (const char *, const char *, bool);
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
+extern _Noreturn void terminate_due_to_signal (int, int);
+#ifdef WINDOWSNT
+extern Lisp_Object Vlibrary_cache;
+#endif
+#if HAVE_SETLOCALE
+void fixup_locale (void);
+void synchronize_system_messages_locale (void);
+void synchronize_system_time_locale (void);
+#else
+INLINE void fixup_locale (void) {}
+INLINE void synchronize_system_messages_locale (void) {}
+INLINE void synchronize_system_time_locale (void) {}
+#endif
+extern void shut_down_emacs (int, Lisp_Object);
+
+/* True means don't do interactive redisplay and don't change tty modes. */
+extern bool noninteractive;
+
+/* True means remove site-lisp directories from load-path. */
+extern bool no_site_lisp;
+
+/* Pipe used to send exit notification to the daemon parent at
+ startup. On Windows, we use a kernel event instead. */
+#ifndef WINDOWSNT
+extern int daemon_pipe[2];
+#define IS_DAEMON (daemon_pipe[1] != 0)
+#define DAEMON_RUNNING (daemon_pipe[1] >= 0)
+#else /* WINDOWSNT */
+extern void *w32_daemon_event;
+#define IS_DAEMON (w32_daemon_event != NULL)
+#define DAEMON_RUNNING (w32_daemon_event != INVALID_HANDLE_VALUE)
+#endif
+
+/* True if handling a fatal error already. */
+extern bool fatal_error_in_progress;
+
+/* True means don't do use window-system-specific display code. */
+extern bool inhibit_window_system;
+/* True means that a filter or a sentinel is running. */
+extern bool running_asynch_code;
+
+/* Defined in process.c. */
+extern void kill_buffer_processes (Lisp_Object);
+extern int wait_reading_process_output (intmax_t, int, int, bool, Lisp_Object,
+ struct Lisp_Process *, int);
+/* Max value for the first argument of wait_reading_process_output. */
+#if __GNUC__ == 3 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
+/* Work around a bug in GCC 3.4.2, known to be fixed in GCC 4.6.3.
+ The bug merely causes a bogus warning, but the warning is annoying. */
+# define WAIT_READING_MAX min (TYPE_MAXIMUM (time_t), INTMAX_MAX)
+#else
+# define WAIT_READING_MAX INTMAX_MAX
+#endif
+#ifdef HAVE_TIMERFD
+extern void add_timer_wait_descriptor (int);
+#endif
+extern void add_keyboard_wait_descriptor (int);
+extern void delete_keyboard_wait_descriptor (int);
+#ifdef HAVE_GPM
+extern void add_gpm_wait_descriptor (int);
+extern void delete_gpm_wait_descriptor (int);
+#endif
+extern void init_process_emacs (void);
+extern void syms_of_process (void);
+extern void setup_process_coding_systems (Lisp_Object);
+
+/* Defined in callproc.c. */
+#ifndef DOS_NT
+ _Noreturn
+#endif
+extern int child_setup (int, int, int, char **, bool, Lisp_Object);
+extern void init_callproc_1 (void);
+extern void init_callproc (void);
+extern void set_initial_environment (void);
+extern void syms_of_callproc (void);
+
+/* Defined in doc.c. */
+extern Lisp_Object read_doc_string (Lisp_Object);
+extern Lisp_Object get_doc_string (Lisp_Object, bool, bool);
+extern void syms_of_doc (void);
+extern int read_bytecode_char (bool);
+
+/* Defined in bytecode.c. */
+extern void syms_of_bytecode (void);
+extern struct byte_stack *byte_stack_list;
+#if BYTE_MARK_STACK
+extern void mark_byte_stack (void);
+#endif
+extern void unmark_byte_stack (void);
+extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, ptrdiff_t, Lisp_Object *);
+
+/* Defined in macros.c. */
+extern void init_macros (void);
+extern void syms_of_macros (void);
+
+/* Defined in undo.c. */
+extern void truncate_undo_list (struct buffer *);
+extern void record_insert (ptrdiff_t, ptrdiff_t);
+extern void record_delete (ptrdiff_t, Lisp_Object, bool);
+extern void record_first_change (void);
+extern void record_change (ptrdiff_t, ptrdiff_t);
+extern void record_property_change (ptrdiff_t, ptrdiff_t,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern void syms_of_undo (void);
+
+/* Defined in textprop.c. */
+extern void report_interval_modification (Lisp_Object, Lisp_Object);
+
+/* Defined in menu.c. */
+extern void syms_of_menu (void);
+
+/* Defined in xmenu.c. */
+extern void syms_of_xmenu (void);
+
+/* Defined in termchar.h. */
+struct tty_display_info;
+
+/* Defined in termhooks.h. */
+struct terminal;
+
+/* Defined in sysdep.c. */
+#ifndef HAVE_GET_CURRENT_DIR_NAME
+extern char *get_current_dir_name (void);
+#endif
+extern void stuff_char (char c);
+extern void init_foreground_group (void);
+extern void sys_subshell (void);
+extern void sys_suspend (void);
+extern void discard_tty_input (void);
+extern void init_sys_modes (struct tty_display_info *);
+extern void reset_sys_modes (struct tty_display_info *);
+extern void init_all_sys_modes (void);
+extern void reset_all_sys_modes (void);
+extern void child_setup_tty (int);
+extern void setup_pty (int);
+extern int set_window_size (int, int, int);
+extern EMACS_INT get_random (void);
+extern void seed_random (void *, ptrdiff_t);
+extern void init_random (void);
+extern void emacs_backtrace (int);
+extern _Noreturn void emacs_abort (void) NO_INLINE;
+extern int emacs_open (const char *, int, int);
+extern int emacs_pipe (int[2]);
+extern int emacs_close (int);
+extern ptrdiff_t emacs_read (int, void *, ptrdiff_t);
+extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t);
+extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t);
+extern void emacs_perror (char const *);
+
+extern void unlock_all_files (void);
+extern void lock_file (Lisp_Object);
+extern void unlock_file (Lisp_Object);
+extern void unlock_buffer (struct buffer *);
+extern void syms_of_filelock (void);
+extern int str_collate (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+
+/* Defined in sound.c. */
+extern void syms_of_sound (void);
+
+/* Defined in category.c. */
+extern void init_category_once (void);
+extern Lisp_Object char_category_set (int);
+extern void syms_of_category (void);
+
+/* Defined in ccl.c. */
+extern void syms_of_ccl (void);
+
+/* Defined in dired.c. */
+extern void syms_of_dired (void);
+extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object,
+ bool, Lisp_Object);
+
+/* Defined in term.c. */
+extern int *char_ins_del_vector;
+extern void syms_of_term (void);
+extern _Noreturn void fatal (const char *msgid, ...)
+ ATTRIBUTE_FORMAT_PRINTF (1, 2);
+
+/* Defined in terminal.c. */
+extern void syms_of_terminal (void);
+
+/* Defined in font.c. */
+extern void syms_of_font (void);
+extern void init_font (void);
+
+#ifdef HAVE_WINDOW_SYSTEM
+/* Defined in fontset.c. */
+extern void syms_of_fontset (void);
+#endif
+
+/* Defined in gfilenotify.c */
+#ifdef HAVE_GFILENOTIFY
+extern void globals_of_gfilenotify (void);
+extern void syms_of_gfilenotify (void);
+#endif
+
+/* Defined in inotify.c */
+#ifdef HAVE_INOTIFY
+extern void syms_of_inotify (void);
+#endif
+
+#ifdef HAVE_W32NOTIFY
+/* Defined on w32notify.c. */
+extern void syms_of_w32notify (void);
+#endif
+
+/* Defined in xfaces.c. */
+extern Lisp_Object Vface_alternative_font_family_alist;
+extern Lisp_Object Vface_alternative_font_registry_alist;
+extern void syms_of_xfaces (void);
+
+#ifdef HAVE_X_WINDOWS
+/* Defined in xfns.c. */
+extern void syms_of_xfns (void);
+
+/* Defined in xsmfns.c. */
+extern void syms_of_xsmfns (void);
+
+/* Defined in xselect.c. */
+extern void syms_of_xselect (void);
+
+/* Defined in xterm.c. */
+extern void init_xterm (void);
+extern void syms_of_xterm (void);
+#endif /* HAVE_X_WINDOWS */
+
+#ifdef HAVE_WINDOW_SYSTEM
+/* Defined in xterm.c, nsterm.m, w32term.c. */
+extern char *x_get_keysym_name (int);
+#endif /* HAVE_WINDOW_SYSTEM */
+
+#ifdef HAVE_LIBXML2
+/* Defined in xml.c. */
+extern void syms_of_xml (void);
+extern void xml_cleanup_parser (void);
+#endif
+
+#ifdef HAVE_ZLIB
+/* Defined in decompress.c. */
+extern void syms_of_decompress (void);
+#endif
+
+#ifdef HAVE_DBUS
+/* Defined in dbusbind.c. */
+void init_dbusbind (void);
+void syms_of_dbusbind (void);
+#endif
+
+
+/* Defined in profiler.c. */
+extern bool profiler_memory_running;
+extern void malloc_probe (size_t);
+extern void syms_of_profiler (void);
+
+
+#ifdef DOS_NT
+/* Defined in msdos.c, w32.c. */
+extern char *emacs_root_dir (void);
+#endif /* DOS_NT */
+
+/* Defined in lastfile.c. */
+extern char my_edata[];
+extern char my_endbss[];
+extern char *my_endbss_static;
+
+/* True means ^G can quit instantly. */
+extern bool immediate_quit;
+
+extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void xfree (void *);
+extern void *xnmalloc (ptrdiff_t, ptrdiff_t) ATTRIBUTE_MALLOC_SIZE ((1,2));
+extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t)
+ ATTRIBUTE_ALLOC_SIZE ((2,3));
+extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
+
+extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
+extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC;
+extern void dupstring (char **, char const *);
+
+/* Make DEST a copy of STRING's data. Return a pointer to DEST's terminating
+ null byte. This is like stpcpy, except the source is a Lisp string. */
+
+INLINE char *
+lispstpcpy (char *dest, Lisp_Object string)
+{
+ ptrdiff_t len = SBYTES (string);
+ memcpy (dest, SDATA (string), len + 1);
+ return dest + len;
+}
+
+extern void xputenv (const char *);
+
+extern char *egetenv_internal (const char *, ptrdiff_t);
+
+INLINE char *
+egetenv (const char *var)
+{
+ /* When VAR is a string literal, strlen can be optimized away. */
+ return egetenv_internal (var, strlen (var));
+}
+
+/* Set up the name of the machine we're running on. */
+extern void init_system_name (void);
+
+/* Return the absolute value of X. X should be a signed integer
+ expression without side effects, and X's absolute value should not
+ exceed the maximum for its promoted type. This is called 'eabs'
+ because 'abs' is reserved by the C standard. */
+#define eabs(x) ((x) < 0 ? -(x) : (x))
+
+/* Return a fixnum or float, depending on whether VAL fits in a Lisp
+ fixnum. */
+
+#define make_fixnum_or_float(val) \
+ (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val))
+
+/* SAFE_ALLOCA normally allocates memory on the stack, but if size is
+ larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */
+
+enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 };
+
+extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
+
+#define USE_SAFE_ALLOCA \
+ ptrdiff_t sa_avail = MAX_ALLOCA; \
+ ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = false
+
+#define AVAIL_ALLOCA(size) (sa_avail -= (size), alloca (size))
+
+/* SAFE_ALLOCA allocates a simple buffer. */
+
+#define SAFE_ALLOCA(size) ((size) <= sa_avail \
+ ? AVAIL_ALLOCA (size) \
+ : (sa_must_free = true, record_xmalloc (size)))
+
+/* SAFE_NALLOCA sets BUF to a newly allocated array of MULTIPLIER *
+ NITEMS items, each of the same type as *BUF. MULTIPLIER must
+ positive. The code is tuned for MULTIPLIER being a constant. */
+
+#define SAFE_NALLOCA(buf, multiplier, nitems) \
+ do { \
+ if ((nitems) <= sa_avail / sizeof *(buf) / (multiplier)) \
+ (buf) = AVAIL_ALLOCA (sizeof *(buf) * (multiplier) * (nitems)); \
+ else \
+ { \
+ (buf) = xnmalloc (nitems, sizeof *(buf) * (multiplier)); \
+ sa_must_free = true; \
+ record_unwind_protect_ptr (xfree, buf); \
+ } \
+ } while (false)
+
+/* SAFE_ALLOCA_STRING allocates a C copy of a Lisp string. */
+
+#define SAFE_ALLOCA_STRING(ptr, string) \
+ do { \
+ (ptr) = SAFE_ALLOCA (SBYTES (string) + 1); \
+ memcpy (ptr, SDATA (string), SBYTES (string) + 1); \
+ } while (false)
+
+/* SAFE_FREE frees xmalloced memory and enables GC as needed. */
+
+#define SAFE_FREE() \
+ do { \
+ if (sa_must_free) { \
+ sa_must_free = false; \
+ unbind_to (sa_count, Qnil); \
+ } \
+ } while (false)
+
+
+/* Return floor (NBYTES / WORD_SIZE). */
+
+INLINE ptrdiff_t
+lisp_word_count (ptrdiff_t nbytes)
+{
+ if (-1 >> 1 == -1)
+ switch (word_size)
+ {
+ case 2: return nbytes >> 1;
+ case 4: return nbytes >> 2;
+ case 8: return nbytes >> 3;
+ case 16: return nbytes >> 4;
+ }
+ return nbytes / word_size - (nbytes % word_size < 0);
+}
+
+/* SAFE_ALLOCA_LISP allocates an array of Lisp_Objects. */
+
+#define SAFE_ALLOCA_LISP(buf, nelt) \
+ do { \
+ if ((nelt) <= lisp_word_count (sa_avail)) \
+ (buf) = AVAIL_ALLOCA ((nelt) * word_size); \
+ else if ((nelt) <= min (PTRDIFF_MAX, SIZE_MAX) / word_size) \
+ { \
+ Lisp_Object arg_; \
+ (buf) = xmalloc ((nelt) * word_size); \
+ arg_ = make_save_memory (buf, nelt); \
+ sa_must_free = true; \
+ record_unwind_protect (free_save_value, arg_); \
+ } \
+ else \
+ memory_full (SIZE_MAX); \
+ } while (false)
+
+
+/* If USE_STACK_LISP_OBJECTS, define macros that and functions that allocate
+ block-scoped conses and strings. These objects are not
+ managed by the garbage collector, so they are dangerous: passing them
+ out of their scope (e.g., to user code) results in undefined behavior.
+ Conversely, they have better performance because GC is not involved.
+
+ This feature is experimental and requires careful debugging.
+ Build with CPPFLAGS='-DUSE_STACK_LISP_OBJECTS=0' to disable it. */
+
+#ifndef USE_STACK_LISP_OBJECTS
+# define USE_STACK_LISP_OBJECTS true
+#endif
+
+/* USE_STACK_LISP_OBJECTS requires GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. */
+
+#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS
+# undef USE_STACK_LISP_OBJECTS
+# define USE_STACK_LISP_OBJECTS false
+#endif
+
+#ifdef GC_CHECK_STRING_BYTES
+enum { defined_GC_CHECK_STRING_BYTES = true };
+#else
+enum { defined_GC_CHECK_STRING_BYTES = false };
+#endif
+
+/* Struct inside unions that are typically no larger and aligned enough. */
+
+union Aligned_Cons
+{
+ struct Lisp_Cons s;
+ double d; intmax_t i; void *p;
+};
+
+union Aligned_String
+{
+ struct Lisp_String s;
+ double d; intmax_t i; void *p;
+};
+
+/* True for stack-based cons and string implementations, respectively.
+ Use stack-based strings only if stack-based cons also works.
+ Otherwise, STACK_CONS would create heap-based cons cells that
+ could point to stack-based strings, which is a no-no. */
+
+enum
+ {
+ USE_STACK_CONS = (USE_STACK_LISP_OBJECTS
+ && alignof (union Aligned_Cons) % GCALIGNMENT == 0),
+ USE_STACK_STRING = (USE_STACK_CONS
+ && !defined_GC_CHECK_STRING_BYTES
+ && alignof (union Aligned_String) % GCALIGNMENT == 0)
+ };
+
+/* Auxiliary macros used for auto allocation of Lisp objects. Please
+ use these only in macros like AUTO_CONS that declare a local
+ variable whose lifetime will be clear to the programmer. */
+#define STACK_CONS(a, b) \
+ make_lisp_ptr (&(union Aligned_Cons) { { a, { b } } }.s, Lisp_Cons)
+#define AUTO_CONS_EXPR(a, b) \
+ (USE_STACK_CONS ? STACK_CONS (a, b) : Fcons (a, b))
+
+/* Declare NAME as an auto Lisp cons or short list if possible, a
+ GC-based one otherwise. This is in the sense of the C keyword
+ 'auto'; i.e., the object has the lifetime of the containing block.
+ The resulting object should not be made visible to user Lisp code. */
+
+#define AUTO_CONS(name, a, b) Lisp_Object name = AUTO_CONS_EXPR (a, b)
+#define AUTO_LIST1(name, a) \
+ Lisp_Object name = (USE_STACK_CONS ? STACK_CONS (a, Qnil) : list1 (a))
+#define AUTO_LIST2(name, a, b) \
+ Lisp_Object name = (USE_STACK_CONS \
+ ? STACK_CONS (a, STACK_CONS (b, Qnil)) \
+ : list2 (a, b))
+#define AUTO_LIST3(name, a, b, c) \
+ Lisp_Object name = (USE_STACK_CONS \
+ ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, Qnil))) \
+ : list3 (a, b, c))
+#define AUTO_LIST4(name, a, b, c, d) \
+ Lisp_Object name \
+ = (USE_STACK_CONS \
+ ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, \
+ STACK_CONS (d, Qnil)))) \
+ : list4 (a, b, c, d))
+
+/* Check whether stack-allocated strings are ASCII-only. */
+
+#if defined (ENABLE_CHECKING) && USE_STACK_LISP_OBJECTS
+extern const char *verify_ascii (const char *);
+#else
+# define verify_ascii(str) (str)
+#endif
+
+/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
+ Take its value from STR. STR is not necessarily copied and should
+ contain only ASCII characters. The resulting Lisp string should
+ not be modified or made visible to user code. */
+
+#define AUTO_STRING(name, str) \
+ Lisp_Object name = \
+ (USE_STACK_STRING \
+ ? (make_lisp_ptr \
+ ((&(union Aligned_String) \
+ {{strlen (str), -1, 0, (unsigned char *) verify_ascii (str)}}.s), \
+ Lisp_String)) \
+ : build_string (verify_ascii (str)))
+
+/* Loop over all tails of a list, checking for cycles.
+ FIXME: Make tortoise and n internal declarations.
+ FIXME: Unroll the loop body so we don't need `n'. */
+#define FOR_EACH_TAIL(hare, list, tortoise, n) \
+ for ((tortoise) = (hare) = (list), (n) = true; \
+ CONSP (hare); \
+ (hare = XCDR (hare), (n) = !(n), \
+ ((n) \
+ ? (EQ (hare, tortoise) \
+ ? xsignal1 (Qcircular_list, list) \
+ : (void) 0) \
+ /* Move tortoise before the next iteration, in case */ \
+ /* the next iteration does an Fsetcdr. */ \
+ : (void) ((tortoise) = XCDR (tortoise)))))
+
+/* Do a `for' loop over alist values. */
+
+#define FOR_EACH_ALIST_VALUE(head_var, list_var, value_var) \
+ for ((list_var) = (head_var); \
+ (CONSP (list_var) && ((value_var) = XCDR (XCAR (list_var)), true)); \
+ (list_var) = XCDR (list_var))
+
+/* Check whether it's time for GC, and run it if so. */
+
+INLINE void
+maybe_gc (void)
+{
+ if ((consing_since_gc > gc_cons_threshold
+ && consing_since_gc > gc_relative_threshold)
+ || (!NILP (Vmemory_full)
+ && consing_since_gc > memory_full_cons_threshold))
+ Fgarbage_collect ();
+}
+
+INLINE bool
+functionp (Lisp_Object object)
+{
+ if (SYMBOLP (object) && !NILP (Ffboundp (object)))
+ {
+ object = Findirect_function (object, Qt);
+
+ if (CONSP (object) && EQ (XCAR (object), Qautoload))
+ {
+ /* Autoloaded symbols are functions, except if they load
+ macros or keymaps. */
+ int i;
+ for (i = 0; i < 4 && CONSP (object); i++)
+ object = XCDR (object);
+
+ return ! (CONSP (object) && !NILP (XCAR (object)));
+ }
+ }
+
+ if (SUBRP (object))
+ return XSUBR (object)->max_args != UNEVALLED;
+ else if (COMPILEDP (object))
+ return true;
+ else if (CONSP (object))
+ {
+ Lisp_Object car = XCAR (object);
+ return EQ (car, Qlambda) || EQ (car, Qclosure);
+ }
+ else
+ return false;
+}
+
+INLINE_HEADER_END
+
+#endif /* EMACS_LISP_H */
--- /dev/null
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+/* Tags file maker to go with GNU Emacs -*- coding: utf-8 -*-
+
+Copyright (C) 1984 The Regents of the University of California
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+3. Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2016 Free Software
+Foundation, Inc.
+
+This file is not considered part of GNU Emacs.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
- functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.\n\
- (Use --help --lang=c --lang=objc --lang=java for full help.)";
++the Free Software Foundation, either version 3 of the License, or (at
++your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+/* NB To comply with the above BSD license, copyright information is
+reproduced in etc/ETAGS.README. That file should be updated when the
+above notices are.
+
+To the best of our knowledge, this code was originally based on the
+ctags.c distributed with BSD4.2, which was copyrighted by the
+University of California, as described above. */
+
+
+/*
+ * Authors:
+ * 1983 Ctags originally by Ken Arnold.
+ * 1984 Fortran added by Jim Kleckner.
+ * 1984 Ed Pelegri-Llopart added C typedefs.
+ * 1985 Emacs TAGS format by Richard Stallman.
+ * 1989 Sam Kendall added C++.
+ * 1992 Joseph B. Wells improved C and C++ parsing.
+ * 1993 Francesco Potortì reorganized C and C++.
+ * 1994 Line-by-line regexp tags by Tom Tromey.
+ * 2001 Nested classes by Francesco Potortì (concept by Mykola Dzyuba).
+ * 2002 #line directives by Francesco Potortì.
+ *
+ * Francesco Potortì <pot@gnu.org> has maintained and improved it since 1993.
+ */
+
+/*
+ * If you want to add support for a new language, start by looking at the LUA
+ * language, which is the simplest. Alternatively, consider distributing etags
+ * together with a configuration file containing regexp definitions for etags.
+ */
+
+char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
+
+#ifdef DEBUG
+# undef DEBUG
+# define DEBUG true
+#else
+# define DEBUG false
+# define NDEBUG /* disable assert */
+#endif
+
+#include <config.h>
+
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1 /* enables some compiler checks on GNU */
+#endif
+
+/* WIN32_NATIVE is for XEmacs.
+ MSDOS, WINDOWSNT, DOS_NT are for Emacs. */
+#ifdef WIN32_NATIVE
+# undef MSDOS
+# undef WINDOWSNT
+# define WINDOWSNT
+#endif /* WIN32_NATIVE */
+
+#ifdef MSDOS
+# undef MSDOS
+# define MSDOS true
+# include <sys/param.h>
+#else
+# define MSDOS false
+#endif /* MSDOS */
+
+#ifdef WINDOWSNT
+# include <direct.h>
+# define MAXPATHLEN _MAX_PATH
+# undef HAVE_NTGUI
+# undef DOS_NT
+# define DOS_NT
+#endif /* WINDOWSNT */
+
+#include <unistd.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysstdio.h>
+#include <ctype.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <binary-io.h>
+#include <c-strcase.h>
+
+#include <assert.h>
+#ifdef NDEBUG
+# undef assert /* some systems have a buggy assert.h */
+# define assert(x) ((void) 0)
+#endif
+
+#include <getopt.h>
+#include <regex.h>
+
+/* Define CTAGS to make the program "ctags" compatible with the usual one.
+ Leave it undefined to make the program "etags", which makes emacs-style
+ tag tables and tags typedefs, #defines and struct/union/enum by default. */
+#ifdef CTAGS
+# undef CTAGS
+# define CTAGS true
+#else
+# define CTAGS false
+#endif
+
+#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL), !strcmp (s, t))
+#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=NULL), !c_strcasecmp (s, t))
+#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=NULL), !strncmp (s, t, n))
+#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t)!=NULL), !c_strncasecmp (s, t, n))
+
+#define CHARS 256 /* 2^sizeof(char) */
+#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))
+#define iswhite(c) (_wht[CHAR (c)]) /* c is white (see white) */
+#define notinname(c) (_nin[CHAR (c)]) /* c is not in a name (see nonam) */
+#define begtoken(c) (_btk[CHAR (c)]) /* c can start token (see begtk) */
+#define intoken(c) (_itk[CHAR (c)]) /* c can be in token (see midtk) */
+#define endtoken(c) (_etk[CHAR (c)]) /* c ends tokens (see endtk) */
+
+#define ISALNUM(c) isalnum (CHAR (c))
+#define ISALPHA(c) isalpha (CHAR (c))
+#define ISDIGIT(c) isdigit (CHAR (c))
+#define ISLOWER(c) islower (CHAR (c))
+
+#define lowcase(c) tolower (CHAR (c))
+
+
+/*
+ * xnew, xrnew -- allocate, reallocate storage
+ *
+ * SYNOPSIS: Type *xnew (int n, Type);
+ * void xrnew (OldPointer, int n, Type);
+ */
+#define xnew(n, Type) ((Type *) xmalloc ((n) * sizeof (Type)))
+#define xrnew(op, n, Type) ((op) = (Type *) xrealloc (op, (n) * sizeof (Type)))
+
+typedef void Lang_function (FILE *);
+
+typedef struct
+{
+ const char *suffix; /* file name suffix for this compressor */
+ const char *command; /* takes one arg and decompresses to stdout */
+} compressor;
+
+typedef struct
+{
+ const char *name; /* language name */
+ const char *help; /* detailed help for the language */
+ Lang_function *function; /* parse function */
+ const char **suffixes; /* name suffixes of this language's files */
+ const char **filenames; /* names of this language's files */
+ const char **interpreters; /* interpreters for this language */
+ bool metasource; /* source used to generate other sources */
+} language;
+
+typedef struct fdesc
+{
+ struct fdesc *next; /* for the linked list */
+ char *infname; /* uncompressed input file name */
+ char *infabsname; /* absolute uncompressed input file name */
+ char *infabsdir; /* absolute dir of input file */
+ char *taggedfname; /* file name to write in tagfile */
+ language *lang; /* language of file */
+ char *prop; /* file properties to write in tagfile */
+ bool usecharno; /* etags tags shall contain char number */
+ bool written; /* entry written in the tags file */
+} fdesc;
+
+typedef struct node_st
+{ /* sorting structure */
+ struct node_st *left, *right; /* left and right sons */
+ fdesc *fdp; /* description of file to whom tag belongs */
+ char *name; /* tag name */
+ char *regex; /* search regexp */
+ bool valid; /* write this tag on the tag file */
+ bool is_func; /* function tag: use regexp in CTAGS mode */
+ bool been_warned; /* warning already given for duplicated tag */
+ int lno; /* line number tag is on */
+ long cno; /* character number line starts on */
+} node;
+
+/*
+ * A `linebuffer' is a structure which holds a line of text.
+ * `readline_internal' reads a line from a stream into a linebuffer
+ * and works regardless of the length of the line.
+ * SIZE is the size of BUFFER, LEN is the length of the string in
+ * BUFFER after readline reads it.
+ */
+typedef struct
+{
+ long size;
+ int len;
+ char *buffer;
+} linebuffer;
+
+/* Used to support mixing of --lang and file names. */
+typedef struct
+{
+ enum {
+ at_language, /* a language specification */
+ at_regexp, /* a regular expression */
+ at_filename, /* a file name */
+ at_stdin, /* read from stdin here */
+ at_end /* stop parsing the list */
+ } arg_type; /* argument type */
+ language *lang; /* language associated with the argument */
+ char *what; /* the argument itself */
+} argument;
+
+/* Structure defining a regular expression. */
+typedef struct regexp
+{
+ struct regexp *p_next; /* pointer to next in list */
+ language *lang; /* if set, use only for this language */
+ char *pattern; /* the regexp pattern */
+ char *name; /* tag name */
+ struct re_pattern_buffer *pat; /* the compiled pattern */
+ struct re_registers regs; /* re registers */
+ bool error_signaled; /* already signaled for this regexp */
+ bool force_explicit_name; /* do not allow implicit tag name */
+ bool ignore_case; /* ignore case when matching */
+ bool multi_line; /* do a multi-line match on the whole file */
+} regexp;
+
+
+/* Many compilers barf on this:
+ Lang_function Ada_funcs;
+ so let's write it this way */
+static void Ada_funcs (FILE *);
+static void Asm_labels (FILE *);
+static void C_entries (int c_ext, FILE *);
+static void default_C_entries (FILE *);
+static void plain_C_entries (FILE *);
+static void Cjava_entries (FILE *);
+static void Cobol_paragraphs (FILE *);
+static void Cplusplus_entries (FILE *);
+static void Cstar_entries (FILE *);
+static void Erlang_functions (FILE *);
+static void Forth_words (FILE *);
+static void Fortran_functions (FILE *);
+static void HTML_labels (FILE *);
+static void Lisp_functions (FILE *);
+static void Lua_functions (FILE *);
+static void Makefile_targets (FILE *);
+static void Pascal_functions (FILE *);
+static void Perl_functions (FILE *);
+static void PHP_functions (FILE *);
+static void PS_functions (FILE *);
+static void Prolog_functions (FILE *);
+static void Python_functions (FILE *);
+static void Scheme_functions (FILE *);
+static void TeX_commands (FILE *);
+static void Texinfo_nodes (FILE *);
+static void Yacc_entries (FILE *);
+static void just_read_file (FILE *);
+
+static language *get_language_from_langname (const char *);
+static void readline (linebuffer *, FILE *);
+static long readline_internal (linebuffer *, FILE *);
+static bool nocase_tail (const char *);
+static void get_tag (char *, char **);
+
+static void analyze_regex (char *);
+static void free_regexps (void);
+static void regex_tag_multiline (void);
+static void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+static _Noreturn void suggest_asking_for_help (void);
+_Noreturn void fatal (const char *, const char *);
+static _Noreturn void pfatal (const char *);
+static void add_node (node *, node **);
+
+static void init (void);
+static void process_file_name (char *, language *);
+static void process_file (FILE *, char *, language *);
+static void find_entries (FILE *);
+static void free_tree (node *);
+static void free_fdesc (fdesc *);
+static void pfnote (char *, bool, char *, int, int, long);
+static void invalidate_nodes (fdesc *, node **);
+static void put_entries (node *);
+
+static char *concat (const char *, const char *, const char *);
+static char *skip_spaces (char *);
+static char *skip_non_spaces (char *);
+static char *skip_name (char *);
+static char *savenstr (const char *, int);
+static char *savestr (const char *);
+static char *etags_getcwd (void);
+static char *relative_filename (char *, char *);
+static char *absolute_filename (char *, char *);
+static char *absolute_dirname (char *, char *);
+static bool filename_is_absolute (char *f);
+static void canonicalize_filename (char *);
+static void linebuffer_init (linebuffer *);
+static void linebuffer_setlen (linebuffer *, int);
+static void *xmalloc (size_t);
+static void *xrealloc (void *, size_t);
+
+\f
+static char searchar = '/'; /* use /.../ searches */
+
+static char *tagfile; /* output file */
+static char *progname; /* name this program was invoked with */
+static char *cwd; /* current working directory */
+static char *tagfiledir; /* directory of tagfile */
+static FILE *tagf; /* ioptr for tags file */
+static ptrdiff_t whatlen_max; /* maximum length of any 'what' member */
+
+static fdesc *fdhead; /* head of file description list */
+static fdesc *curfdp; /* current file description */
+static int lineno; /* line number of current line */
+static long charno; /* current character number */
+static long linecharno; /* charno of start of current line */
+static char *dbp; /* pointer to start of current tag */
+
+static const int invalidcharno = -1;
+
+static node *nodehead; /* the head of the binary tree of tags */
+static node *last_node; /* the last node created */
+
+static linebuffer lb; /* the current line */
+static linebuffer filebuf; /* a buffer containing the whole file */
+static linebuffer token_name; /* a buffer containing a tag name */
+
+/* boolean "functions" (see init) */
+static bool _wht[CHARS], _nin[CHARS], _itk[CHARS], _btk[CHARS], _etk[CHARS];
+static const char
+ /* white chars */
+ *white = " \f\t\n\r\v",
+ /* not in a name */
+ *nonam = " \f\t\n\r()=,;", /* look at make_tag before modifying! */
+ /* token ending chars */
+ *endtk = " \t\n\r\"'#()[]{}=-+%*/&|^~!<>;,.:?",
+ /* token starting chars */
+ *begtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$~@",
+ /* valid in-token chars */
+ *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789";
+
+static bool append_to_tagfile; /* -a: append to tags */
+/* The next five default to true in C and derived languages. */
+static bool typedefs; /* -t: create tags for C and Ada typedefs */
+static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */
+ /* 0 struct/enum/union decls, and C++ */
+ /* member functions. */
+static bool constantypedefs; /* -d: create tags for C #define, enum */
+ /* constants and variables. */
+ /* -D: opposite of -d. Default under ctags. */
+static int globals; /* create tags for global variables */
+static int members; /* create tags for C member variables */
+static int declarations; /* --declarations: tag them and extern in C&Co*/
+static int no_line_directive; /* ignore #line directives (undocumented) */
+static int no_duplicates; /* no duplicate tags for ctags (undocumented) */
+static bool update; /* -u: update tags */
+static bool vgrind_style; /* -v: create vgrind style index output */
+static bool no_warnings; /* -w: suppress warnings (undocumented) */
+static bool cxref_style; /* -x: create cxref style output */
+static bool cplusplus; /* .[hc] means C++, not C (undocumented) */
+static bool ignoreindent; /* -I: ignore indentation in C */
+static int packages_only; /* --packages-only: in Ada, only tag packages*/
+
+/* STDIN is defined in LynxOS system headers */
+#ifdef STDIN
+# undef STDIN
+#endif
+
+#define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
+static bool parsing_stdin; /* --parse-stdin used */
+
+static regexp *p_head; /* list of all regexps */
+static bool need_filebuf; /* some regexes are multi-line */
+
+static struct option longopts[] =
+{
+ { "append", no_argument, NULL, 'a' },
+ { "packages-only", no_argument, &packages_only, 1 },
+ { "c++", no_argument, NULL, 'C' },
+ { "declarations", no_argument, &declarations, 1 },
+ { "no-line-directive", no_argument, &no_line_directive, 1 },
+ { "no-duplicates", no_argument, &no_duplicates, 1 },
+ { "help", no_argument, NULL, 'h' },
+ { "help", no_argument, NULL, 'H' },
+ { "ignore-indentation", no_argument, NULL, 'I' },
+ { "language", required_argument, NULL, 'l' },
+ { "members", no_argument, &members, 1 },
+ { "no-members", no_argument, &members, 0 },
+ { "output", required_argument, NULL, 'o' },
+ { "regex", required_argument, NULL, 'r' },
+ { "no-regex", no_argument, NULL, 'R' },
+ { "ignore-case-regex", required_argument, NULL, 'c' },
+ { "parse-stdin", required_argument, NULL, STDIN },
+ { "version", no_argument, NULL, 'V' },
+
+#if CTAGS /* Ctags options */
+ { "backward-search", no_argument, NULL, 'B' },
+ { "cxref", no_argument, NULL, 'x' },
+ { "defines", no_argument, NULL, 'd' },
+ { "globals", no_argument, &globals, 1 },
+ { "typedefs", no_argument, NULL, 't' },
+ { "typedefs-and-c++", no_argument, NULL, 'T' },
+ { "update", no_argument, NULL, 'u' },
+ { "vgrind", no_argument, NULL, 'v' },
+ { "no-warn", no_argument, NULL, 'w' },
+
+#else /* Etags options */
+ { "no-defines", no_argument, NULL, 'D' },
+ { "no-globals", no_argument, &globals, 0 },
+ { "include", required_argument, NULL, 'i' },
+#endif
+ { NULL }
+};
+
+static compressor compressors[] =
+{
+ { "z", "gzip -d -c"},
+ { "Z", "gzip -d -c"},
+ { "gz", "gzip -d -c"},
+ { "GZ", "gzip -d -c"},
+ { "bz2", "bzip2 -d -c" },
+ { "xz", "xz -d -c" },
+ { NULL }
+};
+
+/*
+ * Language stuff.
+ */
+
+/* Ada code */
+static const char *Ada_suffixes [] =
+ { "ads", "adb", "ada", NULL };
+static const char Ada_help [] =
+"In Ada code, functions, procedures, packages, tasks and types are\n\
+tags. Use the `--packages-only' option to create tags for\n\
+packages only.\n\
+Ada tag names have suffixes indicating the type of entity:\n\
+ Entity type: Qualifier:\n\
+ ------------ ----------\n\
+ function /f\n\
+ procedure /p\n\
+ package spec /s\n\
+ package body /b\n\
+ type /t\n\
+ task /k\n\
+Thus, `M-x find-tag <RET> bidule/b <RET>' will go directly to the\n\
+body of the package `bidule', while `M-x find-tag <RET> bidule <RET>'\n\
+will just search for any tag `bidule'.";
+
+/* Assembly code */
+static const char *Asm_suffixes [] =
+ { "a", /* Unix assembler */
+ "asm", /* Microcontroller assembly */
+ "def", /* BSO/Tasking definition includes */
+ "inc", /* Microcontroller include files */
+ "ins", /* Microcontroller include files */
+ "s", "sa", /* Unix assembler */
+ "S", /* cpp-processed Unix assembler */
+ "src", /* BSO/Tasking C compiler output */
+ NULL
+ };
+static const char Asm_help [] =
+"In assembler code, labels appearing at the beginning of a line,\n\
+followed by a colon, are tags.";
+
+
+/* Note that .c and .h can be considered C++, if the --c++ flag was
+ given, or if the `class' or `template' keywords are met inside the file.
+ That is why default_C_entries is called for these. */
+static const char *default_C_suffixes [] =
+ { "c", "h", NULL };
+#if CTAGS /* C help for Ctags */
+static const char default_C_help [] =
+"In C code, any C function is a tag. Use -t to tag typedefs.\n\
+Use -T to tag definitions of `struct', `union' and `enum'.\n\
+Use -d to tag `#define' macro definitions and `enum' constants.\n\
+Use --globals to tag global variables.\n\
+You can tag function declarations and external variables by\n\
+using `--declarations', and struct members by using `--members'.";
+#else /* C help for Etags */
+static const char default_C_help [] =
+"In C code, any C function or typedef is a tag, and so are\n\
+definitions of `struct', `union' and `enum'. `#define' macro\n\
+definitions and `enum' constants are tags unless you specify\n\
+`--no-defines'. Global variables are tags unless you specify\n\
+`--no-globals' and so are struct members unless you specify\n\
+`--no-members'. Use of `--no-globals', `--no-defines' and\n\
+`--no-members' can make the tags table file much smaller.\n\
+You can tag function declarations and external variables by\n\
+using `--declarations'.";
+#endif /* C help for Ctags and Etags */
+
+static const char *Cplusplus_suffixes [] =
+ { "C", "c++", "cc", "cpp", "cxx", "H", "h++", "hh", "hpp", "hxx",
+ "M", /* Objective C++ */
+ "pdb", /* PostScript with C syntax */
+ NULL };
+static const char Cplusplus_help [] =
+"In C++ code, all the tag constructs of C code are tagged. (Use\n\
+--help --lang=c --lang=c++ for full help.)\n\
+In addition to C tags, member functions are also recognized. Member\n\
+variables are recognized unless you use the `--no-members' option.\n\
+Tags for variables and functions in classes are named `CLASS::VARIABLE'\n\
+and `CLASS::FUNCTION'. `operator' definitions have tag names like\n\
+`operator+'.";
+
+static const char *Cjava_suffixes [] =
+ { "java", NULL };
+static char Cjava_help [] =
+"In Java code, all the tags constructs of C and C++ code are\n\
+tagged. (Use --help --lang=c --lang=c++ --lang=java for full help.)";
+
+
+static const char *Cobol_suffixes [] =
+ { "COB", "cob", NULL };
+static char Cobol_help [] =
+"In Cobol code, tags are paragraph names; that is, any word\n\
+starting in column 8 and followed by a period.";
+
+static const char *Cstar_suffixes [] =
+ { "cs", "hs", NULL };
+
+static const char *Erlang_suffixes [] =
+ { "erl", "hrl", NULL };
+static const char Erlang_help [] =
+"In Erlang code, the tags are the functions, records and macros\n\
+defined in the file.";
+
+const char *Forth_suffixes [] =
+ { "fth", "tok", NULL };
+static const char Forth_help [] =
+"In Forth code, tags are words defined by `:',\n\
+constant, code, create, defer, value, variable, buffer:, field.";
+
+static const char *Fortran_suffixes [] =
+ { "F", "f", "f90", "for", NULL };
+static const char Fortran_help [] =
+"In Fortran code, functions, subroutines and block data are tags.";
+
+static const char *HTML_suffixes [] =
+ { "htm", "html", "shtml", NULL };
+static const char HTML_help [] =
+"In HTML input files, the tags are the `title' and the `h1', `h2',\n\
+`h3' headers. Also, tags are `name=' in anchors and all\n\
+occurrences of `id='.";
+
+static const char *Lisp_suffixes [] =
+ { "cl", "clisp", "el", "l", "lisp", "LSP", "lsp", "ml", NULL };
+static const char Lisp_help [] =
+"In Lisp code, any function defined with `defun', any variable\n\
+defined with `defvar' or `defconst', and in general the first\n\
+argument of any expression that starts with `(def' in column zero\n\
+is a tag.\n\
+The `--declarations' option tags \"(defvar foo)\" constructs too.";
+
+static const char *Lua_suffixes [] =
+ { "lua", "LUA", NULL };
+static const char Lua_help [] =
+"In Lua scripts, all functions are tags.";
+
+static const char *Makefile_filenames [] =
+ { "Makefile", "makefile", "GNUMakefile", "Makefile.in", "Makefile.am", NULL};
+static const char Makefile_help [] =
+"In makefiles, targets are tags; additionally, variables are tags\n\
+unless you specify `--no-globals'.";
+
+static const char *Objc_suffixes [] =
+ { "lm", /* Objective lex file */
+ "m", /* Objective C file */
+ NULL };
+static const char Objc_help [] =
+"In Objective C code, tags include Objective C definitions for classes,\n\
+class categories, methods and protocols. Tags for variables and\n\
++functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.\
++\n(Use --help --lang=c --lang=objc --lang=java for full help.)";
+
+static const char *Pascal_suffixes [] =
+ { "p", "pas", NULL };
+static const char Pascal_help [] =
+"In Pascal code, the tags are the functions and procedures defined\n\
+in the file.";
+/* " // this is for working around an Emacs highlighting bug... */
+
+static const char *Perl_suffixes [] =
+ { "pl", "pm", NULL };
+static const char *Perl_interpreters [] =
+ { "perl", "@PERL@", NULL };
+static const char Perl_help [] =
+"In Perl code, the tags are the packages, subroutines and variables\n\
+defined by the `package', `sub', `my' and `local' keywords. Use\n\
+`--globals' if you want to tag global variables. Tags for\n\
+subroutines are named `PACKAGE::SUB'. The name for subroutines\n\
+defined in the default package is `main::SUB'.";
+
+static const char *PHP_suffixes [] =
+ { "php", "php3", "php4", NULL };
+static const char PHP_help [] =
+"In PHP code, tags are functions, classes and defines. Unless you use\n\
+the `--no-members' option, vars are tags too.";
+
+static const char *plain_C_suffixes [] =
+ { "pc", /* Pro*C file */
+ NULL };
+
+static const char *PS_suffixes [] =
+ { "ps", "psw", NULL }; /* .psw is for PSWrap */
+static const char PS_help [] =
+"In PostScript code, the tags are the functions.";
+
+static const char *Prolog_suffixes [] =
+ { "prolog", NULL };
+static const char Prolog_help [] =
+"In Prolog code, tags are predicates and rules at the beginning of\n\
+line.";
+
+static const char *Python_suffixes [] =
+ { "py", NULL };
+static const char Python_help [] =
+"In Python code, `def' or `class' at the beginning of a line\n\
+generate a tag.";
+
+/* Can't do the `SCM' or `scm' prefix with a version number. */
+static const char *Scheme_suffixes [] =
+ { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
+static const char Scheme_help [] =
+"In Scheme code, tags include anything defined with `def' or with a\n\
+construct whose name starts with `def'. They also include\n\
+variables set with `set!' at top level in the file.";
+
+static const char *TeX_suffixes [] =
+ { "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
+static const char TeX_help [] =
+"In LaTeX text, the argument of any of the commands `\\chapter',\n\
+`\\section', `\\subsection', `\\subsubsection', `\\eqno', `\\label',\n\
+`\\ref', `\\cite', `\\bibitem', `\\part', `\\appendix', `\\entry',\n\
+`\\index', `\\def', `\\newcommand', `\\renewcommand',\n\
+`\\newenvironment' or `\\renewenvironment' is a tag.\n\
+\n\
+Other commands can be specified by setting the environment variable\n\
+`TEXTAGS' to a colon-separated list like, for example,\n\
+ TEXTAGS=\"mycommand:myothercommand\".";
+
+
+static const char *Texinfo_suffixes [] =
+ { "texi", "texinfo", "txi", NULL };
+static const char Texinfo_help [] =
+"for texinfo files, lines starting with @node are tagged.";
+
+static const char *Yacc_suffixes [] =
+ { "y", "y++", "ym", "yxx", "yy", NULL }; /* .ym is Objective yacc file */
+static const char Yacc_help [] =
+"In Bison or Yacc input files, each rule defines as a tag the\n\
+nonterminal it constructs. The portions of the file that contain\n\
+C code are parsed as C code (use --help --lang=c --lang=yacc\n\
+for full help).";
+
+static const char auto_help [] =
+"`auto' is not a real language, it indicates to use\n\
+a default language for files base on file name suffix and file contents.";
+
+static const char none_help [] =
+"`none' is not a real language, it indicates to only do\n\
+regexp processing on files.";
+
+static const char no_lang_help [] =
+"No detailed help available for this language.";
+
+
+/*
+ * Table of languages.
+ *
+ * It is ok for a given function to be listed under more than one
+ * name. I just didn't.
+ */
+
+static language lang_names [] =
+{
+ { "ada", Ada_help, Ada_funcs, Ada_suffixes },
+ { "asm", Asm_help, Asm_labels, Asm_suffixes },
+ { "c", default_C_help, default_C_entries, default_C_suffixes },
+ { "c++", Cplusplus_help, Cplusplus_entries, Cplusplus_suffixes },
+ { "c*", no_lang_help, Cstar_entries, Cstar_suffixes },
+ { "cobol", Cobol_help, Cobol_paragraphs, Cobol_suffixes },
+ { "erlang", Erlang_help, Erlang_functions, Erlang_suffixes },
+ { "forth", Forth_help, Forth_words, Forth_suffixes },
+ { "fortran", Fortran_help, Fortran_functions, Fortran_suffixes },
+ { "html", HTML_help, HTML_labels, HTML_suffixes },
+ { "java", Cjava_help, Cjava_entries, Cjava_suffixes },
+ { "lisp", Lisp_help, Lisp_functions, Lisp_suffixes },
+ { "lua", Lua_help, Lua_functions, Lua_suffixes },
+ { "makefile", Makefile_help,Makefile_targets,NULL,Makefile_filenames},
+ { "objc", Objc_help, plain_C_entries, Objc_suffixes },
+ { "pascal", Pascal_help, Pascal_functions, Pascal_suffixes },
+ { "perl",Perl_help,Perl_functions,Perl_suffixes,NULL,Perl_interpreters},
+ { "php", PHP_help, PHP_functions, PHP_suffixes },
+ { "postscript",PS_help, PS_functions, PS_suffixes },
+ { "proc", no_lang_help, plain_C_entries, plain_C_suffixes },
+ { "prolog", Prolog_help, Prolog_functions, Prolog_suffixes },
+ { "python", Python_help, Python_functions, Python_suffixes },
+ { "scheme", Scheme_help, Scheme_functions, Scheme_suffixes },
+ { "tex", TeX_help, TeX_commands, TeX_suffixes },
+ { "texinfo", Texinfo_help, Texinfo_nodes, Texinfo_suffixes },
+ { "yacc", Yacc_help,Yacc_entries,Yacc_suffixes,NULL,NULL,true},
+ { "auto", auto_help }, /* default guessing scheme */
+ { "none", none_help, just_read_file }, /* regexp matching only */
+ { NULL } /* end of list */
+};
+
+\f
+static void
+print_language_names (void)
+{
+ language *lang;
+ const char **name, **ext;
+
+ puts ("\nThese are the currently supported languages, along with the\n\
+default file names and dot suffixes:");
+ for (lang = lang_names; lang->name != NULL; lang++)
+ {
+ printf (" %-*s", 10, lang->name);
+ if (lang->filenames != NULL)
+ for (name = lang->filenames; *name != NULL; name++)
+ printf (" %s", *name);
+ if (lang->suffixes != NULL)
+ for (ext = lang->suffixes; *ext != NULL; ext++)
+ printf (" .%s", *ext);
+ puts ("");
+ }
+ puts ("where `auto' means use default language for files based on file\n\
+name suffix, and `none' means only do regexp processing on files.\n\
+If no language is specified and no matching suffix is found,\n\
+the first line of the file is read for a sharp-bang (#!) sequence\n\
+followed by the name of an interpreter. If no such sequence is found,\n\
+Fortran is tried first; if no tags are found, C is tried next.\n\
+When parsing any C file, a \"class\" or \"template\" keyword\n\
+switches to C++.");
+ puts ("Compressed files are supported using gzip, bzip2, and xz.\n\
+\n\
+For detailed help on a given language use, for example,\n\
+etags --help --lang=ada.");
+}
+
+#ifndef EMACS_NAME
+# define EMACS_NAME "standalone"
+#endif
+#ifndef VERSION
+# define VERSION "17.38.1.4"
+#endif
+static _Noreturn void
+print_version (void)
+{
+ char emacs_copyright[] = COPYRIGHT;
+
+ printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
+ puts (emacs_copyright);
+ puts ("This program is distributed under the terms in ETAGS.README");
+
+ exit (EXIT_SUCCESS);
+}
+
+#ifndef PRINT_UNDOCUMENTED_OPTIONS_HELP
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP false
+#endif
+
+static _Noreturn void
+print_help (argument *argbuffer)
+{
+ bool help_for_lang = false;
+
+ for (; argbuffer->arg_type != at_end; argbuffer++)
+ if (argbuffer->arg_type == at_language)
+ {
+ if (help_for_lang)
+ puts ("");
+ puts (argbuffer->lang->help);
+ help_for_lang = true;
+ }
+
+ if (help_for_lang)
+ exit (EXIT_SUCCESS);
+
+ printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\
+\n\
+These are the options accepted by %s.\n", progname, progname);
+ puts ("You may use unambiguous abbreviations for the long option names.");
+ puts (" A - as file name means read names from stdin (one per line).\n\
+Absolute names are stored in the output file as they are.\n\
+Relative ones are stored relative to the output file's directory.\n");
+
+ puts ("-a, --append\n\
+ Append tag entries to existing tags file.");
+
+ puts ("--packages-only\n\
+ For Ada files, only generate tags for packages.");
+
+ if (CTAGS)
+ puts ("-B, --backward-search\n\
+ Write the search commands for the tag entries using '?', the\n\
+ backward-search command instead of '/', the forward-search command.");
+
+ /* This option is mostly obsolete, because etags can now automatically
+ detect C++. Retained for backward compatibility and for debugging and
+ experimentation. In principle, we could want to tag as C++ even
+ before any "class" or "template" keyword.
+ puts ("-C, --c++\n\
+ Treat files whose name suffix defaults to C language as C++ files.");
+ */
+
+ puts ("--declarations\n\
+ In C and derived languages, create tags for function declarations,");
+ if (CTAGS)
+ puts ("\tand create tags for extern variables if --globals is used.");
+ else
+ puts
+ ("\tand create tags for extern variables unless --no-globals is used.");
+
+ if (CTAGS)
+ puts ("-d, --defines\n\
+ Create tag entries for C #define constants and enum constants, too.");
+ else
+ puts ("-D, --no-defines\n\
+ Don't create tag entries for C #define constants and enum constants.\n\
+ This makes the tags file smaller.");
+
+ if (!CTAGS)
+ puts ("-i FILE, --include=FILE\n\
+ Include a note in tag file indicating that, when searching for\n\
+ a tag, one should also consult the tags file FILE after\n\
+ checking the current file.");
+
+ puts ("-l LANG, --language=LANG\n\
+ Force the following files to be considered as written in the\n\
+ named language up to the next --language=LANG option.");
+
+ if (CTAGS)
+ puts ("--globals\n\
+ Create tag entries for global variables in some languages.");
+ else
+ puts ("--no-globals\n\
+ Do not create tag entries for global variables in some\n\
+ languages. This makes the tags file smaller.");
+
+ if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+ puts ("--no-line-directive\n\
+ Ignore #line preprocessor directives in C and derived languages.");
+
+ if (CTAGS)
+ puts ("--members\n\
+ Create tag entries for members of structures in some languages.");
+ else
+ puts ("--no-members\n\
+ Do not create tag entries for members of structures\n\
+ in some languages.");
+
+ puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\
+ Make a tag for each line matching a regular expression pattern\n\
+ in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE\n\
+ files only. REGEXFILE is a file containing one REGEXP per line.\n\
+ REGEXP takes the form /TAGREGEXP/TAGNAME/MODS, where TAGNAME/ is\n\
+ optional. The TAGREGEXP pattern is anchored (as if preceded by ^).");
+ puts (" If TAGNAME/ is present, the tags created are named.\n\
+ For example Tcl named tags can be created with:\n\
+ --regex=\"/proc[ \\t]+\\([^ \\t]+\\)/\\1/.\".\n\
+ MODS are optional one-letter modifiers: `i' means to ignore case,\n\
+ `m' means to allow multi-line matches, `s' implies `m' and\n\
+ causes dot to match any character, including newline.");
+
+ puts ("-R, --no-regex\n\
+ Don't create tags from regexps for the following files.");
+
+ puts ("-I, --ignore-indentation\n\
+ In C and C++ do not assume that a closing brace in the first\n\
+ column is the final brace of a function or structure definition.");
+
+ puts ("-o FILE, --output=FILE\n\
+ Write the tags to FILE.");
+
+ puts ("--parse-stdin=NAME\n\
+ Read from standard input and record tags as belonging to file NAME.");
+
+ if (CTAGS)
+ {
+ puts ("-t, --typedefs\n\
+ Generate tag entries for C and Ada typedefs.");
+ puts ("-T, --typedefs-and-c++\n\
+ Generate tag entries for C typedefs, C struct/enum/union tags,\n\
+ and C++ member functions.");
+ }
+
+ if (CTAGS)
+ puts ("-u, --update\n\
+ Update the tag entries for the given files, leaving tag\n\
+ entries for other files in place. Currently, this is\n\
+ implemented by deleting the existing entries for the given\n\
+ files and then rewriting the new entries at the end of the\n\
+ tags file. It is often faster to simply rebuild the entire\n\
+ tag file than to use this.");
+
+ if (CTAGS)
+ {
+ puts ("-v, --vgrind\n\
+ Print on the standard output an index of items intended for\n\
+ human consumption, similar to the output of vgrind. The index\n\
+ is sorted, and gives the page number of each item.");
+
+ if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+ puts ("-w, --no-duplicates\n\
+ Do not create duplicate tag entries, for compatibility with\n\
+ traditional ctags.");
+
+ if (PRINT_UNDOCUMENTED_OPTIONS_HELP)
+ puts ("-w, --no-warn\n\
+ Suppress warning messages about duplicate tag entries.");
+
+ puts ("-x, --cxref\n\
+ Like --vgrind, but in the style of cxref, rather than vgrind.\n\
+ The output uses line numbers instead of page numbers, but\n\
+ beyond that the differences are cosmetic; try both to see\n\
+ which you like.");
+ }
+
+ puts ("-V, --version\n\
+ Print the version of the program.\n\
+-h, --help\n\
+ Print this help message.\n\
+ Followed by one or more `--language' options prints detailed\n\
+ help about tag generation for the specified languages.");
+
+ print_language_names ();
+
+ puts ("");
+ puts ("Report bugs to bug-gnu-emacs@gnu.org");
+
+ exit (EXIT_SUCCESS);
+}
+
+\f
+int
+main (int argc, char **argv)
+{
+ int i;
+ unsigned int nincluded_files;
+ char **included_files;
+ argument *argbuffer;
+ int current_arg, file_count;
+ linebuffer filename_lb;
+ bool help_asked = false;
+ ptrdiff_t len;
+ char *optstring;
+ int opt;
+
+ progname = argv[0];
+ nincluded_files = 0;
+ included_files = xnew (argc, char *);
+ current_arg = 0;
+ file_count = 0;
+
+ /* Allocate enough no matter what happens. Overkill, but each one
+ is small. */
+ argbuffer = xnew (argc, argument);
+
+ /*
+ * Always find typedefs and structure tags.
+ * Also default to find macro constants, enum constants, struct
+ * members and global variables. Do it for both etags and ctags.
+ */
+ typedefs = typedefs_or_cplusplus = constantypedefs = true;
+ globals = members = true;
+
+ /* When the optstring begins with a '-' getopt_long does not rearrange the
+ non-options arguments to be at the end, but leaves them alone. */
+ optstring = concat ("-ac:Cf:Il:o:r:RSVhH",
+ (CTAGS) ? "BxdtTuvw" : "Di:",
+ "");
+
+ while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF)
+ switch (opt)
+ {
+ case 0:
+ /* If getopt returns 0, then it has already processed a
+ long-named option. We should do nothing. */
+ break;
+
+ case 1:
+ /* This means that a file name has been seen. Record it. */
+ argbuffer[current_arg].arg_type = at_filename;
+ argbuffer[current_arg].what = optarg;
+ len = strlen (optarg);
+ if (whatlen_max < len)
+ whatlen_max = len;
+ ++current_arg;
+ ++file_count;
+ break;
+
+ case STDIN:
+ /* Parse standard input. Idea by Vivek <vivek@etla.org>. */
+ argbuffer[current_arg].arg_type = at_stdin;
+ argbuffer[current_arg].what = optarg;
+ len = strlen (optarg);
+ if (whatlen_max < len)
+ whatlen_max = len;
+ ++current_arg;
+ ++file_count;
+ if (parsing_stdin)
+ fatal ("cannot parse standard input more than once", (char *)NULL);
+ parsing_stdin = true;
+ break;
+
+ /* Common options. */
+ case 'a': append_to_tagfile = true; break;
+ case 'C': cplusplus = true; break;
+ case 'f': /* for compatibility with old makefiles */
+ case 'o':
+ if (tagfile)
+ {
+ error ("-o option may only be given once.");
+ suggest_asking_for_help ();
+ /* NOTREACHED */
+ }
+ tagfile = optarg;
+ break;
+ case 'I':
+ case 'S': /* for backward compatibility */
+ ignoreindent = true;
+ break;
+ case 'l':
+ {
+ language *lang = get_language_from_langname (optarg);
+ if (lang != NULL)
+ {
+ argbuffer[current_arg].lang = lang;
+ argbuffer[current_arg].arg_type = at_language;
+ ++current_arg;
+ }
+ }
+ break;
+ case 'c':
+ /* Backward compatibility: support obsolete --ignore-case-regexp. */
+ optarg = concat (optarg, "i", ""); /* memory leak here */
+ /* FALLTHRU */
+ case 'r':
+ argbuffer[current_arg].arg_type = at_regexp;
+ argbuffer[current_arg].what = optarg;
+ len = strlen (optarg);
+ if (whatlen_max < len)
+ whatlen_max = len;
+ ++current_arg;
+ break;
+ case 'R':
+ argbuffer[current_arg].arg_type = at_regexp;
+ argbuffer[current_arg].what = NULL;
+ ++current_arg;
+ break;
+ case 'V':
+ print_version ();
+ break;
+ case 'h':
+ case 'H':
+ help_asked = true;
+ break;
+
+ /* Etags options */
+ case 'D': constantypedefs = false; break;
+ case 'i': included_files[nincluded_files++] = optarg; break;
+
+ /* Ctags options. */
+ case 'B': searchar = '?'; break;
+ case 'd': constantypedefs = true; break;
+ case 't': typedefs = true; break;
+ case 'T': typedefs = typedefs_or_cplusplus = true; break;
+ case 'u': update = true; break;
+ case 'v': vgrind_style = true; /*FALLTHRU*/
+ case 'x': cxref_style = true; break;
+ case 'w': no_warnings = true; break;
+ default:
+ suggest_asking_for_help ();
+ /* NOTREACHED */
+ }
+
+ /* No more options. Store the rest of arguments. */
+ for (; optind < argc; optind++)
+ {
+ argbuffer[current_arg].arg_type = at_filename;
+ argbuffer[current_arg].what = argv[optind];
+ len = strlen (argv[optind]);
+ if (whatlen_max < len)
+ whatlen_max = len;
+ ++current_arg;
+ ++file_count;
+ }
+
+ argbuffer[current_arg].arg_type = at_end;
+
+ if (help_asked)
+ print_help (argbuffer);
+ /* NOTREACHED */
+
+ if (nincluded_files == 0 && file_count == 0)
+ {
+ error ("no input files specified.");
+ suggest_asking_for_help ();
+ /* NOTREACHED */
+ }
+
+ if (tagfile == NULL)
+ tagfile = savestr (CTAGS ? "tags" : "TAGS");
+ cwd = etags_getcwd (); /* the current working directory */
+ if (cwd[strlen (cwd) - 1] != '/')
+ {
+ char *oldcwd = cwd;
+ cwd = concat (oldcwd, "/", "");
+ free (oldcwd);
+ }
+
+ /* Compute base directory for relative file names. */
+ if (streq (tagfile, "-")
+ || strneq (tagfile, "/dev/", 5))
+ tagfiledir = cwd; /* relative file names are relative to cwd */
+ else
+ {
+ canonicalize_filename (tagfile);
+ tagfiledir = absolute_dirname (tagfile, cwd);
+ }
+
+ init (); /* set up boolean "functions" */
+
+ linebuffer_init (&lb);
+ linebuffer_init (&filename_lb);
+ linebuffer_init (&filebuf);
+ linebuffer_init (&token_name);
+
+ if (!CTAGS)
+ {
+ if (streq (tagfile, "-"))
+ {
+ tagf = stdout;
+ SET_BINARY (fileno (stdout));
+ }
+ else
+ tagf = fopen (tagfile, append_to_tagfile ? "ab" : "wb");
+ if (tagf == NULL)
+ pfatal (tagfile);
+ }
+
+ /*
+ * Loop through files finding functions.
+ */
+ for (i = 0; i < current_arg; i++)
+ {
+ static language *lang; /* non-NULL if language is forced */
+ char *this_file;
+
+ switch (argbuffer[i].arg_type)
+ {
+ case at_language:
+ lang = argbuffer[i].lang;
+ break;
+ case at_regexp:
+ analyze_regex (argbuffer[i].what);
+ break;
+ case at_filename:
+ this_file = argbuffer[i].what;
+ /* Input file named "-" means read file names from stdin
+ (one per line) and use them. */
+ if (streq (this_file, "-"))
+ {
+ if (parsing_stdin)
+ fatal ("cannot parse standard input AND read file names from it",
+ (char *)NULL);
+ while (readline_internal (&filename_lb, stdin) > 0)
+ process_file_name (filename_lb.buffer, lang);
+ }
+ else
+ process_file_name (this_file, lang);
+ break;
+ case at_stdin:
+ this_file = argbuffer[i].what;
+ process_file (stdin, this_file, lang);
+ break;
+ }
+ }
+
+ free_regexps ();
+ free (lb.buffer);
+ free (filebuf.buffer);
+ free (token_name.buffer);
+
+ if (!CTAGS || cxref_style)
+ {
+ /* Write the remaining tags to tagf (ETAGS) or stdout (CXREF). */
+ put_entries (nodehead);
+ free_tree (nodehead);
+ nodehead = NULL;
+ if (!CTAGS)
+ {
+ fdesc *fdp;
+
+ /* Output file entries that have no tags. */
+ for (fdp = fdhead; fdp != NULL; fdp = fdp->next)
+ if (!fdp->written)
+ fprintf (tagf, "\f\n%s,0\n", fdp->taggedfname);
+
+ while (nincluded_files-- > 0)
+ fprintf (tagf, "\f\n%s,include\n", *included_files++);
+
+ if (fclose (tagf) == EOF)
+ pfatal (tagfile);
+ }
+
+ exit (EXIT_SUCCESS);
+ }
+
+ /* From here on, we are in (CTAGS && !cxref_style) */
+ if (update)
+ {
+ char *cmd =
+ xmalloc (strlen (tagfile) + whatlen_max +
+ sizeof "mv..OTAGS;fgrep -v '\t\t' OTAGS >;rm OTAGS");
+ for (i = 0; i < current_arg; ++i)
+ {
+ switch (argbuffer[i].arg_type)
+ {
+ case at_filename:
+ case at_stdin:
+ break;
+ default:
+ continue; /* the for loop */
+ }
+ char *z = stpcpy (cmd, "mv ");
+ z = stpcpy (z, tagfile);
+ z = stpcpy (z, " OTAGS;fgrep -v '\t");
+ z = stpcpy (z, argbuffer[i].what);
+ z = stpcpy (z, "\t' OTAGS >");
+ z = stpcpy (z, tagfile);
+ strcpy (z, ";rm OTAGS");
+ if (system (cmd) != EXIT_SUCCESS)
+ fatal ("failed to execute shell command", (char *)NULL);
+ }
+ free (cmd);
+ append_to_tagfile = true;
+ }
+
+ tagf = fopen (tagfile, append_to_tagfile ? "ab" : "wb");
+ if (tagf == NULL)
+ pfatal (tagfile);
+ put_entries (nodehead); /* write all the tags (CTAGS) */
+ free_tree (nodehead);
+ nodehead = NULL;
+ if (fclose (tagf) == EOF)
+ pfatal (tagfile);
+
+ if (CTAGS)
+ if (append_to_tagfile || update)
+ {
+ char *cmd = xmalloc (2 * strlen (tagfile) + sizeof "sort -u -o..");
+ /* Maybe these should be used:
+ setenv ("LC_COLLATE", "C", 1);
+ setenv ("LC_ALL", "C", 1); */
+ char *z = stpcpy (cmd, "sort -u -o ");
+ z = stpcpy (z, tagfile);
+ *z++ = ' ';
+ strcpy (z, tagfile);
+ exit (system (cmd));
+ }
+ return EXIT_SUCCESS;
+}
+
+
+/*
+ * Return a compressor given the file name. If EXTPTR is non-zero,
+ * return a pointer into FILE where the compressor-specific
+ * extension begins. If no compressor is found, NULL is returned
+ * and EXTPTR is not significant.
+ * Idea by Vladimir Alexiev <vladimir@cs.ualberta.ca> (1998)
+ */
+static compressor *
+get_compressor_from_suffix (char *file, char **extptr)
+{
+ compressor *compr;
+ char *slash, *suffix;
+
+ /* File has been processed by canonicalize_filename,
+ so we don't need to consider backslashes on DOS_NT. */
+ slash = strrchr (file, '/');
+ suffix = strrchr (file, '.');
+ if (suffix == NULL || suffix < slash)
+ return NULL;
+ if (extptr != NULL)
+ *extptr = suffix;
+ suffix += 1;
+ /* Let those poor souls who live with DOS 8+3 file name limits get
+ some solace by treating foo.cgz as if it were foo.c.gz, etc.
+ Only the first do loop is run if not MSDOS */
+ do
+ {
+ for (compr = compressors; compr->suffix != NULL; compr++)
+ if (streq (compr->suffix, suffix))
+ return compr;
+ if (!MSDOS)
+ break; /* do it only once: not really a loop */
+ if (extptr != NULL)
+ *extptr = ++suffix;
+ } while (*suffix != '\0');
+ return NULL;
+}
+
+
+
+/*
+ * Return a language given the name.
+ */
+static language *
+get_language_from_langname (const char *name)
+{
+ language *lang;
+
+ if (name == NULL)
+ error ("empty language name");
+ else
+ {
+ for (lang = lang_names; lang->name != NULL; lang++)
+ if (streq (name, lang->name))
+ return lang;
+ error ("unknown language \"%s\"", name);
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Return a language given the interpreter name.
+ */
+static language *
+get_language_from_interpreter (char *interpreter)
+{
+ language *lang;
+ const char **iname;
+
+ if (interpreter == NULL)
+ return NULL;
+ for (lang = lang_names; lang->name != NULL; lang++)
+ if (lang->interpreters != NULL)
+ for (iname = lang->interpreters; *iname != NULL; iname++)
+ if (streq (*iname, interpreter))
+ return lang;
+
+ return NULL;
+}
+
+
+
+/*
+ * Return a language given the file name.
+ */
+static language *
+get_language_from_filename (char *file, int case_sensitive)
+{
+ language *lang;
+ const char **name, **ext, *suffix;
+
+ /* Try whole file name first. */
+ for (lang = lang_names; lang->name != NULL; lang++)
+ if (lang->filenames != NULL)
+ for (name = lang->filenames; *name != NULL; name++)
+ if ((case_sensitive)
+ ? streq (*name, file)
+ : strcaseeq (*name, file))
+ return lang;
+
+ /* If not found, try suffix after last dot. */
+ suffix = strrchr (file, '.');
+ if (suffix == NULL)
+ return NULL;
+ suffix += 1;
+ for (lang = lang_names; lang->name != NULL; lang++)
+ if (lang->suffixes != NULL)
+ for (ext = lang->suffixes; *ext != NULL; ext++)
+ if ((case_sensitive)
+ ? streq (*ext, suffix)
+ : strcaseeq (*ext, suffix))
+ return lang;
+ return NULL;
+}
+
+\f
+/*
+ * This routine is called on each file argument.
+ */
+static void
+process_file_name (char *file, language *lang)
+{
+ struct stat stat_buf;
+ FILE *inf;
+ fdesc *fdp;
+ compressor *compr;
+ char *compressed_name, *uncompressed_name;
+ char *ext, *real_name;
+ int retval;
+
+ canonicalize_filename (file);
+ if (streq (file, tagfile) && !streq (tagfile, "-"))
+ {
+ error ("skipping inclusion of %s in self.", file);
+ return;
+ }
+ if ((compr = get_compressor_from_suffix (file, &ext)) == NULL)
+ {
+ compressed_name = NULL;
+ real_name = uncompressed_name = savestr (file);
+ }
+ else
+ {
+ real_name = compressed_name = savestr (file);
+ uncompressed_name = savenstr (file, ext - file);
+ }
+
+ /* If the canonicalized uncompressed name
+ has already been dealt with, skip it silently. */
+ for (fdp = fdhead; fdp != NULL; fdp = fdp->next)
+ {
+ assert (fdp->infname != NULL);
+ if (streq (uncompressed_name, fdp->infname))
+ goto cleanup;
+ }
+
+ if (stat (real_name, &stat_buf) != 0)
+ {
+ /* Reset real_name and try with a different name. */
+ real_name = NULL;
+ if (compressed_name != NULL) /* try with the given suffix */
+ {
+ if (stat (uncompressed_name, &stat_buf) == 0)
+ real_name = uncompressed_name;
+ }
+ else /* try all possible suffixes */
+ {
+ for (compr = compressors; compr->suffix != NULL; compr++)
+ {
+ compressed_name = concat (file, ".", compr->suffix);
+ if (stat (compressed_name, &stat_buf) != 0)
+ {
+ if (MSDOS)
+ {
+ char *suf = compressed_name + strlen (file);
+ size_t suflen = strlen (compr->suffix) + 1;
+ for ( ; suf[1]; suf++, suflen--)
+ {
+ memmove (suf, suf + 1, suflen);
+ if (stat (compressed_name, &stat_buf) == 0)
+ {
+ real_name = compressed_name;
+ break;
+ }
+ }
+ if (real_name != NULL)
+ break;
+ } /* MSDOS */
+ free (compressed_name);
+ compressed_name = NULL;
+ }
+ else
+ {
+ real_name = compressed_name;
+ break;
+ }
+ }
+ }
+ if (real_name == NULL)
+ {
+ perror (file);
+ goto cleanup;
+ }
+ } /* try with a different name */
+
+ if (!S_ISREG (stat_buf.st_mode))
+ {
+ error ("skipping %s: it is not a regular file.", real_name);
+ goto cleanup;
+ }
+ if (real_name == compressed_name)
+ {
+ char *cmd = concat (compr->command, " ", real_name);
+ inf = popen (cmd, "r" FOPEN_BINARY);
+ free (cmd);
+ }
+ else
+ inf = fopen (real_name, "r" FOPEN_BINARY);
+ if (inf == NULL)
+ {
+ perror (real_name);
+ goto cleanup;
+ }
+
+ process_file (inf, uncompressed_name, lang);
+
+ if (real_name == compressed_name)
+ retval = pclose (inf);
+ else
+ retval = fclose (inf);
+ if (retval < 0)
+ pfatal (file);
+
+ cleanup:
+ free (compressed_name);
+ free (uncompressed_name);
+ last_node = NULL;
+ curfdp = NULL;
+ return;
+}
+
+static void
+process_file (FILE *fh, char *fn, language *lang)
+{
+ static const fdesc emptyfdesc;
+ fdesc *fdp;
+
+ /* Create a new input file description entry. */
+ fdp = xnew (1, fdesc);
+ *fdp = emptyfdesc;
+ fdp->next = fdhead;
+ fdp->infname = savestr (fn);
+ fdp->lang = lang;
+ fdp->infabsname = absolute_filename (fn, cwd);
+ fdp->infabsdir = absolute_dirname (fn, cwd);
+ if (filename_is_absolute (fn))
+ {
+ /* An absolute file name. Canonicalize it. */
+ fdp->taggedfname = absolute_filename (fn, NULL);
+ }
+ else
+ {
+ /* A file name relative to cwd. Make it relative
+ to the directory of the tags file. */
+ fdp->taggedfname = relative_filename (fn, tagfiledir);
+ }
+ fdp->usecharno = true; /* use char position when making tags */
+ fdp->prop = NULL;
+ fdp->written = false; /* not written on tags file yet */
+
+ fdhead = fdp;
+ curfdp = fdhead; /* the current file description */
+
+ find_entries (fh);
+
+ /* If not Ctags, and if this is not metasource and if it contained no #line
+ directives, we can write the tags and free all nodes pointing to
+ curfdp. */
+ if (!CTAGS
+ && curfdp->usecharno /* no #line directives in this file */
+ && !curfdp->lang->metasource)
+ {
+ node *np, *prev;
+
+ /* Look for the head of the sublist relative to this file. See add_node
+ for the structure of the node tree. */
+ prev = NULL;
+ for (np = nodehead; np != NULL; prev = np, np = np->left)
+ if (np->fdp == curfdp)
+ break;
+
+ /* If we generated tags for this file, write and delete them. */
+ if (np != NULL)
+ {
+ /* This is the head of the last sublist, if any. The following
+ instructions depend on this being true. */
+ assert (np->left == NULL);
+
+ assert (fdhead == curfdp);
+ assert (last_node->fdp == curfdp);
+ put_entries (np); /* write tags for file curfdp->taggedfname */
+ free_tree (np); /* remove the written nodes */
+ if (prev == NULL)
+ nodehead = NULL; /* no nodes left */
+ else
+ prev->left = NULL; /* delete the pointer to the sublist */
+ }
+ }
+}
+
+/*
+ * This routine sets up the boolean pseudo-functions which work
+ * by setting boolean flags dependent upon the corresponding character.
+ * Every char which is NOT in that string is not a white char. Therefore,
+ * all of the array "_wht" is set to false, and then the elements
+ * subscripted by the chars in "white" are set to true. Thus "_wht"
+ * of a char is true if it is the string "white", else false.
+ */
+static void
+init (void)
+{
+ const char *sp;
+ int i;
+
+ for (i = 0; i < CHARS; i++)
+ iswhite (i) = notinname (i) = begtoken (i) = intoken (i) = endtoken (i)
+ = false;
+ for (sp = white; *sp != '\0'; sp++) iswhite (*sp) = true;
+ for (sp = nonam; *sp != '\0'; sp++) notinname (*sp) = true;
+ notinname ('\0') = notinname ('\n');
+ for (sp = begtk; *sp != '\0'; sp++) begtoken (*sp) = true;
+ begtoken ('\0') = begtoken ('\n');
+ for (sp = midtk; *sp != '\0'; sp++) intoken (*sp) = true;
+ intoken ('\0') = intoken ('\n');
+ for (sp = endtk; *sp != '\0'; sp++) endtoken (*sp) = true;
+ endtoken ('\0') = endtoken ('\n');
+}
+
+/*
+ * This routine opens the specified file and calls the function
+ * which finds the function and type definitions.
+ */
+static void
+find_entries (FILE *inf)
+{
+ char *cp;
+ language *lang = curfdp->lang;
+ Lang_function *parser = NULL;
+
+ /* If user specified a language, use it. */
+ if (lang != NULL && lang->function != NULL)
+ {
+ parser = lang->function;
+ }
+
+ /* Else try to guess the language given the file name. */
+ if (parser == NULL)
+ {
+ lang = get_language_from_filename (curfdp->infname, true);
+ if (lang != NULL && lang->function != NULL)
+ {
+ curfdp->lang = lang;
+ parser = lang->function;
+ }
+ }
+
+ /* Else look for sharp-bang as the first two characters. */
+ if (parser == NULL
+ && readline_internal (&lb, inf) > 0
+ && lb.len >= 2
+ && lb.buffer[0] == '#'
+ && lb.buffer[1] == '!')
+ {
+ char *lp;
+
+ /* Set lp to point at the first char after the last slash in the
+ line or, if no slashes, at the first nonblank. Then set cp to
+ the first successive blank and terminate the string. */
+ lp = strrchr (lb.buffer+2, '/');
+ if (lp != NULL)
+ lp += 1;
+ else
+ lp = skip_spaces (lb.buffer + 2);
+ cp = skip_non_spaces (lp);
+ *cp = '\0';
+
+ if (strlen (lp) > 0)
+ {
+ lang = get_language_from_interpreter (lp);
+ if (lang != NULL && lang->function != NULL)
+ {
+ curfdp->lang = lang;
+ parser = lang->function;
+ }
+ }
+ }
+
+ /* We rewind here, even if inf may be a pipe. We fail if the
+ length of the first line is longer than the pipe block size,
+ which is unlikely. */
+ rewind (inf);
+
+ /* Else try to guess the language given the case insensitive file name. */
+ if (parser == NULL)
+ {
+ lang = get_language_from_filename (curfdp->infname, false);
+ if (lang != NULL && lang->function != NULL)
+ {
+ curfdp->lang = lang;
+ parser = lang->function;
+ }
+ }
+
+ /* Else try Fortran or C. */
+ if (parser == NULL)
+ {
+ node *old_last_node = last_node;
+
+ curfdp->lang = get_language_from_langname ("fortran");
+ find_entries (inf);
+
+ if (old_last_node == last_node)
+ /* No Fortran entries found. Try C. */
+ {
+ /* We do not tag if rewind fails.
+ Only the file name will be recorded in the tags file. */
+ rewind (inf);
+ curfdp->lang = get_language_from_langname (cplusplus ? "c++" : "c");
+ find_entries (inf);
+ }
+ return;
+ }
+
+ if (!no_line_directive
+ && curfdp->lang != NULL && curfdp->lang->metasource)
+ /* It may be that this is a bingo.y file, and we already parsed a bingo.c
+ file, or anyway we parsed a file that is automatically generated from
+ this one. If this is the case, the bingo.c file contained #line
+ directives that generated tags pointing to this file. Let's delete
+ them all before parsing this file, which is the real source. */
+ {
+ fdesc **fdpp = &fdhead;
+ while (*fdpp != NULL)
+ if (*fdpp != curfdp
+ && streq ((*fdpp)->taggedfname, curfdp->taggedfname))
+ /* We found one of those! We must delete both the file description
+ and all tags referring to it. */
+ {
+ fdesc *badfdp = *fdpp;
+
+ /* Delete the tags referring to badfdp->taggedfname
+ that were obtained from badfdp->infname. */
+ invalidate_nodes (badfdp, &nodehead);
+
+ *fdpp = badfdp->next; /* remove the bad description from the list */
+ free_fdesc (badfdp);
+ }
+ else
+ fdpp = &(*fdpp)->next; /* advance the list pointer */
+ }
+
+ assert (parser != NULL);
+
+ /* Generic initializations before reading from file. */
+ linebuffer_setlen (&filebuf, 0); /* reset the file buffer */
+
+ /* Generic initializations before parsing file with readline. */
+ lineno = 0; /* reset global line number */
+ charno = 0; /* reset global char number */
+ linecharno = 0; /* reset global char number of line start */
+
+ parser (inf);
+
+ regex_tag_multiline ();
+}
+
+\f
+/*
+ * Check whether an implicitly named tag should be created,
+ * then call `pfnote'.
+ * NAME is a string that is internally copied by this function.
+ *
+ * TAGS format specification
+ * Idea by Sam Kendall <kendall@mv.mv.com> (1997)
+ * The following is explained in some more detail in etc/ETAGS.EBNF.
+ *
+ * make_tag creates tags with "implicit tag names" (unnamed tags)
+ * if the following are all true, assuming NONAM=" \f\t\n\r()=,;":
+ * 1. NAME does not contain any of the characters in NONAM;
+ * 2. LINESTART contains name as either a rightmost, or rightmost but
+ * one character, substring;
+ * 3. the character, if any, immediately before NAME in LINESTART must
+ * be a character in NONAM;
+ * 4. the character, if any, immediately after NAME in LINESTART must
+ * also be a character in NONAM.
+ *
+ * The implementation uses the notinname() macro, which recognizes the
+ * characters stored in the string `nonam'.
+ * etags.el needs to use the same characters that are in NONAM.
+ */
+static void
+make_tag (const char *name, /* tag name, or NULL if unnamed */
+ int namelen, /* tag length */
+ bool is_func, /* tag is a function */
+ char *linestart, /* start of the line where tag is */
+ int linelen, /* length of the line where tag is */
+ int lno, /* line number */
+ long int cno) /* character number */
+{
+ bool named = (name != NULL && namelen > 0);
+ char *nname = NULL;
+
+ if (!CTAGS && named) /* maybe set named to false */
+ /* Let's try to make an implicit tag name, that is, create an unnamed tag
+ such that etags.el can guess a name from it. */
+ {
+ int i;
+ register const char *cp = name;
+
+ for (i = 0; i < namelen; i++)
+ if (notinname (*cp++))
+ break;
+ if (i == namelen) /* rule #1 */
+ {
+ cp = linestart + linelen - namelen;
+ if (notinname (linestart[linelen-1]))
+ cp -= 1; /* rule #4 */
+ if (cp >= linestart /* rule #2 */
+ && (cp == linestart
+ || notinname (cp[-1])) /* rule #3 */
+ && strneq (name, cp, namelen)) /* rule #2 */
+ named = false; /* use implicit tag name */
+ }
+ }
+
+ if (named)
+ nname = savenstr (name, namelen);
+
+ pfnote (nname, is_func, linestart, linelen, lno, cno);
+}
+
+/* Record a tag. */
+static void
+pfnote (char *name, bool is_func, char *linestart, int linelen, int lno,
+ long int cno)
+ /* tag name, or NULL if unnamed */
+ /* tag is a function */
+ /* start of the line where tag is */
+ /* length of the line where tag is */
+ /* line number */
+ /* character number */
+{
+ register node *np;
+
+ assert (name == NULL || name[0] != '\0');
+ if (CTAGS && name == NULL)
+ return;
+
+ np = xnew (1, node);
+
+ /* If ctags mode, change name "main" to M<thisfilename>. */
+ if (CTAGS && !cxref_style && streq (name, "main"))
+ {
+ char *fp = strrchr (curfdp->taggedfname, '/');
+ np->name = concat ("M", fp == NULL ? curfdp->taggedfname : fp + 1, "");
+ fp = strrchr (np->name, '.');
+ if (fp != NULL && fp[1] != '\0' && fp[2] == '\0')
+ fp[0] = '\0';
+ }
+ else
+ np->name = name;
+ np->valid = true;
+ np->been_warned = false;
+ np->fdp = curfdp;
+ np->is_func = is_func;
+ np->lno = lno;
+ if (np->fdp->usecharno)
+ /* Our char numbers are 0-base, because of C language tradition?
+ ctags compatibility? old versions compatibility? I don't know.
+ Anyway, since emacs's are 1-base we expect etags.el to take care
+ of the difference. If we wanted to have 1-based numbers, we would
+ uncomment the +1 below. */
+ np->cno = cno /* + 1 */ ;
+ else
+ np->cno = invalidcharno;
+ np->left = np->right = NULL;
+ if (CTAGS && !cxref_style)
+ {
+ if (strlen (linestart) < 50)
+ np->regex = concat (linestart, "$", "");
+ else
+ np->regex = savenstr (linestart, 50);
+ }
+ else
+ np->regex = savenstr (linestart, linelen);
+
+ add_node (np, &nodehead);
+}
+
+/*
+ * free_tree ()
+ * recurse on left children, iterate on right children.
+ */
+static void
+free_tree (register node *np)
+{
+ while (np)
+ {
+ register node *node_right = np->right;
+ free_tree (np->left);
+ free (np->name);
+ free (np->regex);
+ free (np);
+ np = node_right;
+ }
+}
+
+/*
+ * free_fdesc ()
+ * delete a file description
+ */
+static void
+free_fdesc (register fdesc *fdp)
+{
+ free (fdp->infname);
+ free (fdp->infabsname);
+ free (fdp->infabsdir);
+ free (fdp->taggedfname);
+ free (fdp->prop);
+ free (fdp);
+}
+
+/*
+ * add_node ()
+ * Adds a node to the tree of nodes. In etags mode, sort by file
+ * name. In ctags mode, sort by tag name. Make no attempt at
+ * balancing.
+ *
+ * add_node is the only function allowed to add nodes, so it can
+ * maintain state.
+ */
+static void
+add_node (node *np, node **cur_node_p)
+{
+ register int dif;
+ register node *cur_node = *cur_node_p;
+
+ if (cur_node == NULL)
+ {
+ *cur_node_p = np;
+ last_node = np;
+ return;
+ }
+
+ if (!CTAGS)
+ /* Etags Mode */
+ {
+ /* For each file name, tags are in a linked sublist on the right
+ pointer. The first tags of different files are a linked list
+ on the left pointer. last_node points to the end of the last
+ used sublist. */
+ if (last_node != NULL && last_node->fdp == np->fdp)
+ {
+ /* Let's use the same sublist as the last added node. */
+ assert (last_node->right == NULL);
+ last_node->right = np;
+ last_node = np;
+ }
+ else if (cur_node->fdp == np->fdp)
+ {
+ /* Scanning the list we found the head of a sublist which is
+ good for us. Let's scan this sublist. */
+ add_node (np, &cur_node->right);
+ }
+ else
+ /* The head of this sublist is not good for us. Let's try the
+ next one. */
+ add_node (np, &cur_node->left);
+ } /* if ETAGS mode */
+
+ else
+ {
+ /* Ctags Mode */
+ dif = strcmp (np->name, cur_node->name);
+
+ /*
+ * If this tag name matches an existing one, then
+ * do not add the node, but maybe print a warning.
+ */
+ if (no_duplicates && !dif)
+ {
+ if (np->fdp == cur_node->fdp)
+ {
+ if (!no_warnings)
+ {
+ fprintf (stderr, "Duplicate entry in file %s, line %d: %s\n",
+ np->fdp->infname, lineno, np->name);
+ fprintf (stderr, "Second entry ignored\n");
+ }
+ }
+ else if (!cur_node->been_warned && !no_warnings)
+ {
+ fprintf
+ (stderr,
+ "Duplicate entry in files %s and %s: %s (Warning only)\n",
+ np->fdp->infname, cur_node->fdp->infname, np->name);
+ cur_node->been_warned = true;
+ }
+ return;
+ }
+
+ /* Actually add the node */
+ add_node (np, dif < 0 ? &cur_node->left : &cur_node->right);
+ } /* if CTAGS mode */
+}
+
+/*
+ * invalidate_nodes ()
+ * Scan the node tree and invalidate all nodes pointing to the
+ * given file description (CTAGS case) or free them (ETAGS case).
+ */
+static void
+invalidate_nodes (fdesc *badfdp, node **npp)
+{
+ node *np = *npp;
+
+ if (np == NULL)
+ return;
+
+ if (CTAGS)
+ {
+ if (np->left != NULL)
+ invalidate_nodes (badfdp, &np->left);
+ if (np->fdp == badfdp)
+ np->valid = false;
+ if (np->right != NULL)
+ invalidate_nodes (badfdp, &np->right);
+ }
+ else
+ {
+ assert (np->fdp != NULL);
+ if (np->fdp == badfdp)
+ {
+ *npp = np->left; /* detach the sublist from the list */
+ np->left = NULL; /* isolate it */
+ free_tree (np); /* free it */
+ invalidate_nodes (badfdp, npp);
+ }
+ else
+ invalidate_nodes (badfdp, &np->left);
+ }
+}
+
+\f
+static int total_size_of_entries (node *);
+static int number_len (long) ATTRIBUTE_CONST;
+
+/* Length of a non-negative number's decimal representation. */
+static int
+number_len (long int num)
+{
+ int len = 1;
+ while ((num /= 10) > 0)
+ len += 1;
+ return len;
+}
+
+/*
+ * Return total number of characters that put_entries will output for
+ * the nodes in the linked list at the right of the specified node.
+ * This count is irrelevant with etags.el since emacs 19.34 at least,
+ * but is still supplied for backward compatibility.
+ */
+static int
+total_size_of_entries (register node *np)
+{
+ register int total = 0;
+
+ for (; np != NULL; np = np->right)
+ if (np->valid)
+ {
+ total += strlen (np->regex) + 1; /* pat\177 */
+ if (np->name != NULL)
+ total += strlen (np->name) + 1; /* name\001 */
+ total += number_len ((long) np->lno) + 1; /* lno, */
+ if (np->cno != invalidcharno) /* cno */
+ total += number_len (np->cno);
+ total += 1; /* newline */
+ }
+
+ return total;
+}
+
+static void
+put_entries (register node *np)
+{
+ register char *sp;
+ static fdesc *fdp = NULL;
+
+ if (np == NULL)
+ return;
+
+ /* Output subentries that precede this one */
+ if (CTAGS)
+ put_entries (np->left);
+
+ /* Output this entry */
+ if (np->valid)
+ {
+ if (!CTAGS)
+ {
+ /* Etags mode */
+ if (fdp != np->fdp)
+ {
+ fdp = np->fdp;
+ fprintf (tagf, "\f\n%s,%d\n",
+ fdp->taggedfname, total_size_of_entries (np));
+ fdp->written = true;
+ }
+ fputs (np->regex, tagf);
+ fputc ('\177', tagf);
+ if (np->name != NULL)
+ {
+ fputs (np->name, tagf);
+ fputc ('\001', tagf);
+ }
+ fprintf (tagf, "%d,", np->lno);
+ if (np->cno != invalidcharno)
+ fprintf (tagf, "%ld", np->cno);
+ fputs ("\n", tagf);
+ }
+ else
+ {
+ /* Ctags mode */
+ if (np->name == NULL)
+ error ("internal error: NULL name in ctags mode.");
+
+ if (cxref_style)
+ {
+ if (vgrind_style)
+ fprintf (stdout, "%s %s %d\n",
+ np->name, np->fdp->taggedfname, (np->lno + 63) / 64);
+ else
+ fprintf (stdout, "%-16s %3d %-16s %s\n",
+ np->name, np->lno, np->fdp->taggedfname, np->regex);
+ }
+ else
+ {
+ fprintf (tagf, "%s\t%s\t", np->name, np->fdp->taggedfname);
+
+ if (np->is_func)
+ { /* function or #define macro with args */
+ putc (searchar, tagf);
+ putc ('^', tagf);
+
+ for (sp = np->regex; *sp; sp++)
+ {
+ if (*sp == '\\' || *sp == searchar)
+ putc ('\\', tagf);
+ putc (*sp, tagf);
+ }
+ putc (searchar, tagf);
+ }
+ else
+ { /* anything else; text pattern inadequate */
+ fprintf (tagf, "%d", np->lno);
+ }
+ putc ('\n', tagf);
+ }
+ }
+ } /* if this node contains a valid tag */
+
+ /* Output subentries that follow this one */
+ put_entries (np->right);
+ if (!CTAGS)
+ put_entries (np->left);
+}
+
+\f
+/* C extensions. */
+#define C_EXT 0x00fff /* C extensions */
+#define C_PLAIN 0x00000 /* C */
+#define C_PLPL 0x00001 /* C++ */
+#define C_STAR 0x00003 /* C* */
+#define C_JAVA 0x00005 /* JAVA */
+#define C_AUTO 0x01000 /* C, but switch to C++ if `class' is met */
+#define YACC 0x10000 /* yacc file */
+
+/*
+ * The C symbol tables.
+ */
+enum sym_type
+{
+ st_none,
+ st_C_objprot, st_C_objimpl, st_C_objend,
+ st_C_gnumacro,
+ st_C_ignore, st_C_attribute,
+ st_C_javastruct,
+ st_C_operator,
+ st_C_class, st_C_template,
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef
+};
+
+/* Feed stuff between (but not including) %[ and %] lines to:
+ gperf -m 5
+%[
+%compare-strncmp
+%enum
+%struct-type
+struct C_stab_entry { char *name; int c_ext; enum sym_type type; }
+%%
+if, 0, st_C_ignore
+for, 0, st_C_ignore
+while, 0, st_C_ignore
+switch, 0, st_C_ignore
+return, 0, st_C_ignore
+__attribute__, 0, st_C_attribute
+GTY, 0, st_C_attribute
+@interface, 0, st_C_objprot
+@protocol, 0, st_C_objprot
+@implementation,0, st_C_objimpl
+@end, 0, st_C_objend
+import, (C_JAVA & ~C_PLPL), st_C_ignore
+package, (C_JAVA & ~C_PLPL), st_C_ignore
+friend, C_PLPL, st_C_ignore
+extends, (C_JAVA & ~C_PLPL), st_C_javastruct
+implements, (C_JAVA & ~C_PLPL), st_C_javastruct
+interface, (C_JAVA & ~C_PLPL), st_C_struct
+class, 0, st_C_class
+namespace, C_PLPL, st_C_struct
+domain, C_STAR, st_C_struct
+union, 0, st_C_struct
+struct, 0, st_C_struct
+extern, 0, st_C_extern
+enum, 0, st_C_enum
+typedef, 0, st_C_typedef
+define, 0, st_C_define
+undef, 0, st_C_define
+operator, C_PLPL, st_C_operator
+template, 0, st_C_template
+# DEFUN used in emacs, the next three used in glibc (SYSCALL only for mach).
+DEFUN, 0, st_C_gnumacro
+SYSCALL, 0, st_C_gnumacro
+ENTRY, 0, st_C_gnumacro
+PSEUDO, 0, st_C_gnumacro
+# These are defined inside C functions, so currently they are not met.
+# EXFUN used in glibc, DEFVAR_* in emacs.
+#EXFUN, 0, st_C_gnumacro
+#DEFVAR_, 0, st_C_gnumacro
+%]
+and replace lines between %< and %> with its output, then:
+ - remove the #if characterset check
+ - make in_word_set static and not inline. */
+/*%<*/
+/* C code produced by gperf version 3.0.1 */
+/* Command-line: gperf -m 5 */
+/* Computed positions: -k'2-3' */
+
+struct C_stab_entry { const char *name; int c_ext; enum sym_type type; };
+/* maximum key range = 33, duplicates = 0 */
+
+static int
+hash (const char *str, int len)
+{
+ static char const asso_values[] =
+ {
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 3,
+ 26, 35, 35, 35, 35, 35, 35, 35, 27, 35,
+ 35, 35, 35, 24, 0, 35, 35, 35, 35, 0,
+ 35, 35, 35, 35, 35, 1, 35, 16, 35, 6,
+ 23, 0, 0, 35, 22, 0, 35, 35, 5, 0,
+ 0, 15, 1, 35, 6, 35, 8, 19, 35, 16,
+ 4, 5, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35
+ };
+ int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char) str[2]];
+ /*FALLTHROUGH*/
+ case 2:
+ hval += asso_values[(unsigned char) str[1]];
+ break;
+ }
+ return hval;
+}
+
+static struct C_stab_entry *
+in_word_set (register const char *str, register unsigned int len)
+{
+ enum
+ {
+ TOTAL_KEYWORDS = 33,
+ MIN_WORD_LENGTH = 2,
+ MAX_WORD_LENGTH = 15,
+ MIN_HASH_VALUE = 2,
+ MAX_HASH_VALUE = 34
+ };
+
+ static struct C_stab_entry wordlist[] =
+ {
+ {""}, {""},
+ {"if", 0, st_C_ignore},
+ {"GTY", 0, st_C_attribute},
+ {"@end", 0, st_C_objend},
+ {"union", 0, st_C_struct},
+ {"define", 0, st_C_define},
+ {"import", (C_JAVA & ~C_PLPL), st_C_ignore},
+ {"template", 0, st_C_template},
+ {"operator", C_PLPL, st_C_operator},
+ {"@interface", 0, st_C_objprot},
+ {"implements", (C_JAVA & ~C_PLPL), st_C_javastruct},
+ {"friend", C_PLPL, st_C_ignore},
+ {"typedef", 0, st_C_typedef},
+ {"return", 0, st_C_ignore},
+ {"@implementation",0, st_C_objimpl},
+ {"@protocol", 0, st_C_objprot},
+ {"interface", (C_JAVA & ~C_PLPL), st_C_struct},
+ {"extern", 0, st_C_extern},
+ {"extends", (C_JAVA & ~C_PLPL), st_C_javastruct},
+ {"struct", 0, st_C_struct},
+ {"domain", C_STAR, st_C_struct},
+ {"switch", 0, st_C_ignore},
+ {"enum", 0, st_C_enum},
+ {"for", 0, st_C_ignore},
+ {"namespace", C_PLPL, st_C_struct},
+ {"class", 0, st_C_class},
+ {"while", 0, st_C_ignore},
+ {"undef", 0, st_C_define},
+ {"package", (C_JAVA & ~C_PLPL), st_C_ignore},
+ {"__attribute__", 0, st_C_attribute},
+ {"SYSCALL", 0, st_C_gnumacro},
+ {"ENTRY", 0, st_C_gnumacro},
+ {"PSEUDO", 0, st_C_gnumacro},
+ {"DEFUN", 0, st_C_gnumacro}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ int key = hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ const char *s = wordlist[key].name;
+
+ if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
+/*%>*/
+
+static enum sym_type
+C_symtype (char *str, int len, int c_ext)
+{
+ register struct C_stab_entry *se = in_word_set (str, len);
+
+ if (se == NULL || (se->c_ext && !(c_ext & se->c_ext)))
+ return st_none;
+ return se->type;
+}
+
+\f
+/*
+ * Ignoring __attribute__ ((list))
+ */
+static bool inattribute; /* looking at an __attribute__ construct */
+
+/*
+ * C functions and variables are recognized using a simple
+ * finite automaton. fvdef is its state variable.
+ */
+static enum
+{
+ fvnone, /* nothing seen */
+ fdefunkey, /* Emacs DEFUN keyword seen */
+ fdefunname, /* Emacs DEFUN name seen */
+ foperator, /* func: operator keyword seen (cplpl) */
+ fvnameseen, /* function or variable name seen */
+ fstartlist, /* func: just after open parenthesis */
+ finlist, /* func: in parameter list */
+ flistseen, /* func: after parameter list */
+ fignore, /* func: before open brace */
+ vignore /* var-like: ignore until ';' */
+} fvdef;
+
+static bool fvextern; /* func or var: extern keyword seen; */
+
+/*
+ * typedefs are recognized using a simple finite automaton.
+ * typdef is its state variable.
+ */
+static enum
+{
+ tnone, /* nothing seen */
+ tkeyseen, /* typedef keyword seen */
+ ttypeseen, /* defined type seen */
+ tinbody, /* inside typedef body */
+ tend, /* just before typedef tag */
+ tignore /* junk after typedef tag */
+} typdef;
+
+/*
+ * struct-like structures (enum, struct and union) are recognized
+ * using another simple finite automaton. `structdef' is its state
+ * variable.
+ */
+static enum
+{
+ snone, /* nothing seen yet,
+ or in struct body if bracelev > 0 */
+ skeyseen, /* struct-like keyword seen */
+ stagseen, /* struct-like tag seen */
+ scolonseen /* colon seen after struct-like tag */
+} structdef;
+
+/*
+ * When objdef is different from onone, objtag is the name of the class.
+ */
+static const char *objtag = "<uninited>";
+
+/*
+ * Yet another little state machine to deal with preprocessor lines.
+ */
+static enum
+{
+ dnone, /* nothing seen */
+ dsharpseen, /* '#' seen as first char on line */
+ ddefineseen, /* '#' and 'define' seen */
+ dignorerest /* ignore rest of line */
+} definedef;
+
+/*
+ * State machine for Objective C protocols and implementations.
+ * Idea by Tom R.Hageman <tom@basil.icce.rug.nl> (1995)
+ */
+static enum
+{
+ onone, /* nothing seen */
+ oprotocol, /* @interface or @protocol seen */
+ oimplementation, /* @implementations seen */
+ otagseen, /* class name seen */
+ oparenseen, /* parenthesis before category seen */
+ ocatseen, /* category name seen */
+ oinbody, /* in @implementation body */
+ omethodsign, /* in @implementation body, after +/- */
+ omethodtag, /* after method name */
+ omethodcolon, /* after method colon */
+ omethodparm, /* after method parameter */
+ oignore /* wait for @end */
+} objdef;
+
+
+/*
+ * Use this structure to keep info about the token read, and how it
+ * should be tagged. Used by the make_C_tag function to build a tag.
+ */
+static struct tok
+{
+ char *line; /* string containing the token */
+ int offset; /* where the token starts in LINE */
+ int length; /* token length */
+ /*
+ The previous members can be used to pass strings around for generic
+ purposes. The following ones specifically refer to creating tags. In this
+ case the token contained here is the pattern that will be used to create a
+ tag.
+ */
+ bool valid; /* do not create a tag; the token should be
+ invalidated whenever a state machine is
+ reset prematurely */
+ bool named; /* create a named tag */
+ int lineno; /* source line number of tag */
+ long linepos; /* source char number of tag */
+} token; /* latest token read */
+
+/*
+ * Variables and functions for dealing with nested structures.
+ * Idea by Mykola Dzyuba <mdzyuba@yahoo.com> (2001)
+ */
+static void pushclass_above (int, char *, int);
+static void popclass_above (int);
+static void write_classname (linebuffer *, const char *qualifier);
+
+static struct {
+ char **cname; /* nested class names */
+ int *bracelev; /* nested class brace level */
+ int nl; /* class nesting level (elements used) */
+ int size; /* length of the array */
+} cstack; /* stack for nested declaration tags */
+/* Current struct nesting depth (namespace, class, struct, union, enum). */
+#define nestlev (cstack.nl)
+/* After struct keyword or in struct body, not inside a nested function. */
+#define instruct (structdef == snone && nestlev > 0 \
+ && bracelev == cstack.bracelev[nestlev-1] + 1)
+
+static void
+pushclass_above (int bracelev, char *str, int len)
+{
+ int nl;
+
+ popclass_above (bracelev);
+ nl = cstack.nl;
+ if (nl >= cstack.size)
+ {
+ int size = cstack.size *= 2;
+ xrnew (cstack.cname, size, char *);
+ xrnew (cstack.bracelev, size, int);
+ }
+ assert (nl == 0 || cstack.bracelev[nl-1] < bracelev);
+ cstack.cname[nl] = (str == NULL) ? NULL : savenstr (str, len);
+ cstack.bracelev[nl] = bracelev;
+ cstack.nl = nl + 1;
+}
+
+static void
+popclass_above (int bracelev)
+{
+ int nl;
+
+ for (nl = cstack.nl - 1;
+ nl >= 0 && cstack.bracelev[nl] >= bracelev;
+ nl--)
+ {
+ free (cstack.cname[nl]);
+ cstack.nl = nl;
+ }
+}
+
+static void
+write_classname (linebuffer *cn, const char *qualifier)
+{
+ int i, len;
+ int qlen = strlen (qualifier);
+
+ if (cstack.nl == 0 || cstack.cname[0] == NULL)
+ {
+ len = 0;
+ cn->len = 0;
+ cn->buffer[0] = '\0';
+ }
+ else
+ {
+ len = strlen (cstack.cname[0]);
+ linebuffer_setlen (cn, len);
+ strcpy (cn->buffer, cstack.cname[0]);
+ }
+ for (i = 1; i < cstack.nl; i++)
+ {
+ char *s = cstack.cname[i];
+ if (s == NULL)
+ continue;
+ linebuffer_setlen (cn, len + qlen + strlen (s));
+ len += sprintf (cn->buffer + len, "%s%s", qualifier, s);
+ }
+}
+
+\f
+static bool consider_token (char *, int, int, int *, int, int, bool *);
+static void make_C_tag (bool);
+
+/*
+ * consider_token ()
+ * checks to see if the current token is at the start of a
+ * function or variable, or corresponds to a typedef, or
+ * is a struct/union/enum tag, or #define, or an enum constant.
+ *
+ * *IS_FUNC_OR_VAR gets true if the token is a function or #define macro
+ * with args. C_EXTP points to which language we are looking at.
+ *
+ * Globals
+ * fvdef IN OUT
+ * structdef IN OUT
+ * definedef IN OUT
+ * typdef IN OUT
+ * objdef IN OUT
+ */
+
+static bool
+consider_token (char *str, int len, int c, int *c_extp,
+ int bracelev, int parlev, bool *is_func_or_var)
+ /* IN: token pointer */
+ /* IN: token length */
+ /* IN: first char after the token */
+ /* IN, OUT: C extensions mask */
+ /* IN: brace level */
+ /* IN: parenthesis level */
+ /* OUT: function or variable found */
+{
+ /* When structdef is stagseen, scolonseen, or snone with bracelev > 0,
+ structtype is the type of the preceding struct-like keyword, and
+ structbracelev is the brace level where it has been seen. */
+ static enum sym_type structtype;
+ static int structbracelev;
+ static enum sym_type toktype;
+
+
+ toktype = C_symtype (str, len, *c_extp);
+
+ /*
+ * Skip __attribute__
+ */
+ if (toktype == st_C_attribute)
+ {
+ inattribute = true;
+ return false;
+ }
+
+ /*
+ * Advance the definedef state machine.
+ */
+ switch (definedef)
+ {
+ case dnone:
+ /* We're not on a preprocessor line. */
+ if (toktype == st_C_gnumacro)
+ {
+ fvdef = fdefunkey;
+ return false;
+ }
+ break;
+ case dsharpseen:
+ if (toktype == st_C_define)
+ {
+ definedef = ddefineseen;
+ }
+ else
+ {
+ definedef = dignorerest;
+ }
+ return false;
+ case ddefineseen:
+ /*
+ * Make a tag for any macro, unless it is a constant
+ * and constantypedefs is false.
+ */
+ definedef = dignorerest;
+ *is_func_or_var = (c == '(');
+ if (!*is_func_or_var && !constantypedefs)
+ return false;
+ else
+ return true;
+ case dignorerest:
+ return false;
+ default:
+ error ("internal error: definedef value.");
+ }
+
+ /*
+ * Now typedefs
+ */
+ switch (typdef)
+ {
+ case tnone:
+ if (toktype == st_C_typedef)
+ {
+ if (typedefs)
+ typdef = tkeyseen;
+ fvextern = false;
+ fvdef = fvnone;
+ return false;
+ }
+ break;
+ case tkeyseen:
+ switch (toktype)
+ {
+ case st_none:
+ case st_C_class:
+ case st_C_struct:
+ case st_C_enum:
+ typdef = ttypeseen;
+ }
+ break;
+ case ttypeseen:
+ if (structdef == snone && fvdef == fvnone)
+ {
+ fvdef = fvnameseen;
+ return true;
+ }
+ break;
+ case tend:
+ switch (toktype)
+ {
+ case st_C_class:
+ case st_C_struct:
+ case st_C_enum:
+ return false;
+ }
+ return true;
+ }
+
+ switch (toktype)
+ {
+ case st_C_javastruct:
+ if (structdef == stagseen)
+ structdef = scolonseen;
+ return false;
+ case st_C_template:
+ case st_C_class:
+ if ((*c_extp & C_AUTO) /* automatic detection of C++ language */
+ && bracelev == 0
+ && definedef == dnone && structdef == snone
+ && typdef == tnone && fvdef == fvnone)
+ *c_extp = (*c_extp | C_PLPL) & ~C_AUTO;
+ if (toktype == st_C_template)
+ break;
+ /* FALLTHRU */
+ case st_C_struct:
+ case st_C_enum:
+ if (parlev == 0
+ && fvdef != vignore
+ && (typdef == tkeyseen
+ || (typedefs_or_cplusplus && structdef == snone)))
+ {
+ structdef = skeyseen;
+ structtype = toktype;
+ structbracelev = bracelev;
+ if (fvdef == fvnameseen)
+ fvdef = fvnone;
+ }
+ return false;
+ }
+
+ if (structdef == skeyseen)
+ {
+ structdef = stagseen;
+ return true;
+ }
+
+ if (typdef != tnone)
+ definedef = dnone;
+
+ /* Detect Objective C constructs. */
+ switch (objdef)
+ {
+ case onone:
+ switch (toktype)
+ {
+ case st_C_objprot:
+ objdef = oprotocol;
+ return false;
+ case st_C_objimpl:
+ objdef = oimplementation;
+ return false;
+ }
+ break;
+ case oimplementation:
+ /* Save the class tag for functions or variables defined inside. */
+ objtag = savenstr (str, len);
+ objdef = oinbody;
+ return false;
+ case oprotocol:
+ /* Save the class tag for categories. */
+ objtag = savenstr (str, len);
+ objdef = otagseen;
+ *is_func_or_var = true;
+ return true;
+ case oparenseen:
+ objdef = ocatseen;
+ *is_func_or_var = true;
+ return true;
+ case oinbody:
+ break;
+ case omethodsign:
+ if (parlev == 0)
+ {
+ fvdef = fvnone;
+ objdef = omethodtag;
+ linebuffer_setlen (&token_name, len);
+ memcpy (token_name.buffer, str, len);
+ token_name.buffer[len] = '\0';
+ return true;
+ }
+ return false;
+ case omethodcolon:
+ if (parlev == 0)
+ objdef = omethodparm;
+ return false;
+ case omethodparm:
+ if (parlev == 0)
+ {
+ int oldlen = token_name.len;
+ fvdef = fvnone;
+ objdef = omethodtag;
+ linebuffer_setlen (&token_name, oldlen + len);
+ memcpy (token_name.buffer + oldlen, str, len);
+ token_name.buffer[oldlen + len] = '\0';
+ return true;
+ }
+ return false;
+ case oignore:
+ if (toktype == st_C_objend)
+ {
+ /* Memory leakage here: the string pointed by objtag is
+ never released, because many tests would be needed to
+ avoid breaking on incorrect input code. The amount of
+ memory leaked here is the sum of the lengths of the
+ class tags.
+ free (objtag); */
+ objdef = onone;
+ }
+ return false;
+ }
+
+ /* A function, variable or enum constant? */
+ switch (toktype)
+ {
+ case st_C_extern:
+ fvextern = true;
+ switch (fvdef)
+ {
+ case finlist:
+ case flistseen:
+ case fignore:
+ case vignore:
+ break;
+ default:
+ fvdef = fvnone;
+ }
+ return false;
+ case st_C_ignore:
+ fvextern = false;
+ fvdef = vignore;
+ return false;
+ case st_C_operator:
+ fvdef = foperator;
+ *is_func_or_var = true;
+ return true;
+ case st_none:
+ if (constantypedefs
+ && structdef == snone
+ && structtype == st_C_enum && bracelev > structbracelev
+ /* Don't tag tokens in expressions that assign values to enum
+ constants. */
+ && fvdef != vignore)
+ return true; /* enum constant */
+ switch (fvdef)
+ {
+ case fdefunkey:
+ if (bracelev > 0)
+ break;
+ fvdef = fdefunname; /* GNU macro */
+ *is_func_or_var = true;
+ return true;
+ case fvnone:
+ switch (typdef)
+ {
+ case ttypeseen:
+ return false;
+ case tnone:
+ if ((strneq (str, "asm", 3) && endtoken (str[3]))
+ || (strneq (str, "__asm__", 7) && endtoken (str[7])))
+ {
+ fvdef = vignore;
+ return false;
+ }
+ break;
+ }
+ /* FALLTHRU */
+ case fvnameseen:
+ if (len >= 10 && strneq (str+len-10, "::operator", 10))
+ {
+ if (*c_extp & C_AUTO) /* automatic detection of C++ */
+ *c_extp = (*c_extp | C_PLPL) & ~C_AUTO;
+ fvdef = foperator;
+ *is_func_or_var = true;
+ return true;
+ }
+ if (bracelev > 0 && !instruct)
+ break;
+ fvdef = fvnameseen; /* function or variable */
+ *is_func_or_var = true;
+ return true;
+ }
+ break;
+ }
+
+ return false;
+}
+
+\f
+/*
+ * C_entries often keeps pointers to tokens or lines which are older than
+ * the line currently read. By keeping two line buffers, and switching
+ * them at end of line, it is possible to use those pointers.
+ */
+static struct
+{
+ long linepos;
+ linebuffer lb;
+} lbs[2];
+
+#define current_lb_is_new (newndx == curndx)
+#define switch_line_buffers() (curndx = 1 - curndx)
+
+#define curlb (lbs[curndx].lb)
+#define newlb (lbs[newndx].lb)
+#define curlinepos (lbs[curndx].linepos)
+#define newlinepos (lbs[newndx].linepos)
+
+#define plainc ((c_ext & C_EXT) == C_PLAIN)
+#define cplpl (c_ext & C_PLPL)
+#define cjava ((c_ext & C_JAVA) == C_JAVA)
+
+#define CNL_SAVE_DEFINEDEF() \
+do { \
+ curlinepos = charno; \
+ readline (&curlb, inf); \
+ lp = curlb.buffer; \
+ quotednl = false; \
+ newndx = curndx; \
+} while (0)
+
+#define CNL() \
+do { \
+ CNL_SAVE_DEFINEDEF(); \
+ if (savetoken.valid) \
+ { \
+ token = savetoken; \
+ savetoken.valid = false; \
+ } \
+ definedef = dnone; \
+} while (0)
+
+
+static void
+make_C_tag (bool isfun)
+{
+ /* This function is never called when token.valid is false, but
+ we must protect against invalid input or internal errors. */
+ if (token.valid)
+ make_tag (token_name.buffer, token_name.len, isfun, token.line,
+ token.offset+token.length+1, token.lineno, token.linepos);
+ else if (DEBUG)
+ { /* this branch is optimized away if !DEBUG */
+ make_tag (concat ("INVALID TOKEN:-->", token_name.buffer, ""),
+ token_name.len + 17, isfun, token.line,
+ token.offset+token.length+1, token.lineno, token.linepos);
+ error ("INVALID TOKEN");
+ }
+
+ token.valid = false;
+}
+
+
+/*
+ * C_entries ()
+ * This routine finds functions, variables, typedefs,
+ * #define's, enum constants and struct/union/enum definitions in
+ * C syntax and adds them to the list.
+ */
+static void
+C_entries (int c_ext, FILE *inf)
+ /* extension of C */
+ /* input file */
+{
+ register char c; /* latest char read; '\0' for end of line */
+ register char *lp; /* pointer one beyond the character `c' */
+ int curndx, newndx; /* indices for current and new lb */
+ register int tokoff; /* offset in line of start of current token */
+ register int toklen; /* length of current token */
+ const char *qualifier; /* string used to qualify names */
+ int qlen; /* length of qualifier */
+ int bracelev; /* current brace level */
+ int bracketlev; /* current bracket level */
+ int parlev; /* current parenthesis level */
+ int attrparlev; /* __attribute__ parenthesis level */
+ int templatelev; /* current template level */
+ int typdefbracelev; /* bracelev where a typedef struct body begun */
+ bool incomm, inquote, inchar, quotednl, midtoken;
+ bool yacc_rules; /* in the rules part of a yacc file */
+ struct tok savetoken = {0}; /* token saved during preprocessor handling */
+
+
+ linebuffer_init (&lbs[0].lb);
+ linebuffer_init (&lbs[1].lb);
+ if (cstack.size == 0)
+ {
+ cstack.size = (DEBUG) ? 1 : 4;
+ cstack.nl = 0;
+ cstack.cname = xnew (cstack.size, char *);
+ cstack.bracelev = xnew (cstack.size, int);
+ }
+
+ tokoff = toklen = typdefbracelev = 0; /* keep compiler quiet */
+ curndx = newndx = 0;
+ lp = curlb.buffer;
+ *lp = 0;
+
+ fvdef = fvnone; fvextern = false; typdef = tnone;
+ structdef = snone; definedef = dnone; objdef = onone;
+ yacc_rules = false;
+ midtoken = inquote = inchar = incomm = quotednl = false;
+ token.valid = savetoken.valid = false;
+ bracelev = bracketlev = parlev = attrparlev = templatelev = 0;
+ if (cjava)
+ { qualifier = "."; qlen = 1; }
+ else
+ { qualifier = "::"; qlen = 2; }
+
+
+ while (!feof (inf))
+ {
+ c = *lp++;
+ if (c == '\\')
+ {
+ /* If we are at the end of the line, the next character is a
+ '\0'; do not skip it, because it is what tells us
+ to read the next line. */
+ if (*lp == '\0')
+ {
+ quotednl = true;
+ continue;
+ }
+ lp++;
+ c = ' ';
+ }
+ else if (incomm)
+ {
+ switch (c)
+ {
+ case '*':
+ if (*lp == '/')
+ {
+ c = *lp++;
+ incomm = false;
+ }
+ break;
+ case '\0':
+ /* Newlines inside comments do not end macro definitions in
+ traditional cpp. */
+ CNL_SAVE_DEFINEDEF ();
+ break;
+ }
+ continue;
+ }
+ else if (inquote)
+ {
+ switch (c)
+ {
+ case '"':
+ inquote = false;
+ break;
+ case '\0':
+ /* Newlines inside strings do not end macro definitions
+ in traditional cpp, even though compilers don't
+ usually accept them. */
+ CNL_SAVE_DEFINEDEF ();
+ break;
+ }
+ continue;
+ }
+ else if (inchar)
+ {
+ switch (c)
+ {
+ case '\0':
+ /* Hmmm, something went wrong. */
+ CNL ();
+ /* FALLTHRU */
+ case '\'':
+ inchar = false;
+ break;
+ }
+ continue;
+ }
+ else switch (c)
+ {
+ case '"':
+ inquote = true;
+ if (bracketlev > 0)
+ continue;
+ if (inattribute)
+ break;
+ switch (fvdef)
+ {
+ case fdefunkey:
+ case fstartlist:
+ case finlist:
+ case fignore:
+ case vignore:
+ break;
+ default:
+ fvextern = false;
+ fvdef = fvnone;
+ }
+ continue;
+ case '\'':
+ inchar = true;
+ if (bracketlev > 0)
+ continue;
+ if (inattribute)
+ break;
+ if (fvdef != finlist && fvdef != fignore && fvdef != vignore)
+ {
+ fvextern = false;
+ fvdef = fvnone;
+ }
+ continue;
+ case '/':
+ if (*lp == '*')
+ {
+ incomm = true;
+ lp++;
+ c = ' ';
+ if (bracketlev > 0)
+ continue;
+ }
+ else if (/* cplpl && */ *lp == '/')
+ {
+ c = '\0';
+ }
+ break;
+ case '%':
+ if ((c_ext & YACC) && *lp == '%')
+ {
+ /* Entering or exiting rules section in yacc file. */
+ lp++;
+ definedef = dnone; fvdef = fvnone; fvextern = false;
+ typdef = tnone; structdef = snone;
+ midtoken = inquote = inchar = incomm = quotednl = false;
+ bracelev = 0;
+ yacc_rules = !yacc_rules;
+ continue;
+ }
+ else
+ break;
+ case '#':
+ if (definedef == dnone)
+ {
+ char *cp;
+ bool cpptoken = true;
+
+ /* Look back on this line. If all blanks, or nonblanks
+ followed by an end of comment, this is a preprocessor
+ token. */
+ for (cp = newlb.buffer; cp < lp-1; cp++)
+ if (!iswhite (*cp))
+ {
+ if (*cp == '*' && cp[1] == '/')
+ {
+ cp++;
+ cpptoken = true;
+ }
+ else
+ cpptoken = false;
+ }
+ if (cpptoken)
+ {
+ definedef = dsharpseen;
+ /* This is needed for tagging enum values: when there are
+ preprocessor conditionals inside the enum, we need to
+ reset the value of fvdef so that the next enum value is
+ tagged even though the one before it did not end in a
+ comma. */
+ if (fvdef == vignore && instruct && parlev == 0)
+ {
+ if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3))
+ fvdef = fvnone;
+ }
+ }
+ } /* if (definedef == dnone) */
+ continue;
+ case '[':
+ bracketlev++;
+ continue;
+ default:
+ if (bracketlev > 0)
+ {
+ if (c == ']')
+ --bracketlev;
+ else if (c == '\0')
+ CNL_SAVE_DEFINEDEF ();
+ continue;
+ }
+ break;
+ } /* switch (c) */
+
+
+ /* Consider token only if some involved conditions are satisfied. */
+ if (typdef != tignore
+ && definedef != dignorerest
+ && fvdef != finlist
+ && templatelev == 0
+ && (definedef != dnone
+ || structdef != scolonseen)
+ && !inattribute)
+ {
+ if (midtoken)
+ {
+ if (endtoken (c))
+ {
+ if (c == ':' && *lp == ':' && begtoken (lp[1]))
+ /* This handles :: in the middle,
+ but not at the beginning of an identifier.
+ Also, space-separated :: is not recognized. */
+ {
+ if (c_ext & C_AUTO) /* automatic detection of C++ */
+ c_ext = (c_ext | C_PLPL) & ~C_AUTO;
+ lp += 2;
+ toklen += 2;
+ c = lp[-1];
+ goto still_in_token;
+ }
+ else
+ {
+ bool funorvar = false;
+
+ if (yacc_rules
+ || consider_token (newlb.buffer + tokoff, toklen, c,
+ &c_ext, bracelev, parlev,
+ &funorvar))
+ {
+ if (fvdef == foperator)
+ {
+ char *oldlp = lp;
+ lp = skip_spaces (lp-1);
+ if (*lp != '\0')
+ lp += 1;
+ while (*lp != '\0'
+ && !iswhite (*lp) && *lp != '(')
+ lp += 1;
+ c = *lp++;
+ toklen += lp - oldlp;
+ }
+ token.named = false;
+ if (!plainc
+ && nestlev > 0 && definedef == dnone)
+ /* in struct body */
+ {
+ int len;
+ write_classname (&token_name, qualifier);
+ len = token_name.len;
+ linebuffer_setlen (&token_name, len+qlen+toklen);
+ sprintf (token_name.buffer + len, "%s%.*s",
+ qualifier, toklen, newlb.buffer + tokoff);
+ token.named = true;
+ }
+ else if (objdef == ocatseen)
+ /* Objective C category */
+ {
+ int len = strlen (objtag) + 2 + toklen;
+ linebuffer_setlen (&token_name, len);
+ sprintf (token_name.buffer, "%s(%.*s)",
+ objtag, toklen, newlb.buffer + tokoff);
+ token.named = true;
+ }
+ else if (objdef == omethodtag
+ || objdef == omethodparm)
+ /* Objective C method */
+ {
+ token.named = true;
+ }
+ else if (fvdef == fdefunname)
+ /* GNU DEFUN and similar macros */
+ {
+ bool defun = (newlb.buffer[tokoff] == 'F');
+ int off = tokoff;
+ int len = toklen;
+
+ /* Rewrite the tag so that emacs lisp DEFUNs
+ can be found by their elisp name */
+ if (defun)
+ {
+ off += 1;
+ len -= 1;
+ }
+ linebuffer_setlen (&token_name, len);
+ memcpy (token_name.buffer,
+ newlb.buffer + off, len);
+ token_name.buffer[len] = '\0';
+ if (defun)
+ while (--len >= 0)
+ if (token_name.buffer[len] == '_')
+ token_name.buffer[len] = '-';
+ token.named = defun;
+ }
+ else
+ {
+ linebuffer_setlen (&token_name, toklen);
+ memcpy (token_name.buffer,
+ newlb.buffer + tokoff, toklen);
+ token_name.buffer[toklen] = '\0';
+ /* Name macros and members. */
+ token.named = (structdef == stagseen
+ || typdef == ttypeseen
+ || typdef == tend
+ || (funorvar
+ && definedef == dignorerest)
+ || (funorvar
+ && definedef == dnone
+ && structdef == snone
+ && bracelev > 0));
+ }
+ token.lineno = lineno;
+ token.offset = tokoff;
+ token.length = toklen;
+ token.line = newlb.buffer;
+ token.linepos = newlinepos;
+ token.valid = true;
+
+ if (definedef == dnone
+ && (fvdef == fvnameseen
+ || fvdef == foperator
+ || structdef == stagseen
+ || typdef == tend
+ || typdef == ttypeseen
+ || objdef != onone))
+ {
+ if (current_lb_is_new)
+ switch_line_buffers ();
+ }
+ else if (definedef != dnone
+ || fvdef == fdefunname
+ || instruct)
+ make_C_tag (funorvar);
+ }
+ else /* not yacc and consider_token failed */
+ {
+ if (inattribute && fvdef == fignore)
+ {
+ /* We have just met __attribute__ after a
+ function parameter list: do not tag the
+ function again. */
+ fvdef = fvnone;
+ }
+ }
+ midtoken = false;
+ }
+ } /* if (endtoken (c)) */
+ else if (intoken (c))
+ still_in_token:
+ {
+ toklen++;
+ continue;
+ }
+ } /* if (midtoken) */
+ else if (begtoken (c))
+ {
+ switch (definedef)
+ {
+ case dnone:
+ switch (fvdef)
+ {
+ case fstartlist:
+ /* This prevents tagging fb in
+ void (__attribute__((noreturn)) *fb) (void);
+ Fixing this is not easy and not very important. */
+ fvdef = finlist;
+ continue;
+ case flistseen:
+ if (plainc || declarations)
+ {
+ make_C_tag (true); /* a function */
+ fvdef = fignore;
+ }
+ break;
+ }
+ if (structdef == stagseen && !cjava)
+ {
+ popclass_above (bracelev);
+ structdef = snone;
+ }
+ break;
+ case dsharpseen:
+ savetoken = token;
+ break;
+ }
+ if (!yacc_rules || lp == newlb.buffer + 1)
+ {
+ tokoff = lp - 1 - newlb.buffer;
+ toklen = 1;
+ midtoken = true;
+ }
+ continue;
+ } /* if (begtoken) */
+ } /* if must look at token */
+
+
+ /* Detect end of line, colon, comma, semicolon and various braces
+ after having handled a token.*/
+ switch (c)
+ {
+ case ':':
+ if (inattribute)
+ break;
+ if (yacc_rules && token.offset == 0 && token.valid)
+ {
+ make_C_tag (false); /* a yacc function */
+ break;
+ }
+ if (definedef != dnone)
+ break;
+ switch (objdef)
+ {
+ case otagseen:
+ objdef = oignore;
+ make_C_tag (true); /* an Objective C class */
+ break;
+ case omethodtag:
+ case omethodparm:
+ objdef = omethodcolon;
+ int toklen = token_name.len;
+ linebuffer_setlen (&token_name, toklen + 1);
+ strcpy (token_name.buffer + toklen, ":");
+ break;
+ }
+ if (structdef == stagseen)
+ {
+ structdef = scolonseen;
+ break;
+ }
+ /* Should be useless, but may be work as a safety net. */
+ if (cplpl && fvdef == flistseen)
+ {
+ make_C_tag (true); /* a function */
+ fvdef = fignore;
+ break;
+ }
+ break;
+ case ';':
+ if (definedef != dnone || inattribute)
+ break;
+ switch (typdef)
+ {
+ case tend:
+ case ttypeseen:
+ make_C_tag (false); /* a typedef */
+ typdef = tnone;
+ fvdef = fvnone;
+ break;
+ case tnone:
+ case tinbody:
+ case tignore:
+ switch (fvdef)
+ {
+ case fignore:
+ if (typdef == tignore || cplpl)
+ fvdef = fvnone;
+ break;
+ case fvnameseen:
+ if ((globals && bracelev == 0 && (!fvextern || declarations))
+ || (members && instruct))
+ make_C_tag (false); /* a variable */
+ fvextern = false;
+ fvdef = fvnone;
+ token.valid = false;
+ break;
+ case flistseen:
+ if ((declarations
+ && (cplpl || !instruct)
+ && (typdef == tnone || (typdef != tignore && instruct)))
+ || (members
+ && plainc && instruct))
+ make_C_tag (true); /* a function */
+ /* FALLTHRU */
+ default:
+ fvextern = false;
+ fvdef = fvnone;
+ if (declarations
+ && cplpl && structdef == stagseen)
+ make_C_tag (false); /* forward declaration */
+ else
+ token.valid = false;
+ } /* switch (fvdef) */
+ /* FALLTHRU */
+ default:
+ if (!instruct)
+ typdef = tnone;
+ }
+ if (structdef == stagseen)
+ structdef = snone;
+ break;
+ case ',':
+ if (definedef != dnone || inattribute)
+ break;
+ switch (objdef)
+ {
+ case omethodtag:
+ case omethodparm:
+ make_C_tag (true); /* an Objective C method */
+ objdef = oinbody;
+ break;
+ }
+ switch (fvdef)
+ {
+ case fdefunkey:
+ case foperator:
+ case fstartlist:
+ case finlist:
+ case fignore:
+ break;
+ case vignore:
+ if (instruct && parlev == 0)
+ fvdef = fvnone;
+ break;
+ case fdefunname:
+ fvdef = fignore;
+ break;
+ case fvnameseen:
+ if (parlev == 0
+ && ((globals
+ && bracelev == 0
+ && templatelev == 0
+ && (!fvextern || declarations))
+ || (members && instruct)))
+ make_C_tag (false); /* a variable */
+ break;
+ case flistseen:
+ if ((declarations && typdef == tnone && !instruct)
+ || (members && typdef != tignore && instruct))
+ {
+ make_C_tag (true); /* a function */
+ fvdef = fvnameseen;
+ }
+ else if (!declarations)
+ fvdef = fvnone;
+ token.valid = false;
+ break;
+ default:
+ fvdef = fvnone;
+ }
+ if (structdef == stagseen)
+ structdef = snone;
+ break;
+ case ']':
+ if (definedef != dnone || inattribute)
+ break;
+ if (structdef == stagseen)
+ structdef = snone;
+ switch (typdef)
+ {
+ case ttypeseen:
+ case tend:
+ typdef = tignore;
+ make_C_tag (false); /* a typedef */
+ break;
+ case tnone:
+ case tinbody:
+ switch (fvdef)
+ {
+ case foperator:
+ case finlist:
+ case fignore:
+ case vignore:
+ break;
+ case fvnameseen:
+ if ((members && bracelev == 1)
+ || (globals && bracelev == 0
+ && (!fvextern || declarations)))
+ make_C_tag (false); /* a variable */
+ /* FALLTHRU */
+ default:
+ fvdef = fvnone;
+ }
+ break;
+ }
+ break;
+ case '(':
+ if (inattribute)
+ {
+ attrparlev++;
+ break;
+ }
+ if (definedef != dnone)
+ break;
+ if (objdef == otagseen && parlev == 0)
+ objdef = oparenseen;
+ switch (fvdef)
+ {
+ case fvnameseen:
+ if (typdef == ttypeseen
+ && *lp != '*'
+ && !instruct)
+ {
+ /* This handles constructs like:
+ typedef void OperatorFun (int fun); */
+ make_C_tag (false);
+ typdef = tignore;
+ fvdef = fignore;
+ break;
+ }
+ /* FALLTHRU */
+ case foperator:
+ fvdef = fstartlist;
+ break;
+ case flistseen:
+ fvdef = finlist;
+ break;
+ }
+ parlev++;
+ break;
+ case ')':
+ if (inattribute)
+ {
+ if (--attrparlev == 0)
+ inattribute = false;
+ break;
+ }
+ if (definedef != dnone)
+ break;
+ if (objdef == ocatseen && parlev == 1)
+ {
+ make_C_tag (true); /* an Objective C category */
+ objdef = oignore;
+ }
+ if (--parlev == 0)
+ {
+ switch (fvdef)
+ {
+ case fstartlist:
+ case finlist:
+ fvdef = flistseen;
+ break;
+ }
+ if (!instruct
+ && (typdef == tend
+ || typdef == ttypeseen))
+ {
+ typdef = tignore;
+ make_C_tag (false); /* a typedef */
+ }
+ }
+ else if (parlev < 0) /* can happen due to ill-conceived #if's. */
+ parlev = 0;
+ break;
+ case '{':
+ if (definedef != dnone)
+ break;
+ if (typdef == ttypeseen)
+ {
+ /* Whenever typdef is set to tinbody (currently only
+ here), typdefbracelev should be set to bracelev. */
+ typdef = tinbody;
+ typdefbracelev = bracelev;
+ }
+ switch (fvdef)
+ {
+ case flistseen:
+ make_C_tag (true); /* a function */
+ /* FALLTHRU */
+ case fignore:
+ fvdef = fvnone;
+ break;
+ case fvnone:
+ switch (objdef)
+ {
+ case otagseen:
+ make_C_tag (true); /* an Objective C class */
+ objdef = oignore;
+ break;
+ case omethodtag:
+ case omethodparm:
+ make_C_tag (true); /* an Objective C method */
+ objdef = oinbody;
+ break;
+ default:
+ /* Neutralize `extern "C" {' grot. */
+ if (bracelev == 0 && structdef == snone && nestlev == 0
+ && typdef == tnone)
+ bracelev = -1;
+ }
+ break;
+ }
+ switch (structdef)
+ {
+ case skeyseen: /* unnamed struct */
+ pushclass_above (bracelev, NULL, 0);
+ structdef = snone;
+ break;
+ case stagseen: /* named struct or enum */
+ case scolonseen: /* a class */
+ pushclass_above (bracelev,token.line+token.offset, token.length);
+ structdef = snone;
+ make_C_tag (false); /* a struct or enum */
+ break;
+ }
+ bracelev += 1;
+ break;
+ case '*':
+ if (definedef != dnone)
+ break;
+ if (fvdef == fstartlist)
+ {
+ fvdef = fvnone; /* avoid tagging `foo' in `foo (*bar()) ()' */
+ token.valid = false;
+ }
+ break;
+ case '}':
+ if (definedef != dnone)
+ break;
+ bracelev -= 1;
+ if (!ignoreindent && lp == newlb.buffer + 1)
+ {
+ if (bracelev != 0)
+ token.valid = false; /* unexpected value, token unreliable */
+ bracelev = 0; /* reset brace level if first column */
+ parlev = 0; /* also reset paren level, just in case... */
+ }
+ else if (bracelev < 0)
+ {
+ token.valid = false; /* something gone amiss, token unreliable */
+ bracelev = 0;
+ }
+ if (bracelev == 0 && fvdef == vignore)
+ fvdef = fvnone; /* end of function */
+ popclass_above (bracelev);
+ structdef = snone;
+ /* Only if typdef == tinbody is typdefbracelev significant. */
+ if (typdef == tinbody && bracelev <= typdefbracelev)
+ {
+ assert (bracelev == typdefbracelev);
+ typdef = tend;
+ }
+ break;
+ case '=':
+ if (definedef != dnone)
+ break;
+ switch (fvdef)
+ {
+ case foperator:
+ case finlist:
+ case fignore:
+ case vignore:
+ break;
+ case fvnameseen:
+ if ((members && bracelev == 1)
+ || (globals && bracelev == 0 && (!fvextern || declarations)))
+ make_C_tag (false); /* a variable */
+ /* FALLTHRU */
+ default:
+ fvdef = vignore;
+ }
+ break;
+ case '<':
+ if (cplpl
+ && (structdef == stagseen || fvdef == fvnameseen))
+ {
+ templatelev++;
+ break;
+ }
+ goto resetfvdef;
+ case '>':
+ if (templatelev > 0)
+ {
+ templatelev--;
+ break;
+ }
+ goto resetfvdef;
+ case '+':
+ case '-':
+ if (objdef == oinbody && bracelev == 0)
+ {
+ objdef = omethodsign;
+ break;
+ }
+ /* FALLTHRU */
+ resetfvdef:
+ case '#': case '~': case '&': case '%': case '/':
+ case '|': case '^': case '!': case '.': case '?':
+ if (definedef != dnone)
+ break;
+ /* These surely cannot follow a function tag in C. */
+ switch (fvdef)
+ {
+ case foperator:
+ case finlist:
+ case fignore:
+ case vignore:
+ break;
+ default:
+ fvdef = fvnone;
+ }
+ break;
+ case '\0':
+ if (objdef == otagseen)
+ {
+ make_C_tag (true); /* an Objective C class */
+ objdef = oignore;
+ }
+ /* If a macro spans multiple lines don't reset its state. */
+ if (quotednl)
+ CNL_SAVE_DEFINEDEF ();
+ else
+ CNL ();
+ break;
+ } /* switch (c) */
+
+ } /* while not eof */
+
+ free (lbs[0].lb.buffer);
+ free (lbs[1].lb.buffer);
+}
+
+/*
+ * Process either a C++ file or a C file depending on the setting
+ * of a global flag.
+ */
+static void
+default_C_entries (FILE *inf)
+{
+ C_entries (cplusplus ? C_PLPL : C_AUTO, inf);
+}
+
+/* Always do plain C. */
+static void
+plain_C_entries (FILE *inf)
+{
+ C_entries (0, inf);
+}
+
+/* Always do C++. */
+static void
+Cplusplus_entries (FILE *inf)
+{
+ C_entries (C_PLPL, inf);
+}
+
+/* Always do Java. */
+static void
+Cjava_entries (FILE *inf)
+{
+ C_entries (C_JAVA, inf);
+}
+
+/* Always do C*. */
+static void
+Cstar_entries (FILE *inf)
+{
+ C_entries (C_STAR, inf);
+}
+
+/* Always do Yacc. */
+static void
+Yacc_entries (FILE *inf)
+{
+ C_entries (YACC, inf);
+}
+
+\f
+/* Useful macros. */
+#define LOOP_ON_INPUT_LINES(file_pointer, line_buffer, char_pointer) \
+ for (; /* loop initialization */ \
+ !feof (file_pointer) /* loop test */ \
+ && /* instructions at start of loop */ \
+ (readline (&line_buffer, file_pointer), \
+ char_pointer = line_buffer.buffer, \
+ true); \
+ )
+
+#define LOOKING_AT(cp, kw) /* kw is the keyword, a literal string */ \
+ ((assert ("" kw), true) /* syntax error if not a literal string */ \
+ && strneq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \
+ && notinname ((cp)[sizeof (kw)-1]) /* end of kw */ \
+ && ((cp) = skip_spaces ((cp)+sizeof (kw)-1))) /* skip spaces */
+
+/* Similar to LOOKING_AT but does not use notinname, does not skip */
+#define LOOKING_AT_NOCASE(cp, kw) /* the keyword is a literal string */ \
+ ((assert ("" kw), true) /* syntax error if not a literal string */ \
+ && strncaseeq ((cp), kw, sizeof (kw)-1) /* cp points at kw */ \
+ && ((cp) += sizeof (kw)-1)) /* skip spaces */
+
+/*
+ * Read a file, but do no processing. This is used to do regexp
+ * matching on files that have no language defined.
+ */
+static void
+just_read_file (FILE *inf)
+{
+ while (!feof (inf))
+ readline (&lb, inf);
+}
+
+\f
+/* Fortran parsing */
+
+static void F_takeprec (void);
+static void F_getit (FILE *);
+
+static void
+F_takeprec (void)
+{
+ dbp = skip_spaces (dbp);
+ if (*dbp != '*')
+ return;
+ dbp++;
+ dbp = skip_spaces (dbp);
+ if (strneq (dbp, "(*)", 3))
+ {
+ dbp += 3;
+ return;
+ }
+ if (!ISDIGIT (*dbp))
+ {
+ --dbp; /* force failure */
+ return;
+ }
+ do
+ dbp++;
+ while (ISDIGIT (*dbp));
+}
+
+static void
+F_getit (FILE *inf)
+{
+ register char *cp;
+
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0')
+ {
+ readline (&lb, inf);
+ dbp = lb.buffer;
+ if (dbp[5] != '&')
+ return;
+ dbp += 6;
+ dbp = skip_spaces (dbp);
+ }
+ if (!ISALPHA (*dbp) && *dbp != '_' && *dbp != '$')
+ return;
+ for (cp = dbp + 1; *cp != '\0' && intoken (*cp); cp++)
+ continue;
+ make_tag (dbp, cp-dbp, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+}
+
+
+static void
+Fortran_functions (FILE *inf)
+{
+ LOOP_ON_INPUT_LINES (inf, lb, dbp)
+ {
+ if (*dbp == '%')
+ dbp++; /* Ratfor escape to fortran */
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0')
+ continue;
+
+ if (LOOKING_AT_NOCASE (dbp, "recursive"))
+ dbp = skip_spaces (dbp);
+
+ if (LOOKING_AT_NOCASE (dbp, "pure"))
+ dbp = skip_spaces (dbp);
+
+ if (LOOKING_AT_NOCASE (dbp, "elemental"))
+ dbp = skip_spaces (dbp);
+
+ switch (lowcase (*dbp))
+ {
+ case 'i':
+ if (nocase_tail ("integer"))
+ F_takeprec ();
+ break;
+ case 'r':
+ if (nocase_tail ("real"))
+ F_takeprec ();
+ break;
+ case 'l':
+ if (nocase_tail ("logical"))
+ F_takeprec ();
+ break;
+ case 'c':
+ if (nocase_tail ("complex") || nocase_tail ("character"))
+ F_takeprec ();
+ break;
+ case 'd':
+ if (nocase_tail ("double"))
+ {
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0')
+ continue;
+ if (nocase_tail ("precision"))
+ break;
+ continue;
+ }
+ break;
+ }
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0')
+ continue;
+ switch (lowcase (*dbp))
+ {
+ case 'f':
+ if (nocase_tail ("function"))
+ F_getit (inf);
+ continue;
+ case 's':
+ if (nocase_tail ("subroutine"))
+ F_getit (inf);
+ continue;
+ case 'e':
+ if (nocase_tail ("entry"))
+ F_getit (inf);
+ continue;
+ case 'b':
+ if (nocase_tail ("blockdata") || nocase_tail ("block data"))
+ {
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0') /* assume un-named */
+ make_tag ("blockdata", 9, true,
+ lb.buffer, dbp - lb.buffer, lineno, linecharno);
+ else
+ F_getit (inf); /* look for name */
+ }
+ continue;
+ }
+ }
+}
+
+\f
+/*
+ * Ada parsing
+ * Original code by
+ * Philippe Waroquiers (1998)
+ */
+
+/* Once we are positioned after an "interesting" keyword, let's get
+ the real tag value necessary. */
+static void
+Ada_getit (FILE *inf, const char *name_qualifier)
+{
+ register char *cp;
+ char *name;
+ char c;
+
+ while (!feof (inf))
+ {
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0'
+ || (dbp[0] == '-' && dbp[1] == '-'))
+ {
+ readline (&lb, inf);
+ dbp = lb.buffer;
+ }
+ switch (lowcase (*dbp))
+ {
+ case 'b':
+ if (nocase_tail ("body"))
+ {
+ /* Skipping body of procedure body or package body or ....
+ resetting qualifier to body instead of spec. */
+ name_qualifier = "/b";
+ continue;
+ }
+ break;
+ case 't':
+ /* Skipping type of task type or protected type ... */
+ if (nocase_tail ("type"))
+ continue;
+ break;
+ }
+ if (*dbp == '"')
+ {
+ dbp += 1;
+ for (cp = dbp; *cp != '\0' && *cp != '"'; cp++)
+ continue;
+ }
+ else
+ {
+ dbp = skip_spaces (dbp);
+ for (cp = dbp;
+ (*cp != '\0'
+ && (ISALPHA (*cp) || ISDIGIT (*cp) || *cp == '_' || *cp == '.'));
+ cp++)
+ continue;
+ if (cp == dbp)
+ return;
+ }
+ c = *cp;
+ *cp = '\0';
+ name = concat (dbp, name_qualifier, "");
+ *cp = c;
+ make_tag (name, strlen (name), true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ free (name);
+ if (c == '"')
+ dbp = cp + 1;
+ return;
+ }
+}
+
+static void
+Ada_funcs (FILE *inf)
+{
+ bool inquote = false;
+ bool skip_till_semicolumn = false;
+
+ LOOP_ON_INPUT_LINES (inf, lb, dbp)
+ {
+ while (*dbp != '\0')
+ {
+ /* Skip a string i.e. "abcd". */
+ if (inquote || (*dbp == '"'))
+ {
+ dbp = strchr (dbp + !inquote, '"');
+ if (dbp != NULL)
+ {
+ inquote = false;
+ dbp += 1;
+ continue; /* advance char */
+ }
+ else
+ {
+ inquote = true;
+ break; /* advance line */
+ }
+ }
+
+ /* Skip comments. */
+ if (dbp[0] == '-' && dbp[1] == '-')
+ break; /* advance line */
+
+ /* Skip character enclosed in single quote i.e. 'a'
+ and skip single quote starting an attribute i.e. 'Image. */
+ if (*dbp == '\'')
+ {
+ dbp++ ;
+ if (*dbp != '\0')
+ dbp++;
+ continue;
+ }
+
+ if (skip_till_semicolumn)
+ {
+ if (*dbp == ';')
+ skip_till_semicolumn = false;
+ dbp++;
+ continue; /* advance char */
+ }
+
+ /* Search for beginning of a token. */
+ if (!begtoken (*dbp))
+ {
+ dbp++;
+ continue; /* advance char */
+ }
+
+ /* We are at the beginning of a token. */
+ switch (lowcase (*dbp))
+ {
+ case 'f':
+ if (!packages_only && nocase_tail ("function"))
+ Ada_getit (inf, "/f");
+ else
+ break; /* from switch */
+ continue; /* advance char */
+ case 'p':
+ if (!packages_only && nocase_tail ("procedure"))
+ Ada_getit (inf, "/p");
+ else if (nocase_tail ("package"))
+ Ada_getit (inf, "/s");
+ else if (nocase_tail ("protected")) /* protected type */
+ Ada_getit (inf, "/t");
+ else
+ break; /* from switch */
+ continue; /* advance char */
+
+ case 'u':
+ if (typedefs && !packages_only && nocase_tail ("use"))
+ {
+ /* when tagging types, avoid tagging use type Pack.Typename;
+ for this, we will skip everything till a ; */
+ skip_till_semicolumn = true;
+ continue; /* advance char */
+ }
+
+ case 't':
+ if (!packages_only && nocase_tail ("task"))
+ Ada_getit (inf, "/k");
+ else if (typedefs && !packages_only && nocase_tail ("type"))
+ {
+ Ada_getit (inf, "/t");
+ while (*dbp != '\0')
+ dbp += 1;
+ }
+ else
+ break; /* from switch */
+ continue; /* advance char */
+ }
+
+ /* Look for the end of the token. */
+ while (!endtoken (*dbp))
+ dbp++;
+
+ } /* advance char */
+ } /* advance line */
+}
+
+\f
+/*
+ * Unix and microcontroller assembly tag handling
+ * Labels: /^[a-zA-Z_.$][a-zA_Z0-9_.$]*[: ^I^J]/
+ * Idea by Bob Weiner, Motorola Inc. (1994)
+ */
+static void
+Asm_labels (FILE *inf)
+{
+ register char *cp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ /* If first char is alphabetic or one of [_.$], test for colon
+ following identifier. */
+ if (ISALPHA (*cp) || *cp == '_' || *cp == '.' || *cp == '$')
+ {
+ /* Read past label. */
+ cp++;
+ while (ISALNUM (*cp) || *cp == '_' || *cp == '.' || *cp == '$')
+ cp++;
+ if (*cp == ':' || iswhite (*cp))
+ /* Found end of label, so copy it and add it to the table. */
+ make_tag (lb.buffer, cp - lb.buffer, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ }
+}
+
+\f
+/*
+ * Perl support
+ * Perl sub names: /^sub[ \t\n]+[^ \t\n{]+/
+ * /^use constant[ \t\n]+[^ \t\n{=,;]+/
+ * Perl variable names: /^(my|local).../
+ * Original code by Bart Robinson <lomew@cs.utah.edu> (1995)
+ * Additions by Michael Ernst <mernst@alum.mit.edu> (1997)
+ * Ideas by Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> (2001)
+ */
+static void
+Perl_functions (FILE *inf)
+{
+ char *package = savestr ("main"); /* current package name */
+ register char *cp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ cp = skip_spaces (cp);
+
+ if (LOOKING_AT (cp, "package"))
+ {
+ free (package);
+ get_tag (cp, &package);
+ }
+ else if (LOOKING_AT (cp, "sub"))
+ {
+ char *pos, *sp;
+
+ subr:
+ sp = cp;
+ while (!notinname (*cp))
+ cp++;
+ if (cp == sp)
+ continue; /* nothing found */
+ if ((pos = strchr (sp, ':')) != NULL
+ && pos < cp && pos[1] == ':')
+ /* The name is already qualified. */
+ make_tag (sp, cp - sp, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ else
+ /* Qualify it. */
+ {
+ char savechar, *name;
+
+ savechar = *cp;
+ *cp = '\0';
+ name = concat (package, "::", sp);
+ *cp = savechar;
+ make_tag (name, strlen (name), true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ free (name);
+ }
+ }
+ else if (LOOKING_AT (cp, "use constant")
+ || LOOKING_AT (cp, "use constant::defer"))
+ {
+ /* For hash style multi-constant like
+ use constant { FOO => 123,
+ BAR => 456 };
+ only the first FOO is picked up. Parsing across the value
+ expressions would be difficult in general, due to possible nested
+ hashes, here-documents, etc. */
+ if (*cp == '{')
+ cp = skip_spaces (cp+1);
+ goto subr;
+ }
+ else if (globals) /* only if we are tagging global vars */
+ {
+ /* Skip a qualifier, if any. */
+ bool qual = LOOKING_AT (cp, "my") || LOOKING_AT (cp, "local");
+ /* After "my" or "local", but before any following paren or space. */
+ char *varstart = cp;
+
+ if (qual /* should this be removed? If yes, how? */
+ && (*cp == '$' || *cp == '@' || *cp == '%'))
+ {
+ varstart += 1;
+ do
+ cp++;
+ while (ISALNUM (*cp) || *cp == '_');
+ }
+ else if (qual)
+ {
+ /* Should be examining a variable list at this point;
+ could insist on seeing an open parenthesis. */
+ while (*cp != '\0' && *cp != ';' && *cp != '=' && *cp != ')')
+ cp++;
+ }
+ else
+ continue;
+
+ make_tag (varstart, cp - varstart, false,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ }
+ free (package);
+}
+
+
+/*
+ * Python support
+ * Look for /^[\t]*def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/
+ * Idea by Eric S. Raymond <esr@thyrsus.com> (1997)
+ * More ideas by seb bacon <seb@jamkit.com> (2002)
+ */
+static void
+Python_functions (FILE *inf)
+{
+ register char *cp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ cp = skip_spaces (cp);
+ if (LOOKING_AT (cp, "def") || LOOKING_AT (cp, "class"))
+ {
+ char *name = cp;
+ while (!notinname (*cp) && *cp != ':')
+ cp++;
+ make_tag (name, cp - name, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ }
+}
+
+\f
+/*
+ * PHP support
+ * Look for:
+ * - /^[ \t]*function[ \t\n]+[^ \t\n(]+/
+ * - /^[ \t]*class[ \t\n]+[^ \t\n]+/
+ * - /^[ \t]*define\(\"[^\"]+/
+ * Only with --members:
+ * - /^[ \t]*var[ \t\n]+\$[^ \t\n=;]/
+ * Idea by Diez B. Roggisch (2001)
+ */
+static void
+PHP_functions (FILE *inf)
+{
+ char *cp, *name;
+ bool search_identifier = false;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ cp = skip_spaces (cp);
+ name = cp;
+ if (search_identifier
+ && *cp != '\0')
+ {
+ while (!notinname (*cp))
+ cp++;
+ make_tag (name, cp - name, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ search_identifier = false;
+ }
+ else if (LOOKING_AT (cp, "function"))
+ {
+ if (*cp == '&')
+ cp = skip_spaces (cp+1);
+ if (*cp != '\0')
+ {
+ name = cp;
+ while (!notinname (*cp))
+ cp++;
+ make_tag (name, cp - name, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ else
+ search_identifier = true;
+ }
+ else if (LOOKING_AT (cp, "class"))
+ {
+ if (*cp != '\0')
+ {
+ name = cp;
+ while (*cp != '\0' && !iswhite (*cp))
+ cp++;
+ make_tag (name, cp - name, false,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ else
+ search_identifier = true;
+ }
+ else if (strneq (cp, "define", 6)
+ && (cp = skip_spaces (cp+6))
+ && *cp++ == '('
+ && (*cp == '"' || *cp == '\''))
+ {
+ char quote = *cp++;
+ name = cp;
+ while (*cp != quote && *cp != '\0')
+ cp++;
+ make_tag (name, cp - name, false,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ else if (members
+ && LOOKING_AT (cp, "var")
+ && *cp == '$')
+ {
+ name = cp;
+ while (!notinname (*cp))
+ cp++;
+ make_tag (name, cp - name, false,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+ }
+}
+
+\f
+/*
+ * Cobol tag functions
+ * We could look for anything that could be a paragraph name.
+ * i.e. anything that starts in column 8 is one word and ends in a full stop.
+ * Idea by Corny de Souza (1993)
+ */
+static void
+Cobol_paragraphs (FILE *inf)
+{
+ register char *bp, *ep;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ {
+ if (lb.len < 9)
+ continue;
+ bp += 8;
+
+ /* If eoln, compiler option or comment ignore whole line. */
+ if (bp[-1] != ' ' || !ISALNUM (bp[0]))
+ continue;
+
+ for (ep = bp; ISALNUM (*ep) || *ep == '-'; ep++)
+ continue;
+ if (*ep++ == '.')
+ make_tag (bp, ep - bp, true,
+ lb.buffer, ep - lb.buffer + 1, lineno, linecharno);
+ }
+}
+
+\f
+/*
+ * Makefile support
+ * Ideas by Assar Westerlund <assar@sics.se> (2001)
+ */
+static void
+Makefile_targets (FILE *inf)
+{
+ register char *bp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ {
+ if (*bp == '\t' || *bp == '#')
+ continue;
+ while (*bp != '\0' && *bp != '=' && *bp != ':')
+ bp++;
+ if (*bp == ':' || (globals && *bp == '='))
+ {
+ /* We should detect if there is more than one tag, but we do not.
+ We just skip initial and final spaces. */
+ char * namestart = skip_spaces (lb.buffer);
+ while (--bp > namestart)
+ if (!notinname (*bp))
+ break;
+ make_tag (namestart, bp - namestart + 1, true,
+ lb.buffer, bp - lb.buffer + 2, lineno, linecharno);
+ }
+ }
+}
+
+\f
+/*
+ * Pascal parsing
+ * Original code by Mosur K. Mohan (1989)
+ *
+ * Locates tags for procedures & functions. Doesn't do any type- or
+ * var-definitions. It does look for the keyword "extern" or
+ * "forward" immediately following the procedure statement; if found,
+ * the tag is skipped.
+ */
+static void
+Pascal_functions (FILE *inf)
+{
+ linebuffer tline; /* mostly copied from C_entries */
+ long save_lcno;
+ int save_lineno, namelen, taglen;
+ char c, *name;
+
+ bool /* each of these flags is true if: */
+ incomment, /* point is inside a comment */
+ inquote, /* point is inside '..' string */
+ get_tagname, /* point is after PROCEDURE/FUNCTION
+ keyword, so next item = potential tag */
+ found_tag, /* point is after a potential tag */
+ inparms, /* point is within parameter-list */
+ verify_tag; /* point has passed the parm-list, so the
+ next token will determine whether this
+ is a FORWARD/EXTERN to be ignored, or
+ whether it is a real tag */
+
+ save_lcno = save_lineno = namelen = taglen = 0; /* keep compiler quiet */
+ name = NULL; /* keep compiler quiet */
+ dbp = lb.buffer;
+ *dbp = '\0';
+ linebuffer_init (&tline);
+
+ incomment = inquote = false;
+ found_tag = false; /* have a proc name; check if extern */
+ get_tagname = false; /* found "procedure" keyword */
+ inparms = false; /* found '(' after "proc" */
+ verify_tag = false; /* check if "extern" is ahead */
+
+
+ while (!feof (inf)) /* long main loop to get next char */
+ {
+ c = *dbp++;
+ if (c == '\0') /* if end of line */
+ {
+ readline (&lb, inf);
+ dbp = lb.buffer;
+ if (*dbp == '\0')
+ continue;
+ if (!((found_tag && verify_tag)
+ || get_tagname))
+ c = *dbp++; /* only if don't need *dbp pointing
+ to the beginning of the name of
+ the procedure or function */
+ }
+ if (incomment)
+ {
+ if (c == '}') /* within { } comments */
+ incomment = false;
+ else if (c == '*' && *dbp == ')') /* within (* *) comments */
+ {
+ dbp++;
+ incomment = false;
+ }
+ continue;
+ }
+ else if (inquote)
+ {
+ if (c == '\'')
+ inquote = false;
+ continue;
+ }
+ else
+ switch (c)
+ {
+ case '\'':
+ inquote = true; /* found first quote */
+ continue;
+ case '{': /* found open { comment */
+ incomment = true;
+ continue;
+ case '(':
+ if (*dbp == '*') /* found open (* comment */
+ {
+ incomment = true;
+ dbp++;
+ }
+ else if (found_tag) /* found '(' after tag, i.e., parm-list */
+ inparms = true;
+ continue;
+ case ')': /* end of parms list */
+ if (inparms)
+ inparms = false;
+ continue;
+ case ';':
+ if (found_tag && !inparms) /* end of proc or fn stmt */
+ {
+ verify_tag = true;
+ break;
+ }
+ continue;
+ }
+ if (found_tag && verify_tag && (*dbp != ' '))
+ {
+ /* Check if this is an "extern" declaration. */
+ if (*dbp == '\0')
+ continue;
+ if (lowcase (*dbp) == 'e')
+ {
+ if (nocase_tail ("extern")) /* superfluous, really! */
+ {
+ found_tag = false;
+ verify_tag = false;
+ }
+ }
+ else if (lowcase (*dbp) == 'f')
+ {
+ if (nocase_tail ("forward")) /* check for forward reference */
+ {
+ found_tag = false;
+ verify_tag = false;
+ }
+ }
+ if (found_tag && verify_tag) /* not external proc, so make tag */
+ {
+ found_tag = false;
+ verify_tag = false;
+ make_tag (name, namelen, true,
+ tline.buffer, taglen, save_lineno, save_lcno);
+ continue;
+ }
+ }
+ if (get_tagname) /* grab name of proc or fn */
+ {
+ char *cp;
+
+ if (*dbp == '\0')
+ continue;
+
+ /* Find block name. */
+ for (cp = dbp + 1; *cp != '\0' && !endtoken (*cp); cp++)
+ continue;
+
+ /* Save all values for later tagging. */
+ linebuffer_setlen (&tline, lb.len);
+ strcpy (tline.buffer, lb.buffer);
+ save_lineno = lineno;
+ save_lcno = linecharno;
+ name = tline.buffer + (dbp - lb.buffer);
+ namelen = cp - dbp;
+ taglen = cp - lb.buffer + 1;
+
+ dbp = cp; /* set dbp to e-o-token */
+ get_tagname = false;
+ found_tag = true;
+ continue;
+
+ /* And proceed to check for "extern". */
+ }
+ else if (!incomment && !inquote && !found_tag)
+ {
+ /* Check for proc/fn keywords. */
+ switch (lowcase (c))
+ {
+ case 'p':
+ if (nocase_tail ("rocedure")) /* c = 'p', dbp has advanced */
+ get_tagname = true;
+ continue;
+ case 'f':
+ if (nocase_tail ("unction"))
+ get_tagname = true;
+ continue;
+ }
+ }
+ } /* while not eof */
+
+ free (tline.buffer);
+}
+
+\f
+/*
+ * Lisp tag functions
+ * look for (def or (DEF, quote or QUOTE
+ */
+
+static void L_getit (void);
+
+static void
+L_getit (void)
+{
+ if (*dbp == '\'') /* Skip prefix quote */
+ dbp++;
+ else if (*dbp == '(')
+ {
+ dbp++;
+ /* Try to skip "(quote " */
+ if (!LOOKING_AT (dbp, "quote") && !LOOKING_AT (dbp, "QUOTE"))
+ /* Ok, then skip "(" before name in (defstruct (foo)) */
+ dbp = skip_spaces (dbp);
+ }
+ get_tag (dbp, NULL);
+}
+
+static void
+Lisp_functions (FILE *inf)
+{
+ LOOP_ON_INPUT_LINES (inf, lb, dbp)
+ {
+ if (dbp[0] != '(')
+ continue;
+
+ /* "(defvar foo)" is a declaration rather than a definition. */
+ if (! declarations)
+ {
+ char *p = dbp + 1;
+ if (LOOKING_AT (p, "defvar"))
+ {
+ p = skip_name (p); /* past var name */
+ p = skip_spaces (p);
+ if (*p == ')')
+ continue;
+ }
+ }
+
+ if (strneq (dbp + 1, "cl-", 3) || strneq (dbp + 1, "CL-", 3))
+ dbp += 3;
+
+ if (strneq (dbp+1, "def", 3) || strneq (dbp+1, "DEF", 3))
+ {
+ dbp = skip_non_spaces (dbp);
+ dbp = skip_spaces (dbp);
+ L_getit ();
+ }
+ else
+ {
+ /* Check for (foo::defmumble name-defined ... */
+ do
+ dbp++;
+ while (!notinname (*dbp) && *dbp != ':');
+ if (*dbp == ':')
+ {
+ do
+ dbp++;
+ while (*dbp == ':');
+
+ if (strneq (dbp, "def", 3) || strneq (dbp, "DEF", 3))
+ {
+ dbp = skip_non_spaces (dbp);
+ dbp = skip_spaces (dbp);
+ L_getit ();
+ }
+ }
+ }
+ }
+}
+
+\f
+/*
+ * Lua script language parsing
+ * Original code by David A. Capello <dacap@users.sourceforge.net> (2004)
+ *
+ * "function" and "local function" are tags if they start at column 1.
+ */
+static void
+Lua_functions (FILE *inf)
+{
+ register char *bp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ {
+ if (bp[0] != 'f' && bp[0] != 'l')
+ continue;
+
+ (void)LOOKING_AT (bp, "local"); /* skip possible "local" */
+
+ if (LOOKING_AT (bp, "function"))
+ get_tag (bp, NULL);
+ }
+}
+
+\f
+/*
+ * PostScript tags
+ * Just look for lines where the first character is '/'
+ * Also look at "defineps" for PSWrap
+ * Ideas by:
+ * Richard Mlynarik <mly@adoc.xerox.com> (1997)
+ * Masatake Yamato <masata-y@is.aist-nara.ac.jp> (1999)
+ */
+static void
+PS_functions (FILE *inf)
+{
+ register char *bp, *ep;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ {
+ if (bp[0] == '/')
+ {
+ for (ep = bp+1;
+ *ep != '\0' && *ep != ' ' && *ep != '{';
+ ep++)
+ continue;
+ make_tag (bp, ep - bp, true,
+ lb.buffer, ep - lb.buffer + 1, lineno, linecharno);
+ }
+ else if (LOOKING_AT (bp, "defineps"))
+ get_tag (bp, NULL);
+ }
+}
+
+\f
+/*
+ * Forth tags
+ * Ignore anything after \ followed by space or in ( )
+ * Look for words defined by :
+ * Look for constant, code, create, defer, value, and variable
+ * OBP extensions: Look for buffer:, field,
+ * Ideas by Eduardo Horvath <eeh@netbsd.org> (2004)
+ */
+static void
+Forth_words (FILE *inf)
+{
+ register char *bp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ while ((bp = skip_spaces (bp))[0] != '\0')
+ if (bp[0] == '\\' && iswhite (bp[1]))
+ break; /* read next line */
+ else if (bp[0] == '(' && iswhite (bp[1]))
+ do /* skip to ) or eol */
+ bp++;
+ while (*bp != ')' && *bp != '\0');
+ else if ((bp[0] == ':' && iswhite (bp[1]) && bp++)
+ || LOOKING_AT_NOCASE (bp, "constant")
+ || LOOKING_AT_NOCASE (bp, "code")
+ || LOOKING_AT_NOCASE (bp, "create")
+ || LOOKING_AT_NOCASE (bp, "defer")
+ || LOOKING_AT_NOCASE (bp, "value")
+ || LOOKING_AT_NOCASE (bp, "variable")
+ || LOOKING_AT_NOCASE (bp, "buffer:")
+ || LOOKING_AT_NOCASE (bp, "field"))
+ get_tag (skip_spaces (bp), NULL); /* Yay! A definition! */
+ else
+ bp = skip_non_spaces (bp);
+}
+
+\f
+/*
+ * Scheme tag functions
+ * look for (def... xyzzy
+ * (def... (xyzzy
+ * (def ... ((...(xyzzy ....
+ * (set! xyzzy
+ * Original code by Ken Haase (1985?)
+ */
+static void
+Scheme_functions (FILE *inf)
+{
+ register char *bp;
+
+ LOOP_ON_INPUT_LINES (inf, lb, bp)
+ {
+ if (strneq (bp, "(def", 4) || strneq (bp, "(DEF", 4))
+ {
+ bp = skip_non_spaces (bp+4);
+ /* Skip over open parens and white space. Don't continue past
+ '\0'. */
+ while (*bp && notinname (*bp))
+ bp++;
+ get_tag (bp, NULL);
+ }
+ if (LOOKING_AT (bp, "(SET!") || LOOKING_AT (bp, "(set!"))
+ get_tag (bp, NULL);
+ }
+}
+
+\f
+/* Find tags in TeX and LaTeX input files. */
+
+/* TEX_toktab is a table of TeX control sequences that define tags.
+ * Each entry records one such control sequence.
+ *
+ * Original code from who knows whom.
+ * Ideas by:
+ * Stefan Monnier (2002)
+ */
+
+static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
+
+/* Default set of control sequences to put into TEX_toktab.
+ The value of environment var TEXTAGS is prepended to this. */
+static const char *TEX_defenv = "\
+:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
+:part:appendix:entry:index:def\
+:newcommand:renewcommand:newenvironment:renewenvironment";
+
+static void TEX_mode (FILE *);
+static void TEX_decode_env (const char *, const char *);
+
+static char TEX_esc = '\\';
+static char TEX_opgrp = '{';
+static char TEX_clgrp = '}';
+
+/*
+ * TeX/LaTeX scanning loop.
+ */
+static void
+TeX_commands (FILE *inf)
+{
+ char *cp;
+ linebuffer *key;
+
+ /* Select either \ or ! as escape character. */
+ TEX_mode (inf);
+
+ /* Initialize token table once from environment. */
+ if (TEX_toktab == NULL)
+ TEX_decode_env ("TEXTAGS", TEX_defenv);
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ /* Look at each TEX keyword in line. */
+ for (;;)
+ {
+ /* Look for a TEX escape. */
+ while (*cp++ != TEX_esc)
+ if (cp[-1] == '\0' || cp[-1] == '%')
+ goto tex_next_line;
+
+ for (key = TEX_toktab; key->buffer != NULL; key++)
+ if (strneq (cp, key->buffer, key->len))
+ {
+ char *p;
+ int namelen, linelen;
+ bool opgrp = false;
+
+ cp = skip_spaces (cp + key->len);
+ if (*cp == TEX_opgrp)
+ {
+ opgrp = true;
+ cp++;
+ }
+ for (p = cp;
+ (!iswhite (*p) && *p != '#' &&
+ *p != TEX_opgrp && *p != TEX_clgrp);
+ p++)
+ continue;
+ namelen = p - cp;
+ linelen = lb.len;
+ if (!opgrp || *p == TEX_clgrp)
+ {
+ while (*p != '\0' && *p != TEX_opgrp && *p != TEX_clgrp)
+ p++;
+ linelen = p - lb.buffer + 1;
+ }
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ goto tex_next_line; /* We only tag a line once */
+ }
+ }
+ tex_next_line:
+ ;
+ }
+}
+
+#define TEX_LESC '\\'
+#define TEX_SESC '!'
+
+/* Figure out whether TeX's escapechar is '\\' or '!' and set grouping
+ chars accordingly. */
+static void
+TEX_mode (FILE *inf)
+{
+ int c;
+
+ while ((c = getc (inf)) != EOF)
+ {
+ /* Skip to next line if we hit the TeX comment char. */
+ if (c == '%')
+ while (c != '\n' && c != EOF)
+ c = getc (inf);
+ else if (c == TEX_LESC || c == TEX_SESC )
+ break;
+ }
+
+ if (c == TEX_LESC)
+ {
+ TEX_esc = TEX_LESC;
+ TEX_opgrp = '{';
+ TEX_clgrp = '}';
+ }
+ else
+ {
+ TEX_esc = TEX_SESC;
+ TEX_opgrp = '<';
+ TEX_clgrp = '>';
+ }
+ /* If the input file is compressed, inf is a pipe, and rewind may fail.
+ No attempt is made to correct the situation. */
+ rewind (inf);
+}
+
+/* Read environment and prepend it to the default string.
+ Build token table. */
+static void
+TEX_decode_env (const char *evarname, const char *defenv)
+{
+ register const char *env, *p;
+ int i, len;
+
+ /* Append default string to environment. */
+ env = getenv (evarname);
+ if (!env)
+ env = defenv;
+ else
+ env = concat (env, defenv, "");
+
+ /* Allocate a token table */
+ for (len = 1, p = env; p;)
+ if ((p = strchr (p, ':')) && *++p != '\0')
+ len++;
+ TEX_toktab = xnew (len, linebuffer);
+
+ /* Unpack environment string into token table. Be careful about */
+ /* zero-length strings (leading ':', "::" and trailing ':') */
+ for (i = 0; *env != '\0';)
+ {
+ p = strchr (env, ':');
+ if (!p) /* End of environment string. */
+ p = env + strlen (env);
+ if (p - env > 0)
+ { /* Only non-zero strings. */
+ TEX_toktab[i].buffer = savenstr (env, p - env);
+ TEX_toktab[i].len = p - env;
+ i++;
+ }
+ if (*p)
+ env = p + 1;
+ else
+ {
+ TEX_toktab[i].buffer = NULL; /* Mark end of table. */
+ TEX_toktab[i].len = 0;
+ break;
+ }
+ }
+}
+
+\f
+/* Texinfo support. Dave Love, Mar. 2000. */
+static void
+Texinfo_nodes (FILE *inf)
+{
+ char *cp, *start;
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ if (LOOKING_AT (cp, "@node"))
+ {
+ start = cp;
+ while (*cp != '\0' && *cp != ',')
+ cp++;
+ make_tag (start, cp - start, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+}
+
+\f
+/*
+ * HTML support.
+ * Contents of <title>, <h1>, <h2>, <h3> are tags.
+ * Contents of <a name=xxx> are tags with name xxx.
+ *
+ * Francesco Potortì, 2002.
+ */
+static void
+HTML_labels (FILE *inf)
+{
+ bool getnext = false; /* next text outside of HTML tags is a tag */
+ bool skiptag = false; /* skip to the end of the current HTML tag */
+ bool intag = false; /* inside an html tag, looking for ID= */
+ bool inanchor = false; /* when INTAG, is an anchor, look for NAME= */
+ char *end;
+
+
+ linebuffer_setlen (&token_name, 0); /* no name in buffer */
+
+ LOOP_ON_INPUT_LINES (inf, lb, dbp)
+ for (;;) /* loop on the same line */
+ {
+ if (skiptag) /* skip HTML tag */
+ {
+ while (*dbp != '\0' && *dbp != '>')
+ dbp++;
+ if (*dbp == '>')
+ {
+ dbp += 1;
+ skiptag = false;
+ continue; /* look on the same line */
+ }
+ break; /* go to next line */
+ }
+
+ else if (intag) /* look for "name=" or "id=" */
+ {
+ while (*dbp != '\0' && *dbp != '>'
+ && lowcase (*dbp) != 'n' && lowcase (*dbp) != 'i')
+ dbp++;
+ if (*dbp == '\0')
+ break; /* go to next line */
+ if (*dbp == '>')
+ {
+ dbp += 1;
+ intag = false;
+ continue; /* look on the same line */
+ }
+ if ((inanchor && LOOKING_AT_NOCASE (dbp, "name="))
+ || LOOKING_AT_NOCASE (dbp, "id="))
+ {
+ bool quoted = (dbp[0] == '"');
+
+ if (quoted)
+ for (end = ++dbp; *end != '\0' && *end != '"'; end++)
+ continue;
+ else
+ for (end = dbp; *end != '\0' && intoken (*end); end++)
+ continue;
+ linebuffer_setlen (&token_name, end - dbp);
+ memcpy (token_name.buffer, dbp, end - dbp);
+ token_name.buffer[end - dbp] = '\0';
+
+ dbp = end;
+ intag = false; /* we found what we looked for */
+ skiptag = true; /* skip to the end of the tag */
+ getnext = true; /* then grab the text */
+ continue; /* look on the same line */
+ }
+ dbp += 1;
+ }
+
+ else if (getnext) /* grab next tokens and tag them */
+ {
+ dbp = skip_spaces (dbp);
+ if (*dbp == '\0')
+ break; /* go to next line */
+ if (*dbp == '<')
+ {
+ intag = true;
+ inanchor = (lowcase (dbp[1]) == 'a' && !intoken (dbp[2]));
+ continue; /* look on the same line */
+ }
+
+ for (end = dbp + 1; *end != '\0' && *end != '<'; end++)
+ continue;
+ make_tag (token_name.buffer, token_name.len, true,
+ dbp, end - dbp, lineno, linecharno);
+ linebuffer_setlen (&token_name, 0); /* no name in buffer */
+ getnext = false;
+ break; /* go to next line */
+ }
+
+ else /* look for an interesting HTML tag */
+ {
+ while (*dbp != '\0' && *dbp != '<')
+ dbp++;
+ if (*dbp == '\0')
+ break; /* go to next line */
+ intag = true;
+ if (lowcase (dbp[1]) == 'a' && !intoken (dbp[2]))
+ {
+ inanchor = true;
+ continue; /* look on the same line */
+ }
+ else if (LOOKING_AT_NOCASE (dbp, "<title>")
+ || LOOKING_AT_NOCASE (dbp, "<h1>")
+ || LOOKING_AT_NOCASE (dbp, "<h2>")
+ || LOOKING_AT_NOCASE (dbp, "<h3>"))
+ {
+ intag = false;
+ getnext = true;
+ continue; /* look on the same line */
+ }
+ dbp += 1;
+ }
+ }
+}
+
+\f
+/*
+ * Prolog support
+ *
+ * Assumes that the predicate or rule starts at column 0.
+ * Only the first clause of a predicate or rule is added.
+ * Original code by Sunichirou Sugou (1989)
+ * Rewritten by Anders Lindgren (1996)
+ */
+static size_t prolog_pr (char *, char *);
+static void prolog_skip_comment (linebuffer *, FILE *);
+static size_t prolog_atom (char *, size_t);
+
+static void
+Prolog_functions (FILE *inf)
+{
+ char *cp, *last;
+ size_t len;
+ size_t allocated;
+
+ allocated = 0;
+ len = 0;
+ last = NULL;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ if (cp[0] == '\0') /* Empty line */
+ continue;
+ else if (iswhite (cp[0])) /* Not a predicate */
+ continue;
+ else if (cp[0] == '/' && cp[1] == '*') /* comment. */
+ prolog_skip_comment (&lb, inf);
+ else if ((len = prolog_pr (cp, last)) > 0)
+ {
+ /* Predicate or rule. Store the function name so that we
+ only generate a tag for the first clause. */
+ if (last == NULL)
+ last = xnew (len + 1, char);
+ else if (len + 1 > allocated)
+ xrnew (last, len + 1, char);
+ allocated = len + 1;
+ memcpy (last, cp, len);
+ last[len] = '\0';
+ }
+ }
+ free (last);
+}
+
+
+static void
+prolog_skip_comment (linebuffer *plb, FILE *inf)
+{
+ char *cp;
+
+ do
+ {
+ for (cp = plb->buffer; *cp != '\0'; cp++)
+ if (cp[0] == '*' && cp[1] == '/')
+ return;
+ readline (plb, inf);
+ }
+ while (!feof (inf));
+}
+
+/*
+ * A predicate or rule definition is added if it matches:
+ * <beginning of line><Prolog Atom><whitespace>(
+ * or <beginning of line><Prolog Atom><whitespace>:-
+ *
+ * It is added to the tags database if it doesn't match the
+ * name of the previous clause header.
+ *
+ * Return the size of the name of the predicate or rule, or 0 if no
+ * header was found.
+ */
+static size_t
+prolog_pr (char *s, char *last)
+
+ /* Name of last clause. */
+{
+ size_t pos;
+ size_t len;
+
+ pos = prolog_atom (s, 0);
+ if (! pos)
+ return 0;
+
+ len = pos;
+ pos = skip_spaces (s + pos) - s;
+
+ if ((s[pos] == '.'
+ || (s[pos] == '(' && (pos += 1))
+ || (s[pos] == ':' && s[pos + 1] == '-' && (pos += 2)))
+ && (last == NULL /* save only the first clause */
+ || len != strlen (last)
+ || !strneq (s, last, len)))
+ {
+ make_tag (s, len, true, s, pos, lineno, linecharno);
+ return len;
+ }
+ else
+ return 0;
+}
+
+/*
+ * Consume a Prolog atom.
+ * Return the number of bytes consumed, or 0 if there was an error.
+ *
+ * A prolog atom, in this context, could be one of:
+ * - An alphanumeric sequence, starting with a lower case letter.
+ * - A quoted arbitrary string. Single quotes can escape themselves.
+ * Backslash quotes everything.
+ */
+static size_t
+prolog_atom (char *s, size_t pos)
+{
+ size_t origpos;
+
+ origpos = pos;
+
+ if (ISLOWER (s[pos]) || (s[pos] == '_'))
+ {
+ /* The atom is unquoted. */
+ pos++;
+ while (ISALNUM (s[pos]) || (s[pos] == '_'))
+ {
+ pos++;
+ }
+ return pos - origpos;
+ }
+ else if (s[pos] == '\'')
+ {
+ pos++;
+
+ for (;;)
+ {
+ if (s[pos] == '\'')
+ {
+ pos++;
+ if (s[pos] != '\'')
+ break;
+ pos++; /* A double quote */
+ }
+ else if (s[pos] == '\0')
+ /* Multiline quoted atoms are ignored. */
+ return 0;
+ else if (s[pos] == '\\')
+ {
+ if (s[pos+1] == '\0')
+ return 0;
+ pos += 2;
+ }
+ else
+ pos++;
+ }
+ return pos - origpos;
+ }
+ else
+ return 0;
+}
+
+\f
+/*
+ * Support for Erlang
+ *
+ * Generates tags for functions, defines, and records.
+ * Assumes that Erlang functions start at column 0.
+ * Original code by Anders Lindgren (1996)
+ */
+static int erlang_func (char *, char *);
+static void erlang_attribute (char *);
+static int erlang_atom (char *);
+
+static void
+Erlang_functions (FILE *inf)
+{
+ char *cp, *last;
+ int len;
+ int allocated;
+
+ allocated = 0;
+ len = 0;
+ last = NULL;
+
+ LOOP_ON_INPUT_LINES (inf, lb, cp)
+ {
+ if (cp[0] == '\0') /* Empty line */
+ continue;
+ else if (iswhite (cp[0])) /* Not function nor attribute */
+ continue;
+ else if (cp[0] == '%') /* comment */
+ continue;
+ else if (cp[0] == '"') /* Sometimes, strings start in column one */
+ continue;
+ else if (cp[0] == '-') /* attribute, e.g. "-define" */
+ {
+ erlang_attribute (cp);
+ if (last != NULL)
+ {
+ free (last);
+ last = NULL;
+ }
+ }
+ else if ((len = erlang_func (cp, last)) > 0)
+ {
+ /*
+ * Function. Store the function name so that we only
+ * generates a tag for the first clause.
+ */
+ if (last == NULL)
+ last = xnew (len + 1, char);
+ else if (len + 1 > allocated)
+ xrnew (last, len + 1, char);
+ allocated = len + 1;
+ memcpy (last, cp, len);
+ last[len] = '\0';
+ }
+ }
+ free (last);
+}
+
+
+/*
+ * A function definition is added if it matches:
+ * <beginning of line><Erlang Atom><whitespace>(
+ *
+ * It is added to the tags database if it doesn't match the
+ * name of the previous clause header.
+ *
+ * Return the size of the name of the function, or 0 if no function
+ * was found.
+ */
+static int
+erlang_func (char *s, char *last)
+
+ /* Name of last clause. */
+{
+ int pos;
+ int len;
+
+ pos = erlang_atom (s);
+ if (pos < 1)
+ return 0;
+
+ len = pos;
+ pos = skip_spaces (s + pos) - s;
+
+ /* Save only the first clause. */
+ if (s[pos++] == '('
+ && (last == NULL
+ || len != (int)strlen (last)
+ || !strneq (s, last, len)))
+ {
+ make_tag (s, len, true, s, pos, lineno, linecharno);
+ return len;
+ }
+
+ return 0;
+}
+
+
+/*
+ * Handle attributes. Currently, tags are generated for defines
+ * and records.
+ *
+ * They are on the form:
+ * -define(foo, bar).
+ * -define(Foo(M, N), M+N).
+ * -record(graph, {vtab = notable, cyclic = true}).
+ */
+static void
+erlang_attribute (char *s)
+{
+ char *cp = s;
+
+ if ((LOOKING_AT (cp, "-define") || LOOKING_AT (cp, "-record"))
+ && *cp++ == '(')
+ {
+ int len = erlang_atom (skip_spaces (cp));
+ if (len > 0)
+ make_tag (cp, len, true, s, cp + len - s, lineno, linecharno);
+ }
+ return;
+}
+
+
+/*
+ * Consume an Erlang atom (or variable).
+ * Return the number of bytes consumed, or -1 if there was an error.
+ */
+static int
+erlang_atom (char *s)
+{
+ int pos = 0;
+
+ if (ISALPHA (s[pos]) || s[pos] == '_')
+ {
+ /* The atom is unquoted. */
+ do
+ pos++;
+ while (ISALNUM (s[pos]) || s[pos] == '_');
+ }
+ else if (s[pos] == '\'')
+ {
+ for (pos++; s[pos] != '\''; pos++)
+ if (s[pos] == '\0' /* multiline quoted atoms are ignored */
+ || (s[pos] == '\\' && s[++pos] == '\0'))
+ return 0;
+ pos++;
+ }
+
+ return pos;
+}
+
+\f
+static char *scan_separators (char *);
+static void add_regex (char *, language *);
+static char *substitute (char *, char *, struct re_registers *);
+
+/*
+ * Take a string like "/blah/" and turn it into "blah", verifying
+ * that the first and last characters are the same, and handling
+ * quoted separator characters. Actually, stops on the occurrence of
+ * an unquoted separator. Also process \t, \n, etc. and turn into
+ * appropriate characters. Works in place. Null terminates name string.
+ * Returns pointer to terminating separator, or NULL for
+ * unterminated regexps.
+ */
+static char *
+scan_separators (char *name)
+{
+ char sep = name[0];
+ char *copyto = name;
+ bool quoted = false;
+
+ for (++name; *name != '\0'; ++name)
+ {
+ if (quoted)
+ {
+ switch (*name)
+ {
+ case 'a': *copyto++ = '\007'; break; /* BEL (bell) */
+ case 'b': *copyto++ = '\b'; break; /* BS (back space) */
+ case 'd': *copyto++ = 0177; break; /* DEL (delete) */
+ case 'e': *copyto++ = 033; break; /* ESC (delete) */
+ case 'f': *copyto++ = '\f'; break; /* FF (form feed) */
+ case 'n': *copyto++ = '\n'; break; /* NL (new line) */
+ case 'r': *copyto++ = '\r'; break; /* CR (carriage return) */
+ case 't': *copyto++ = '\t'; break; /* TAB (horizontal tab) */
+ case 'v': *copyto++ = '\v'; break; /* VT (vertical tab) */
+ default:
+ if (*name == sep)
+ *copyto++ = sep;
+ else
+ {
+ /* Something else is quoted, so preserve the quote. */
+ *copyto++ = '\\';
+ *copyto++ = *name;
+ }
+ break;
+ }
+ quoted = false;
+ }
+ else if (*name == '\\')
+ quoted = true;
+ else if (*name == sep)
+ break;
+ else
+ *copyto++ = *name;
+ }
+ if (*name != sep)
+ name = NULL; /* signal unterminated regexp */
+
+ /* Terminate copied string. */
+ *copyto = '\0';
+ return name;
+}
+
+/* Look at the argument of --regex or --no-regex and do the right
+ thing. Same for each line of a regexp file. */
+static void
+analyze_regex (char *regex_arg)
+{
+ if (regex_arg == NULL)
+ {
+ free_regexps (); /* --no-regex: remove existing regexps */
+ return;
+ }
+
+ /* A real --regexp option or a line in a regexp file. */
+ switch (regex_arg[0])
+ {
+ /* Comments in regexp file or null arg to --regex. */
+ case '\0':
+ case ' ':
+ case '\t':
+ break;
+
+ /* Read a regex file. This is recursive and may result in a
+ loop, which will stop when the file descriptors are exhausted. */
+ case '@':
+ {
+ FILE *regexfp;
+ linebuffer regexbuf;
+ char *regexfile = regex_arg + 1;
+
+ /* regexfile is a file containing regexps, one per line. */
+ regexfp = fopen (regexfile, "r" FOPEN_BINARY);
+ if (regexfp == NULL)
+ pfatal (regexfile);
+ linebuffer_init (®exbuf);
+ while (readline_internal (®exbuf, regexfp) > 0)
+ analyze_regex (regexbuf.buffer);
+ free (regexbuf.buffer);
+ fclose (regexfp);
+ }
+ break;
+
+ /* Regexp to be used for a specific language only. */
+ case '{':
+ {
+ language *lang;
+ char *lang_name = regex_arg + 1;
+ char *cp;
+
+ for (cp = lang_name; *cp != '}'; cp++)
+ if (*cp == '\0')
+ {
+ error ("unterminated language name in regex: %s", regex_arg);
+ return;
+ }
+ *cp++ = '\0';
+ lang = get_language_from_langname (lang_name);
+ if (lang == NULL)
+ return;
+ add_regex (cp, lang);
+ }
+ break;
+
+ /* Regexp to be used for any language. */
+ default:
+ add_regex (regex_arg, NULL);
+ break;
+ }
+}
+
+/* Separate the regexp pattern, compile it,
+ and care for optional name and modifiers. */
+static void
+add_regex (char *regexp_pattern, language *lang)
+{
+ static struct re_pattern_buffer zeropattern;
+ char sep, *pat, *name, *modifiers;
+ char empty = '\0';
+ const char *err;
+ struct re_pattern_buffer *patbuf;
+ regexp *rp;
+ bool
+ force_explicit_name = true, /* do not use implicit tag names */
+ ignore_case = false, /* case is significant */
+ multi_line = false, /* matches are done one line at a time */
+ single_line = false; /* dot does not match newline */
+
+
+ if (strlen (regexp_pattern) < 3)
+ {
+ error ("null regexp");
+ return;
+ }
+ sep = regexp_pattern[0];
+ name = scan_separators (regexp_pattern);
+ if (name == NULL)
+ {
+ error ("%s: unterminated regexp", regexp_pattern);
+ return;
+ }
+ if (name[1] == sep)
+ {
+ error ("null name for regexp \"%s\"", regexp_pattern);
+ return;
+ }
+ modifiers = scan_separators (name);
+ if (modifiers == NULL) /* no terminating separator --> no name */
+ {
+ modifiers = name;
+ name = ∅
+ }
+ else
+ modifiers += 1; /* skip separator */
+
+ /* Parse regex modifiers. */
+ for (; modifiers[0] != '\0'; modifiers++)
+ switch (modifiers[0])
+ {
+ case 'N':
+ if (modifiers == name)
+ error ("forcing explicit tag name but no name, ignoring");
+ force_explicit_name = true;
+ break;
+ case 'i':
+ ignore_case = true;
+ break;
+ case 's':
+ single_line = true;
+ /* FALLTHRU */
+ case 'm':
+ multi_line = true;
+ need_filebuf = true;
+ break;
+ default:
+ error ("invalid regexp modifier `%c', ignoring", modifiers[0]);
+ break;
+ }
+
+ patbuf = xnew (1, struct re_pattern_buffer);
+ *patbuf = zeropattern;
+ if (ignore_case)
+ {
+ static char lc_trans[CHARS];
+ int i;
+ for (i = 0; i < CHARS; i++)
+ lc_trans[i] = lowcase (i);
+ patbuf->translate = lc_trans; /* translation table to fold case */
+ }
+
+ if (multi_line)
+ pat = concat ("^", regexp_pattern, ""); /* anchor to beginning of line */
+ else
+ pat = regexp_pattern;
+
+ if (single_line)
+ re_set_syntax (RE_SYNTAX_EMACS | RE_DOT_NEWLINE);
+ else
+ re_set_syntax (RE_SYNTAX_EMACS);
+
+ err = re_compile_pattern (pat, strlen (pat), patbuf);
+ if (multi_line)
+ free (pat);
+ if (err != NULL)
+ {
+ error ("%s while compiling pattern", err);
+ return;
+ }
+
+ rp = p_head;
+ p_head = xnew (1, regexp);
+ p_head->pattern = savestr (regexp_pattern);
+ p_head->p_next = rp;
+ p_head->lang = lang;
+ p_head->pat = patbuf;
+ p_head->name = savestr (name);
+ p_head->error_signaled = false;
+ p_head->force_explicit_name = force_explicit_name;
+ p_head->ignore_case = ignore_case;
+ p_head->multi_line = multi_line;
+}
+
+/*
+ * Do the substitutions indicated by the regular expression and
+ * arguments.
+ */
+static char *
+substitute (char *in, char *out, struct re_registers *regs)
+{
+ char *result, *t;
+ int size, dig, diglen;
+
+ result = NULL;
+ size = strlen (out);
+
+ /* Pass 1: figure out how much to allocate by finding all \N strings. */
+ if (out[size - 1] == '\\')
+ fatal ("pattern error in \"%s\"", out);
+ for (t = strchr (out, '\\');
+ t != NULL;
+ t = strchr (t + 2, '\\'))
+ if (ISDIGIT (t[1]))
+ {
+ dig = t[1] - '0';
+ diglen = regs->end[dig] - regs->start[dig];
+ size += diglen - 2;
+ }
+ else
+ size -= 1;
+
+ /* Allocate space and do the substitutions. */
+ assert (size >= 0);
+ result = xnew (size + 1, char);
+
+ for (t = result; *out != '\0'; out++)
+ if (*out == '\\' && ISDIGIT (*++out))
+ {
+ dig = *out - '0';
+ diglen = regs->end[dig] - regs->start[dig];
+ memcpy (t, in + regs->start[dig], diglen);
+ t += diglen;
+ }
+ else
+ *t++ = *out;
+ *t = '\0';
+
+ assert (t <= result + size);
+ assert (t - result == (int)strlen (result));
+
+ return result;
+}
+
+/* Deallocate all regexps. */
+static void
+free_regexps (void)
+{
+ regexp *rp;
+ while (p_head != NULL)
+ {
+ rp = p_head->p_next;
+ free (p_head->pattern);
+ free (p_head->name);
+ free (p_head);
+ p_head = rp;
+ }
+ return;
+}
+
+/*
+ * Reads the whole file as a single string from `filebuf' and looks for
+ * multi-line regular expressions, creating tags on matches.
+ * readline already dealt with normal regexps.
+ *
+ * Idea by Ben Wing <ben@666.com> (2002).
+ */
+static void
+regex_tag_multiline (void)
+{
+ char *buffer = filebuf.buffer;
+ regexp *rp;
+ char *name;
+
+ for (rp = p_head; rp != NULL; rp = rp->p_next)
+ {
+ int match = 0;
+
+ if (!rp->multi_line)
+ continue; /* skip normal regexps */
+
+ /* Generic initializations before parsing file from memory. */
+ lineno = 1; /* reset global line number */
+ charno = 0; /* reset global char number */
+ linecharno = 0; /* reset global char number of line start */
+
+ /* Only use generic regexps or those for the current language. */
+ if (rp->lang != NULL && rp->lang != curfdp->lang)
+ continue;
+
+ while (match >= 0 && match < filebuf.len)
+ {
+ match = re_search (rp->pat, buffer, filebuf.len, charno,
+ filebuf.len - match, &rp->regs);
+ switch (match)
+ {
+ case -2:
+ /* Some error. */
+ if (!rp->error_signaled)
+ {
+ error ("regexp stack overflow while matching \"%s\"",
+ rp->pattern);
+ rp->error_signaled = true;
+ }
+ break;
+ case -1:
+ /* No match. */
+ break;
+ default:
+ if (match == rp->regs.end[0])
+ {
+ if (!rp->error_signaled)
+ {
+ error ("regexp matches the empty string: \"%s\"",
+ rp->pattern);
+ rp->error_signaled = true;
+ }
+ match = -3; /* exit from while loop */
+ break;
+ }
+
+ /* Match occurred. Construct a tag. */
+ while (charno < rp->regs.end[0])
+ if (buffer[charno++] == '\n')
+ lineno++, linecharno = charno;
+ name = rp->name;
+ if (name[0] == '\0')
+ name = NULL;
+ else /* make a named tag */
+ name = substitute (buffer, rp->name, &rp->regs);
+ if (rp->force_explicit_name)
+ /* Force explicit tag name, if a name is there. */
+ pfnote (name, true, buffer + linecharno,
+ charno - linecharno + 1, lineno, linecharno);
+ else
+ make_tag (name, strlen (name), true, buffer + linecharno,
+ charno - linecharno + 1, lineno, linecharno);
+ break;
+ }
+ }
+ }
+}
+
+\f
+static bool
+nocase_tail (const char *cp)
+{
+ register int len = 0;
+
+ while (*cp != '\0' && lowcase (*cp) == lowcase (dbp[len]))
+ cp++, len++;
+ if (*cp == '\0' && !intoken (dbp[len]))
+ {
+ dbp += len;
+ return true;
+ }
+ return false;
+}
+
+static void
+get_tag (register char *bp, char **namepp)
+{
+ register char *cp = bp;
+
+ if (*bp != '\0')
+ {
+ /* Go till you get to white space or a syntactic break */
+ for (cp = bp + 1; !notinname (*cp); cp++)
+ continue;
+ make_tag (bp, cp - bp, true,
+ lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
+ }
+
+ if (namepp != NULL)
+ *namepp = savenstr (bp, cp - bp);
+}
+
+/*
+ * Read a line of text from `stream' into `lbp', excluding the
+ * newline or CR-NL, if any. Return the number of characters read from
+ * `stream', which is the length of the line including the newline.
+ *
+ * On DOS or Windows we do not count the CR character, if any before the
+ * NL, in the returned length; this mirrors the behavior of Emacs on those
+ * platforms (for text files, it translates CR-NL to NL as it reads in the
+ * file).
+ *
+ * If multi-line regular expressions are requested, each line read is
+ * appended to `filebuf'.
+ */
+static long
+readline_internal (linebuffer *lbp, register FILE *stream)
+{
+ char *buffer = lbp->buffer;
+ register char *p = lbp->buffer;
+ register char *pend;
+ int chars_deleted;
+
+ pend = p + lbp->size; /* Separate to avoid 386/IX compiler bug. */
+
+ for (;;)
+ {
+ register int c = getc (stream);
+ if (p == pend)
+ {
+ /* We're at the end of linebuffer: expand it. */
+ lbp->size *= 2;
+ xrnew (buffer, lbp->size, char);
+ p += buffer - lbp->buffer;
+ pend = buffer + lbp->size;
+ lbp->buffer = buffer;
+ }
+ if (c == EOF)
+ {
+ *p = '\0';
+ chars_deleted = 0;
+ break;
+ }
+ if (c == '\n')
+ {
+ if (p > buffer && p[-1] == '\r')
+ {
+ p -= 1;
+#ifdef DOS_NT
+ /* Assume CRLF->LF translation will be performed by Emacs
+ when loading this file, so CRs won't appear in the buffer.
+ It would be cleaner to compensate within Emacs;
+ however, Emacs does not know how many CRs were deleted
+ before any given point in the file. */
+ chars_deleted = 1;
+#else
+ chars_deleted = 2;
+#endif
+ }
+ else
+ {
+ chars_deleted = 1;
+ }
+ *p = '\0';
+ break;
+ }
+ *p++ = c;
+ }
+ lbp->len = p - buffer;
+
+ if (need_filebuf /* we need filebuf for multi-line regexps */
+ && chars_deleted > 0) /* not at EOF */
+ {
+ while (filebuf.size <= filebuf.len + lbp->len + 1) /* +1 for \n */
+ {
+ /* Expand filebuf. */
+ filebuf.size *= 2;
+ xrnew (filebuf.buffer, filebuf.size, char);
+ }
+ memcpy (filebuf.buffer + filebuf.len, lbp->buffer, lbp->len);
+ filebuf.len += lbp->len;
+ filebuf.buffer[filebuf.len++] = '\n';
+ filebuf.buffer[filebuf.len] = '\0';
+ }
+
+ return lbp->len + chars_deleted;
+}
+
+/*
+ * Like readline_internal, above, but in addition try to match the
+ * input line against relevant regular expressions and manage #line
+ * directives.
+ */
+static void
+readline (linebuffer *lbp, FILE *stream)
+{
+ long result;
+
+ linecharno = charno; /* update global char number of line start */
+ result = readline_internal (lbp, stream); /* read line */
+ lineno += 1; /* increment global line number */
+ charno += result; /* increment global char number */
+
+ /* Honor #line directives. */
+ if (!no_line_directive)
+ {
+ static bool discard_until_line_directive;
+
+ /* Check whether this is a #line directive. */
+ if (result > 12 && strneq (lbp->buffer, "#line ", 6))
+ {
+ unsigned int lno;
+ int start = 0;
+
+ if (sscanf (lbp->buffer, "#line %u \"%n", &lno, &start) >= 1
+ && start > 0) /* double quote character found */
+ {
+ char *endp = lbp->buffer + start;
+
+ while ((endp = strchr (endp, '"')) != NULL
+ && endp[-1] == '\\')
+ endp++;
+ if (endp != NULL)
+ /* Ok, this is a real #line directive. Let's deal with it. */
+ {
+ char *taggedabsname; /* absolute name of original file */
+ char *taggedfname; /* name of original file as given */
+ char *name; /* temp var */
+
+ discard_until_line_directive = false; /* found it */
+ name = lbp->buffer + start;
+ *endp = '\0';
+ canonicalize_filename (name);
+ taggedabsname = absolute_filename (name, tagfiledir);
+ if (filename_is_absolute (name)
+ || filename_is_absolute (curfdp->infname))
+ taggedfname = savestr (taggedabsname);
+ else
+ taggedfname = relative_filename (taggedabsname,tagfiledir);
+
+ if (streq (curfdp->taggedfname, taggedfname))
+ /* The #line directive is only a line number change. We
+ deal with this afterwards. */
+ free (taggedfname);
+ else
+ /* The tags following this #line directive should be
+ attributed to taggedfname. In order to do this, set
+ curfdp accordingly. */
+ {
+ fdesc *fdp; /* file description pointer */
+
+ /* Go look for a file description already set up for the
+ file indicated in the #line directive. If there is
+ one, use it from now until the next #line
+ directive. */
+ for (fdp = fdhead; fdp != NULL; fdp = fdp->next)
+ if (streq (fdp->infname, curfdp->infname)
+ && streq (fdp->taggedfname, taggedfname))
+ /* If we remove the second test above (after the &&)
+ then all entries pertaining to the same file are
+ coalesced in the tags file. If we use it, then
+ entries pertaining to the same file but generated
+ from different files (via #line directives) will
+ go into separate sections in the tags file. These
+ alternatives look equivalent. The first one
+ destroys some apparently useless information. */
+ {
+ curfdp = fdp;
+ free (taggedfname);
+ break;
+ }
+ /* Else, if we already tagged the real file, skip all
+ input lines until the next #line directive. */
+ if (fdp == NULL) /* not found */
+ for (fdp = fdhead; fdp != NULL; fdp = fdp->next)
+ if (streq (fdp->infabsname, taggedabsname))
+ {
+ discard_until_line_directive = true;
+ free (taggedfname);
+ break;
+ }
+ /* Else create a new file description and use that from
+ now on, until the next #line directive. */
+ if (fdp == NULL) /* not found */
+ {
+ fdp = fdhead;
+ fdhead = xnew (1, fdesc);
+ *fdhead = *curfdp; /* copy curr. file description */
+ fdhead->next = fdp;
+ fdhead->infname = savestr (curfdp->infname);
+ fdhead->infabsname = savestr (curfdp->infabsname);
+ fdhead->infabsdir = savestr (curfdp->infabsdir);
+ fdhead->taggedfname = taggedfname;
+ fdhead->usecharno = false;
+ fdhead->prop = NULL;
+ fdhead->written = false;
+ curfdp = fdhead;
+ }
+ }
+ free (taggedabsname);
+ lineno = lno - 1;
+ readline (lbp, stream);
+ return;
+ } /* if a real #line directive */
+ } /* if #line is followed by a number */
+ } /* if line begins with "#line " */
+
+ /* If we are here, no #line directive was found. */
+ if (discard_until_line_directive)
+ {
+ if (result > 0)
+ {
+ /* Do a tail recursion on ourselves, thus discarding the contents
+ of the line buffer. */
+ readline (lbp, stream);
+ return;
+ }
+ /* End of file. */
+ discard_until_line_directive = false;
+ return;
+ }
+ } /* if #line directives should be considered */
+
+ {
+ int match;
+ regexp *rp;
+ char *name;
+
+ /* Match against relevant regexps. */
+ if (lbp->len > 0)
+ for (rp = p_head; rp != NULL; rp = rp->p_next)
+ {
+ /* Only use generic regexps or those for the current language.
+ Also do not use multiline regexps, which is the job of
+ regex_tag_multiline. */
+ if ((rp->lang != NULL && rp->lang != fdhead->lang)
+ || rp->multi_line)
+ continue;
+
+ match = re_match (rp->pat, lbp->buffer, lbp->len, 0, &rp->regs);
+ switch (match)
+ {
+ case -2:
+ /* Some error. */
+ if (!rp->error_signaled)
+ {
+ error ("regexp stack overflow while matching \"%s\"",
+ rp->pattern);
+ rp->error_signaled = true;
+ }
+ break;
+ case -1:
+ /* No match. */
+ break;
+ case 0:
+ /* Empty string matched. */
+ if (!rp->error_signaled)
+ {
+ error ("regexp matches the empty string: \"%s\"", rp->pattern);
+ rp->error_signaled = true;
+ }
+ break;
+ default:
+ /* Match occurred. Construct a tag. */
+ name = rp->name;
+ if (name[0] == '\0')
+ name = NULL;
+ else /* make a named tag */
+ name = substitute (lbp->buffer, rp->name, &rp->regs);
+ if (rp->force_explicit_name)
+ /* Force explicit tag name, if a name is there. */
+ pfnote (name, true, lbp->buffer, match, lineno, linecharno);
+ else
+ make_tag (name, strlen (name), true,
+ lbp->buffer, match, lineno, linecharno);
+ break;
+ }
+ }
+ }
+}
+
+\f
+/*
+ * Return a pointer to a space of size strlen(cp)+1 allocated
+ * with xnew where the string CP has been copied.
+ */
+static char *
+savestr (const char *cp)
+{
+ return savenstr (cp, strlen (cp));
+}
+
+/*
+ * Return a pointer to a space of size LEN+1 allocated with xnew where
+ * the string CP has been copied for at most the first LEN characters.
+ */
+static char *
+savenstr (const char *cp, int len)
+{
+ char *dp = xnew (len + 1, char);
+ dp[len] = '\0';
+ return memcpy (dp, cp, len);
+}
+
+/* Skip spaces (end of string is not space), return new pointer. */
+static char *
+skip_spaces (char *cp)
+{
+ while (iswhite (*cp))
+ cp++;
+ return cp;
+}
+
+/* Skip non spaces, except end of string, return new pointer. */
+static char *
+skip_non_spaces (char *cp)
+{
+ while (*cp != '\0' && !iswhite (*cp))
+ cp++;
+ return cp;
+}
+
+/* Skip any chars in the "name" class.*/
+static char *
+skip_name (char *cp)
+{
+ /* '\0' is a notinname() so loop stops there too */
+ while (! notinname (*cp))
+ cp++;
+ return cp;
+}
+
+/* Print error message and exit. */
+void
+fatal (const char *s1, const char *s2)
+{
+ error (s1, s2);
+ exit (EXIT_FAILURE);
+}
+
+static void
+pfatal (const char *s1)
+{
+ perror (s1);
+ exit (EXIT_FAILURE);
+}
+
+static void
+suggest_asking_for_help (void)
+{
+ fprintf (stderr, "\tTry `%s --help' for a complete list of options.\n",
+ progname);
+ exit (EXIT_FAILURE);
+}
+
+/* Output a diagnostic with printf-style FORMAT and args. */
+static void
+error (const char *format, ...)
+{
+ va_list ap;
+ va_start (ap, format);
+ fprintf (stderr, "%s: ", progname);
+ vfprintf (stderr, format, ap);
+ fprintf (stderr, "\n");
+ va_end (ap);
+}
+
+/* Return a newly-allocated string whose contents
+ concatenate those of s1, s2, s3. */
+static char *
+concat (const char *s1, const char *s2, const char *s3)
+{
+ int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
+ char *result = xnew (len1 + len2 + len3 + 1, char);
+
+ strcpy (result, s1);
+ strcpy (result + len1, s2);
+ strcpy (result + len1 + len2, s3);
+
+ return result;
+}
+
+\f
+/* Does the same work as the system V getcwd, but does not need to
+ guess the buffer size in advance. */
+static char *
+etags_getcwd (void)
+{
+ int bufsize = 200;
+ char *path = xnew (bufsize, char);
+
+ while (getcwd (path, bufsize) == NULL)
+ {
+ if (errno != ERANGE)
+ pfatal ("getcwd");
+ bufsize *= 2;
+ free (path);
+ path = xnew (bufsize, char);
+ }
+
+ canonicalize_filename (path);
+ return path;
+}
+
+/* Return a newly allocated string containing the file name of FILE
+ relative to the absolute directory DIR (which should end with a slash). */
+static char *
+relative_filename (char *file, char *dir)
+{
+ char *fp, *dp, *afn, *res;
+ int i;
+
+ /* Find the common root of file and dir (with a trailing slash). */
+ afn = absolute_filename (file, cwd);
+ fp = afn;
+ dp = dir;
+ while (*fp++ == *dp++)
+ continue;
+ fp--, dp--; /* back to the first differing char */
+#ifdef DOS_NT
+ if (fp == afn && afn[0] != '/') /* cannot build a relative name */
+ return afn;
+#endif
+ do /* look at the equal chars until '/' */
+ fp--, dp--;
+ while (*fp != '/');
+
+ /* Build a sequence of "../" strings for the resulting relative file name. */
+ i = 0;
+ while ((dp = strchr (dp + 1, '/')) != NULL)
+ i += 1;
+ res = xnew (3*i + strlen (fp + 1) + 1, char);
+ char *z = res;
+ while (i-- > 0)
+ z = stpcpy (z, "../");
+
+ /* Add the file name relative to the common root of file and dir. */
+ strcpy (z, fp + 1);
+ free (afn);
+
+ return res;
+}
+
+/* Return a newly allocated string containing the absolute file name
+ of FILE given DIR (which should end with a slash). */
+static char *
+absolute_filename (char *file, char *dir)
+{
+ char *slashp, *cp, *res;
+
+ if (filename_is_absolute (file))
+ res = savestr (file);
+#ifdef DOS_NT
+ /* We don't support non-absolute file names with a drive
+ letter, like `d:NAME' (it's too much hassle). */
+ else if (file[1] == ':')
+ fatal ("%s: relative file names with drive letters not supported", file);
+#endif
+ else
+ res = concat (dir, file, "");
+
+ /* Delete the "/dirname/.." and "/." substrings. */
+ slashp = strchr (res, '/');
+ while (slashp != NULL && slashp[0] != '\0')
+ {
+ if (slashp[1] == '.')
+ {
+ if (slashp[2] == '.'
+ && (slashp[3] == '/' || slashp[3] == '\0'))
+ {
+ cp = slashp;
+ do
+ cp--;
+ while (cp >= res && !filename_is_absolute (cp));
+ if (cp < res)
+ cp = slashp; /* the absolute name begins with "/.." */
+#ifdef DOS_NT
+ /* Under MSDOS and NT we get `d:/NAME' as absolute
+ file name, so the luser could say `d:/../NAME'.
+ We silently treat this as `d:/NAME'. */
+ else if (cp[0] != '/')
+ cp = slashp;
+#endif
+ memmove (cp, slashp + 3, strlen (slashp + 2));
+ slashp = cp;
+ continue;
+ }
+ else if (slashp[2] == '/' || slashp[2] == '\0')
+ {
+ memmove (slashp, slashp + 2, strlen (slashp + 1));
+ continue;
+ }
+ }
+
+ slashp = strchr (slashp + 1, '/');
+ }
+
+ if (res[0] == '\0') /* just a safety net: should never happen */
+ {
+ free (res);
+ return savestr ("/");
+ }
+ else
+ return res;
+}
+
+/* Return a newly allocated string containing the absolute
+ file name of dir where FILE resides given DIR (which should
+ end with a slash). */
+static char *
+absolute_dirname (char *file, char *dir)
+{
+ char *slashp, *res;
+ char save;
+
+ slashp = strrchr (file, '/');
+ if (slashp == NULL)
+ return savestr (dir);
+ save = slashp[1];
+ slashp[1] = '\0';
+ res = absolute_filename (file, dir);
+ slashp[1] = save;
+
+ return res;
+}
+
+/* Whether the argument string is an absolute file name. The argument
+ string must have been canonicalized with canonicalize_filename. */
+static bool
+filename_is_absolute (char *fn)
+{
+ return (fn[0] == '/'
+#ifdef DOS_NT
+ || (ISALPHA (fn[0]) && fn[1] == ':' && fn[2] == '/')
+#endif
+ );
+}
+
+/* Downcase DOS drive letter and collapse separators into single slashes.
+ Works in place. */
+static void
+canonicalize_filename (register char *fn)
+{
+ register char* cp;
+ char sep = '/';
+
+#ifdef DOS_NT
+ /* Canonicalize drive letter case. */
+# define ISUPPER(c) isupper (CHAR (c))
+ if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0]))
+ fn[0] = lowcase (fn[0]);
+
+ sep = '\\';
+#endif
+
+ /* Collapse multiple separators into a single slash. */
+ for (cp = fn; *cp != '\0'; cp++, fn++)
+ if (*cp == sep)
+ {
+ *fn = '/';
+ while (cp[1] == sep)
+ cp++;
+ }
+ else
+ *fn = *cp;
+ *fn = '\0';
+}
+
+\f
+/* Initialize a linebuffer for use. */
+static void
+linebuffer_init (linebuffer *lbp)
+{
+ lbp->size = (DEBUG) ? 3 : 200;
+ lbp->buffer = xnew (lbp->size, char);
+ lbp->buffer[0] = '\0';
+ lbp->len = 0;
+}
+
+/* Set the minimum size of a string contained in a linebuffer. */
+static void
+linebuffer_setlen (linebuffer *lbp, int toksize)
+{
+ while (lbp->size <= toksize)
+ {
+ lbp->size *= 2;
+ xrnew (lbp->buffer, lbp->size, char);
+ }
+ lbp->len = toksize;
+}
+
+/* Like malloc but get fatal error if memory is exhausted. */
+static void *
+xmalloc (size_t size)
+{
+ void *result = malloc (size);
+ if (result == NULL)
+ fatal ("virtual memory exhausted", (char *)NULL);
+ return result;
+}
+
+static void *
+xrealloc (void *ptr, size_t size)
+{
+ void *result = realloc (ptr, size);
+ if (result == NULL)
+ fatal ("virtual memory exhausted", (char *)NULL);
+ return result;
+}
+
+/*
+ * Local Variables:
+ * indent-tabs-mode: t
+ * tab-width: 8
+ * fill-column: 79
+ * c-font-lock-extra-types: ("FILE" "bool" "language" "linebuffer" "fdesc" "node" "regexp")
+ * c-file-style: "gnu"
+ * End:
+ */
+
+/* etags.c ends here */
--- /dev/null
- * 2;
+var a = 1;
+b = 2;
+
+let c = 1,
+ d = 2;
+
+var e = 100500,
+ + 1;
+
+function test ()
+{
+ return /[/]/.test ('/') // (bug#19397)
+}
+
+var f = bar('/protocols/')
+baz();
+
+var h = 100500
+1;
+
+const i = 1,
+ j = 2;
+
+var k = 1,
+ l = [
+ 1, 2,
+ 3, 4
+ ],
+ m = 5;
+
+var n = function() {
+ return 7;
+},
+ o = 8;
+
+foo(bar, function() {
+ return 2;
+});
+
+switch (b) {
+case "a":
+ 2;
+default:
+ 3;
+}
+
+var p = {
+ case: 'zzzz',
+ default: 'donkey',
+ tee: 'ornery'
+};
+
+var evens = [e for each (e in range(0, 21))
+ if (ed % 2 == 0)];
+
+!b
+ !=b
+ !==b
+
+a++
+b +=
+ c
+
+baz(`http://foo.bar/${tee}`)
+ .qux();
+
+`multiline string
+ contents
+ are kept
+ unchanged!`
+
+class A {
+ * x() {
+ return 1
++ * a(2);
++ }
++
++ *[Symbol.iterator]() {
++ yield "Foo";
++ yield "Bar";
+ }
+}
+
+if (true)
+ 1
+else
+ 2
+
+Foobar
+ .find()
+ .catch((err) => {
+ return 2;
+ })
+ .then((num) => {
+ console.log(num);
+ });
+
+// Local Variables:
+// indent-tabs-mode: nil
+// js-indent-level: 2
+// End:
--- /dev/null
+if something_wrong? # ruby-move-to-block-skips-heredoc
+ ActiveSupport::Deprecation.warn(<<-eowarn)
+ boo hoo
+ end
+ eowarn
+ foo
+
+ foo(<<~squiggly)
+ end
+ squiggly
+end
+
+def foo
+ %^bar^
+end
+
+# Percent literals.
+b = %Q{This is a "string"}
+c = %w!foo
+ bar
+ baz!
+d = %(hello (nested) world)
+
+# Don't propertize percent literals inside strings.
+"(%s, %s)" % [123, 456]
+
+"abc/#{def}ghi"
+"abc\#{def}ghi"
+
+# Or inside comments.
+x = # "tot %q/to"; =
+ y = 2 / 3
+
+# Regexp after whitelisted method.
+"abc".sub /b/, 'd'
+
+# Don't mis-match "sub" at the end of words.
+a = asub / aslb + bsub / bslb;
+
+# Highlight the regexp after "if".
+x = toto / foo if /do bar/ =~ "dobar"
+
+# Regexp options are highlighted.
+
+/foo/xi != %r{bar}mo.tee
+
+foo { /"tee/
+ bar { |qux| /'fee"/ } # bug#20026
+}
+
+bar(class: XXX) do # ruby-indent-keyword-label
+ foo
+end
+bar
+
+foo = [1, # ruby-deep-indent
+ 2]
+
+foo = { # ruby-deep-indent-disabled
+ a: b
+}
+
+foo = { a: b,
+ a1: b1
+ }
+
+foo({ # bug#16118
+ a: b,
+ c: d
+ })
+
+bar = foo(
+ a, [
+ 1,
+ ],
+ :qux => [
+ 3
+ ])
+
+foo(
+ [
+ {
+ a: b
+ },
+ ],
+ {
+ c: d
+ }
+)
+
+foo([{
+ a: 2
+ },
+ {
+ b: 3
+ },
+ 4
+ ])
+
+foo = [ # ruby-deep-indent-disabled
+ 1
+]
+
+foo( # ruby-deep-indent-disabled
+ a
+)
+
+# Multiline regexp.
+/bars
+ tees # toots
+ nfoos/
+
+def test1(arg)
+ puts "hello"
+end
+
+def test2 (arg)
+ a = "apple"
+
+ if a == 2
+ puts "hello"
+ else
+ puts "there"
+ end
+
+ if a == 2 then
+ puts "hello"
+ elsif a == 3
+ puts "hello3"
+ elsif a == 3 then
+ puts "hello3"
+ else
+ puts "there"
+ end
+
+ b = case a
+ when "a"
+ 6
+ # Support for this syntax was removed in Ruby 1.9, so we
+ # probably don't need to handle it either.
+ # when "b" :
+ # 7
+ # when "c" : 2
+ when "d" then 4
+ else 5
+ end
+end
+
+# Some Cucumber code:
+Given /toto/ do
+ print "hello"
+end
+
+# Bug#15208
+if something == :==
+ do_something
+
+ return false unless method == :+
+ x = y + z # Bug#16609
+
+ a = 1 ? 2 :(
+ 2 + 3
+ )
+end
+
+# Bug#17097
+if x == :!=
+ something
+end
+
++qux :+,
++ bar,
++ :[]=,
++ bar,
++ :a
++
++b = $:
++c = ??
++
+# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
+d = 4 + 5 + # no '\' needed
+ 6 + 7
+
+# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
+e = 8 + 9 \
+ + 10 # '\' needed
+
+foo = obj.bar { |m| tee(m) } +
+ obj.qux { |m| hum(m) }
+
+begin
+ foo
+ensure
+ bar
+end
+
+# Bug#15369
+MSG = 'Separate every 3 digits in the integer portion of a number' \
+ 'with underscores(_).'
+
+class C
+ def foo
+ self.end
+ D.new.class
+ end
++
++ def begin
++ end
+end
+
+a = foo(j, k) -
+ bar_tee
+
+while a < b do # "do" is optional
+ foo
+end
+
+desc "foo foo" \
+ "bar bar"
+
+foo.
+ bar
+
+# https://github.com/rails/rails/blob/17f5d8e062909f1fcae25351834d8e89967b645e/activesupport/lib/active_support/time_with_zone.rb#L206
+foo
+ .bar
+
+z = {
+ foo: {
+ a: "aaa",
+ b: "bbb"
+ }
+}
+
+foo if
+ bar
+
++fail "stuff" \
++ unless all_fine?
++
+if foo?
+ bar
+end
+
+method arg1, # bug#15594
+ method2 arg2,
+ arg3
+
+method? arg1,
+ arg2
+
+method! arg1,
+ arg2
+
+method !arg1,
+ arg2
+
+method [],
+ arg2
+
+method :foo,
+ :bar
+
+method (a + b),
+ c, :d => :e,
+ f: g
+
+desc "abc",
+ defg
+
+it "is a method call with block" do |asd|
+ foo
+end
+
+it("is too!") {
+ bar
+ .qux
+}
+
+and_this_one(has) { |block, parameters|
+ tee
+}
+
+if foo &&
+ bar
+end
+
+foo +
+ bar
+
+foo and
+ bar
+
+foo > bar &&
+ tee < qux
+
+zux do
+ foo == bar and
+ tee == qux
+end
+
+foo ^
+ bar
+
+foo_bar_tee(1, 2, 3)
+ .qux.bar
+ .tee
+
+foo do
+ bar
+ .tee
+end
+
+def bar
+ foo
+ .baz
+end
+
+# http://stackoverflow.com/questions/17786563/emacs-ruby-mode-if-expressions-indentation
+tee = if foo
+ bar
+ else
+ tee
+ end
+
+a = b {
+ c
+}
+
+aa = bb do
+ cc
+end
+
+foo :bar do
+ qux
+end
+
+foo do |*args|
+ tee
+end
+
+bar do |&block|
+ tee
+end
+
+foo = [1, 2, 3].map do |i|
+ i + 1
+end
+
+bar.foo do
+ bar
+end
+
+bar.foo(tee) do
+ bar
+end
+
+bar.foo(tee) {
+ bar
+}
+
+bar 1 do
+ foo 2 do
+ tee
+ end
+end
+
+foo |
+ bar
+
+def qux
+ foo ||= begin
+ bar
+ tee
+ rescue
+ oomph
+ end
+end
+
+private def foo
+ bar
+end
+
+%^abc^
+ddd
+
+qux = foo.fee ?
+ bar :
+ tee
+
+zoo.keep.bar!(
+ {x: y,
+ z: t})
+
+zoo
+ .lose(
+ q, p)
+
+a.records().map(&:b).zip(
+ foo)
+
+# FIXME: This is not consistent with the example below it, but this
+# offset only happens if the colon is at eol, which wouldn't be often.
+# Tokenizing `bar:' as `:bar =>' would be better, but it's hard to
+# distinguish from a variable reference inside a ternary operator.
+foo(bar:
+ tee)
+
+foo(:bar =>
+ tee)
+
+{'a' => {
+ 'b' => 'c',
+ 'd' => %w(e f)
+ }
+}
+
+# Bug#17050
+
+return render json: {
+ errors: { base: [message] },
+ copying: copying
+ },
+ status: 400
+
+top test(
+ some,
+ top,
+ test)
+
+foo bar, {
+ tee: qux
+ }