Я хочу написать шаблон yasnippet , который позволил бы мне добавить заголовок лицензии в буфер сценария в Emacs. который может быть получен с помощью встроенного расширения elisp из yasnippet.
(comment-region (point-min) (point))
в конец вашего фрагмента. в стиле комментария
или, если вы хотите увидеть, как выглядит комментарий в виде прямоугольника, просто вызовите Mx comment-box
в активной области: Он вызывает comment-region
с правильными параметрами. Первый способ сделать это - настроить стиль, изменив конец предыдущего фрагмента на:
(let ((comment-style 'box))
(comment-region (point-min) (point)))
К сожалению, отступы нечеткие, и мой ящик не прямоугольный . Если я начну с фрагмента:
Copyright (c) ${1:`(nth 5 (decode-time))`}
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted`
(let ((comment-style 'box))
(comment-region (point-min) (point)))`
Расширение этого фрагмента «ломает рамку» (я отлаживаю этот фрагмент с помощью синтаксиса комментариев ocaml, но это не должно иметь значения):
(**************************************************************)
(* Copyright (c) 2010 *)
(* All rights reserved. *)
(* *)
(* Redistribution and use in source and binary forms, with or *)
(* without modification, are permitted *)
(**************************************************************)
*)
этой строки на 25 пробелов раньше, чем на 4. *)
должен появиться на 4 пробела тоже поздно , не слишком скоро . Изменить: У нас есть очень хороший ответ, а также предлагаемое исправление, (привет и спасибо, Сейджи! ), но остается вопрос, как адаптировать его к случаю, когда нужно повторно использовать поле, например, как повторное использование $ 1
в:
Copyright (c) ${1:`(nth 5 (decode-time))`}
All rights reserved.
Redistribution and use in $1, in source and binary forms
`(let ((comment-style 'box))
(comment-region (point-min) (point-at-eol 0)))`
В этом случае механизм шаблонов копирует (переменную -length) значение, полученное для поля $ 1
, а именно 2011
, до последней строки при расширении шаблона (после отступа), давая строку комментария на 2 символа больше. При написании шаблона становится трудно предсказать, что нужно удалить 4 символа в этой строке. Возможно, повторное использование полей и правильного отступа - это слишком много, чтобы требовать одновременного выполнения. Кто-нибудь видит способ сделать это, хотя?