Завершение выделения в Open / Close Tag, как TextMate?

Я столкнулся с такими проблемами, когда класс находится в папке по умолчанию, то есть когда класс не объявляет пакет.

Поэтому я предполагаю, что с помощью оператора пакета (например, package org.me.mypackage;) сверху класса должен исправить это.

11
задан 13 October 2009 в 04:26
поделиться

3 ответа

Этот ответ дает вам решение для обертывания области (после того, как вы измените ее для использования угловых скобок).

Эта процедура предложит вам использовать тег и должен пометьте каждую строку в регионе тегом открытия / закрытия этого типа:

(defun my-tag-lines (b e tag)
  "'tag' every line in the region with a tag"
  (interactive "r\nMTag for line: ")
  (save-restriction
    (narrow-to-region b e)
    (save-excursion
      (goto-char (point-min))
      (while (< (point) (point-max))
        (beginning-of-line)
        (insert (format "<%s>" tag))
        (end-of-line)
        (insert (format "</%s>" tag))
        (forward-line 1)))))

* Примечание: * Если вы хотите, чтобы тег всегда был li , удалите аргумент тега удалите текст \ nMTag для строки: из вызова в интерактивный и обновите вызовы вставки, чтобы просто вставить «

  • » , как и следовало ожидать.

  • 7
    ответ дан 3 December 2019 в 08:04
    поделиться

    yasnippet - это особенно хорошая реализация синтаксиса фрагмента Textmate для Emacs. С его помощью вы можете импортировать все фрагменты Textmate. Если вы установите его тогда, этот фрагмент, который я написал, должен делать то, что вы хотите:

    (defun wrap-region-or-point-with-html-tag (start end)
      "Wraps the selected text or the point with a tag"
      (interactive "r")
      (let (string)
        (if mark-active 
            (list (setq string (buffer-substring start end))
              (delete-region start end)))
        (yas/expand-snippet (point)
                            (point)
                            (concat "<${1:p}>" string "$0</${1:$(replace-regexp-in-string \" .*\" \"\" text)}>"))))
    
    (global-set-key (kbd "C-W") 'wrap-region-or-point-with-html-tag)
    

    EDIT: (Хорошо, это моя последняя попытка исправить это. Это точно так же, как версия Textmate. Он даже игнорирует символы после пробела в конце tag)

    Извините, я неправильно понял ваш вопрос. Эта функция должна редактировать каждую строку в регионе.

    (defun wrap-lines-in-region-with-html-tag (start end)
      "Wraps the selected text or the point with a tag"
      (interactive "r")
      (let (string)
        (if mark-active 
            (list (setq string (buffer-substring start end))
                  (delete-region start end)))
        (yas/expand-snippet
         (replace-regexp-in-string "\\(<$1>\\).*\\'" "<${1:p}>"
          (mapconcat
           (lambda (line) (format "%s" line))
           (mapcar
            (lambda (match) (concat "<$1>" match "</${1:$(replace-regexp-in-string \" .*\" \"\" text)}>"))
            (split-string string "[\r\n]")) "\n") t nil 1) (point) (point))))
    
    3
    ответ дан 3 December 2019 в 08:04
    поделиться

    Для sgml-mode деративов , отметьте область для тегирования, введите Mx sgml-tag и введите имя тега, которое вы хотите использовать (нажмите TAB , чтобы получить список доступных элементов HTML). Хотя,

    5
    ответ дан 3 December 2019 в 08:04
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: