{"id":225,"date":"2011-01-18T21:05:53","date_gmt":"2011-01-18T19:05:53","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=225"},"modified":"2022-08-20T18:26:02","modified_gmt":"2022-08-20T16:26:02","slug":"servidor-de-emacs-emacsclient-y-emacsserver","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=225","title":{"rendered":"Servidor de emacs: emacsclient y emacsserver"},"content":{"rendered":"<p style=\"text-align: justify;\">Algunos usuarios se quejan de la tardanza que tiene emacs al cargar comparado con otros. Sobre todo debido a la gran carga a medida que este se va configurando modificando funcionalidades en nuestro <strong>.emacs<\/strong>. Para ello existe una solucion; usar emacsclient, que nos permitira evitar toda esta carga cada vez que lancemos emacs. Para ello no hay que hacer realmente nada, ya que esta feature viene en el paquete emacs base y tampoco requiere de ninguna configuracion especial. Aunque aqui incluiremos algunas lineas que nos facilitaran las tareas.<\/p>\n<p>Recomiendo poner en nuestro <strong>.bashrc<\/strong> las siguientes lineas:<\/p>\n<p style=\"text-align: justify;\">Estos cambios tendran efecto o bien si nos logueamos en otra consola, o bien si nos deslogueamos y logueamos en la misma o bien si lanzamos el comando <strong>source<\/strong> <strong>~\/.bashrc<\/strong> :<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #333399;\">export EDITOR=\u00bbemacsclient -c\u00bb<br \/>\nexport VISUAL=\u00bbemacsclient -c\u00bb<br \/>\nexport ALTERNATIVE_EDITOR=\u00bbemacs\u00bb<br \/>\nalias e=\u00bbemacsclient -c\u00bb<br \/>\nalias es=\u00bbemacs &#8211;daemon\u00bb<br \/>\nalias ec=\u00bbemacsclient -c\u00bb<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>Nota para aquellos que no quieran usar estos alias:<\/strong><\/span> si no quisieramos poner estas lineas y seguir con la configuracion de toda la vida: debemos lanzar<strong> emacs &#8211;daemon<\/strong> la primera vez y luego ir lanzando<strong> emacsclient -c<\/strong> cada vez para cada hilo de ese daemon o bien <strong>emacs<\/strong> para un proceso nuevo cada vez.<\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">Nota para los que si habeis decidido modificar vuestro .bashrc:<\/span><\/strong> De esta forma podemos lanzar el comando \u00ab<strong>es<\/strong>\u00bb desde cualquier terminal o consola la primera vez, y luego lanzar <strong>emacs<\/strong> (si queremos un proceso cada vez) o simplemente teclear <strong>e <\/strong>(si queremos un hilo cada vez). Veremos que se queda emacs como daemon o proceso residente en memoria, de esa forma cada vez que lanzamos emacs, se estara lanzando un hilo de este proceso en lugar de un proceso cada vez, ademas esto permitira intercomunicar los distintos hilos, sin importar si lo lanzamos en una consola y ahora nos encontramos en las XWindow y lo abrimos con GTK o desde un terminal, podremos tener acceso a los distintos buffers, con toda la informacion. etc. (Aqui el comando <strong>fbgrab<\/strong> lo empleo para capturas de pantalla en consola, pero carece de interes para el fin de este articulo, el comando verdaderamente importante es el primero que lanzo:<strong> emacs &#8211;daemon<\/strong>):<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-227 aligncenter\" title=\"es1\" src=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es1.png\" alt=\"\" width=\"744\" height=\"502\" srcset=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es1.png 744w, https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es1-300x202.png 300w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Emacs como daemon<\/p>\n<p style=\"text-align: justify;\">Es importante tener en cuenta, que cuando salgamos de emacs (emacsclients) realmente es como si estuviesemos cerrando frames, ya que emacsserver seguira corriendo con aquella informacion modificada, asi que debemos cercionarnos de no apagar o reiniciar (aunque no veamos un emacs (en este caso emacsclient) mostrado, ya que podemos cerrar todos los emacsclients sin haber guardado ningun fichero o las ultimas modificaciones, ya que esto se queda residente en memoria aunque no tenga ninguna representacion).<\/p>\n<p style=\"text-align: justify;\">Ahora ya tenemos nuestro querido emacs, que carga en 0 segundos. El \u00abreal\u00bb es el tiempo que he tardado desde que pulse intro del comando \u00ab<strong>time emacsclient -c<\/strong>\u00bb hasta que presione \u00ab<strong>C-x c<\/strong>\u00bb para cerrar emacs (es decir el tiempo que tarde en abrir y cerrar emacs), pero el tiempo de carga real como podemos ver ni siquiera llega a 1 milesima de segundo (el comando <strong>fbi<\/strong> es el que uso para previsualizar capturas en consola que carece de importancia en este articulo, el comando <strong>time<\/strong> precediendo a cualquier comando es el que nos da los tiempos):<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-226  aligncenter\" title=\"es2\" src=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es2.png\" alt=\"\" width=\"696\" height=\"108\" srcset=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es2.png 696w, https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2011\/01\/es2-300x46.png 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">Emacs cargado en menos de 1 milesima de segundo<\/p>\n<p style=\"text-align: justify;\">Por ultimo hacer mencion especial a la primera captura de pantalla, si os fijais bien, tengo algunas features externas al paquete emacs, por lo que nuestro <strong>$HOME<\/strong> se va llenando de estas, aqui entra la esencia de reorganizar y reordenar estas features para no mezclarlas con otros ficheros y que nuestro directorio de usuario se convierta en algo caotico. Lo ideal, es emplear <a href=\"http:\/\/www.emacswiki.org\/emacs\/DotEmacsDotD\">un directorio<\/a> para ello por ejemplo &#8216;<strong>emacs<\/strong>&#8216; o &#8216;<strong>elisp<\/strong>&#8216; (ya que emacs se suele emplear cuando se descarga emacs desde el cvs\/svn\/git) donde dentro esten estas features o bien &#8216;<strong>.emacs.d\/elisp<\/strong>&#8216;. Todo esto es opcional, pero son buenas practicas que hara que todo nuestro sistema de ficheros tenga mayor coherencia a la hora de buscar ficheros; en mi caso, segun el ordenador que utilice, lo tengo mas o menos desordenado ;-).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Algunos usuarios se quejan de la tardanza que tiene emacs al cargar comparado con otros. Sobre todo debido a la gran carga a medida que este se va configurando modificando funcionalidades en nuestro .emacs. Para ello existe una solucion; usar emacsclient, que nos permitira evitar toda esta carga cada vez que lancemos emacs. Para ello [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[166,167,175,172,165,171,169,170,177,178,179,174,173,168,181,176,180],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-basic","tag-alias","tag-bash","tag-bashrc","tag-daemon","tag-editor","tag-emacs-daemon","tag-emacsclient","tag-emacsserver","tag-fbgrab","tag-frames","tag-marcos","tag-residente-en-memoria","tag-server","tag-shell","tag-tiempo-de-carga","tag-time","tag-ventanas"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225"}],"collection":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225"}],"version-history":[{"count":7,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":763,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions\/763"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}