[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Is there any elisp functions to tell whether the cursor is in a comm
From: |
Johan Bockgård |
Subject: |
Re: Is there any elisp functions to tell whether the cursor is in a comment block? |
Date: |
Sun, 13 Jul 2008 21:03:13 +0200 |
User-agent: |
Gnus/5.110009 (No Gnus v0.9) Emacs/23.0.60 (gnu/linux) |
Joe Bloggs <who@cares.invalid> writes:
> bojohan+news@dd.chalmers.se (Johan Bockgård) writes:
>
>> sunway <sunwayforever@gmail.com> writes:
>>
>>> for example, if the cursor is in a normal c code block, I want 'if '
>>> to be expanded to 'if () {}', if it is in the comment block, I prefer
>>> 'if ' not be expanded.
>>
>> ;; Non-nil when inside comment or string
>> (nth 8 (syntax-ppss (point)))
>>
>> --
>> Johan Bockgård
>
> I want to do that too, how do I do a conditional abbrev?
> Currently I have:
>
> (define-abbrev c-mode-abbrev-table "for"
> "" 'c-style-for-loop)
> (define-abbrev c++-mode-abbrev-table "for"
> "" 'c-style-for-loop)
>
> how would I make it only expand in uncommented code?
;; Emacs 22 has `looking-back' and `syntax-ppss'.
;; Emacs 23 has much more powerful abbrevs; we could simply use the
;; `:enable-function' property.
(defmacro define-expander (name predicate expander)
`(progn (put ',name 'no-self-insert t)
(defun ,name ()
(when (and ,predicate
(re-search-backward "\\<\\w+\\=" nil t))
(delete-region (match-beginning 0) (match-end 0))
,expander
t))))
(define-expander
FOR-LOOP
(not (nth 8 (parse-partial-sexp
(save-excursion (beginning-of-defun) (point))
(point))))
(c-style-for-loop))
(define-abbrev c-mode-abbrev-table "for" t 'FOR-LOOP)
--
Johan Bockgård
- Is there any elisp functions to tell whether the cursor is in a comment block?, sunway, 2008/07/13
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Johan Bockgård, 2008/07/13
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, sunway, 2008/07/13
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Joe Bloggs, 2008/07/14
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Lennart Borgman (gmail), 2008/07/14
- Message not available
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Joe Bloggs, 2008/07/14
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Lennart Borgman (gmail), 2008/07/14
- RE: Is there any elisp functions to tell whether the cursor is in a comment block?, Drew Adams, 2008/07/14
- Re: Is there any elisp functions to tell whether the cursor is in a comment block?, Lennart Borgman (gmail), 2008/07/14
- RE: Is there any elisp functions to tell whether the cursor is in a comment block?, Drew Adams, 2008/07/15