[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: antlr-mode.el - need some support by python.el
From: |
Stefan Monnier |
Subject: |
Re: antlr-mode.el - need some support by python.el |
Date: |
Tue, 09 Jun 2015 11:58:46 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) |
Looks good to me, please install,
Stefan
>>>>> "Wedler," == Wedler, Christoph <address@hidden> writes:
> Here as now a new version - changes to previous one:
> - fetch/rebase this morning
> - mention text-properties (good idea) and typical use cases in the
> docstring of `prog-indentation-context'
> - prog-widen: no widen for narrow-to-region case, docstring
> "should"->"can" (you are right, "should" was meant for "make it
> respect the value `prog-indentation-context'"
> a1bd75f57b6d2c726a9c214536da9b63c9c67672 HEAD master
> Author: Christoph Wedler <address@hidden>
> Date: Wed Jun 3 13:54:31 2015 +0000
> Some generic support for multi-mode indentation.
> 2 files changed, 73 insertions(+)
> ChangeLog.2 | 7 +++++
> lisp/progmodes/prog-mode.el | 66
> +++++++++++++++++++++++++++++++++++++++++++++
> Modified ChangeLog.2
> diff --git a/ChangeLog.2 b/ChangeLog.2
> index 4d59b8f..22c4684 100644
> --- a/ChangeLog.2
> +++ b/ChangeLog.2
> @@ -1,3 +1,10 @@
> +2015-06-09 Christoph Wedler <address@hidden>
> +
> + Some generic support for multi-mode indentation.
> + * lisp/progmodes/prog-mode.el (prog-indentation-context): New
> + variable.
> + (prog-first-column, prog-widen): New convenience functions.
> +
> 2015-06-06 Paul Eggert <address@hidden>
> Merge from gnulib
> Modified lisp/progmodes/prog-mode.el
> diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el
> index 0d9fabd..cb8aaad 100644
> --- a/lisp/progmodes/prog-mode.el
> +++ b/lisp/progmodes/prog-mode.el
> @@ -48,6 +48,51 @@
> map)
> "Keymap used for programming modes.")
> +(defvar prog-indentation-context nil
> + "Non-nil while indenting embedded code chunks.
> +There are languages where part of the code is actually written in
> +a sub language, e.g., a Yacc/Bison or ANTLR grammar also consists
> +of plain C code. This variable enables the major mode of the
> +main language to use the indentation engine of the sub mode for
> +lines in code chunks written in the sub language.
> +
> +When a major mode of such a main language decides to delegate the
> +indentation of a line/region to the indentation engine of the sub
> +mode, it is supposed to bind this variable to non-nil around the call.
> +
> +The non-nil value looks as follows
> + \(FIRST-COLUMN (START . END) PREVIOUS-CHUNKS)
> +
> +FIRST-COLUMN is the column the indentation engine of the sub mode
> +should usually choose for top-level language constructs inside
> +the code chunk (instead of 0).
> +
> +START to END is the region of the code chunk. See function
> +`prog-widen' for additional info.
> +
> +PREVIOUS-CHUNKS, if non-nil, provides the indentation engine of
> +the sub mode with the virtual context of the code chunk. Valid
> +values are:
> +
> + - A string containing code which the indentation engine can
> + consider as standing in front of the code chunk. To cache the
> + string's calculated syntactic information for repeated calls
> + with the same string, it is valid and expected for the inner
> + mode to add text-properties to the string.
> +
> + A typical use case is for grammars with code chunks which are
> + to be indented like function bodies - the string would contain
> + a corresponding function header.
> +
> + - A function called with the start position of the current
> + chunk. It will return either the region of the previous chunk
> + as \(PREV-START . PREV-END) or nil if there is no further
> + previous chunk.
> +
> + A typical use case are literate programming sources - the
> + function would successively return the code chunks of the
> + previous macro definitions for the same name.")
> +
> (defun prog-indent-sexp (&optional defun)
> "Indent the expression after point.
> When interactively called with prefix, indent the enclosing defun
> @@ -61,6 +106,27 @@ instead."
> (end (progn (forward-sexp 1) (point))))
> (indent-region start end nil))))
> +(defun prog-first-column ()
> + "Return the indentation column normally used for top-level constructs."
> + (or (car prog-indentation-context) 0))
> +
> +(defun prog-widen ()
> + "Remove restrictions (narrowing) from current code chunk or buffer.
> +This function can be used instead of `widen' in any function used
> +by the indentation engine to make it respect the value
> +`prog-indentation-context'.
> +
> +This function (like 'widen') is useful inside a
> +`save-restriction' to make the indentation correctly work when
> +narrowing is in effect."
> + (let ((chunk (cadr prog-indentation-context)))
> + (if chunk
> + ;; no widen necessary here, as narrow-to-region changes (not
> + ;; just narrows) existing restrictions
> + (narrow-to-region (car chunk) (or (cdr chunk) (point-max)))
> + (widen))))
> +
> +
> (defvar-local prettify-symbols-alist nil
> "Alist of symbol prettifications.
> Each element looks like (SYMBOL . CHARACTER), where the symbol
- RE: antlr-mode.el - need some support by python.el, Wedler, Christoph, 2015/06/03
- Re: antlr-mode.el - need some support by python.el, Stefan Monnier, 2015/06/03
- RE: antlr-mode.el - need some support by python.el, Wedler, Christoph, 2015/06/05
- Re: antlr-mode.el - need some support by python.el, Dmitry Gutov, 2015/06/05
- RE: antlr-mode.el - need some support by python.el, Wedler, Christoph, 2015/06/08
- Re: antlr-mode.el - need some support by python.el, Stefan Monnier, 2015/06/08
- Re: antlr-mode.el - need some support by python.el, Dmitry Gutov, 2015/06/08
- Re: antlr-mode.el - need some support by python.el, Stefan Monnier, 2015/06/08
- Re: antlr-mode.el - need some support by python.el, Dmitry Gutov, 2015/06/08
- RE: antlr-mode.el - need some support by python.el, Wedler, Christoph, 2015/06/09
- Re: antlr-mode.el - need some support by python.el,
Stefan Monnier <=
- Re: antlr-mode.el - need some support by python.el, Wedler, Christoph, 2015/06/09
- Re: antlr-mode.el - need some support by python.el, Dmitry Gutov, 2015/06/15
- Re: antlr-mode.el - need some support by python.el, Stefan Monnier, 2015/06/08