?

Log in

Обсуждаем (X)Emacs на русском's Journal
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Обсуждаем (X)Emacs на русском's LiveJournal:

[ << Previous 20 ]
Wednesday, June 8th, 2016
11:00 am
[reangd]
Emacs как IDE для Go
(оригинал: ReanGDblog)

Цель статьи дать обзор инструментов в Emacs для работы с Go кодом. Настроить горячие клавиши, возможно добавить алиасы и сделать их удобнее для повседневного использования - на вашей совести. Хочу отметить, что поддержка языка в Emacs - на высоком уровне: подсветка кода, автодополнение, сниппеты, рефакторинг, подсветка ошибок, отображение документации, тестирование, компиляция и многое другое. Сразу оговорюсь, что проверял я только под Linux, под альтернативные OS могут быть особенности, которые тут не освещены.
Read more...Collapse )
Tuesday, October 6th, 2015
9:07 pm
[reangd]
Мой первый пакет для Emacs: multi-compile

(оригинал: ReanGDblog)
Я часто пишу заметки о Emacs, в формате: скопируйте вот эти строки подкорректируйте под себя, вставьте в конфиг, установите ещё вот этот плагин и т.п. Сегодня решил выйти на "новый уровень" и сделал полноценный пакет для Emacs и что бы нанести пользу максимально большой аудитории - разместил его в melpa. Конечно подготовить его несколько сложнее, чем просто пример конфига для блога, но для меня это своеобразное возвращение долгов за используемые мной open-source решения.

Read more...Collapse )
Sunday, June 21st, 2015
1:47 am
[reangd]
Двуязычная проверка орфографии в Emacs

(оригинал: ReanGDblog)
Я в последнее время почти полностью перешёл на Emacs, как универсальный редактор для всего, в связи с чем часто пишу там тексты. А поскольку уроки русского языка со школы уже основательно позабылись, то текст приходится часто копировать в LibreOffice для проверки орфографии, что надо признать жутко неудобно. Плюс ко всему я в текстах использую и английские слова, поэтому хотелось бы проверять сразу 2 языка. Найти готовую инструкцию по проверке орфографии в Emacs для такого случая не получилось. Поэтому пришлось разбираться со всем самостоятельно.

Read more...Collapse )
Monday, April 27th, 2015
12:00 pm
[reangd]
Emacs как IDE для Rust
rust_logo.png(оригинал: ReanGDblog)
Многие слышали про такой язык программирования как Rust, это чрезвычайно, на мой взгляд, перспективный и интересный язык от Mozilla, про него сейчас часто пишут и говорят. Он пока еще очень молод (в данный момент доступна только beta версия), в связи с чем поддержки в модных и популярных IDE для него нет или она очень слабая, а попробовать и составить мнение о языке хочется. Как обычно, в таких случаях на помощь нам приходит emacs, в нем относительно легко можно настроить подсветку синтаксиса, компиляцию, автодополнение и т.п.
Read more...Collapse )
Monday, April 13th, 2015
1:10 pm
[reangd]
Умное назначение горячих клавиш в Emacs
(оригинал: ReanGDblog)

Рано или поздно пользователям Emacs приходится переназначать горячие клавиши. Даже те, кто по идеологическим причинам используют дефолтные сочетания, приходят к тому, что нужно назначить на часто-употребляемую команду более простое сочетание клавиш или повесить hotkey на свой собственный скрипт. В интернетах советуют делать это как-то так:

(global-set-key (kdb "C-a") 'mark-whole-buffer)



Это какое-то время работает, пока не находится плагин, который переопределяет выбранное сочетание на что-то свое...
Read more...Collapse )
Tuesday, April 7th, 2015
12:00 pm
[reangd]
Авто установка пакетов в Emacs
(оригинал: ReanGDblog)
Все наверное знают про возможность установки плагинов в Emacs, "M-x package-list-packages" и вперед - выбираем, устанавливаем, удаляем что не нужно. Это возможно удобно, когда мы экспериментируем с плагинами, играемся с новыми. Но допустим синхронизировать подобным образом плагины на всех своих машинах - уже желания никакого нет. Хочется прописать в конфиг названия всех используемых пакетов, а Emacs, пусть сам при загрузке проверит недостающие и доставит их. К сожалению, встроенной функциональности для этого в Emacs нет, однако добавить такую возможность, как и все остальное, в Emacs не сложно...
Read more...Collapse )
Wednesday, October 22nd, 2014
2:42 am
[link0ff]
Хорошие новости
Сразу несколько хороших новостей:

