Added experimental context-sensitive completion and help code.
Added experimental context-sensitive completion and help code.
Merge branch 'context' of github.com:bruceravel/gnuplot-mode into context
Added experimental context-sensitive completion and help code.
Merge branch 'context' of github.com:bruceravel/gnuplot-mode into context
Lots of fixes to grammar, and some bugfixes.

- Rules can be written with nicer syntax, using vectors [ ... ]
  in place of (sequence ...) forms

- Check for infinite loops caused by nesting (maybe ..) or (many ..)
  inside another (many ..) form. This could still be improved to only
  make the check when it's necessary.

- Grammar fixes:
  + Add rules for "set style ..." commands
  + allow functions other than built-ins
  + allow chaining assignments
  + allow assignments as statements
  + string iteration
  + more abbreviated keywords
  + etc.

- Added some automated tests. Some use ERT and are taken mostly from
  gnuplot documentation. There is also an automated test for the
  parser on all the gnuplot demos, which currently succeeds on about
  77% of the ~7500 lines of code.

- Removed `lazy-many' and attending bugs. It was supposed to help with
  the `plot-expression' rule, in which we shouldn't look for
  info/eldoc strings if in the `assignment' rule at the end of the
  string (the beginnings of assignments and expressions look the same,
  and there isn't any info-page information associated with
  assignments). Now the new (:no-info) form does the same thing more
  simply.
Use absolute locations in all jump/call/choice/commit instructions.
Minor updates to info pages for some "set" commands
Numerous grammar tweaks. Implement `many1' repetition (regex `+').

`many1' is only used in one place, the rule for `linestyle-spec'. This
rule used to be written (with `maybe' forms) in a way that matched the
empty string, causing an infinite loop if it appeared inside of
a (many (either ...))  form would cause an infinite loop.

Using `many1' instead might mean that I can eliminate the check for
infinite loops, whose effects aren't always intuitive.

`gnuplot-test-parse-all-demos' has a success rate of about 86% with
these tweaks.
Cleaned up the tokenizer and got rid of gnuplot-token-at-point.

The tokenizer now returns a list of tokens w/o a separate
`end-of-tokens' marker, so we can just check for (null? tokens) to see
if we've reached the end of the portion of the line being matched.

The matching machine now returns `nil' for failure, and a one-element
list of the list of remaining tokens for success (so '(nil) means that
it succeeded in matching the whole list of tokens). Fixed the
automated tests to work with this new return convention.
More consistent keys between gnuplot.el and gnuplot-context.el

C-c C-d (instead of C-c C-h or C-c C-/) for the info-lookup function
(gnuplot-info-lookup-symbol if context is not loaded,
gnuplot-info-at-point when context is loaded)

gnuplot-info-at-point now prompts for a symbol to look up if called
with a prefix arg or if parsing fails.

C-c C-s (instead of C-c h) for "extended eldoc" in context
mode (gnuplot-help-function)

TAB for completion in comint buffer. (Is this a problem?)

Setup eldoc thru a named defun rather than a lambda in
gnuplot-mode-hook.
Added (require 'eldoc) to gnuplot-context.el. Improved documentation.
Added x2label, y2label to grammar
Add customization options to turn context completion on and off.

This involves defining `gnuplot-context-sensitive-mode' variable &
function (like a minor mode), and using advice on
`gnuplot-completion-at-point' instead of redefining it. Slightly ugly,
but should be more modular as loading gnuplot-context by itself won't
change anything.

Also added customization options for turning eldoc and smart tab
completion on by default in gnuplot buffers.
Fix "replot" command in grammar.
Abbreviate "print" command
Fixed a regression in 7cb3975 relating to scanning stack at end-of-command
Add keys C-M-x (evaluate region) and C-j (evaluate line and newline)
Merge branch 'context' into devel
First shot at implementing inline plot images in process buffer