Nov 30 2009

Color-theme

Tag: basicoverdrive @ 5:20 pm

Color-theme es un script en elisp que permite la carga de temas para emacs. Color-theme.el carga el fichero color-theme-6.6.0/themes/color-theme-library.el, que es el fichero que contiene los temas que no son mas que pedazos de codigo a modo de funcion unidos en un mismo fichero e interpretados por color-theme.el.

Por lo tanto tendremos que cargar el script color-theme.el y especificar que tema queremos cargar en nuestro .emacs, y del resto ya lo hara nuestro color-theme.el.

Tambien podemos editar el fichero color-theme-library.el y modificar un tema a nuestro gusto, que siempre es una tarea menos compleja que comenzar uno de cero. En cualquier caso pasemos a explicar como instalar y configurar color-theme. Primero debemos descargarlo en la web oficial:

http://www.nongnu.org/color-theme/

Desde dicha web recomiendo usar la version tarball, ya que asi tenemos un control total de donde y como se instalan las cosas, donde descomprimimos, etc:

http://mirrors.aixtools.net/sv/color-theme/

Luego solo debemos descomprimirlo (por ejemplo en nuestro $HOME) mediante:

$ tar xvfz color-theme-6.6.0.tar.gz (o la version que sea)

Una vez hecho esto, no debemos compilar ni instalar (entendiendo por instalar un make install que simplemente copia ciertos ficheros generalmente binarios en directorios del sistema en lugar de directorios locales al usuario).

Una vez hecho esto tan solo debemos anadir a nuestro .emacs las siguientes lineas:

(add-to-list ‘load-path «~/color-theme-6.6.0»)
(require ‘color-theme)
(color-theme-initialize)

Y anadir esta otra para cargar un theme emacs (por ejemplo uno de mis favoritos):

(color-theme-goldenrod)

Para ver la lista de themes podemos e ir probando uno a uno podemos hacer M-x color-theme- y presionamos la tecla TAB, podremos ver un listado de los mismos, sin embargo la carga y recarga de uno y otro tema conlleva la ventaja de que es mas rapido ir probando nuevos temas, pero la desventaja que si un nuevo tema no cambia alguna propiedad de emacs, se quedara con la propiedad antigua, lo que no nos permitira ver totalmente o deformara el tema original.

Aqui dejo para quien quiera descargar mi color-theme basado en goldenrod (tan solo se deben copiar las siguientes lineas en el color-theme-library.el y anadir (color-theme-overdrive) en nuestro .emacs):