1. Вышла новая версия. Полный список изменений: http://www.gnu.org/software/emacs/news/NEWS.24.4

2. На Stack Exchange создан отдельный раздел, посвященный вопросам использования Емакса: http://emacs.stackexchange.com/

3. Репозиторий переводится с Bzr на Git, что делает его доступным более широкому кругу разработчиков.

4. ...
Wednesday, July 24th, 2013
1:27 pm
[cheater]
Всем привет! Ищу плагин для Emacs, ориентированный на работу с плоской базой данных в текстовом файле, как в forms-mode, со следующими требованиями:

1. Желательно, чтобы данные хранились в минималистичном формате (только содержимое ячеек и разделители). Т.е. как в forms-mode.

2. Нужен редактор данных, в идеале полу-ридонли окно с настраиваемым содержимым, в котором я могу править только текст записей БД. Т.е. как в forms-mode.

3. Нужно средство просмотра БД, например постраничный вывод содержимого по 10 записей, с возможностью быстро перескочить в редактор. Обязательно нужна возможность выводить на экран не только сами записи, но и произвольные Elisp функции от них.

4. Плагин должен предоставлять API для работы с БД внешними средствами. (Добавить запись, удалить запись, вывести запись в форматную строку итд.).

5. Должны быть поддержка многострочных записей.


Чем не подошли существующие средства:

Forms-mode:
Просмотрщика и API нет. Редактор неидеален, т.к. я не могу выделить readonly текст, что иногда нужно.

Properties в Org-mode:
Многострочных записей (в column-view) нет и не будет. Вывод данных не программируем (п.3).

Таблицы из встроенного table.el:
API нет. Вывод данных не программируем (п.3).


Есть ли ещё что-то подходящее?
Friday, July 19th, 2013
10:36 am
[vorotylo]
Исправление russian-keyboard для MacBook Pro

Если вы набираете русский текст в Emacs и используете для этого

`C-\'
     Enable or disable use of the selected input method
     (`toggle-input-method').

`C-x  C-\ METHOD '
     Select a new input method for the current buffer
     (`set-input-method').
, то вы могли обнаружить, что некоторые символы в русской раскладке (`russian-computer') не соответствуют их расположению на клавиатуре MacBook.

Я вчера разобрался, как это исправить:
https://github.com/vvv/dotfiles/commit/b0292c6aea8ff856f40b932210a888d68b1a90d3

Вдруг кому пригодится. :-)

Sunday, April 14th, 2013
10:55 pm
[link0ff]
Автоматическая кодировка для команд
Что делать, если есть файлы в разной кодировке (например, `utf-8' и `koi8-r') и их нужно сравнивать командами `dired-diff' или `dired-backup-diff'? Приходится открывать файл, смотреть, какую кодировку он использует, а потом вручную указывать кодировку через `C-x RET c' перед запуском `dired-diff'. Слишком много движений, поэтому через defadvice можно навесить определение кодировки файлов и запуск команды с нужной кодировкой (дополнительно рекомендуется использовать UniCAD):

;; Get coding from the file, so diff will output in the correct coding:
(defadvice dired-backup-diff (around my-dired-backup-diff act)
  (let* ((filename (dired-get-filename t))
         (coding-system (with-temp-buffer
                          (insert-file-contents filename nil 0 1024)
                          buffer-file-coding-system))
         (coding-system-for-read coding-system)
         (coding-system-for-write coding-system))
    ad-do-it))

;; Get coding from the file, so diff will output in the correct coding:
(defadvice dired-diff (around my-dired-diff act)
  (let* ((filename (dired-get-filename t))
         (coding-system (with-temp-buffer
                          (insert-file-contents filename nil 0 1024)
                          buffer-file-coding-system))
         (coding-system-for-read coding-system)
         (coding-system-for-write coding-system))
    ad-do-it))


Аналогичная проблема существует также для `grep'. Как автоматически указать правильную кодировку перед запуском грепа, чтобы он искал в файлах с этой кодировкой. Я пока не нашел решения этой проблемы. Есть идеи, как это сделать?
Monday, April 1st, 2013
10:01 am
[link0ff]
Три основных принципа EMACS
Три основных принципа EMACS:

  1. 3 года гарантии.
    Каждая следующая версия выходит не реже, чем через 3 года разработки. В марте в честь юбилея RMS вышла новая версия 24.3. Гарантируется исправление ошибок в версии не старше, чем 3 года - просто опишите найденную ошибку в письме и отправьте по адресу bug-gnu-emacs@gnu.org. Если используете старую версию, рекомендуется обновиться до самой новой (оптимальный вариант - установка snapshot).

  2. Настоящая мощность.
    Вдобавок к большому количеству встроенных пакетов, в emacs 24 также добавился менеджер пакетов, позволяющий устанавливать еще большее количество внешних пакетов, обеспечивающих настоящую мощность, недостижимую в других редакторах. Существует даже возможность использования бабочек для изменения нужного бита.

  3. Подлинная безопасность.
    Весь код выполняется в виртуальной среде, основанной на интерпретаторе Лиспа. Безопасность обеспечивается рядом встроенных возможностей, в том числе safe-local-variable и т.д. Поэтому не существует вирусов, распространяющихся через файлы Emacs Lisp.

