LINUX.ORG.RU

emacs просмотр привязок клавиатурных сокращений.


0

2

Вот такой вопрос. Все эти клавиатурные сокращения C-x 1 C-x k По идее вызывают некие Лисповские функции. Хотелось бы их прросмотреть. Чтоб вызывать самому. Лисп я пока-что вижу впервые. За emacs много пытался садиться но всё никак не дошло. Хочу настроить его как удобную IDE для С++. Для сборки проэкта использую cmake.

Хотелось бы привязать к клавише F9 к примеру небольшой скрипик . 1 - добавление нового окна в котором будет отражаться ход компиляции. 2 - выполнение cmake,в случае его удачного выполнения выполнить make в случае его удачного выполнения выполнить исполняемый фаил. А на F8 тоже самое только без выполнения исполняемого файла.

Исполнить шеловскую команду не сложно. shell-command-on-region хотя с направлением вывода ещё не разобрался. Как сделать, чтоб создалось окошко выставился mark в него , и вывод пошел в него. Привязать к клавише F9 F8 тоже не сложно. Это всё я пропишу в .emacs фаил. global-set-key

Создать функцию с несколькими операторами тоже не сложно. (defun ...)

Но как бы просмотреть команды которые создают новое окошко с определёнными параметрами

К примеру какой функцией можно симитировать такую последовательность клавиатурных сокращений M-- M-1 0 C-x 2?


Ctrl-H k

выдает описание клавиатурных привязок (после нажатия соотв. комбинации). Может начнем уже хелпы с манами читать, а не лезть с каждым чихом на ЛОР? Или скор набиваем?

unanimous ★★★★★
()

Хотелось бы их прросмотреть.

M-x describe-key

M-x describe-function

если при этом стоят исходники библиотек - можно будет прямо из хелпа прыгать в код

lazyklimm ★★★★★
()

Запуск внешних скриптов сборки советую делать через async-shell-command, она создает буфер и привязывает его к вводу-выводу процесса.

staseg ★★★★★
()

К примеру какой функцией можно симитировать такую последовательность клавиатурных сокращений M-- M-1 0 C-x 2?

- посмотри код, которые эта последовательность выполняет, запили отдельную функцию, прилепи к ней хоткей

либо просто сделай клавиатурный макрос

lazyklimm ★★★★★
()
Ответ на: комментарий от unanimous

Ага, спасибо. Посмотрел. Только возник вопрос. В доках написано что функция (split-window-vertically &optional SIZE) вызываеться с параметром SIZE

по M-x она вызываеться без параметров.

Тоеть вот такую последовательность oператорами как сделать? M-- M-1 0 C-x 2 [code] (split-window-vertically (negative-argument (digit-argument 7))) [/code] Я правильно понял или нет?

vsrmis
() автор топика
Ответ на: комментарий от lazyklimm

Да и к стати. Не хочет работаьт .emacs фаил. Назвал его conf.emacs в нём пока-что лежит.

(split-window-vertically)

vsrmis
() автор топика
Ответ на: комментарий от vsrmis

по M-x она вызываеться без параметров.

F1-k клавиатурное сочетание

lazyklimm ★★★★★
()
Ответ на: комментарий от vsrmis

по M-x она вызываеться без параметров.

Кури про Ctrl-U (universal argument)

В описании есть ссылка на *.el файл. Она будет работать, если установить исходные тексты (поставляются отдельно).

Тоеть вот такую последовательность oператорами как сделать? <>

Написать функцию, которая делает всё, что надо, ее запускать по комбинации.

Я во второй раз предлагаю почитать документацию.

unanimous ★★★★★
()

Создать окошко и открыть в нём буфер *compilation*
(display-buffer-other-frame (get-buffer-create «*compilation*»))

Другие операции с фреймами тоже содержат слово frame. Я сам, после года использования нескольких фреймов (отдельных окон) для джабера, компиляции и других нужд, отказался от этой идеи - оказалось не очень удобно.