(defun color-theme-overdrive ()
«Brown color theme.  Very different from the others.
Supports standard, font-lock and info faces, and it uses
`color-theme-blue-gnus’, `color-theme-blue-erc’ , and
`color-theme-beige-diff’.»
(interactive)
(color-theme-blue-gnus)
(let ((color-theme-is-cumulative t))
(color-theme-blue-erc)
(color-theme-beige-diff)
(color-theme-beige-eshell)
(color-theme-install
‘(color-theme-goldenrod
((background-color . «black»)
(background-mode . dark)
(border-color . «black»)
(cursor-color . «light goldenrod»)
(foreground-color . «goldenrod»)
(mouse-color . «goldenrod»))
((goto-address-mail-face . info-xref)
(list-matching-lines-face . bold)
(view-highlight-face . highlight))
(default ((t (nil))))
(bold ((t (:bold t))))
(bold-italic ((t (:italic t :bold t :foreground «lavender»))))
(font-lock-builtin-face ((t (:foreground «pale goldenrod»))))
(font-lock-comment-face ((t (:foreground «indian red»))))
(font-lock-constant-face ((t (:foreground «pale green»))))
(font-lock-function-name-face ((t (:bold t :foreground «lemon chiffon»))))
(font-lock-keyword-face ((t (:foreground «wheat»))))
(font-lock-string-face ((t (:foreground «gold»))))
(font-lock-type-face ((t (:foreground «dark khaki» :bold t))))
(font-lock-variable-name-face ((t (:bold t :foreground «khaki»))))
(font-lock-warning-face ((t (:bold t :foreground «orange red»))))
(fringe ((t (:background «gray25»))))
(header-line ((t (:background «aliceblue» :foreground «black»))))

(highlight ((t (:background «dark slate blue»))))
(info-menu-5 ((t (:underline t))))
(info-node ((t (:bold t))))
(info-xref ((t (:bold t :foreground «pale goldenrod»))))
(isearch ((t (:background «SeaGreen4» :foreground «black»))))
(isearch-lazy-highlight-face ((t (:background «cyan» :foreground «black»))))
(italic ((t (:italic t :foreground «lavender»))))
(menu ((t (:background «gray25» :foreground «lemon chiffon»))))
(modeline ((t (:background «gray40» :foreground «lemon chiffon» :box (:line-width 1 :style released-button)))))
(modeline-buffer-id ((t (:background «AntiqueWhite4» :foreground «blue»))))
(modeline-mousable ((t (:background «AntiqueWhite4» :foreground «lemon chiffon»))))
(modeline-mousable-minor-mode ((t (:background «wheat» :foreground «lemon chiffon»))))
(mode-line-inactive ((t (:background «gray20» :foreground «lemon chiffon» :box (:line-width 1 :style released-button)))))
(region ((t (:background «red» :foreground «black»))))
(secondary-selection ((t (:background «dark green»))))
(tool-bar ((t (:background «gray25» :foreground «lemon chiffon» :box (:line-width 1 :style released-button)))))
(left-margin ((t (:background «darkblue» :foreground «yellow»))))
(underline ((t (:underline t))))))))

Algunas capturas de pantalla de mi theme:

Tema con codigo fuente buscando cadena con C-s y resaltando las ocurrencias

Tema con codigo empleando resaltado para regiones

Tema resaltando directorios y ficheros en eshell


Nov 30 2009

Yasnippet

Tag: basicoverdrive @ 3:16 pm

Yasnippet es un sistema de plantillas (templates) para emacs. Dicho sistema permite escribir con abreviaturas y que éstas se expandan automáticamente en plantillas para las funciones. Los lenguajes soportados de momento son c, c++, c#, perl, python, ruby, SQL, LaTeX, HTML, CSS, etc… aunque siempre puedes importar tus propios templates.

Para descargar yasnippet se puede realizar en su página oficial y la documentación es accesible desde aquí. Para instalar yanippet tan sólo se debe descargar, desempaquetar el .tgz y mover el fichero llamado yasnippet-bundle.el en ~/.emacs.d/plugins (o bien en cualquier directorio desde donde queramos cargarlo, siempre indicándolo en nuestro .emacs claro):

(add-to-list ‘load-path «~/.emacs.d/plugins»)
(require ‘yasnippet-bundle)
(yas/initialize)
(yas/load-directory «~/.emacs.d/plugins/yasnippet-version/snippets»)

Por si a alguien no le ha quedado aún claro, podéis ver una demo de como realizar la instalación:

Una vez hecho esto, lanzamos nuestro flamante emacs y probamos a escribir palabras reservadas como #include o bien cualquier función de la libc o cualquier parte de la demostración del video observada más arriba. Para comenzar a usarlo, tan sólo debemos usar la tecla TAB (tabulador).

Aunque yasnippet, como lo es emacs, es muy extensible, configurable  y organizable. Veamos como se puede usar toda la potencia de yasnippet.

Para la carga de snippets (ver la web oficial de yasnippet la sección «Snippet Organization»):

Podemos crear un directorio especialmente para nuestros propios snippets, en nuestro .emacs:

;; Keep personal snippets under ~/.emacs.d/mysnippets
(setq yas/root-directory «~/.emacs.d/mysnippets»)

;; Load the snippets
(yas/load-directory yas/root-directory)

Podemos conseguir un efecto árbol según los snippets que tengamos usando yas-parents, yas-make-groups, etc… (leer la documentacion oficial para mas informacion), aqui dejo los enlaces de dicha documentacion:

Organizacion de snippets

http://yasnippet.googlecode.com/svn/trunk/doc/snippet-organization.html

Expansión de triggers

http://yasnippet.googlecode.com/svn/trunk/doc/snippet-expansion.html

Desarrollo de snippets

http://yasnippet.googlecode.com/svn/trunk/doc/snippet-development.html


Nov 30 2009

Instalando Emacs del CVS / GIT

Tag: basicoverdrive @ 4:25 am

Para descargar la ultima version de Emacs en desarrollo, podemos usar o bien CVS o bien GIT. Tengamos en cuenta antes de nada que a veces el build puede no funcionar, debido a que la version descargada es la ultima, aunque deberia haber sido probada y compilada en repositorios locales antes de hacer el commit en el servidor. En cualquier caso para descargar el source usando GIT haremos (requiere tener instalado git, por ejemplo en debian seria apt-get install git):

$ git clone git://git.sv.gnu.org/emacs.git

O bien usando CVS mediante (requiere tener instalado cvs, por ej. en debian seria apt-get install cvs):

$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/cvsroot/emacs co emacs

Una vez descargado los fuentes, entramos en el directorio creado donde se encuentren:

$ cd emacs

Ya tenemos nuestro emacs ultima version en codigo fuente, ahora debemos hacer un ./configure con los parametros deseados para preparar el Makefile que contendra las opciones con las cuales se vaya a compilar, este proceso tambien se asegurara de que las bibliotecas fundamentales requeridas por emacs, asi como algunas necesarias requeridas por features de los parametros anadidas a emacs, esten instaladas antes de comenzar con el proceso de compilacion.

En algunos sistemas por defecto no se tienen algunas bibliotecas instaladas por defecto necesarias para ciertos parametros por defecto incluido en el ./configure):

  • Features fundamentales:

feature xpm (soporte para formato XPM) requiere libxpm mediante apt-get install libxpm-dev

feature jpeg (soporte para formato JPG) requiere libjpeg mediante apt-get install libjpeg7-dev

feature png (soporte para formato PNG) requiere libpng mediante apt-get install libpng12-dev

feature gif (soporte para formato GIF) requiere libgif y libungif mediante apt-get install libgif4-dev

feature tiff (soporte para formato TIFF) requiere libtiff mediante apt-get install libtiff4-dev

  • Otras features:

feature gpm (manejo de peticiones del mouse) requiere libgpm-dev mediante apt-get install libgpm-dev

feature dbus (message bus, empleado para mensajes entre aplicaciones) requiere libdbus mediante apt-get install libdbus-1-dev

feature xaw (Athena toolkit que anade apariencia 3D) requiere libXaw3d mediante apt-get install libxaw7-dev

feature svg (soporte para formato SVG) requiere librsvg mediante apt-get install librsvg2-dev

feature m17n-flt (manejo de procesamiento de texto multilenguaje) requiere libm17n mediante apt-get install libm17n-dev

feature otf (soporte de fuente opentype) requiere libotf mediante apt-get install libotf-dev

Una vez hecho el configure con exito, tenemos un paso adicional que no se suele necesitar en los ficheros tarball, esta es la de ejecutar el ./bootstrap que no es mas que un proceso donde se compilan los ficheros elisp con extension .el a byte-compiled que generara ficheros con extension .elc. Por lo que si emacs dispone de ambos (.el y .elc) siempre cargara los ficheros .elc para acelerar el proceso de carga, ya que es mas rapido que interpretar los ficheros elisp.

Una vez terminado este proceso, podemos proceder a compilar nuestro emacs mediante make, si todo ha salido bien (cruzad los dedos) tendremos nuestro fichero binario resultante en src/emacs (generalmente ~/emacs/src/emacs si se ha seguido este proceso comenzando en el $HOME de cada usuario).

Asi que podemos hacer un alias en nuestro .bashrc de tal forma en la que tengamos una linea algo asi:

$ alias emacs=’~/emacs/src/emacs’

Podemos emplear el comando source .bashrc para la recarga de dicho script, sin necesidad de hacer logout y login de nuevo.

Tambien podemos realizar la instalacion de emacs (que no es mas que la copia de los ficheros binarios en parte de nuestro $PATH y la copia de algunos otros ficheros adicionales en parte de nuestro disco duro) mediante make install como root.

Usar la version de desarrollo de Emacs es bastante interesante, donde se pueden ver features que no se pueden ver en los paquetes precompilados del sistema o en la ultima version stable, como por ejemplo el soporte de Xft.


« Página anteriorPágina siguiente »