<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6734527039160439299</id><updated>2012-05-21T09:05:32.401+03:00</updated><category term='cooking'/><category term='linux'/><category term='gtd'/><category term='math'/><category term='tricks'/><category term='wiki'/><category term='emacs'/><category term='admin'/><category term='devel'/><category term='java'/><category term='nethack'/><category term='arch'/><category term='bug'/><category term='security'/><category term='sci'/><category term='lisp'/><category term='ntp'/><category term='blog'/><category term='utils'/><category term='firefox'/><category term='pgp'/><category term='make'/><category term='posix'/><category term='blogger'/><category term='purchase'/><category term='shell'/><category term='tips'/><category term='debian'/><category term='windows'/><category term='elisp'/><category term='hg'/><category term='vcs'/><category term='cpu'/><category term='backup'/><category term='sh'/><category term='humor'/><title type='text'>Brain Break (ru).</title><subtitle type='html'>it/security/free/math/sci/music
&lt;p&gt;
Русская версия &lt;a href="http://brain-break.blogspot.com"&gt;brain-break.blogspot.com&lt;/a&gt;. Присоединяйтесь!&lt;/p&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/-/emacs'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/search/label/emacs'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6734527039160439299.post-2234881617140746121</id><published>2010-08-17T00:47:00.004+03:00</published><updated>2010-12-21T21:57:37.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Определение рабочего окружения и возможностей платформы в Emacs</title><content type='html'>&lt;style type="text/css"&gt;
div#code {
  border: dotted 1px #cccccc;
  background: #fffff0;
  width: 95%; overflow: auto;
  line-height: 1em;
  margin: 5px; padding: 5px;
  white-space: pre; font-family: monospace;
}
&lt;/style&gt;

Для правильной работы файла настроек &lt;code&gt;.emacs&lt;/code&gt; на различных платформах и различных версиях Emacs требуется проверять множество условий.
&lt;p&gt;
Я собрал несколько из них.
&lt;a name='more'&gt;&lt;/a&gt;
&lt;p&gt;
Итак посмотрите на указанные переменные:
&lt;div id="code"&gt;  emacs-major-version
  emacs-minor-version
  window-system             - 'nil' if in terminal, 'w32' if native Windows build, 'x' if under X Window
  window-system-version     - for windows only
  operating-system-release  - release of the operating system Emacs is running on
  system-configuration      - like configuration triplet: cpu-manufacturer-os
  system-name               - host name of the machine you are running on
  system-time-locale
  system-type               - indicating the type of operating system you are using:
                              'gnu' (GNU Hurd), 'gnu/linux', 'gnu/kfreebsd' (FreeBSD),
                              'darwin' (GNU-Darwin, Mac OS X), 'ms-dos', 'windows-nt', 'cygwin'
  system-uses-terminfo
  window-size-fixed
&lt;/div&gt;

а также указанные функции:

&lt;div id="code"&gt;  (fboundp ...)             - return t if SYMBOL's function definition is not void
  (featurep ...)            - returns t if FEATURE is present in this Emacs
  (display-graphic-p)       - return non-nil if DISPLAY is a graphic display; graphical
                              displays are those which are capable of displaying several
                              frames and several different fonts at once
  (display-multi-font-p)    - same as 'display-graphic-p'
  (display-multi-frame-p)   - same as 'display-graphic-p'
  (display-color-p)         - return t if DISPLAY supports color
  (display-images-p)        - return non-nil if DISPLAY can display images
  (display-grayscale-p)     - return non-nil if frames on DISPLAY can display shades of gray
  (display-mouse-p)         - return non-nil if DISPLAY has a mouse available
  (display-popup-menus-p)   - return non-nil if popup menus are supported on DISPLAY
  (display-selections-p)    - return non-nil if DISPLAY supports selections
&lt;/div&gt;