Можешь вставить этот код в темповый буфер и выполнить его (например, оставить курсор справа от крайней скобки и нажать C-x C-e). Можно записать эту команду в .emacs, тогда фрейм с буфером компиляции будет запускаться при старте редактора.

Привязка компиляции к кнопке Ф9.
(global-set-key (kbd «<f9>») 'compile)

Пригодится следующая переменная вариант:
(setq compile-command «my cool compilation script»)

В принципе, несложно сделать вариант с запуском программы... Нужно в compile-command добавить && "./debug/foo" или типа того, но мне проще вручную написать пару дополнительных команд, а потом выбирать нужную с помощью C-n и C-p.

Для тестовых программок у меня есть набор шаблонов (смотри yasnippet) c установкой локальной команды компиляции.

Чтобы не ломиться в открытую дверь нужно взять скрипты emacs у кого-нибудь, (например, у Alex Ott) и тщательно их изучить, потом уже пилить свои. Желательно ещё осилить какой-нибудь лисп в базовом объеме, например прочесть первые две главы SICP.

anonymous
()
Ответ на: комментарий от anonymous

Можно записать эту команду в .emacs, тогда фрейм с буфером компиляции будет запускаться при старте редактора.

Логичней же сделать свой defun с (interactive) и вызывать его либо через M-x, либо через биндинг (глобальный или локальный - не суть важно).

Желательно ещё осилить какой-нибудь лисп в базовом объеме, например прочесть первые две главы SICP.

Есть перевод доков к elisp. http://alexott.net/ru/emacs/elisp-intro/elisp-intro-ru.html

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

Есть перевод доков к elisp. http://alexott.net/ru/emacs/elisp-intro/elisp-intro-ru.html

Крокозябры. Вроде разобрался. но вот проблема то. Мне нужно вызывать для компиляции файлик build.sh в котором я реализовал c make make run. И вызывать его буду командой

(async-shell-command "../build/build.sh") Но это только для этого проэкта. А как быть с другими? Вкоторых другие системы папок. Как бы сделать универсальное средство компиляции в emacs.

vsrmis
() автор топика
Ответ на: комментарий от vsrmis

Как бы сделать универсальное средство компиляции в emacs.

M-x compile по дефолту вызывает make

lazyklimm ★★★★★
()
Ответ на: комментарий от vsrmis

Компиляция делается через команду compile, я же тебе выше написал. Эта функция выполняет содержание переменной compile-command, о чём тоже написано выше. Просто программно заполняй эту переменную по обстоятельствам, если тебе нужно что-то необычное.

Также я упоминал про локальные команды - это ещё один путь решения подобных задач.

http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables....

http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Vari...

Впрочем всё это можно прочитать используя C-h f compile и C-h v compile-command.

Но судя по твоим сообщениям emacs ты не осилишь ни сейчас, ни в будущем. Для этого нужно читать документацию, которой предостаточно (в том числе и на русском языке). Ещё очень полезно изучить основы лиспа, но ты, кажется, слишком ленив для этого.

И ещё. Слово «проект» пишется через 'Е'.

anonymous
()
Ответ на: комментарий от anonymous

Вроде почил. Многое прояснилось, Спасибо. Но уже который час застрял на одной непонятке. Вызов функции dired и find-file Если её вызываю M-x dired и C-x C-f и так далее,то буфер интерактивный в режиме Dired mode. Если же вызываю его (find-file '/') то получаю листинг ls -l. По документации так и должно быть. Ставлю режим (dired-mode) При попытке открытия файла или каталога получаю

dired-current-directory: No subdir-alist in HelloWorld

vsrmis
() автор топика
Ответ на: комментарий от vsrmis

Я даже понял, что ты сделал, но это то какая-то ересь. Ты делаешь явно что-то не то. Вообще говоря, если вызвать после (dired-mode) (dired-build-subdir-alist), то всё заработает в твоём случае, просто это не нужно. Ты лучше напиши, что ты хочешь получить в результате.

Если сейчас разбираешься с управлением файлами и буферами, то советую обратить внимание на iswitchb и ido - супер пакеты.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.