LINUX.ORG.RU

emacs multi-line regexp ??


0

0

Есть ли оно в emacs? Как использовать, какой переключатель?. А то получается только для одной строки.. =( Или как-то можно втавить \n в само выражение.. =\

anonymous
Ответ на: комментарий от asgard

>"\\n" пробовал?

Агы, непомогло. По ссылке тоже читал..

Пока удалось зацепить символ новой строки только, например, так [^a-zA-Z0-9]. Но это уж слишком через ж*опу, не решение. =(

http://jamesthornton.com/emacs/node/emacs_97.html

Также не удалось никак указать код символа.. Встроенный регексп ограниченный какой-то чтоли, наверное можно как-то внешнюю команду использовать.. =\ :d

anonymous
()
Ответ на: комментарий от anonymous

есть ещё [:cntrl:] - должен цапнуть любой ascii control character. но имхо в elisp'e в регекспах ньюлайны как таковые не нужны. может стоит рассказать суть проблемы, для чего это вообще нужно?

asgard
()
Ответ на: комментарий от asgard

[[:cntrl:]] - пробовал. цапает, но это тоже не слишком красиво, т.к. нужно только \n.

>может стоит рассказать суть проблемы

начало здесь http://www.linux.org.ru/view-message.jsp?msgid=1847716&nocache=-1035279945

Пытаюсь c-comment-prefix-regexp покрутить.. может хотябы подсветку "многострочных" //-комментариев удастся поправить.. =/

+ необходимость работать с таким оформлением кода (мог бы хотя бы полностью, а не только по первой строке, подсветить "проблемные" места)

да и вообще зачем-то же придумали многострочные регекспы.. ;) может быть полезно. в vim-е кстати отменно работает, а жаль, я то думал емакс лучший во всех категориях %) сейчас на него перехожу, влюбился прям. 8)

anonymous
()
Ответ на: комментарий от anonymous

> Пытаюсь c-comment-prefix-regexp покрутить.. может хотябы подсветку "многострочных" //-комментариев удастся поправить.. =/

это можно сделать минимум 2мя способами

(defun determie-ml-comment ()
(let
((cp (point))
(beginning-of-line)
(when (looking-at "^//.+\\$")
(do-this-that-and-those))
(goto-char cp))))

или

(defun determie-ml-comment ()
(let
((cp (point))
(end-of-line)
(when (string-match "\\"
(char-to-string (preceding-char)))
(do-this-that-and-those))
(goto-char cp))))

asgard
()
Ответ на: комментарий от Zmacs

>C-q C-j - символ конца строки

Ура!! Работает!! Спасибо, товарищ!!

Хех, а я почему-то жал C-q C-RET, и оно не работало.. Также можно ввести и код символа, здорово!

А ответ был так близок.. %) http://www.linux.org.ru/books/GNU/emacs/emacs_toc.html#TOC90

>Чтобы найти символ перевода строки, введите C-j. Для поиска другого управляющего знака, такого как control-S или возврат каретки, вы должны отменить их специальное значение, набирая перед ними C-q. Эта функция C-q аналогична ее назначению как команды для вставки (see section Вставка текста): она заставляет трактовать следующий знак так, как в этом контексте трактовался бы любой "обычный" знак. Вы также можете задать знак по его восьмиричному коду: введите C-q и затем последовательность восьмиричных цифр.

anonymous
()
Ответ на: комментарий от asgard

>это можно сделать минимум 2мя способами

делаю

(defun dmc ()
  (interactive)
(let
((cp (point)) 
(beginning-of-line) 
(when (looking-at "^//.+\\$") 
(do-this-that-and-those)) 
(goto-char cp))))

C-x C-e

M-x dmc

dmc: `let' bindings can have only one value-form: when, (looking-at "^//.+\\$"), (do-this-that-and-those)

Даже прикрутить не получается, не силён я.. =(

anonymous
()
Ответ на: комментарий от asgard

Спасибо, потихоньку изучаю, как время позволяет

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.