Показаны сообщения с ярлыком emacs. Показать все сообщения
Показаны сообщения с ярлыком emacs. Показать все сообщения

вторник, 5 июля 2016 г.

Подсветка нового текста в Emacs (volatile-highlights)

Нашёл интересный пакет для Emacs, который подсвечивает изменения в буфере, связанные со вставкой текста. Например если выполнить операцию undo или paste, новый текст подсветится, после следующей нажатой клавиши подсветка исчезнет. Расширение простое, но делает редактирования текста приятнее.


понедельник, 20 июня 2016 г.

Компиляция во всплывающем буфере Emacs

Начну с описания проблемы, которая давно меня раздражала в Emacs. Запускаем, допустим, компиляцию, и она открывает буфер в непредсказуемом месте, замещая уже открытые. Логику по которой она выбирает себе место - я так и не постиг. Но зато нашёл плагин, который борется с такими своевольными операциями - popwin.

вторник, 7 июня 2016 г.

Emacs как IDE для Go

Цель статьи дать обзор инструментов в Emacs для работы с Go кодом. Настроить горячие клавиши, возможно добавить алиасы и сделать их удобнее для повседневного использования - на вашей совести. Хочу отметить, что поддержка языка в Emacs - на высоком уровне: подсветка кода, автодополнение, сниппеты, рефакторинг, подсветка ошибок, отображение документации, тестирование, компиляция и многое другое. Сразу оговорюсь, что проверял я только под Linux, под альтернативные OS могут быть особенности, которые тут не освещены.

среда, 4 мая 2016 г.

Emacs: скопировать в буфер обмена полный путь к текущему файлу

Иногда нужно скопировать текущий путь в буфер обмена, а Emacs не имеет встроенной команды для этого, но как всегда небольшая функция поможет справиться с проблемой:



вторник, 12 апреля 2016 г.

Emacs: Переименование и удаление текущего буфера вместе с файлом

Время от времени, чаще всего, когда я рефакторю код, мне нужно быстро переименовать файл и буфер, связанный с ним. Есть конечно "M-x rename-file", но она к сожалению не переименовывает буфер и не очень удобна в обращении. Но простая обёртка поможет решить проблему:

среда, 24 февраля 2016 г.

Развитие моего плагина для Emacs: multi-compile

Я как-то писал про свой небольшой плагин для Emacs - multi-compile. Он неожиданно для меня даже получил какую-то популярность, несколько человек попросили добавить туда несколько новых возможностей. В итоге я всё же поборол свою лень и наконец реализовал то, что просили. Сейчас постараюсь изложить, что появилось нового.

понедельник, 30 ноября 2015 г.

Поиск в Emacs при помощи Swiper

Нужно признать очевидное, дефолтный поиск в Emacs ужасен, допускаю, что там есть волшебные настройки делающие его лучше, но я так и не смог их осилить. Скажу страшное, если по текущему файлу нужно было много искать - я зачастую переключался в Sublime Text и делал это там. Но похоже я нашёл для себя решение, делающие мои волосы мягкими и шелковистыми, имя ему - swiper.

понедельник, 26 октября 2015 г.

Визуальные undo redo в Emacs

Концепция операций undo/redo кажется выверенной и отточенной многими годами, добавить туда что-то новое не возможно. Большинство редакторов впрочем и не пытаются, полностью сосредоточившись на редизайне кнопок в интерфейсе и добавлении новых шкурок. В Emacs'е же, попытки изменить устоявшуюся концепцию есть и на мой взгляд удачные.

вторник, 6 октября 2015 г.

Мой первый пакет для Emacs: multi-compile

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

среда, 16 сентября 2015 г.

Подборка ресурсов по Emacs

Что-то накопилось много разных ссылок на разные полезные и интересные материалы по Emacs, решил поделиться.

пятница, 4 сентября 2015 г.

Автоматическое удаление в Emacs лишних пробелов и табуляции в конце строки

Набрел недавно на замечательную возможность emacs, не могу не рассказать. Многих я думаю раздражают лишние пробелы или табы, которые остаются в конце строки (как отобразить непечатаемые символы я писал раньше). В emacs есть функция "M-x delete-trailing-whitespace" которая удалит все пробелы и табы в конце строк в текущем буфере, а заодно и лишние линии в конце файла, оставив только одну. А что бы автоматизировать этот процесс, можно добавить в конфиг вот такую строчку:
(add-hook 'before-save-hook 'delete-trailing-whitespace)
Теперь "delete-trailing-whitespace" будет вызываться перед каждым сохранением файла автоматически.

понедельник, 29 июня 2015 г.

Отображение непечатаемых символов в emacs

