On 11 March 2018 at 18:13, Eli Zaretskii wrote: > > From: Stefan Monnier > > Date: Sun, 11 Mar 2018 12:05:11 -0400 > > Cc: "Charles A. Roelli" > > > > > -DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, > 4, 5, 0, > > > +DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, > 4, 5, > > > + "(if (< (length mark-ring) 2)\ > > > + (error \"Other region must be marked before transposing two > regions\")\ > > > + (let* ((num (if current-prefix-arg\ > > > + (prefix-numeric-value current-prefix-arg)\ > > > + 0))\ > > > + (ring-length (length mark-ring))\ > > > + (eltnum (mod num ring-length))\ > > > + (eltnum2 (mod (1+ num) ring-length)))\ > > > + (list (point) (mark) (elt mark-ring eltnum) (elt mark-ring > eltnum2))))", > > > > Am I the only one who dislikes seeing such Elisp code hidden within our > > C files? > > I have no problems with that. > > I agree with Eli, it seems fine to me, but I'm not sure what the alternative is. If it's to move the body of the interactive spec into a function in an elisp file, and replace the spec with a call to that function, it seems overly complicated. (It also feel like a layering violation, but that can only be true if there is a rule or guideline saying so and I don't know of any.)