Виполняйте проверки наподобии того как делается ниже:
&lt;div id="code"&gt;  (when window-system ...)
  (when (eq window-system 'x) ...)
  (when (&gt;= emacs-major-version 22) ...)
  (when (fboundp '...) ...)
  (when (featurep '...) ...)
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6734527039160439299-2234881617140746121?l=brain-break-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/2234881617140746121/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6734527039160439299&amp;postID=2234881617140746121&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/2234881617140746121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/2234881617140746121'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/2010/08/emacs.html' title='Определение рабочего окружения и возможностей платформы в Emacs'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6734527039160439299.post-3107042695706130296</id><published>2010-03-07T13:37:00.009+02:00</published><updated>2010-03-09T12:43:45.908+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>emacs.info в Debian.</title><content type='html'>Политика проекта Debian запрещает размещение пакетов с контентом, покрытым лицензией FDL, если в тексте имеются инвариантные секции.
&lt;p&gt;
Потому мантейнеры пакета Emacs исключают emacs.info, eintr.info, elisp.info и некоторые другие документы из пакета.
&lt;div class="fullpost"&gt;
Система документации Info очень удобна для пользователей Emacs. В основном за счет легкости пользования поиском.
&lt;p&gt;
Можно было бы получить &lt;code&gt;emacs-no-chunk.html&lt;/code&gt;, открыть html в Firefox и с включенным &lt;code&gt;"Search for text when I start typing"&lt;/code&gt; также легко искать текст, но:
&lt;ul&gt;
&lt;li&gt;приходится помнить/искать где лежит &lt;code&gt;emacs-no-chunk.html&lt;/code&gt;
&lt;li&gt;документ большой ~= 1 MiB, долго загружается Firefox'ом и немного натупляет Firefox
&lt;/ul&gt;
&lt;p&gt;
И так нужно поступать с каждым документом, тогда как при использовании site wide installed info по &lt;code&gt;C-h i&lt;/code&gt; видны и искабельны by &lt;code&gt;s&lt;/code&gt; или &lt;code&gt;C-s&lt;/code&gt; все info-файлы.
&lt;p&gt;
Из дистрибутива исходных текстов Emacs извлекаем &lt;code&gt;*.info&lt;/code&gt; файлы:
&lt;div id=code&gt; $ tar zxf emacs-22.2.tar.gz
 $ mkdir ~/usr/share/info
 $ cp emacs-22.2/info/* ~/usr/share/info
&lt;/div&gt;
&lt;p&gt;
О наличии &lt;code&gt;*.info&lt;/code&gt; файлов Emacs'у можно сказать переменной среды &lt;code&gt;INFOPATH&lt;/code&gt;:
&lt;div id=code&gt; $ echo export INFOPATH=~/usr/share/info: &gt; ~/.bash_profile
&lt;/div&gt;
Двоеточие в конце необходимо как признак включать пути к &lt;code&gt;*.info&lt;/code&gt;, установленными с Emacs'ом.
&lt;p&gt;
Я пошел по другому пути, что бы не прописывать на каждом хосте &lt;code&gt;INFOPATH&lt;/code&gt;, добавил следующее в .emacs:
&lt;div id=code&gt;;; Because of Debian policy documentation covered by FDL license
;; with invariant sections is not allowed in packets
;; repository tree. So it must be installed manually.
;; My usual configuration is install user local software
;; into ~/usr DISTDIR.
(unless (getenv "INFOPATH")
  (setenv "INFOPATH" "~/usr/share/info:"))
&lt;/div&gt;
&lt;p&gt;
&lt;code&gt;(unless (getenv "INFOPATH")&lt;/code&gt; позволит использовать переменную среды &lt;code&gt;INFOPATH&lt;/code&gt;, которую я обычно устанавливаю в Windows для чтения info, поставляемых с MinGW/MSYS/Cygwin, из Emacs, но об этом в следующий раз.
&lt;p&gt;
Также это удобно тем, что собранные вручную программы я обычно конфигурирую таким образом:
&lt;div id=code&gt; $ configure --prefix=$HOME/use&lt;/div&gt;
потому их info документация автоматически становится доступной из Emacs.
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.gnu.org/copyleft/fdl.html"&gt;Текст FDL на gnu.org (EN)&lt;/a&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/FDL"&gt;Статья о FDL на русской Wikipedia&lt;/a&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6734527039160439299-3107042695706130296?l=brain-break-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/3107042695706130296/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6734527039160439299&amp;postID=3107042695706130296&amp;isPopup=true' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/3107042695706130296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/3107042695706130296'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/2010/03/emacsinfo-debian.html' title='emacs.info в Debian.'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6734527039160439299.post-5525758930122956224</id><published>2009-11-04T22:34:00.004+02:00</published><updated>2009-11-04T23:11:34.228+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Переименование пользователя в Linux.</title><content type='html'>Необходимо переименовать пользователя и его домашний каталог.
&lt;div class="fullpost"&gt;
Собственно переименовать пользователя легко (используется дистрибутив Debian). От имени root выполняем команды:
&lt;div id="code"&gt;  # groupmod --new-name newuser olduser
  # usermod --login newuser --home /home/newhome olduser
&lt;/div&gt;
Перемещение домашнего каталога командой &lt;code&gt;mv&lt;/code&gt; не ограничится:
&lt;div id="code"&gt;  # mv /home/oldhome  /home/newhome
&lt;/div&gt;
Множество программ, используемых пользователем, использует файлы настроек (dot-файлы). Их придется править вручную ((. В каждом случае решение о правке приходится принимать человеку на основании знания форматов конфигурационных файлов.
&lt;p&gt;
Находим все вхождения слова &lt;code&gt;olduser&lt;/code&gt; в конфигурационных файлах:
&lt;div id="code"&gt;  # find /home/newhome -maxdepth 2 -type f | xargs grep -Hn
&lt;/div&gt;
Обычно пользовательские конфигурационные файлы находятся в корне домашнего каталога пользователя или в соответствующем подкаталоге. Потому глубина поиска ограничена 2.
&lt;p&gt;
Можно было использовать следующий способ поиска вхождений:
&lt;div id="code"&gt;  # grep -Hn user .* .*/*
&lt;/div&gt;
правда некоторые программы отклоняются от стандартов именования конфигурационных файлов (или каталогов с конфигурационными файлами) - их названия не начинается с точки (dot).
&lt;p&gt;
Я для правок использовал команду Emacs &lt;code&gt;grep-find&lt;/code&gt;, это позволяло мне быстро переходить в место вхождения заменяемого слова:
&lt;div id="code"&gt;C-x d C-a C-k /home/newuser RET
С-x grep-find grep -Hn user .* .*/* RET
C-x ` =edit= C-x ` =edit= C-x ` =edit= C-x ` ....
&lt;/div&gt;
Приятного Вам переименовывания пользователей!
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6734527039160439299-5525758930122956224?l=brain-break-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/5525758930122956224/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6734527039160439299&amp;postID=5525758930122956224&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/5525758930122956224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/5525758930122956224'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/2009/11/linux.html' title='Переименование пользователя в Linux.'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6734527039160439299.post-5572304680393033712</id><published>2009-10-11T21:42:00.004+03:00</published><updated>2009-10-11T21:50:59.978+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Сортируем без повторений в Emacs.</title><content type='html'>Только для сортировки строк в Emacs имеется встроенная функция: &lt;code&gt;C-x sort-lines&lt;/code&gt;.
&lt;p&gt;
Для сортировки без повторений выполняем:
&lt;ul&gt;
&lt;li&gt;выделить область
&lt;li&gt;&lt;code&gt;C-u M-| sort -u RET&lt;code&gt;
&lt;/ul&gt;
&lt;p&gt;
С включенными режимами &lt;code&gt;transient-mark-mode&lt;/code&gt; и &lt;code&gt;delete-selection-mode&lt;/code&gt;  можно сразу заменить выделенную область отсортированными без повторения строками:
&lt;ul&gt;
&lt;li&gt;выделить область
&lt;li&gt;&lt;code&gt;M-| sort -u RET&lt;code&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6734527039160439299-5572304680393033712?l=brain-break-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/5572304680393033712/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6734527039160439299&amp;postID=5572304680393033712&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/5572304680393033712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/5572304680393033712'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/2009/10/emacs.html' title='Сортируем без повторений в Emacs.'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6734527039160439299.post-6022454952108530546</id><published>2009-08-20T22:21:00.012+03:00</published><updated>2010-03-17T23:25:24.484+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='elisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Переход на GNU Emacs 23.1 в Windows.</title><content type='html'>Переход с версий 22.x на недавно вышедший релиз GNU Emacs 23.1 прошел гладко за исколючением двух моментов.
&lt;div class="fullpost"&gt;
&lt;p&gt;
Первое с чем пришлось столкнутся это сообщение об ошибке при выполнении функции &lt;code&gt;(server-start)&lt;/code&gt;:
&lt;div id="code"&gt;error: The directory e:/home/.emacs.d/server is unsafe
&lt;/div&gt;
Проблема расположена в функции &lt;code&gt;server-ensure-safe-dir&lt;/code&gt;:
&lt;div id="code"&gt;    (unless (and (eq t (car attrs)) &lt;span style="color:red;"&gt;(eql (nth 2 attrs) (user-uid))&lt;/span&gt;
                 (or (eq system-type 'windows-nt)
                     (zerop (logand ?\077 (file-modes dir)))))
      (error "The directory %s is unsafe" dir))))
&lt;/div&gt;
На &lt;a href="http://stackoverflow.com/questions/885793/emacs-error-when-calling-server-start"&gt;stackoverflow.com&lt;/a&gt; описано решение проблемы. Cледует удалить выделенный участок кода и обновить байткод (Emacs сначала ищет .elc файла и только затем .el, редактируем файл &lt;code&gt;emacs-23.1/lisp/server.el&lt;/code&gt;, C-x byte-compile-file &amp;lt;Down&amp;gt; &amp;lt;Ret&amp;gt;).
&lt;p&gt;
Вторая проблема состояла в том что функция &lt;code&gt;codepage-setup&lt;/code&gt; устарела и ее определение исключили из дистрибутива. Теперь нет необходимости предварительно перед использованием кодовой страницы IBM cpXXX ее создавать! Для совместимости со
старыми версиями Emacs воспользуйтесь следующим кодом:
&lt;div id="code"&gt;(when (&amp;lt;= emacs-major-version 22)
 (codepage-setup 866)
 (codepage-setup 1251)
 ) 
&lt;/div&gt;
&lt;p&gt;
Новость о релизе GNU Emacs 23.1:
&lt;a href="http://groups.google.com/group/gnu.emacs.announce/browse_thread/thread/c8ae7b91dc61c454#"&gt;groups.google.com&lt;/a&gt;
&lt;p&gt;
&lt;b&gt;Update: 2010-03-17.&lt;/b&gt;
&lt;p&gt;
2009-09-19 был исправлен баг #4197 касающийся &lt;code&gt;server-ensure-safe-dir&lt;/code&gt;. Из ChangeLog:
&lt;div id=code&gt;This fixes bug#4197 (merged to bug#865, though not identical).
  * server.el (server-auth-dir): Add docstring note about FAT32.
  (server-ensure-safe-dir): Accept FAT32 directories as "safe",
  but warn against using them.
&lt;/div&gt;
Также я нашел другой способ обойти эту проблему:
&lt;div id=code&gt;(require 'server)
(when (and (= emacs-major-version 23) (= emacs-minor-version 1) (equal window-system 'w32))
  (defun server-ensure-safe-dir (dir) "Noop" t)) ; Suppress error directory ~/.emacs.d/server is unsafe on windows.

(server-start)&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6734527039160439299-6022454952108530546?l=brain-break-ru.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brain-break-ru.blogspot.com/feeds/6022454952108530546/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6734527039160439299&amp;postID=6022454952108530546&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/6022454952108530546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6734527039160439299/posts/default/6022454952108530546'/><link rel='alternate' type='text/html' href='http://brain-break-ru.blogspot.com/2009/08/gnu-emacs-231-windows.html' title='Переход на GNU Emacs 23.1 в Windows.'/><author><name>Oleksandr Gavenko</name><uri>https://profiles.google.com/109517301225045496688</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-WJL3Vr3cHz8/AAAAAAAAAAI/AAAAAAAAAAA/YxD76uXHOxw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
