From: A Soare <alinsoar@voila.fr>
To: "Emacs Dev [emacs-devel]" <emacs-devel@gnu.org>
Subject: Re: Indentation of constants in LISP
Date: Thu, 22 Feb 2007 14:29:53 +0100 (CET) [thread overview]
Message-ID: <11558945.114411172150993147.JavaMail.www@wwinf4201> (raw)
I simplified the code as much as I could, and I solved a bug from yesterday.
This is a final version I think.
Alin Soare.
Index: emacs/lisp/emacs-lisp/lisp-mode.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/lisp-mode.el,v
retrieving revision 1.199
diff -c -r1.199 lisp-mode.el
*** emacs/lisp/emacs-lisp/lisp-mode.el 17 Feb 2007 11:34:22 -0000 1.199
--- emacs/lisp/emacs-lisp/lisp-mode.el 22 Feb 2007 13:27:18 -0000
***************
*** 909,942 ****
(cond ((elt state 3)
;; Inside a string, don't change indentation.
nil)
- ((save-excursion
- ;; test whether current line begins with a constant
- (goto-char indent-point)
- (skip-chars-forward " \t")
- (looking-at ":"))
- (let ((desired-indent
- (save-excursion
- (goto-char (1+ containing-sexp))
- (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)
- (point)))
- (parse-sexp-ignore-comments t))
- ;; Align a constant symbol under the last constant symbol
- (goto-char calculate-lisp-indent-last-sexp)
- (while (> (point) desired-indent)
- (if (looking-at ":")
- (setq desired-indent (point))
- (backward-sexp 1))))
- (current-column))
((and (integerp lisp-indent-offset) containing-sexp)
;; Indent by constant offset
(goto-char containing-sexp)
(+ (current-column) lisp-indent-offset))
(desired-indent)
- ((and (boundp 'lisp-indent-function)
- lisp-indent-function
- (not retry))
- (or (funcall lisp-indent-function indent-point state)
- normal-indent))
(t
normal-indent))))))
--- 909,954 ----
(cond ((elt state 3)
;; Inside a string, don't change indentation.
nil)
((and (integerp lisp-indent-offset) containing-sexp)
;; Indent by constant offset
(goto-char containing-sexp)
(+ (current-column) lisp-indent-offset))
+ ;; in this case calculate-lisp-indent-last-sexp is not nil
+ (calculate-lisp-indent-last-sexp
+ (or
+ ;; try to align the parameters of a known function
+ (and (boundp 'lisp-indent-function)
+ lisp-indent-function
+ (not retry)
+ (funcall lisp-indent-function indent-point state))
+ ;; if not a standard function, try to align a constant-symbol
+ ;; under the last preceding constant symbol, if there is such one
+ ;; of the last 2 preceding symbols, in the previous uncommented
+ ;; line
+ (and (save-excursion
+ (goto-char indent-point)
+ (skip-chars-forward " \t")
+ (looking-at ":"))
+ (> calculate-lisp-indent-last-sexp
+ (save-excursion
+ (goto-char (1+ containing-sexp))
+ (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t)
+ (point)))
+ (let ((parse-sexp-ignore-comments t)
+ indent)
+ (goto-char calculate-lisp-indent-last-sexp)
+ (or (and (looking-at ":")
+ (setq indent (current-column)))
+ (and (< (save-excursion (beginning-of-line) (point))
+ (prog2 (backward-sexp) (point)))
+ (looking-at ":")
+ (setq indent (current-column))))
+ indent))
+ ;; another symbols or constants not preceded by a constant
+ ;; as defined above.
+ normal-indent))
+ ;; in this case calculate-lisp-indent-last-sexp is nil
(desired-indent)
(t
normal-indent))))))
next reply other threads:[~2007-02-22 13:29 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-22 13:29 A Soare [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-02-23 15:58 Indentation of constants in LISP A Soare
2007-02-22 2:53 A Soare
2007-02-22 2:24 A Soare
2007-02-22 17:20 ` Richard Stallman
2007-02-21 22:33 A Soare
2007-02-21 10:41 A Soare
2007-02-22 17:21 ` Richard Stallman
2007-02-21 8:32 A Soare
2007-02-20 19:17 A Soare
2007-02-21 8:38 ` Richard Stallman
2007-02-20 18:23 A Soare
2007-02-20 15:28 A Soare
2007-02-20 14:26 A Soare
2007-02-21 22:55 ` Richard Stallman
2007-02-20 14:14 A Soare
2007-02-20 18:04 ` Stuart D. Herring
2007-02-05 14:33 A Soare
2007-02-05 9:51 A Soare
2007-02-05 7:41 A Soare
2007-02-05 19:06 ` Stefan Monnier
2007-02-04 13:28 A Soare
2007-02-05 0:23 ` Richard Stallman
2007-02-05 1:28 ` Stefan Monnier
2007-02-04 11:37 A Soare
2007-02-02 16:17 A Soare
2007-02-03 11:19 ` Richard Stallman
2007-02-20 13:29 ` Johan Bockgård
2007-02-21 0:44 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11558945.114411172150993147.JavaMail.www@wwinf4201 \
--to=alinsoar@voila.fr \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).