Отображение непечатаемых символов в emacs с одной стороны очень простая тема, выполняем "M-x whitespace-mode" и пробелы, символы табуляции, перес строк будет сразу видны на экране, выполняем команду ещё раз - режим выключается. Настройки по умолчанию в принципе неплохие и если они устраивают, то на этом можно и закончить изучение режима. Но это же emacs, и "под капотом" скрывается на удивление много настроек для этого режима. К сожалению информация о нем раскидана по разным уголкам интернета, а кое-что пришлось узнавать экспериментальным путём. Так что сейчас попробую описать важные на мой взгляд опции этого режима.

воскресенье, 28 июня 2015 г.

Расширенная проверка орфографии в emacs


В предыдущей статье я рассказал как можно настроить двуязычную проверку орфографии, однако такая проверка работает с каждым словом в отдельности, не учитывая контекст. Это безусловно полезная проверка, но её одной мало, хочется расширенного анализа: проверки расстановки дефисов, пунктуации, стиля и т.п. Конечно же в emacs нашёлся способ проводить и такой анализ текста. Делается это при помощи плагина работающего с приложением languagetool.

вторник, 16 июня 2015 г.

Двуязычная проверка орфографии в Emacs

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

воскресенье, 31 мая 2015 г.

Переключение между окнами в Emacs

Что-то я давно не писал о Emacs, пора поправить упущение. Итак, в Emacs есть понятие окон - грубо говоря каждое окно, это область экрана, где отображается содержимое файла. Сейчас мониторы стали большими и возможность открыть одновременно штуки 4 окна - это довольно удобная фича. Но раньше, когда об over 20" даже не мечтали, не думаю, что кому-то было было комфортно работать с более чем 2 окнами одновременно. И в связи с этим, переключение между окнами, пришедшее к нам с тех времен было реализовано через комбинацию (C-x O), которая просто переключает фокус на следующее окно. Пока их 2, проблем нет, когда их 3 и более - прощелкать последовательно все окна становится утомительным.

Проблема решается плагином window-numbering, работает он очень просто, в строке состояния каждого окна, он рисует его номер - от 1 до 10. А так же привязывает горячие клавиши (M-1, M-2,…) нажатие которых перемещает фокус в соответствующее окно. Нумерация окон довольно интуитивная, через какое-то время запоминаешь в какой области экрана, какое окно находит и переключаешься на него на автомате. Настройка тоже не вызывает проблем, достаточно установить плагин и включить его в файле конфигурации: "(window-numbering-mode t)".

В целом очень удобная штука - рекомендую.

суббота, 2 мая 2015 г.

Горячие клавиши Emacs в русской раскладке


ru_hotkeys.jpg 


В Emacs по умолчанию горячие клавиши заданы и соответственно работают в английской раскладке, после переключения на русскую - работать они перестают. Я довольно долго искал способ решения, перепробовал несколько разных, остановился на следующем…

понедельник, 27 апреля 2015 г.

Emacs как IDE для Rust


rust_logo.png Многие слышали про такой язык программирования как Rust, это чрезвычайно, на мой взгляд, перспективный и интересный язык от Mozilla, про него сейчас часто пишут и говорят. Он пока еще очень молод (в данный момент доступна только beta версия), в связи с чем поддержки в модных и популярных IDE для него нет или она очень слабая, а попробовать и составить мнение о языке хочется. Как обычно, в таких случаях на помощь нам приходит emacs, в нем относительно легко можно настроить подсветку синтаксиса, компиляцию, автодополнение и т.п.

среда, 22 апреля 2015 г.

Emacs backspace like sublime

В sublime есть одна вещь, которой мне очень не хватало в emacs, при выравнивании текста пробелами, клавиша <backspace> удаляла не один пробел, а сразу столько, сколько входило в один "tab". Это легче показать:
backspace.gif


Emacs из коробки так к сожалению не умеет, но как всегда исправить это совсем не сложно…

понедельник, 13 апреля 2015 г.

Умное назначение горячих клавиш в Emacs

Рано или поздно пользователям Emacs приходится переназначать горячие клавиши. Даже те, кто по идеологическим причинам используют дефолтные сочетания, приходят к тому, что нужно назначить на часто-употребляемую команду более простое сочетание клавиш или повесить hotkey на свой собственный скрипт. В интернетах советуют делать это как-то так:
(global-set-key (kdb "C-a") 'mark-whole-buffer)
Это какое-то время работает, пока не находится плагин, который переопределяет выбранное сочетание на что-то свое...

пятница, 10 апреля 2015 г.

Удаление в Emacs без копирования в буфер обмена

В Emacs есть такие замечательные функции, как удалить слово после курсора (kill-word), перед курсором (backward-kill-word), а так же удалить все символы от курсора до конца строки (kill-line). Однако у них есть одна особенность, они не просто удаляют символы, а еще копируют их в буфер обмена (так называемый kill ring). Лично меня подобное поведение не устраивает, поэтому я написал свои аналоги этих функций.