[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: Highlight special string
From: |
Sébastien Vauban |
Subject: |
[Orgmode] Re: Highlight special string |
Date: |
Sat, 27 Nov 2010 09:41:30 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (windows-nt) |
Hi Karl,
Karl Maihofer wrote:
> Darlan Cavalcante Moreira <address@hidden> schrieb:
>> Karl Maihofer <address@hidden> wrote:
>>> I'd like to highlight the strings "(ok)" and "(fail)" in my Org-document.
>>> Ok should get a green background, fail a red one. I think highlighting in
>>> emacs should last, but it would be great to have these strings highlighted
>>> in HTML-export, too, if this is no problem.
>>
>> Not exactly what you want, but for temporary highlights (useful for
>> instance to see if you are repeating the same word too much in a text) you
>> can use hi-lock-mode.
>>
>> Turn hi-lock-mode on with M-x hi-lock-mode. Then you can highlight a word
>> with "C-x w h" (highlight-regexp) or a the line containing a word with "C-x
>> w l" (highlight-lines-matching-regexp). Remove highlights with "C-x w r".
Please find the *lasting* solution that I'm using, hence IMHO better than
hi-lock.
The only thing you would still miss is the ability to get those highlighted
words exported to HTML or PDF.
#+begin_src emacs-lisp
;; special words
(setq my/keywords-error-pattern
"\\(BUG\\|FIXME\\|XXX\\|TODO\\|[Ee]rror\\|ERROR\\|[Ww]arning\\|[Mm]issing\\|[Ii]nvalid\\|[Ff]ailed\\|[Cc]orrupted\\|[Ff]atal\\|FATAL\\|[Uu]ndefined\\|[Dd]enied\\)")
(make-face 'my/keywords-error-face)
(GNUEmacs (set-face-attribute 'my/keywords-error-face nil
;; :family "Serif"
;; :height 0.9
:weight 'normal :slant 'normal
:box '(:line-width 1 :color "#CC0000")
:foreground "#CC0000"
:background "#FFFF88"
))
(setq my/keywords-org-error-pattern
"\\(BUG\\|FIXME\\|XXX\\|[^*]
TODO\\|[Ee]rror\\|[Ww]arning\\|[Mm]issing\\|[Ii]nvalid\\|[Ff]ailed\\|[Cc]orrupted\\|[Ff]atal\\|[Uu]ndefined\\)")
; smaller subset of keywords for
; ensuring no conflict with Org mode
; TODO keywords
;; FIXME Highlighting all special keywords but "TODO" in Org mode is
;; already a good step. Though, a nicer integration would be that "TODO"
;; strings in the headings are not touched by this code, and that only
;; "TODO" strings in the text body would be. Don't know (yet) how to do
;; that...
;; FIXME TODO should be highlighted in Org, even when at beginning of
;; line -- of course, without * in front of it.
;; set up highlighting of special words for proper selected major modes
;; only
(dolist (mode '(fundamental-mode
svn-log-view-mode
text-mode))
; no interference with Org mode (which
; derives from text-mode)
(font-lock-add-keywords
mode
`((,my/keywords-error-pattern 1 'my/keywords-error-face prepend))))
;; set up highlighting of special words for Org mode only
(dolist (mode '(org-mode))
(font-lock-add-keywords
mode
`((,my/keywords-org-error-pattern 1 'my/keywords-error-face prepend))))
;; add fontification patterns (even in comments) to a selected major
;; mode *and* all major modes derived from it
(defun fontify-keywords ()
(interactive)
;; (font-lock-mode -1)
;; (font-lock-mode 1)
(font-lock-add-keywords
nil
`((,my/keywords-error-pattern 1 'my/keywords-error-face prepend))))
;; FIXME 0 t
;; set up highlighting of special words for selected major modes *and*
;; all major modes derived from them
(dolist (hook '(c++-mode-hook
c-mode-hook
change-log-mode-hook
cperl-mode-hook
css-mode-hook
emacs-lisp-mode-hook
html-mode-hook
java-mode-hook
latex-mode-hook
lisp-mode-hook
makefile-mode-hook
message-mode-hook
php-mode-hook
python-mode-hook
sh-mode-hook
shell-mode-hook ;; works in *shell* buffers!
ssh-config-mode-hook))
(add-hook hook 'fontify-keywords))
#+end_src
As signaled in my comments, the only problem I have is that when such a word
appears in a Org heading, the Org heading fontification is disabled -- only
for that single line!
Would someone be able to fix that last tiny feature...
Best regards,
Seb
--
Sébastien Vauban