Sunday, December 25th, 2011
11:30 am
[vorotylo]
Fwd: Cue a key

Наиболее элегантное из виденных мной решений "Проблемы переключения раскладки" предложено Никитой Даниловым:

; Map Modifier-CyrillicLetter to the underlying Modifier-LatinLetter, so that
; control sequences can be used when keyboard mapping is changed outside of
; Emacs.
;
; For this to work correctly, .emacs must be encoded in the default coding
; system.
;
(mapcar*
 (lambda (r e) ; R and E are matching Russian and English keysyms
   ; iterate over modifiers
   (mapc (lambda (mod)
    (define-key input-decode-map
      (vector (list mod r)) (vector (list mod e))))
  '(control meta super hyper))
   ; finally, if Russian key maps nowhere, remap it to the English key without
   ; any modifiers
   (define-key local-function-key-map (vector r) (vector e)))
   "йцукенгшщзхъфывапролджэячсмитьбю"
   "qwertyuiop[]asdfghjkl;'zxcvbnm,.")
Monday, November 7th, 2011
12:41 am
[link0ff]
Ввод командных комбинаций без переключения русской раскладки

В новой версии Емакс 24.1 при включенной системной русской раскладке можно вводить командные комбинации с любыми символами (с модификаторами и даже без), которые привязаны к командам, кроме `self-insert-command'. При этом, русские буквы автоматически транслируются в соответствующие английские. Например, последовательность `C-ч и' переводится в `C-x b' и запускает `switch-to-buffer'. Всё это получается при помощи такой функции:

(defun reverse-input-method (input-method)
  "Build the reverse mapping of single letters from INPUT-METHOD."
  (interactive
   (list (read-input-method-name "Use input method (default current): ")))
  (if (and input-method (symbolp input-method))
      (setq input-method (symbol-name input-method)))
  (let ((current current-input-method)
        (modifiers '(nil (control) (meta) (control meta))))
    (when input-method
      (activate-input-method input-method))
    (when (and current-input-method quail-keyboard-layout)
      (dolist (map (cdr (quail-map)))
        (let* ((to (car map))
               (from (quail-get-translation
                      (cadr map) (char-to-string to) 1)))
          (when (and (characterp from) (characterp to))
            (dolist (mod modifiers)
              (define-key local-function-key-map
                (vector (append mod (list from)))
                (vector (append mod (list to)))))))))
    (when input-method
      (activate-input-method current))))

Команда запускается, например, так: `M-x reverse-input-method RET russian-computer RET'

NB: Чтобы команды, запрашивающие пароль, не выполняли эту перекодировку при чтении пароля, нужно обнулять значение `local-function-key-map' во время выполнения команды, например:

(defadvice read-passwd (around my-read-passwd act)
  (let ((local-function-key-map nil))
    ad-do-it))
Friday, November 4th, 2011
3:04 am
[yushi]
[SOLVED] Сломались ссылки на заголовки в org-mode
Здравствуйте.

Создал довольно большой файл в org-mode. Некоторое время всё работало, а потом сломались ссылки на заголовки:

  • при нажатии C-c C-o получаю сообщение "No match - create this as a new heading? (y or n)";

  • если согласиться, создаётся заголовок с пробелом после первой звёздочки: "* ** Вот такой";

  • если, стоя на заголовке, дать команду org-store-link, а потом создать ссылку через C-c C-l, имя заголовка оказывается в URL encoding, например, "*%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D0%BA" вместо "* Тестовый заголовок".

Особенности моих настроек системы и Emacs, которые могут иметь значение:

  • локаль koi8-r, файл в utf-8-unix;

  • совместно с org-mode использую longlines-mode и iimage-mode;

  • незадолго до появления глюка обновил org-mode с версии 6.28d на версию 7.7.

Что бы можно было сделать? Файл жалко, в нём много важной информации. Откатываться назад на 6.28d тоже не хочется, там нет команды org-display-inline-images, а мне эта фича (отображение картинок) очень приглянулась.

UPD Проблема решена, надо внимательнее курить ман.

Звёздочка в ссылке — это не точная ссылка на заголовок, а поиск в файле по содержимому заголовков. Поэтому, чтобы сослаться на заголовок любого уровня, достаточно написать *Имя заголовка, с одной звёздочкой. И если старая версия org-mode неправильные ссылки как-то обрабатывала, то новая перестала. URL encoding же оказалась возможной, но не обязательной — ссылки с нормальным текстом тоже работают.

Перешёл на новый формат ссылок командой:
sed -i 's/\[\[\*\{1,4\} /\[\[*/g' имя_org-файла.org
(Осторожно! Это запуск sed в inplace-режиме, если вы не храните ваш org-файл в системе контроля версий, он произведёт необратимые и, возможно, неожиданные для вас изменения — не говорите потом, что вас не предупреждали.)
Wednesday, October 26th, 2011
1:22 am
[joedead]
tiling windows in emacs
Учитывая что в емаксе есть вообще всё - наверняка это уже кем-то реализовано, но ни с первой, ни со второй попытки найти не удалось.

Хочется следующего: чтобы при запуске emacsclient автоматически появлялось 3 фрейма:
1. окно с wanderlust
2. окно ростера emacs-jabber
3. окно с erc

При открытии чата во 2-ом фрейме он автоматически сплитался на 2 окна, вертикально (25% - ростер, остальное - чат). В дальнейшем все чаты открывались во 2-ом (75%) окне.

Расписываю столь подробно как раз потому, что отдельные куски "чего-то наподобии" встречаются, а вот цельное руководство пока не попалось.

Вдохновил на данный пост меня xmonad - возможность заранее расписать что будет на каком десктопе, какие окна и в какой пропорции займут место оказалась чертовски удобной. И выглядит очень похожей на емаксовскую "философию": фреймы емакс == декстопы xmonad, окна емакс == окна xmonad etc.

В общем вопрос, поклонники tiling wm - делали нечто подобное с емаксом?
Friday, August 12th, 2011
2:27 pm
[red1ynx]
[Решено] Переключение раскладки в win32.
Перерыл полинтернета, но не нашел, как сделать нормальную (или по CapsLock, или как в системе) переключалку раскладки.
Пост, который мог мне помочь - http://dima-exe.ru/2007/4/win32-emacs-and-change-language - уже недоступен.

Расскажите, как это сделано у вас?
Friday, June 17th, 2011
1:54 am
[yushi]
Автодополнение для Python: как подружить Rope и Auto Complete Mode?
Здравствуйте.

Наверное, многим здесь знакомо расширение Auto Complete Mode, рисующее всплывающее меню для автодополнения кода с удобной клавиатурной навигацией (M-p/M-n). К сожалению, Auto Complete Mode сам по себе код не парсит, для анализа исходников ему нужны внешние бэкэнды.

Несколько раз здесь также упоминали про Ropemacs, плагин, позволяющий подключить Rope (библиотеку для рефакторинга питоньего кода) к Emacs. Rope как раз, естественно, Питон разбирает хорошо.

Столкнувшись с проектом на Питоне, я попробовал использовать Rope и понял, что стиль, в котором он предлагает возможные дополнения, мне не нравится. Чтобы выбрать нужное, надо либо снимать руки с клавиатуры и тянуть к мышке, либо переключаться в окно с вариантами дополнений, либо продолжать набирать; все три варианта мне не слишком удобны.

Естественно, возникло желание подружить Rope и Auto Complete Mode, тем более что в коде последнего даже вроде как содержатся следы попыток использовать Rope в качестве бэкэнда.

Ничего не вышло.

Единственное (вроде как) готовое решение нашлось здесь: http://www.enigmacurry.com/2009/01/21/autocompleteel-python-code-completion-in-emacs/.

Оно у меня не работает: меню AC показывает "тупые" продолжения, а Ropemacs для своих вариантов дополнения открывает отдельное окно.

У кого-нибудь работает Ropemacs в связке с Auto Complete Mode? Если нет, то есть ли у кого-нибудь идеи, как добиться одновременно "умного" и "красивого" автодополнения для Питона (не обязательно этими средствами)?

(Вопросы в этом сообществе у меня получаются какие-то однообразные, да; но что же делать, если практически во всём, кроме "умного" автодополнения, Emacs меня практически полностью устраивает?)
Wednesday, May 25th, 2011
2:17 pm
[ratxor]
ansi colors in shell
Добрый день. Столкнулся со следующей проблемой. В EmacsW32 при выполнении команды M-x shell у меня запускается cygwin bash. И в этом shell команда ls --color возвращает цветной результат, а echo 1 | grep 1 --color - нецветной. Причем, если указать echo 1 | grep 1 --color=always, то на экране появляются управляющие ANSI-коды. Раз вывод команды ls --color цветной значит данный терминал поддерживает ansi-коды. Grep вызывается именно тот, который нужен - из cygwin. И в cygwin shell, и в Far cygwin grep с опцией --color возвращает цветной результат. В конфиге emacs команды (autoload 'ansi-color-for-comint_mode-on "ansi-color" nil t) и (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) указывал.

Оказывается, grep --color формирует странные ANSI-коды: echo 1 | grep 1 --color=always | od -t x1
0000000 1b 5b 31 3b 33 33 6d 1b 5b 4b 31 1b 5b 6d 1b 5b
0000020 4b 0a
0000022

То есть, странные коды здесь это "[K" и "[m".

Для сравнения ls --color | od -t x1
0000000 1b 5b 30 6d 1b 5b 30 31 3b 33 32 6d 62 61 73 68
0000020 2e 65 78 65 2e 73 74 61 63 6b 64 75 6d 70 1b 5b
0000040 30 6d 2a 0a 1b 5b 30 31 3b 33 32 6d 63 6d 64 70
0000060 72 6f 78 79 2e 65 78 65 2e 73 74 61 63 6b 64 75
0000100 6d 70 1b 5b 30 6d 2a 0a 65 63 68 6f 5f 72 65 73
0000120 2e 74 78 74 0a 65 63 68 6f 5f 72 65 73 5f 63 79
0000140 67 77 69 6e 2e 74 78 74 0a 6c 73 5f 72 65 73 2e
0000160 74 78 74 0a
0000164

Может быть, это файл ansi-color.el не поддерживает такие SGR-коды. У меня была версия ansi-color.el 3.4.2. Скачал и скомпилировал последнюю версию - 3.4.5. Результат тот же.
Saturday, February 19th, 2011
3:56 am
[smilingcrank]
hooks в r-mode
Использую ESS, пытаюсь поставить на r-mode хук для изменения одной из быстрых клавиш:

(add-hook 'r-mode-hook 
          '(lambda () (global-set-key "\C-d" 'ess-eval-function))) 

То есть, ожидаемое поведение: при включённом r-mode комбинация C-d будет вызывать компиляцию функции. Однако на практике ничего не происходит - просто ноль реакции, хук не вызывается.
Рядом всё то же самое для clojure-mode работает нормально.

В чём может быть проблема?
Monday, January 17th, 2011
1:25 pm
[hanmaudziro]
org babel
Поставил emacs 23 + starter kit
не могу понять как заставить работатать babel
Read more...Collapse )
[ << Previous 20 ]
About LiveJournal.com