пятница, 30 января 2009 г.

Xmonad и java

У пользователей xmonad есть одна небольшая проблемка, связанная с java-приложениями. Они не работают. То есть работают но результата их работы не видно.
Справедливости ради, стоит сказать, что виноваты в этом не столько разработчики xmonad, сколько разработчики swing. Впочем. к седьмой версии jdk они обещают исправиться. А пока - есть два способа заставить рабоать java-приложения:
1) Установить переменную окружения
AWT_TOOLKIT=MToolkit

2) Добавить в настройки xmonad
startupHook = setWMName "LG3D"

вторник, 20 января 2009 г.

Отключение compose в xterm

Что бы alt в xterm работал как альт, а не как клавиша compose, в .Xresources нужно прописать:
xterm*altSendsEscape: true
xterm*metaSendsEscape: true

И не забыть запустить xrdb.
Это не работает, если compose-клавиша определяется в настройках X-сервера.

воскресенье, 30 ноября 2008 г.

Как узнать параметры конфигурации ядра?

Если ядро собрано с IKCONFIG=y,то:
# /usr/src/linux/scripts/extract-ikconfig kernel-image

Если ядро собрано так же с IKCONFIG_PROC=y (и PROC_FS=y, разумеется), а так же именно оно используется в данный момент в системе, то:
$ vim /proc/config.gz

Та же можно посмотреть /boot/config-версия.

вторник, 22 июля 2008 г.

Автоматическая вставка шаблонов в emacs

Теория


Иногда хочется, что бы при создании нового файла, в него автоматически записывалось какое-то содержимое. В emacs для этого существует режим „auto-insert-mode“. Если этот режим включён, то, при создании нового файла, предлагается использовать автовставку. Что именно будет записано в создаваемом файле определяет переменная „auto-insert-alist“.

Документация:
auto-insert-alist — список, определяющий текст, вставляемый в созанный файл.
Элементы такого списка имеют вид:
(УСЛОВИЕ . ДЕЙСТВИЕ)
или
((УСЛОВИЕ . ОПИСАНИЕ) . ДЕЙСТВИЕ).
УСЛОВИЕ — это или регулярное выражение, которому должно соответсвовать имя созданного файла, или символ, совпадающий с основным режимом(major mode) созданного файла.
Если созданному файлу соответствует два или больше элементов списка, используется только первый элемент.
Необезательное ОПИСАНИЕ — строка для использования в „auto-insert-prompt“.
ДЕЙСТВИЕ — это или скелет(см. функцию „skeletom-insert“) или путь к файлу(абсолютный, или относительно директории, содержащейся в переменной „auto-insert-directory“) или функция.
ДЕЙСТВИЕ так же может быть массивом, содержащим несколько простых действий, например: «["header.insert" date-and-author-update]».

На этом кончается теория и начинается практика.

Практика


Рассмотрим пример использования автовставки для python-программиста. Этот программист работает с двумя типами файлов:

  1. Файлы-модули, имеют расширение «.py» и в первой строке содержат указание кодировки файла.

  2. Файлы-программы, не имеют расширения, зато в первой строке содержат указание интерпретатора, а указание кодировки содержат во второй строке.


Таким образом, можно определить два файла шаблона:
python-module-insert.py:
# -*- coding: utf-8 -*-

python-program-insert.py:

#!/bin/env python
# -*- coding: utf-8 -*-

Если в дальнейшем хочется использовать относительный путь, то эти файлы нужно положить в „auto-insert-directory“. Теперь нужно добавить пару элементов к списку „auto-insert-alist“.
Первый элемент выглядит так: «("\\.py\\'" . "python-module-insert.py")», а второй — так: «(python-mode . "python-program-insert.py")». Несмотря на то, что файл, созданный с расширением «.py», как правило, открывается в «python-mode», используется файл-шаблон для модуля, потому как он идёт первым в списке. С шаблоном для программы будет немножко хитрее: поскольку созданный файл не содержит расширения, а так же текста, позволяющего определить его режим, то «python-mode» придётся включать явно(M-x python-mode), а потом вызывать автовставку(M-x auto-insert).

Настройка


Я придерживаюсь той точки зрения, что всё, что может быть настроено через customize — должно быть настроено через customize. Зря его, что ли, писали? Поэтому, для настройки автовставки, нужно вызвать customize(M-x customize) и перейти в группу Files->Auto Insert. Там включить «Auto Insert Mode», сменить «Auto Insert Directory»(до тех пор, пока файлы-шаблоны используются исключительно emacs'ом, директорию с ними лучше держать в ~/.emacs.d) и отредактировать «Auto Insert Alist». Однако, редактирование «Auto Insert Alist» приводит к добавлению не слишком красивого куска кода в конфигурационный файл. Поэтому, можно просто добавить туда две строчки:

(add-to-list 'auto-insert-alist '(python-mode . "python-program-insert.py"))
(add-to-list 'auto-insert-alist '("\\.py\\'" . "python-module-insert.py"))

Эффект будет тот же, а смотрится несколько приятнее. Нужно только помнить две вещи: функция „add-to-list“ добавляет элементы в начало списка, поэтому, что бы шаблон для модуля оказался первым в списке, его следует добавлять после шаблона для программы. И второе: обе строчки должны идти после установки „auto-insert-mode“ и „auto-insert-directory“. То есть после блока „custom-set-variables“, если использовался „customize“.