all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Nordlöw <per.nordlow@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Extending the concept of pretty-greek with icons/images
Date: Wed, 05 Sep 2007 04:30:13 -0700	[thread overview]
Message-ID: <1188991813.125435.171000@g4g2000hsf.googlegroups.com> (raw)

We humans are very good at recognizing content based on images and
shapes, often more efficiently than we recognize words, at least when
the words are long. For this reason a text written in chinese and/or
japanese can more efficiently ("with a higher bandwidth") explain a
concept to to the reader than is possible with (western) alphabets.

When reading source code, especially C code, we are often confronted
by quite long function names, especially in C environments such as
GNOME. These function names are however built up of smaller words or
acronyms often separated by underline or capitalization. After having
seen the clever Emacs extensions pretty-lamda and pretty-greek (given
below) I have gotten a feeling that this concept of "visual
abbreviations" could be applied also to these contexts of long C
identifiers. I believe this would make reading such C source code
easier and more visually attractive. Wanting to try out my idea I
thought I could start simple by overlay/change all the gtk_ prefix
with a miniturized version of the GTK's main icon seen www.gtk.org
(http://www.gtk.org/images/gtk-logo-rgb.gif). Is this possible to do
easily in Emacs or do I have to change the internals (C code) of
Emacs?

Thanks in advance for any reflections or/and help,
Nordlöw

Emacs Lisp Sources for pretty-greek follows. Just add to .emacs,
evaluate and restart emacs or do M-x emacs-lisp-mode to activate the
hook:

;; Pretty Greek
;; This is BenignoUria modification to Pretty Lambda. Substitutes all
;; greek letter names with its character. Very nice if you use greek
;; letters as parameters in parts of your code.
(defun pretty-greek ()
  (let ((greek '("alpha" "beta" "gamma" "delta" "epsilon" "zeta" "eta"
"theta" "iota" "kappa" "lambda" "mu" "nu" "xi" "omicron" "pi" "rho"
"sigma_final" "sigma" "tau" "upsilon" "phi" "chi" "psi" "omega")))
    (loop for word in greek
	  for code = 97 then (+ 1 code)
	  do (let ((greek-char (make-char 'greek-iso8859-7 code)))
	       (font-lock-add-keywords
		nil
		`((,(concatenate
		     'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[a-zA-Z]")
		   (0 (progn
			(decompose-region (match-beginning 2) (match-end 2))
			nil)))))
	       (font-lock-add-keywords
		nil
		`((,(concatenate
		     'string "\\(^\\|[^a-zA-Z0-9]\\)\\(" word "\\)[^a-zA-Z]")
		   (0 (progn (compose-region (match-beginning 2) (match-end 2)
					     ,greek-char)
			     nil)))))))))
(add-hook 'lisp-mode-hook 'pretty-greek)
(add-hook 'emacs-lisp-mode-hook 'pretty-greek)
;; (add-hook 'c-mode-common-hook 'pretty-greek)

             reply	other threads:[~2007-09-05 11:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-05 11:30 Nordlöw [this message]
2007-10-05 13:39 ` Extending the concept of pretty-greek with icons/images Johan Bockgård
2007-10-09  8:55   ` Nordlöw

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1188991813.125435.171000@g4g2000hsf.googlegroups.com \
    --to=per.nordlow@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.