[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.16741 Reply
File: 13189438046773.jpg
Jpg, 112.83 KB, 700×525 - Click the image to expand
edit Find source with google Find source with iqdb
13189438046773.jpg
Сам, кодач. Реквестирую в тред емаксобогов, желательно таких, которые готовы потратить несколько своего времени на поучения начинающих. Если они ещё на хаскеле пишут - вообще отлично, потому что именно отсутствие нормальной ИДЕ для него меня и заставило сегодня опять вспомнить о емаксе.
В быту пользуюсь вим-ом (который, кстати, тоже не наполировал до блеска, но для самых простых вещей - хватает) или полноценными ИДЕ. Емаксом пытался пользоваться несколько раз. В первый раз я его погонял несколько дней, но бросил. В другой раз я подошёл к этому серьёзней - узнал чуть-чуть елиспа, прочёл пару туториалов, посмотрел какой-то скринкаст, но опять плюнул, потому что это говно нихуя не работало как мне хотелось. Даже emacs-starter-kit, который как раз и нужен, чтоб всё было искаропки, мало того, что не предоставил достаточного для работы функционала, так ещё и содержал в себе ошибки, которые опять же вручную приходилось исправлять.
Короче, я остался им очень недоволен (особенно до дрожи отвратительной анти-юникс идеологией), но проблема в том, что ничего лучше по прежнему нет. Поэтому приходится опять вернуться к попытке осилить емакс. И, вспоминая предыдущие фейлы, в этот раз я попробую начать с обращения к бывалым.

Итак, заканчивая затянувшееся вступление, собственно, вопрос: как настроить емакс, чтоб всё было хорошо? Ну, то есть, если ваш компьютер распидорашивает и вы, погоревав, покупаете новый, ставите ваш дистрибутив Линукса и емакс, что вы сделаете, пошагово, чтоб можно было начать работать? Чем подробнее - тем лучше.

Вимобоги тоже велкам, раз уж речь о редакторах. Можно хвастаться своими вимрц и наборами плагинов.
>> No.16745 Reply
> чтоб всё было хорошо
Пока ты к нему не привыкнешь, тебе точно хорошо не будет. А для этого просто время.
Если оно тебе действительно нужно, можешь попробовать полное погружение в емакс. w3m-el вместо браузера, jabber.el вместо асечки, shell.el вместо консоли, емакс вместо редактора. Через неделю-другую если не адаптируешься, то по крайней мере сильный дискомфорт испытывать перестанешь.
> достаточного для работы функционала
Какого?
>> No.16751 Reply
File: 1244938436089.jpg
Jpg, 26.33 KB, 400×493
Your censorship settings forbid this file.
unrated
>>16741
Ставь linum+, ido, autocomplete. После этого совета должны прийти джва человека и рикомендовать icicles и anything. Если такие будут, заставлю расскрыть конфиги и поделиться ощущениями.
А вообще хуёво быть тобой, у меня там овер 9к персональных настроек, например отображение таба через ^I, настройки переноса, delete-комманды, comment-line, indent-whole-buffer, етц.
Под хаскелем не сидел. Пробежавшись по гуглу особого разнообразия не обнаружил, есть один мод, изучай, ставь.
C-h b в помощь. Еще C-h f, C-h k.
Ещё попробуй мою функцию для узнавания действия клавиш. Ещё никуда не выкладывал, а она таки удобная. Держи.
(defun try-keys()
  "Used to learn keys or key-combinations in some mode. Just passes every key combination to `describe-key-briefly'. Quit with C-g or ESC ESC ESC"
  (interactive)
  (let (keyseq)
    (message "Quit with C-g or ESC ESC ESC.")
    (while (not (or (equal keyseq [7]) (equal keyseq [27 27 27])))
      (setq keyseq (read-key-sequence-vector nil))
      (describe-key-briefly keyseq))))
> emacs-starter-kit
> > Installation
> > You'll need Emacs 24
Забей на этих петушков. Их кит, который ориентирован на ньюби, пользуется девелоп-версией emacs'a. Даже я туда не хочу лезть, учитывая ченжлист. Они там даже динамик скоуп хотели убрать, и запилить статик. Представляешь, что это значит?
> > The current stable release is 23.3.
Его качай. Чистый, киты не для программистов, а для гуманитариев, которым emacs для теха порекомендовали.
> так ещё и содержал в себе ошибки, которые опять же вручную приходилось исправлять.
Приготовься к тому, что моды содержат ошибки. Не все, конечно, но я лично ловил ОЧЕ неприятную ошибку из-за highlight-parentheses, который я очень любил. hl-tags-mode, правда, такой ошибки не создавал, возможно тупо переделаю его когда-нибудь на paren, или вообще regexp.
Некоторые нужные моды так и вообще под какие-нибудь 21 имэксы, и выдают пачку ошибок obsolete-variables(и, чудо, работают), ну или тупо не работают.
> анти-юникс идеологией
Ась? Поясни.
> Итак, заканчивая затянувшееся вступление, собственно, вопрос: как настроить емакс, чтоб всё было хорошо?
Там, вцелом, и в базовой комплектации всё хорошо. У меня даже алиас есть, alias e="emacs -nw -Q", ящитаю удобно. Куда удобнее всяких нано.
В попытках сделать лучше можно далеко плыть. Но помни кривую обучения текстовых редакторов. Имэкс там недаром спиралькой.
>> No.16755 Reply
>>16751
> > анти-юникс идеологией
> Ась? Поясни.
Есть мнение, что ОП предполагает, что Емакс - сраный и сложный комбайн, тогда как юникс-идеология подразумевает ПОЦЕЛУЙ и одна программа - одно назначение.

крокодил
>> No.16756 Reply
>>16755
> Емакс - сраный и сложный комбайн, тогда как юникс-идеология подразумевает "одна программа - одно назначение".
Доброчую этого господина.

Другой мимолинуксил
>> No.16757 Reply
>>16751
> динамик скоуп хотели убрать, и запилить статик.
Они же не идиоты, конечно, он просто станет опциональным, как и в общелиспе, например. Вот еще ссылочка для сомневающихся перфекционистов http://www.emacswiki.org/cgi-bin/wiki/WhyDoesElispSuck.
Сам я совершенно неприхотлив и в быту прекрасно обхожусь практически дефолтным вимом. Что касается конкретно хаски, то я пользуюсь немного подпиленным https://github.com/urso/dotrc/blob/master/vim/syntax/haskell.vim для яркой новогодней раскраски, автодополнением как-то тоже не пользуюсь, черт его знает, может стоит попробовать? Могу еще посоветовать Yi, сам особого профита перед вимом для себя не увидел, поэтому забил.
>> No.16759 Reply
>>16757
Даже если так, то раньше надписи 24.x is stable на оффсайте я туда не полезу. Обратная совместимость там таки очень хромает, и находится на уровне "если бы вы делали всё так, как рикомендуется(использовали формат вместо int-to-string, например)".
>> No.16764 Reply
>>16745
> А для этого просто время.
Это как раз не проблема. Просто меня несколько смущает мысль заново писать и конфигурировать то, что должно быть уже написано и сконфигурировано у тысячи емаксоводов, ведь в стандартном комплекте нет необходимых, естественных вещей, без которых работать просто смешно (если только твой единственный язык - не елисп).
> w3m-el вместо браузера, jabber.el вместо асечки, shell.el вместо консоли
Нет-нет, если Путь только в этом - я лучше действительно поставлю какой-нибудь Leksah и создам тред "Хочу запилить свой текстовый редактор, но писал серьёзно только под веб. Какие подводные камни?", по причине
> до дрожи отвратительной анти-юникс идеологией
с которой я готов соседствовать, но не уживаться.
Хотя shell.el действительно удобен, его даже можно использовать, но тоже, только потому, что я не знаю ни одного хорошего эмулятора терминала (я имею ввиду на высоком уровне, гуи-окошко и всё такое, а не zsh вместо bash).
> Какого?
Ну ты же не на стандартной конфигурации работаешь, так? Поделись конфигом, если не жалко.
>>16751
Спасибо. Не вбросишь свою папку с настройками, или хотя бы не очень секретную её часть? Я ведь даже не до конца понимаю, как именно в нём всё настраивается - в виме всё чётко и понятно, а для емакса по крупицам приходится собирать.
> Забей на этих петушков.
Можно поставить для 23, но немножко костыльно. Но я всё равно отказался, потому что в результате грузится он довольно долго, автодополнять все встречающиеся в быту языки не умеет, вообще, по сути, по прежнему нихуя не умеет, кроме ТексМэйт-стайл сниппетов (сразу видно, кто собирал) (но это хорошо), к тому же содержит ошибки, что для меня выглядит недопустимым пиздецом, а донастраивать его не очень удобно - не знаешь, где что выкинуть и где лучше дописать то, что захотелось дописать.
> киты не для программистов, а для гуманитариев, которым emacs для теха порекомендовали
Гуманитарий - классное оскорбление, но если от этого отвлечься, я не считаю, что людей можно делить по образованию и профессиям. Бывают люди толковые, а бывают бестолковые - бестолковых часто называют гуманитариями, но, на практике, я встречал кучу натуральных гуманитариев, у которых на визитке написано "программист". Это всё к чему: любовь настраивать - скорее недостаток, чем достоинство программиста. И хорошая программа должна быть легко настраиваемой, предоставляя удобную для этого документацию, но она просто обязана быть функциональной искаропки, а не заставлять каждого нового прибывшего проделывать одну и ту же процедуру настройки. В идеале, я хочу заглянуть в конфиги для того, чтоб поменять тему, а потом долго-долго работать, пока не столкнусь с мелочью, которая мне неудобна - и тогда полезть в конфиги снова.
> Ась? Поясни.
Доброчую этих >>16755>>16756, но добавлю свои пять копеек. Это хорошо, очень хорошо, когда внутренние средства настройки позволяют написать тетрис прямо в текстовом редакторе. Но, блядь, это ни в коем случае не значит, что он должен быть написан. Это всё брейнфачество и должно служить забавой, и никак не должно поощряться компьюнити в качестве нормальной практики. Если есть что-то, что в этой среде всегда используется вместе с текстовым редактором - например, дебаггер, - его можно встроить, но сделать легко отключаемым-подключаемым. Если же я внезапно добавляю туда возможности браузера, это значит две вещи: 1. существующие браузеры имеют серьёзные недостатки, раз настраивая их какой-то извращенец не смог получить то, что ему нужно; 2. мне нужно провериться у врача. Это как вооружение: объяснима необходимость иметь ядерное оружие, но лучше им никогда не воспользоваться.
> Там, вцелом, и в базовой комплектации всё хорошо.
Я наверняка не умею ей пользоваться, но доходчивых мануалов я не нашёл - либо старьё, либо емакс-вики, которая не очень дружелюбна для энтри-левела. И то, что увидел я - это отсутствие даже элементарного автодополнения и умных отступов для многих популярных языков. В виме и то с этим лучше.
>>16757
Спасибо за линк, много полезностей. Но, да, я сторонник того, чтоб компьютер делал за меня столько, сколько можно, до тех пор, пока это не начинает доставлять неудобства. Т.е., сниппеты, автодополнение, автоформатирование - это всё маст-хев, а вот авторефекторингом я нигде практически не пользовался, потому что есть возможность что-то испортить, и потом ищи где и чего.
>> No.16766 Reply
File: em.zip
Zip, 10.34 KB, 0 files - Click the image to get file
view
em.zip
>>16764
> Я наверняка не умею ей пользоваться, но доходчивых мануалов я не нашёл - либо старьё, либо емакс-вики, которая не очень дружелюбна для энтри-левела. И то, что увидел я - это отсутствие даже элементарного автодополнения и умных отступов для многих популярных языков. В виме и то с этим лучше.
M-/ - автодополнение, например.
C-s, C-r: i-search
  • C-w дёргнуть слово перед курсором в поиск
  • M-y yank
  • M-r regexp
C-l recenter
C-4 C-x C-i очевидная полезнота для стакэксченжа
C-M-\ indent-region
C-M-f C-M-b C-M-u C-M-d sexp-передвижение
M-= подсчёт количества линий и символов в выделении
M-x replace-regexp obvious
M-x query-replace-regexp not-so-obvious
M-x align-regexp not-fukkin-obvious-at-all
M-z zap-to-char
Это то, что вспомнил из базовой.
>> No.16767 Reply
>>16766
Ну, стандартные хоткеи я уж узнал, даже шпаргалку распечатал, но M-/ это не автодополнение, например, а издевательство. Впрочем, я сам виноват, неверное слово употребил: под автодополнением я имел ввиду интеллисенс. Но ладно интеллисенс, он ведь даже отступы искаропки нормальные не делает, причём не только не может догадаться в пайтоне поставить отступ по if:, а даже банально не ставит столько отступов по энтеру, сколько было на предыдущей строке!
> em.zip
Большое спасибо. Поиграюсь на досуге.
>> No.16768 Reply
>>16767
> он ведь даже отступы искаропки нормальные не делает, причём не только не может догадаться в пайтоне поставить отступ по if:, а даже банально не ставит столько отступов по энтеру, сколько было на предыдущей строке!
У меня в python-mode все нормально работает, именно изкоробки.
Мимопроходил
>> No.16770 Reply
>>16767
> а даже банально не ставит столько отступов по энтеру, сколько было на предыдущей строке!
Лолировал.
C-j newline-and-indent
>> No.16772 Reply
>>16770
И правда ведь. Спасибо.
Надо какую-ниубдь книжку по этой магии нормальную достать, на листочках с хоткеями у меня такого не было.
>> No.16774 Reply
>>16764
> я не знаю ни одного хорошего эмулятора терминала
Rxvt-unicode, sakura.
мимо-проходил
>> No.16780 Reply
>>16772
Учил без книги. Но это мой путь, я не навязываю. Всё, что осилил - интро имэкса и елисп реф(C-h i), где-нибудь после стрингов надоело читать. На то он и реф, чтобы туда смотреть по мере появления проблем.
Напомню про индент: C-i(<TAB>) indent
В выложеных мной сорцах есть функция, забинденая на C-f11, индентит весь буффер, оставляя позицию мышки там, где она и была. Рикомендую, быстрый путь понять скобочные ошибки - проиндентить.
>> No.16782 Reply
>>16751
> Used to learn keys or key-combinations in some mode
C-h m
>> No.16785 Reply
>>16782
> Enabled minor modes: Auto-Complete Auto-Compression Column-Number
> Display-Time Encoded-Kbd File-Name-Shadow Font-Lock
> Global-Auto-Complete Global-Font-Lock Global-Linum Iswitchb
> Jabber-Activity Line-Number Linum Mouse-Wheel Show-Paren Tooltip
> Unify-8859-On-Encoding Utf-Translate-Cjk
Да и суть другая же совсем. Вместо того, чтобы получить список, мы хотим узнать действие 10-20 комбинаций, свободны ли там кнопки, етц. Тупо клацать и узнавать. inb4 C-h c, C-h k.
>> No.17739 Reply
Про вим.
zf30j свернёт строки от этой, до эта+30. Как переформулировать эту команду так, чтоб скрыть все строки от этой до строго заданной, например, до 60-й?
>> No.17748 Reply
Внезапно, стандартная имаксовская раскладка - хуита, анахронизм прямиком из 70х, с назначением значений клавишам по названию действия, а не по их смыслу(C-n - C-p, охуенно удобно, да), излишне использующая мизинец и, как следствие, потенциально приводящая к проблемам, подробности - http://xahlee.org/emacs/emacs_kb_shortcuts_pain.html. Рекомендую всем имаксобогом открыть для себя http://xahlee.org/emacs/ergonomic_emacs_keybinding.html . Пользуюсь 3 года, зависимость есть, брат жив, мизинец на месте. Перед этим около года использовал стандартные настройки, перешел довольно быстро и безболезенно.
>> No.17784 Reply
File: 2ch NumPad.jpg
Jpg, 31.91 KB, 302×311
Your censorship settings forbid this file.
unrated
>>17748
Использую дефолты больше трёх лет, а хаксли идёт нахуй. Меня его истории уже окончательно доебали, я просто не могу это слушать. Одна статья толще другой, просто. Про контрл, блядь. Про какой-то шифт. Чё он несет вообще? Он может заткнуться? Да нахуй нам то texinfo, лучше ебашим всё на html. Чего блядь? Про что несешь? Вообще охуеть.
Целая куча закорючек на клаве вместо текста, прошелся поиском по статье. Где sexp-движения? Он что, журналист? У него сплошные движения по параграфам. Или он кроме написания блогов ничем не занимается?
Какой-то я сегодня совсем не добрый.
> C-n - C-p, охуенно удобно, да
Удобно, тащемта. fbnp можно нажимать все разными пальцами, чего не скажешь про хрестообразное перемещение, как в wasd. Использую такие бинды даже в браузере, и больно бьёт по работоспособности сползание на чужую систему.
>> No.17788 Reply
File: yoviminemacs.png
Png, 53.28 KB, 395×392 - Click the image to expand
edit Find source with google Find source with iqdb
yoviminemacs.png
>> No.17799 Reply
>>17784
Бро, я не спорю, сила привычки это охуенно, но подумай сам, не стоит ли привнести немного обоснованности и эргономики в эту область, а не цепляться за исторический сложившиеся подходы (поменяли контрл с альтом, вообще охуеть)? Не хочу тебя пугать, но на кону не просто вопрос традиции, http://xahlee.org/emacs/emacs_hand_pain_celebrity.html - прямое следствие. В этом смысле основная идея переложить нагрузку с мизинца на большой палец и расположить самые частоиспользуемые на кнопках под пальцами в дефолтном положении довольно логична. Попробуй все-таки прочитать статью, а не просто пройтись поиском, автор предлагает не столько конкретную раскладку, но скорее сам подход - для себя я естественно добавил новые сочетания и отказался от некоторых его решений (жить не могу без dabbrev-expand по M-/, например).
> fbnp можно нажимать все разными пальцами
Ты ведь понимаешь, что абсурдно отстаивать удобство сочетаний, выбранных по первой букве команды? Единственный их плюс - твоя привычка к ним. Алсо тебя не напрягает, что для простой навигации по тексту тебе приходиться постоянно переключать руки, загоняя свои бедные мизинцы? В предлагаемом варианте вся навигация лежит под правой рукой, достаточно зажать альт большим пальцем левой и перемещаться по тексту разнообразными способами с помощью основных пальцев правой руки - это реально быстрее постоянного переключения рук и бега по клавиатуре. Более того, в чем смысл "нажимать разными пальцами"? Ты что, одновременно несколько клавиш передвижения нажимаешь, типа левым мизинцем жмешь контрл, а правой рукой вверх и вниз одновременно? Алсо сам прописал себе такие же бинды в винде через xkeymacs и в баше, и так же без них работоспособность падает.
>> No.17813 Reply
>>17799
> Ты что, одновременно несколько клавиш передвижения нажимаешь, типа левым мизинцем жмешь контрл, а правой рукой вверх и вниз одновременно?
Да. Но я могу мажимать контрол и большим пальцом правой.
> В предлагаемом варианте вся навигация лежит под правой рукой, достаточно зажать альт большим пальцем левой и перемещаться по тексту разнообразными способами с помощью основных пальцев правой руки - это реально быстрее постоянного переключения рук и бега по клавиатуре.
Не знаю никаких проблем. У меня большая рука, но достаточно тонкие пальцы. Занимался волейболом 2.5 года в старших классах школы. Я спокойно дотягиваюсь до всех клавиш, при этом мизинец совсем свободно и без проблем летает с Ф на ЦТРЛ либо ленивым движением руки(приаттаченой к столу), либо движением мизинца, либо вообще без проблем, если рука подвижна.
> В предлагаемом варианте вся навигация лежит под правой рукой, достаточно зажать альт большим пальцем левой и перемещаться по тексту разнообразными способами с помощью основных пальцев правой руки - это реально быстрее постоянного переключения рук и бега по клавиатуре.
Куда он при этом всём празднике девает C-x и С-с? Заптучар? M-x наконец.
>> No.22341 Reply
Запущен Emacs-server командой emacs --daemon Можно ли его остановить как-нибудь кроме убивания процесса?
>> No.22343 Reply
>>22341
http://www.emacswiki.org/emacs/EmacsAsDaemon
например у генты /etc/init.d/emacs.username stop
>> No.22344 Reply
>>22343
Спасибо!
>> No.22380 Reply
Ставь evil-mode и не парься с емаксовой раскладкой.

И добро пожаловать в li/s/p. Ещё немного и потянет на CL. Не сопротивляйся, это приятно и совсем не больно.
>> No.22382 Reply
>>22380
По-твоему, насколько сложен переход в программировании между различными диалектами Lisp?
>> No.22386 Reply
>>22382
Зависит между какими. Между Elisp'ом образца GNU Emacs 24 и Common Lisp - относительно простой. На Scheme или Clojure - достаточно сложный, ибо это совсем другие языки.

Можешь сделать (require 'cl) и писать практически на CL в Emacs.
>> No.22394 Reply
File: screen-2012-02-29-14-00-29.png
Png, 89.14 KB, 1360×741 - Click the image to expand
edit Find source with google Find source with iqdb
screen-2012-02-29-14-00-29.png
> eval is a built-in function in `C source code'.
> (eval FORM &optional LEXICAL)
> Evaluate FORM and return its value.
> If LEXICAL is t, evaluate using lexical scoping.
Установил emacs24. Лексикал просто охуенно сделали. eval в CL не может в лексические, а тут может. Алсо, мои конфиги стали грузиться не по 6-7 секунд, а по 2. Я просто в восторге.

>>22386
> (require 'cl)
Но это все-равно не CL, это то, как emacs-юзеры хотят видеть функционал CL. Но и не скажу, что хуже. Оптимизации в CL меня уже реально подзаебали.
>> No.22423 Reply
>>22394
> eval в CL не может в лексические
ЩИТО?
>> No.22425 Reply
Доброго дня. Хочу попробовать evil, но вимом не пользовался никогда, как учить?
>> No.22426 Reply
>>22425
vimtutor в консоле набираешь, вимобогом становишся
>> No.22427 Reply
>>22426
Винда...
>> No.22428 Reply
>>22426
Этот ваш vimtutor неполный. Я в нем не научился выделять, вырезать и вставлять. И хелпом толком пользоваться.
>> No.22429 Reply
>>22428
Копипаст
d - вырезать
p - вставить
"y - копировать
>> No.22430 Reply
>>22429
also dhp - копировать -.-
>> No.22431 Reply
Я сейчас пользуюсь GUI-версией Emacs, вполне неплохо для начала.
Поставил несколько хороших модулей: autocomplete, rainbow, yaml, nyan для прикола.
Удобно то, что почти все важные команды продублированы в меню. Естественно, сокращения потихоньку запоминаешь, но меню в целом помогает.
Плюс, там есть некий туториал, я пока его не смотрел толком.
>> No.22432 Reply
>>22425
попробуй gvim
>> No.22433 Reply
>>22431
> Плюс, там есть некий туториал, я пока его не смотрел толком.
Попробуй обязательно, он довольно короткий. Хорошее место, чтобы обучиться самым важным комбинациям клавиш.
>> No.22439 Reply
File: Scissors_Wallpaper_by_nxxos.jpg
Jpg, 358.54 KB, 1280×1024 - Click the image to expand
edit Find source with google Find source with iqdb
Scissors_Wallpaper_by_nxxos.jpg
>>22423
Да, я неправильно понял смысл этой хуйни. Думал, что можно вытягивать лексические переменные из-под кложура(и я до сих пор не понимаю, почему такой функции нет, это меня печалит; судя по гуглу, можно хуйнуть на сишке патч, там обсуждали, что дебажить-же не получается).
>> No.22460 Reply
>>22439
>>22423
(eval
  '(let ((aaa 3000) (bbb 4000) (ms '(aaa bbb)))
     (setq ms (mapcar
                (lambda(arg)
                  (funcall (let
                             ((my-closure (lambda() arg)))
                             (setcar (last my-closure) arg)
                             my-closure)))
                ms)))
  t)
Лолповтори это на CL.
>> No.22462 Reply
>>22460
(eval
   '(let* ((aaa 3000) (bbb 4000) (ms '(aaa bbb)))
 (setq ms (mapcar
            (lambda(arg)
              (funcall (let*
                         ((my-closure (lambda() arg)))
                         (setf (car (last my-closure)) arg)
                         my-closure)))
            ms)))
   t)

Повторил
>> No.22476 Reply
Посоны, не помню, спрашивал или нет, но спрошу еще раз: Emacs умеет отображать картинки посреди текста? Например:
  
Текст диплома идет, идет,
идет...
    
    [Фотография асинхронного двигателя]
    
    Рисунок 1.1 - Асинхронный двигатель, фотография
  
Снова текст диплома идет, идет,
идет, идет, идет...
>> No.22477 Reply
>>22476
Какой формат файла?
>> No.22478 Reply
>>22477
Не суть. Например, HTML. Можно Emacs запрограммировать на замену <img ...> на настоящие графические рисунки?
>> No.22479 Reply
>>22478
Можно.
>> No.22480 Reply
>>22462
Нет-нет, не в том смысле, чтобы это действие в действие переписать мой код. Суть в том, чтобы сделать (symbol-value 'arg), где arg обьявлен лексически. В CL (setf (car (last my-closure)) arg) даст ошибку, там же компилируются функции, а тут они как list, с ними можно издеваться руками.

>>22476
>>22478
Либа под тех как-то делает. Можешь поизучать, как именно.
>> No.22508 Reply
>>22478
http://www.everfall.com/paste/id.php?cnywp0msmq6h
Вот, написал. Включать через M-x html-image-mode RET, оно делает картикки кнопками, которые можно по M-o раскрывать в картинки и обратно.
Будут баги - пиши.
>> No.22509 Reply
>>22508
Ах, забыл в конце дописать
(provide 'html-image-mode)
>> No.22510 Reply
>>22508
Лол, спасибо, конечно, но я даже не начинал етот ваш Емакс изучать. Пока просто присматриваюсь к разным редакторам.
>> No.22525 Reply
>> No.22554 Reply
разбуди когда напишешь ядро на питоне, няша
>> No.22555 Reply
>>22554
ох блин. промахнулся. отвечал в ветку про ось на питоне
>> No.22556 Reply
>>22525
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\desudesudesu>ccl
Welcome to Clozure Common Lisp Version 1.8-r15286M  (WindowsX8632)!
? (print
 (let ((aaa 3000) (bbb 4000) (ms '(aaa bbb)))
   (mapcar
    (lambda (arg)
      (funcall
       (let ((my-closure (lambda () arg)))
         (setf (car (last (function-lambda-expression my-closure))) arg)
         my-closure)))
    ms)))
;Compiler warnings :
;   In an anonymous lambda form at position 9: Unused lexical variable BBB
;   In an anonymous lambda form at position 9: Unused lexical variable AAA
> Error: value NIL is not of the expected type CONS.
> While executing: #<Anonymous Function #xC6DA50E>, in process listener(1).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
1 >
Что там clisp за декларации вьебал, что считает нужным не компилировать функцию?
>> No.22563 Reply
>>22556
Не хочет и не компилирует, в чем проблема?
>> No.22705 Reply
File: USB-coffee-machine.jpg
Jpg, 94.28 KB, 923×820 - Click the image to expand
edit Find source with google Find source with iqdb
USB-coffee-machine.jpg
ОП, к -богам себя не отношу, но близко знаком с этим уже около трёх лет, прочёл больше половины lispref (справочника по программированию). С emacs пересел на xemacs - там как мне показалось (без холиваров, аноны, это же Доброчан) всё приведено в больший порядок.
Последний месяц просидел только над elisp не выходя из дома.

Так вот навскидку тебе для xemacs готовый ответ: С:\Program Files\XEmacs\XEmacs-21.4.22\etc\sample.init.el (и да, я под Виндой):

;;; This is a sample init file. It can be used without modification
;;; as your init.el or .emacs. In older versions of XEmacs, this file
;;; was called .emacs and placed in your home directory. (Under MS
;;; Windows, that directory is controlled by the HOME environment
;;; variable and defaults to C:\.

В целом GNU-тые опять выглядят безалаберными программерами делающими что-либо исключительно just for fun.
>> No.22750 Reply
>>22705
А для чего ещё нужно что-либо делать?
>> No.22794 Reply
Няшечки, а скажите как забиндить чтобы что-нибудь такое:
runhaskell file-in-active-buffer
чтобы отправлялось в term? И ещё, можно как нибудь сделать, чтобы на лету из импортированных модулей можно было сразу смотреть сигнатуры функций?
и ещё не могу найти переменную как в си --- basic-offset
>> No.22860 Reply
File: USB device can not be deattached-2.jpg
Jpg, 60.04 KB, 454×418 - Click the image to expand
edit Find source with google Find source with iqdb
USB device can not be deattached-2.jpg
>>22794
Если ты, няшечка, ещё здесь, то слушай. Пример для XEmacs, но с GNU работает по тому же принципу.
Тебе фактически нужно породить новый процесс - твой хаскелл, это делается командой (с английского перевести потрудись сам):

(start-process ;; сугубо для примера здесь запускается сам же XEmacs
;; Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS
"XEmacs" ;;  NAME is name for process.  It is modified if necessary to make it unique.
"XEmacs-buffer" ;;  BUFFER is the buffer or (buffer-name) to associate with the process.
;;  Process output goes at end of that buffer, unless you specify
;;  an output stream or filter function to handle the output.
;;  BUFFER may also be nil, meaning that this process is not associated
;;  with any buffer.
;;  Third arg is program file name.  It is searched for as in the shell.
; сюда тебе нужно подставить путь к твоему интерпретатору хаскелла
"С:\\Program Files\\XEmacs\\XEmacs-21.4.22\\i586-pc-win32\\xemacs.exe" ; не забываем экранировать слеши
   ;; Remaining arguments are strings to give program as arguments.
;; А воот сюда - следует подставить
(prin1-to-string ; в виде строки
 buffer-file-name ; путь к файлу, связанному с текущим буфером
   )
)

Не гарантирую, что это заработает искаропки, посмотри внимательнее документацию на перечисленные ф-ции. Далее тебе надо будет

(progn ; prog-выражение
   (save-current-buffer) ; сохраняющее - сам понимаешь - редактируемый буфер в тот файл откуда он был загружен
   (выше-приведённая-длинная-startprocess-форма) ; и запускающее с параметром этого файла твой хаскелл
)

повесить на горячую клавишу - keysym - чтобы ты, нажимая f5 (например), получал запущеный хаскелл интерпретирующий свежеотредактированный буфер.
Это делается командой
(define-key
   global-map ; здесь указывается таблица ключ-функция - таблица ключей (горячих клавиш)
   '(control z) ; здесь - горячая клавиша
   'undo ; а здесь - собственно ф-ция: соорудишь лямбду и подставишь в неё предыдущую prog-форму
)
Теоретически это работает так, имена ф-ций верные инфа 100%, практически - кури документацию по параметрам ф-ций.
Далее, если всё делать уже с учётом фэн-шуя, тебе понадобится создать особый основной (бывают ещё дополнительные) режим - режим-редактирования-хаскелл-программ, но как это делается я ещё не знаю, потому что я не емаксобог.
Емаксобоги пусть поправят меня там, где я ошибся.
>> No.22930 Reply
>>22860
> '(control z)
(kbd "C-z")
Если не использовать общепринятые методы, то в какой-то момент времени это может стать deprecated и внезапно перестать работать.
> собственно ф-ция: соорудишь лямбду и подставишь в неё предыдущую prog-форму
Не функция, а комманда. Отличаются наличием `interactive' с описанием, как же она себя должна вести, будучи вызванной интерактивно.
> пусть поправят меня там, где я ошибся.
Вцелом, ты ошибся в самом начале: такая либа уже точно есть, и работает гарантированно лучше, чем запускать процесс с хаскеллем самому.
http://www.haskell.org/haskellwiki/Emacs/Keybindings_and_simple_usage
> (prin1-to-string ; в виде строки
Хуйню написал. Начнем с того, что buffer-file-name', или что более логично, функция (buffer-file-name &optional BUFFER)', и без того возвращает стринг. Делать `prin1-to-string' - это сделать ответ nil строкой "nil", это неправильно.
> (progn ; prog-выражение
Я, конечно, понимаю, что тут у нас анонимная имиджборда, анонимные функции в почёте и все такое, но обычно это defun'ится. Плюс - хотябы то, что комманда получает имя, которое можно использовать в M-x.
>> No.22934 Reply
Пацаны, я придумал охуенную идею: перебиндить в этом вашем Emacs-е все биндинги на стандартные виндовые (типа «C-x» — «вырезать», «C-v» — вставить и т. д.), чтобы не переучиваться. Я идиот?
>> No.22935 Reply
>>22860
И еще.
Еще примечания по стилю: одно двоеточие для инлайн-комментариев, два для комментариев на отдельной линии, три для чего-нибудь важного, написанного с отдельной строки.
И висящие на отдельной строке скобки напрягают. Пока я только начинал учить лиспы, то в переходе с C-стайла на лисп такой стиль я еще считал нормальным. Но теперь я тупо не вижу закрывающие скобки. Вот давай я напишу какую-нибудь простую комманду, а ты просто оценишь:
(defun tratata (&optional vse-budet-horosho) 
  (interactive "P")
  (save-excursion
    (save-window-excursion
      (let ((responce (if (or
                            vse-budet-horosho
                            (oddp (length (buffer-substring-no-properties (point-min) (point-max)
                                            )
                                    )
                              )
                            )
                       (format "Успокойся, %s. Всё будет хорошо!" user-full-name)
                       (format "Оставайтесь на линии, %s. За вами уже выехали." user-full-name)
                        )
              )
             )
        (message responce)
        (delete-other-windows) ; for lulz
        (forward-line 10) ; I'm in ur bufferz movin ur point
        )
      )
    )
  )
А все могло быть куда красивее:
(defun tratata (&optional vse-budet-horosho) 
  (interactive "P")
  (save-excursion
    (save-window-excursion
      (let ((responce (if (or
                            vse-budet-horosho
                            (oddp (length (buffer-substring-no-properties (point-min) (point-max)))))
                       (format "Успокойся, %s. Всё будет хорошо!" user-full-name)
                       (format "Оставайтесь на линии, %s. За вами уже выехали." user-full-name))))
        (message responce)
        (delete-other-windows) ; for lulz
        (forward-line 10))))) ; I'm in ur bufferz movin ur point
>> No.22936 Reply
>>22934
Да, но к сожалению такие как ты в мире тоже существуют, и пишут гайды, как это делать. Кое-кто ведется.
http://ergoemacs.org/emacs/emacs_make_modern.html
Запомни имя "Xah Lee" - ссылками на его посты(а их дохуя и не мало) меня можно троллировать.
>> No.22941 Reply
>>22936
А что в этом плохого (в переделывании биндингов под привычные мне)?
>> No.22942 Reply
>>22941
Тем, что жить без c-x и c-c кеймапа - это усложнять себе жизнь. И подстраивать редактор под себя не зная, что он может делать - это неправильно. А зная - это неудобно, ведь зачем потом переучиваться на новые каты?
Так и живем.

Впрочем, ты натолкнул меня на мысль. Может позже сформулирую.
>> No.22944 Reply
>>22930
> Не функция, а комманда.
да, да, ты прав, я забыл про interactive
> функция (buffer-file-name &optional BUFFER)', и без того возвращает стринг
няша, вот тут ты ошибся: я сказал же
> Пример для XEmacs, но с GNU работает по тому же принципу
Язык xelisp несколько иной, нежели elisp: там буферы, кеймапы, скринмапы и проч. являются спецобъектами, которые при печати напрямую выглядят как
#<какая-нибудь-невнятная-строка парам1 парам2>
Печатать их можно переводя в строки ф-цией print. Распечатан может быть не любой объект.
Всё потому, что Ben Wing, центровой разработчик XEmacs придерживается мнения что "The world is not ASCII" (прочитано в lispref.pdf).
>> No.22946 Reply
>>22942
Ничего не понял. Лучше сформулируй мысль.
>> No.22948 Reply
File: System has recovered from a seious error -2.JPG
Jpg, 43.76 KB, 715×479 - Click the image to expand
edit Find source with google Find source with iqdb
System has recovered from a seious error -2.JPG
>>22935
Спасибо за замечание. Форматирование тесно связано с подсветкой парных скобок, которое у меня в XEmacs не работает (пришлось писать костыль), и перемещением по элементам s-exp которое я едва-едва освоил чуть не сломав пальцы (поменял в Винде CAPSLOCK->RCTRL). Поэтому при работе с кодом пишу в C-стиле, чтобы видеть закрывающие, а только когда код написан,, тогда подгоняю скобки ч-з [M-)].

>>22942
Ворвусь в субтред про переназначения клавиш. Не холивара ради, а пользы для.
Только я за всё это сел и узнал, что кеймапы emacs-ов устоялись лет тридцать назад под влиянием идеи обратной совместимости с редакторами того времени, как мне тутже захотелось всё переделать. Некоторое время так и продолжалось: я не взирая ни на что просто перебиндивал всё как мне хотелось.
Но потом стало ясно, что в этом "редакторе" так много ф-ций, что задействованы практически все мыслимые сочетания клавиш. В общем анон, ты представляешь себе всё множество горячих клавиш? Ну так вот emacs использует его процентов на 80. Более того, в распределении клавиатурных ключей прослеживается определённая логика, и если её понять и принять, то всё сложится лучше и проще чем если делать всё самому и самому же придумывать логику.
Хотите перебиндивать - читайте sample.init.el, а наперёд знайте, что свободны F1-F12 и их модификации ч-з ALT и CTRL, или ALT+CTRL, и что ESC - вроде как "грязный хак" (это я вычитал в исходниках XEmacs) с ним не связываться лучше.

Вообще в целом что перебиндивание ключей, что нестандартные ходы в программировании в emacs/xemacs мне, нубу, кажутся пока что попыткой строительства на минном поле: встречаю кучу если ты прикрутил что-то одно, может отвалиться что-нибудь другое. Так что нужно либо пользоваться этим as is и принимать как есть, либо пытаться написать своё, к чему я всё больше склоняюсь.
Насчёт того, почему emacs устроен так, как устроен, есть книжка (сам не читал, только просмотрел) "The Craft of Text Editing or A Cookbook for an Emacs", для тех кто интересуется.
>> No.22949 Reply
>>22948
> тогда подгоняю скобки ч-з [M-)].
А я под это функцию отдельно писал, лол. Хороший текстовый редактор, годный.
> что свободны F1-F12 и их модификации ч-з ALT и CTRL, или ALT+CTRL
Отмечу, что в линуксах Ctrl-Alt-Fn отьедает операционка.
> ESC - вроде как "грязный хак"
В смысле, биндить под ESC? Так ведь "ESC <key>" транслируется в "M-<key>", а ESC ESC ESC является `keyboard-escape-quit'. Биндить под них - просто не красиво.
Я использую hyper-key для своих шорткатов, который под клавишой контекстного меню. В #emacs на irc.freenode.net когда дискуссия всплыла, то все сошлись на ненужности "M-o", так как оно все-равно не пробивается через font-lock, который использует любой мод, кроме text-mode.

>>22944
(current-buffer)
;; => #<buffer scratch>
(buffer-name)
;; => "scratch"
(buffer-file-name)
;; => nil
Всё просто и понятно, не знаю, что ваш Бен там мутит.
>> No.22959 Reply
File: Space-cadet.jpg
Jpg, 189.39 KB, 2003×813
Your censorship settings forbid this file.
unrated
>>22949
> А я под это функцию отдельно писал, лол. Хороший текстовый редактор, годный.
Ой-йо. Конечно годный, но и я некоторые ф-ции находил не сразу - он очень большой и с какой стороны за него браться - сразу не разберёшь. Нет "учебной курвы" от начала до конца.
> Так ведь "ESC <key>" транслируется в "M-<key>", а ESC ESC ESC является `keyboard-escape-quit'. Биндить под них - просто не красиво.
Нам - дуракам - закон не писан, ЛОЛ. Я на него удачно биндил [C-g] и некоторое время по-первой так и пользовался - мне нативные раскладки не нравились. Потом привык и стал как все.
Про ESC я прочёл или в исходниках на elisp, или в simple.init.el, что это грязный хак.
> Я использую hyper-key для своих шорткатов, который под клавишой контекстного меню.
> hyper-key
> под клавишой контекстного меню
У тебя пикрелейтед?
> Всё просто и понятно, не знаю, что ваш Бен там мутит.
С буферами работает кажется так, как ты описываешь. А что нельзя распечатать - примеры есть, но искать долго и лень.
>> No.22968 Reply
>>22959
hyper-key == контекстное меню
super-key == ЗНАЧЕК ВИНДОУС
meta == alt

Супер я не биндю ни в коем случае, оставляя супер-каты под OS-каты(и все ОС-каты обязательно с супер-кеем, дабы не получить шадоу).
>> No.23074 Reply
File: bcdb2f2e9cbebf0b7887ff364980da8.jpg
Jpg, 301.68 KB, 1125×810 - Click the image to expand
edit Find source with google Find source with iqdb
bcdb2f2e9cbebf0b7887ff364980da8.jpg
dired божественен!
>> No.23075 Reply
>>23074
Как запустить???
>> No.23076 Reply
>>23075
dired?
C-x C-f, но открывать папку.
(global-set-key [H-return] '(lambda () "Dired here" (interactive) (dired "."))) ; открывать дайред текущей папки
Но это у меня на hyper-key, можешь поставить C-return.
>> No.23077 Reply
>>23076
Ах, да. Есть еще C-x d (алерт, не спутать с C-x C-d).
>> No.23103 Reply
File: emacs.jpg
Jpg, 69.20 KB, 640×480 - Click the image to expand
edit Find source with google Find source with iqdb
emacs.jpg
А поначалу от емакса у всех мизинец болит?
>> No.23111 Reply
>>23103
Изобрёл как-то один учёный машину для бритья и стал показывать её покупателям.
— А как вашей машиной пользоваться? — его спрашивают.
— Вставляете, значит, лицо, а она бреет!
— Но ведь форма лица у всех разная! — возразили ему на это.
— В первый раз — да.
>> No.23119 Reply
>>23103
>>23111
Хо-хо, примерно так и есть. Повесил CAPSLOCK на LCTRL - жизнь упростилась, чего и всем рекомендую. под виндой это делается через запись в реестре, удобнее всего утилитой keytweak или mapkeyboard
>> No.23127 Reply
>>23119
Эх, а у меня на CapsLock — переключение раскладки.
>> No.23134 Reply
>>23127
Ебащу контролами, а на капсах раскладки. Пальцы ровные, брат жив.
>> No.23162 Reply
Держите вводное видео по emacs: www.youtube.com/watch?v=GvQns1ULOtc&feature=related.

Качество фиговое, звук фонит, но вводная всё-таки сносная.

Рассказчик ссылается на пакет semantic который ему посоветовал небезызвестный AlexOtt, я посмотрел http://alexott.net/ru/writings/emacs-devenv/EmacsCedet.html похоже вещь в самом деле здравая, в отличие от костылей, которые автор прикручивает на 0:42.
>> No.23187 Reply
>>23162
Цедет - ебанный пиздец с ушами. Документации, кроме как "установить, настроить настойчивость хелпа" я не нашел, и когда я захотел руками настроить сабмоды, то это оказалось очень неочевидным, как это именно сделать. Работает он как-то странно, и в этом я виню отсутствие многопоточности, так как нередко стоит оставить его на тридцать секунд, и он уже может дополнять там, где не мог. Алсо, он не умеет в дефайны. Ну, при мне не умел точно.
Что странно, на нем сделан JDE для явы, который еще менее конфигурируемый, но тот работает стабильно.
>> No.23197 Reply
>>23187
Раз ты пробовал, объясни, как он работает?
Я так понял, что делается парсинг исходника на том или ином языке и внутри лисп-машины емакса, на основе описания грамматики этого языка, формируется елисп-список синхронизированный с исходником, так? И перемещаешься, и правишь ты как бы в первую очередь это дерево, а оно отображается в текст в буфере?
>> No.23201 Reply
>>23197
> делается парсинг исходника на том или ином языке и внутри лисп-машины емакса, на основе описания грамматики этого языка, формируется елисп-список синхронизированный с исходником
это разве не ctags делает?
>> No.23220 Reply
>>23197
Не разбирался в его внутренностях
> и правишь ты как бы в первую очередь это дерево
Сомневаюсь. Ящитаю, всё подстраивается под буффер, а не наоборот.

>>23201
В cedet это, скорее всего, делает semantics. Однако я ни с тем, ни с другим не разбирался. Юзал только автодополнение(внезапно, через autocomplete; да-да, аутокомплит не имеет связи с цедет, но он просто как-то находил все слова, пропаршенные семантикой, например все gtk_* функции, при том, что эти файлы я явно не открывал, а только инклудил gtk.h или как его там), и переключалку между обьявлением метода и реализацией.

Судя по статье, можно даже делать какие-то хелпы по тагам, поиски и прочее, о чем я даже не догадывался.
http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html#sec10
>> No.23222 Reply
Внезапно нашел весёлую фичу:
;; Local variables:
;; eval: (progn (goto-char (point-max)) (insert "tutturu"))
;; End:
http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-Fi[...].html
>> No.23249 Reply
>> No.23262 Reply
>>23249
Хорошие советы, так как я опять(после N лет имэкса) опять натолкнулся на марк-ринг, но теперь я понял его(во многом благодаря пониманию того, что такое marker).
Заодно мои изменения
http://www.everfall.com/paste/id.php?w9lae767fcy4
Логика изменений:
У них при C-u C-SPC пихается марк в конец марк-ринга, марк в поинт и начало марк-ринга в марк. При этом поинт теряется. Я же сделал это всё более шатким, но более веселым: пихается поинт в конец марк-ринга.
Вместо ненужного C-u C-u экранирования от `set-mark-command-repeat-pop' (которое можно обойти просто сделав C-f C-b) я делаю обратное движение, противоположное C-u C-SPC.
Два последних адвайса связаны с возможным удалением региона, в котором находились все марки. Тогда они начинают указывать все на одно и то же место, и руками скроллить 10 марок становится скучно, легче их тупо проигнорировать.
>> No.23306 Reply
Как выровнять автоматически ширину фрейма? Например у нас открыт один фрейм, затем C-x 3 два раза и получается что пропорции ширины у фреймов 1:1:2, а я хочу чтобы было сразу 1:1:1. Как это сделать?
зануда-новичек
>> No.23307 Reply
>>23306
Выравнять же.
стыднофикс
>> No.23312 Reply
>>23307
> новичек
тоже ошибка же
>> No.23313 Reply
>> No.23320 Reply
>>23313
> Author: Horishnii Oleksii <desu@horishniy.org.ua>
>> No.23325 Reply
>>23320
Со ват? Ты думал имэкс комьюнити только в америках живет?
>> No.23326 Reply
>>23325
> имэкс комьюнити
А им разве кто-то кроме создателя и авторов плагинов пользуется? petrosya.jpg

Если серьёзно, какога примерная аудитория этого редактора, сколько им примерно людей пользуется?
>> No.23327 Reply
File: molodoy_pyatnichniy_dart_veyder_600.jpg
Jpg, 43.65 KB, 600×528 - Click the image to expand
edit Find source with google Find source with iqdb
molodoy_pyatnichniy_dart_veyder_600.jpg
>>23326
> кто-то кроме создателя
> > .emacs
> > Region has 2019 lines, 10421 words, and 75987 characters.
> аудитория этого редактора
Разнообразные кодеры, лисперы, TeX'оебы.
> сколько им примерно людей пользуется
Легион же.
> > stackowerflow
> > emacs: 2.5k followers
> > elisp: 427 followers
>> No.23329 Reply
>>23327
> Region has 2019 lines, 10421 words, and 75987 characters
Ничего себе ты крут, Пятничный Вейдер!

-----------------
Кто-нибудь использует Emacs:
1) как словарь (толковый или иностранных слов). Где берёте словари?
2) как менеджер паролей?
>> No.23339 Reply
>>23329
Попробовал когда-то эту штуку
http://www.gnu.org/software/emacs/manual/html_node/emacs/Spelling.html
Не скажу, что очень удобное, но оно искаропки, если aspell стоит.
Вот еще линк https://user.in-berlin.de/~myrkr/dictionary/index.html
Но даты меня немного смущают. Не уверен, будет ли это просто или удобно.
http://www.emacswiki.org/emacs/TextTranslator#toc11
Этот дергает переводчики из интернетов. Выглядит достаточно хорошо.
> менеджер паролей
http://www.juev.ru/2009/08/10/emacs-password-manager/
https://github.com/kiwanami/emacs-id-manager
Думаю как-то так, но не пользовался. Выглядит не очень сложно.
>> No.23340 Reply
File: a3aa55329f711e5de4bde66081c01547.jpg
Jpg, 204.38 KB, 700×988 - Click the image to expand
edit Find source with google Find source with iqdb
a3aa55329f711e5de4bde66081c01547.jpg
>>23339
Спасибо!
>> No.23341 Reply
Уже давно знал о yasnippet, но как-то руки не доходили. Сейчас наконец поставил. Это шикарно. YouTube: YASnippet screencast

Вбрасываю свои настройки, может кому полезно будет. Yasnippet полностью разархивировал в ~/.emacs/unmah/
;;;YAS
(require 'yasnippet)
(yas/global-mode t)
(setq yas/prompt-functions '(yas/ido-prompt yas/completing-prompt yas/dropdown-prompt yas/x-prompt))
(setq yas/trigger-key "C-; C-l") ; Не хочу использовать таб для всего подряд, у меня и без того автокомплит на табе
(global-set-key (kbd "C-; C-i") 'yas/insert-snippet)
(setq yas/snippet-dirs '("~/.emacs.d/mah/snippets" "d:/.emacs.d/unmah/snippets"))
(yas/reload-all) ; фиксит TAB, без него на табе остается yas/-функция
>> No.23354 Reply
File: Снимок-Google-Custom-Search-Mozilla-Firefox.png
Png, 30.45 KB, 594×314 - Click the image to expand
edit Find source with google Find source with iqdb
Снимок-Google-Custom-Search-Mozilla-Firefox.png
>>23307
Я тебя сейчас укушу.
>> No.23355 Reply
>>23354
Так, а как правильно? Выровнять --- сравнять (с землей, сделать ровным). Выравнять --- приравнять. Фреймы равной ширины. Выравнять. Разве нет?
>> No.23360 Reply
>>23355
Выравнивать, фром мимодил
>> No.23363 Reply
File: 134270482823225.jpg
Jpg, 13.79 KB, 319×479 - Click the image to expand
edit Find source with google Find source with iqdb
134270482823225.jpg
Еще одну полезную штуку нашел:
http://www.emacswiki.org/emacs/UndoTree
Прямой линк http://www.dr-qubit.org/undo-tree/undo-tree.el
Суть такая: вместо нативного emacs'овского undo без redo, где undo может redo-ить предыдущее undo. Допустим, печатаем1-печатаем1-печатаем1, отменяем(вернулись к печатаем1-печатаем1), печатаем2. Отменяем(вернулись к печатаем1-печатаем1), отменяем(вернулись к печатаем1-печатаем1-печатаем1). Вот по такой схеме в оригинальном имэксе можно было вернуться на текст перед undo, чего вообще нельзя при IDE-ешной-YOBA-системе с undo-redo. То есть, при стандартной системе undo-redo мы откатились, напечатали и потеряли печатаем1-печатаем1-печатаем1 навсегда.
Что предлагает undo-tree - это undo-redo плюс возможность переключаться между ветками андо в визуальном режиме(либо без него, но это нужно держать дерево в голове). Забиндено на C-/, C-?.
Ящитаю, это более интуитивно понятная штука для новичков, плюс гораздо более мощная штука вообще.

;;;UNDO-TREE
(require 'undo-tree)
(global-undo-tree-mode)
(global-set-key (kbd "C-M-/") 'undo-tree-visualize) ; да кто пользуется этим списком даббрева?
>> No.23365 Reply
>>23355
Безударная гласная проверяется однокоренным словом.
ВырОвнять - рОвный.
>> No.23400 Reply
>>23360>>23365
Да вы издиваетесь что ли?
> ВырОвнять - рОвный.
С таким же успехом:
ВырАвнять --- рАвный.
>> No.23408 Reply
>>23365
>>23400
Две ссылки на авторитетные источники:
http://language.edu.ru/catalog.asp?cat_ob_no=40157&ob_no=40115
http://gramota.ru/slovari/dic/?lop=x&bts=x&zar=x&ag=x&ab=x&sin=x&lv=x&[...]F2%FC
Вкратце для тех, кому лень по ним ходить: прав тот, кто предлагает вариант "вырАвнять", т.к. в данном контексте это слово означает "сделать равным, привести к одному значению", а не "сделать ровным, сгладить поверхность/край".

мимокрокодил
>> No.23412 Reply
Вот-вот, я прав!
>> No.23439 Reply
File: install-gentoo.jpg
Jpg, 170.51 KB, 550×544 - Click the image to expand
edit Find source with google Find source with iqdb
install-gentoo.jpg
>>16741
> отвратительной анти-юникс идеологией
­GNU IS NOT UNIX­
>> No.23440 Reply
File: emacsbaka.png
Png, 42.50 KB, 554×351 - Click the image to expand
edit Find source with google Find source with iqdb
emacsbaka.png
>>16741
Не, ну правда, когда Столлман начинал писать то, чем мы все пытаемся так долго овладеть, у него были свои понятия об интерфейсе, которые сложились задолго до пришествия форточек. Столлман вообще купил домой компьютер только несколько лет назад, а до этого да-да, херачил код на работе с мейнфреймами. В принципе, Емакс и нельзя винить за не-UNIX way, потому что ваша привязанность к дружественным коммерческим интерфейсам сделала своё дурное дело, ага. Ну не преподавали вам в школе lisp и не объяснили про макросы, из командной строки вы помните только «cd ..» и то, в лучшем случае. Поэтому остаётся только самообучаться этому всему и желать что-то вроде твикера для потомков.

Раз уж я наткнулся на этот тред, спрошу:
  • как можно в емаксе сделать подсветку 80 колонки? То, что я находил, либо вообще не работало, либо криво работало и съезжало в разных Major-mode.
  • как запустить в емаксе шелл с возможностью прокрутки экрана?
  • почему в разных *-mode правила индентации разные, ёпрст?
  • Перепробовал множество вариантов сочетаний клавиш для беготни по тексту, но такого чтоб для всех пальцев удобное, пока не нашлось — либо ехал средний палец через мизинец, либо пальцы в шифтах заплетаются, либо эта клавиша забиндена другим принцем, попробуйте в другом замке. Посоветуйте свои?
  • сраная подсветка синтаксиса в емаксе — убогое убожество. Даже самый простой скрипт на баше выглядит как обезьяний код на пхп хотя даже для пхп есть свой nxhtml-mode, и он сука прекрасен, а для баша сделали плохо, плохо!. Скриншот тоталли релейтед. Да, там не комментарий, а sha-bang но всё же. Как можно починить/дополнить правила подсветки синтаксиса, чтобы выглядело по-человечески?
  • хочу маленький буфер, в котором бы отображались имена открытых буферов. В столбик. Как tree-style-tab для firefox. Есть у кого?
  • совсем глупый вопрос: как настроить переключение между фреймами как в тайловом WM? В смысле на одну клавишу повесить переключение по часовой, на другую — против? Желательно привести весь этот дефолтовый бардак (C-x 1 etc.) к стилю Awesome WM ЕВПОЧЯ.
  • Как сказать емаксу закрывать ненужные буферы при переключении с них на какой-нибудь другой? Задалбывает закрывать эти тучи его менюшек, хелпочек, настроечек…
>> No.23456 Reply
>>23440
> почему в разных *-mode правила индентации разные, ёпрст?
Потому что разные языки с разным синтаксисом имеют разные правила отступов.
> как настроить переключение между фреймами как в тайловом WM?
Попробуй:
http://www.emacswiki.org/emacs/QuickTiling
и скажи годно или нет, самому лень смотреть.
>> No.23464 Reply
File: macro-имеющий-уши.png
Png, 358.39 KB, 494×500 - Click the image to expand
edit Find source with google Find source with iqdb
macro-имеющий-уши.png
>>23440
> к стилю Awesome WM ЕВПОЧЯ.
В смысле, шорткатному стилю? Он же там вимоёбский. Я его в Awesome WM привел в emacs-way, и больше не вспоминал.
> как запустить в емаксе шелл с возможностью прокрутки экрана?
M-x shell
M-x eshell
Любые из них сохраняют полный лог в буффер, потому C-v M-v скроллит.
> почему в разных *-mode правила индентации разные, ёпрст?
Очевидно же.
> Посоветуйте свои?
Ебашу дефолтные C-f, C-b, C-n, C-p (символ) M-f, M-b, M-n, M-p (слово, и для всяких сишечек ставлю, чтобы КемелСтайл был двумя словами) C-M-f, C-M-b, C-M-n, C-M-p, C-M-u(вверх по скобочкам) C-M-d(вниз по скобочкам) (sexp; максимально актуально для лиспов, но актуально и для остальных языков).
Если тебе нужно пространство для биндинга: M-o бессмысленно, можешь (global-set-key (kbd "M-o") nil) и ебашь в префикс свои каты (kbd "M-o <...>"). Можно настроить Hyper-key, тогда вообще можно не заморачиваться, так как вся гипер-плоскоскость свободна.
> сраная подсветка синтаксиса в емаксе — убогое убожество.
> > подсветка слова bash в shebang
Бака.
Где-то можно, очевидно. Гугли font-lock.
> хочу маленький буфер, в котором бы отображались имена открытых буферов.
C-x C-b уже не катит?
> между фреймами
> фреймами
Я думаю, ты имеешь в виду не frame, а window. Дело в том, что фрейм - это отдельное окошко, с которым работает WM.
Переключение висит на C-x o, или M-x other-window. В обратную сторону можно через аргумент:
C-u - 1 C-x o
C-- C-1 C-x o
C-- C-x o
Любое из этих. Либо (global-set-key (kbd "C-x O") (lambda() (interactive) (other-window -1))) ; Шифт-о
> при переключении с них на какой-нибудь другой
Прямо при переключении? Когда меня задалбывали хелп-окна, то такой электричности я все-равно не желал. Нет, это можно сделать какими-нибудь хуками, либо если их нет, то проадвайсить каждую комманду. Но я не знаю, зачем.
Хелп закрывается буквой q, кстати. C-c C-b, C-c C-f для вперед/назад по хелпу.
Но в свое время я написал полезную хрень. Вот она:
(defun close-annoying-windows(&optional verbose)
   (interactive "P")
   (let ((blist (buffer-list)))
(while blist
  (and
    (= ?* (aref (buffer-name (car blist)) 0))
    (get-buffer-window (buffer-name (car blist)))
    (or (not verbose) (y-or-n-p (concat "Kill the window of " (buffer-name (car blist)) " buffer?")))
    (or verbose (not (equal (car blist) (current-buffer))))
    (delete-window (get-buffer-window (car blist))))
  (setq blist (cdr blist)))))
Суть такая: биндишь это на шорткат, и оно скрывает все окна, которые начинаются на звездочку. Если ты начинаешь с аргумента, то тебя будет спрашивать про закрытие каждого из буфферов, ответы y/n.
Для compilation окна, чтобы при успехе оно само закрылось и выдало зеленое сообщение:
(setq compilation-finish-function ;; Auto-dismiss compilation buffer...
   (lambda (buf str)
(if (string-match "exited abnormally" str)
  (message "compilation errors, press F6 to visit")
  (run-at-time 0 nil 'delete-windows-on buf)
  (message (propertize "No compilation errors!" 'face '(:foreground "#00ff00" :weight bold))))))
(setq compilation-scroll-output 'first-error) ;; automatically scroll the compilation window
(setq compilation-window-height 15) ;; Set the compilation window height...
>> No.23475 Reply
>>23464
Спасибо за старания и помощь.
другой анон

---------------------
> electric-pair-mode
> Emacs-24 comes with a new simple global minor mode electric-pair-mode which uses the new post-self-insert-hook
А если у меня 23-й Emacs, что нужно сделать, чтобы вставлял закрывающие скобки сам собой?
>> No.23480 Reply
File: 123524021322.jpg
Jpg, 583.47 KB, 1387×1040 - Click the image to expand
edit Find source with google Find source with iqdb
123524021322.jpg
>>23456
> Потому что разные языки с разным синтаксисом имеют разные правила отступов.
Какие такие разные языки? Я знаю только Visual Basic с принудительной индентацией. Да, я не пользуюсь емаксовой дефолтной автоматической индентацией и всегда отбиваю табы сам, потому что, люблю например, короткие if писать в одну строку, а автоиндентатор всё ломает. И вообщеон коряво работает, когда тот же shell-script-mode хочет выравнивать по восемь, а у меня написано по четыре. И ЧСХ, когда автоинлентатор отключён, то в shell-script-mode вручную табы отбиваются прекрасно, а если его выключить и включить, то он всё испортит в соответствиями со своими правилами.
> http://www.emacswiki.org/emacs/QuickTiling
Спасибо, обязательно посмотрю.

>>23464
> Он же там вимоёбский
Да? Не знал. А в vim такая же беда переопределением клавиш как в емаксе или получше?
> Я его в Awesome WM привел в emacs-way
То есть C-x C-c — закрыть окно etc?
> M-x shell
> M-x eshell
Второй почти то, что надо, только в некоторых программах он всё равно выдаёт пустой буфер, в nano например. inb4 зачем тебе текстовый редактор, когда есть емакс — пусть есть удалённый ssh хост, на котором есть только vi и nano. И вторая проблема — не работает большинство хоткеев оболочки а-ля xterm (C-w – стереть слово, перевод в начало вводимой строки ставит курсор в самое начало, т. е. перед приглашением, а не там, где вводится команда etc.)
> Очевидно же.
См. выше ответ на >>23456 лол это же цифры по порядку.
> C-f, C-b, C-n, C-p
Хотелось бы нажимать одной рукой. Не, у меня дотягиваются пальцы, так чтобы мизинцем нажать правый контрол, а большим f, но это извращение. Можно конечно, жать контрол левой рукой, а кнопки — правой, но у меня от такого MAXIMUM MOTORICA.
> Если тебе нужно пространство для биндинга
Я его себе делал, у меня есть настройки, где M-ijkl работают как стрелки, рядом с ними клавиши дляслов и абзацев, но всё, кроме стрелок уже неудобно для пальцев.
> Бака.
Nani mo wakarimasen desu~
> Где-то можно, очевидно. Гугли font-lock.
Поглядел на http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Lock.html и понял, что пока не осилю.
> C-x C-b уже не катит?
Не хочу жать лишние клавиши — это раз. Хочу, чтоб было на виду, в конце концов, у меня не 800 на 600. Ido делает это лучше, но всё равно как-то не то. В идеале бы ещё сортировать их по имени.
> Я думаю, ты имеешь в виду не frame, а window.
Да, я некоторое время поразмышлял между buffer, frame и window, но всё равно ошибся. Надо запомнить, что Emacs — это window manager
> Переключение висит на C-x o, или M-x other-window
Как же долго мне их не хватало…
> C-u - 1 C-x o
> C-- C-1 C-x o
> C-- C-x o
Ужас же.
> Либо (global-set-key (kbd "C-x O") (lambda() (interactive) (other-window -1)))
А вот это уже вариант. Кстати, это же реально перебиндить, C-x o на H-o, а C-- C-x o на H-O ? Какие вообще подводные камни от ухода с некоторых многолавишных C- M- на H- ? Не конкретно в этом случае, а вообще, разумеется. Понятно, что от контрола не уйдёшь, но для емакса было бы прекрасно уместить всё часто используемое на альты, а комбинации с Ctrl и правой частью клавиатуры сократить до минимума, используемого как можно реже.Да, на альты а не на меты, потому что некоторые комбинации с меты хрен сдвинешь, и я подумывал о том, чтобы повесить туда гиперы и попробовать работать на них.
> Прямо при переключении?
Ну да. Всё равно я открывал новые через M-x тра-та-та, а потом в списке буферов обнаруживал сонмища открытых буферов, ага. Ну правда же, M-x M-p RET гораздо быстрее, чем открыть буфер с буферами, пару минут вглядываться в эту кашу из имён и искать свой.
> Хелп закрывается буквой q, кстати.
Спасибо, а меню кастомизатора емакса?
> Но в свое время я написал полезную хрень. Вот она
О-о-о, я сохраняю это. Такая-то полезняшка.
>> No.23483 Reply
File: f02c211f56620c466daa217e4bca24fc_bp.jpg
Jpg, 53.13 KB, 600×337 - Click the image to expand
edit Find source with google Find source with iqdb
f02c211f56620c466daa217e4bca24fc_bp.jpg
conkeror божественнен!
>> No.23484 Reply
>>23483
> dired божественен
> conkeror божественен
Да у вас имаксянка!
Разве conkeror ещё жив?
>> No.23485 Reply
>>23484
Да, вроде. Единственное он js'ом конфигурируется, и из коробки поиск не очень удобный. да, я хромогом был
>> No.23497 Reply
File: screen-2012-02-29-14-00-29.png
Png, 89.14 KB, 1360×741 - Click the image to expand
edit Find source with google Find source with iqdb
screen-2012-02-29-14-00-29.png
>>23484
Внезапно это даже не я.
Хотя у меня давно уже conkeror, и я на него конкретно подсел. Пробовал когда-то написать что-нибудь под него, но это жутко. Позже задолбался с управлением ноускриптом и выпилил его тоже.
Раздражает многопоточность, точнее её отсутствие. Вплоть до того, что ютуб перестаёт играть при выборе картинки на Доброчане. Все-таки, псевдомногопоточность через call-cc это весело, но не более. А еще у меня М-ц от этой хуйни.
Но даже так, у меня на нем максимальная скорость браузинга. Сабстринг-поиск по хистори(я думаю это не дефолтно, по реквесту могу попробовать найти, чем я это сделал) / набор урлов клавой делают это.

Кстати http://www.everfall.com/paste/id.php?11z8gqnejk0i скриптик, чтобы правая кнопка открывала и переходила, а миддл открывала и оставалась на старой странице.

>>23475
http://www.everfall.com/paste/id.php?hwc2fs9ee102
Попробуй подключить новый файлик просто.

>>23480
> Какие такие разные языки?
Любые такие разные языки. Для си актуально считать {} логическими скобками, а в elisp я запросто могу назвать функцию {. Пример:
(defun { () (message "tutturu?"))
({)
;; => "tutturu?"
Для си будет актуально сделать отступ в пару пробелов для всего контекста между такими скобками, для илиспа такого делать не нужно.
> с принудительной индентацией
Разве не Python?
> if писать в одну строку, а автоиндентатор всё ломает
Пример, где ломает. Тоже так пишу, например.
> хочет выравнивать по восемь
(setq-default sh-basic-offset 4)
> вручную табы отбиваются прекрасно
Вручную табы можно отбивать при любом моде, C-q C-i. Но я делаю антабифай/индент всего, что движется. Такие дела.
> То есть C-x C-c — закрыть окно etc?
Нет, там нельзя комбинации. Потому Winkey+f4. В смысле, что переходы между через C-f C-b, ну и тому подобное.
> Не хочу жать лишние клавиши — это раз.
Пробуй
http://www.emacswiki.org/emacs/download/sticky-windows.el
Или мою переработку его пакета(более адекватная работа с аргументом и без него)
http://www.everfall.com/paste/id.php?9udhmixe8mzd
> в некоторых программах он всё равно выдаёт пустой буфер, в nano например
Это не полноценный шелл же. ncurses-программы работать не будут. На пикрилейтеде доказательство того, что ncurses запустить в имэкс вообще-то даже можно.
> C-w – стереть слово
Вот скрипт для того, чтобы при выделении киллить выделение, а иначе слово перек прицелом.
(defun kill-region-or-word (arg)
   "Call kill-region' or backward-kill-word' depending on whether or not a region is selected.

With number ARG pass those as argument to `backward-kill-word'.
With non-nil non-number ARG make `kill-region' even if region is not selected."
   (interactive "P")
   (cond
((or (and transient-mark-mode mark-active) (and arg (listp arg)))
  (kill-region (point) (mark)))
((numberp arg) (backward-kill-word arg))
((eq arg '-) (backward-kill-word -1))
(t (backward-kill-word 1))))
> в самое начало
В emacs24 не так.
> Можно конечно, жать контрол левой рукой, а кнопки — правой, но у меня от такого MAXIMUM MOTORICA.
Моторика как-раз таки небольшая же. C-f C-b нажимаются левой рукой(lctrl мизинцем, f/b указательным или средним). Руки не перемещаются практически, кроме как мизинец на лконтрол. Все пальцы остаются примерно на asdf-jkl;
Проблемы могут быть только если постоянно использовать мышку. Эта проблема лечится тем, что перестаешь использовать мышку.
> window manager
Но все-таки text-editor.
> Ужас же.
Даже последняя? Ты просто не привык же. Аргументы - это удобно. Обычно ты пользуешься без них, но если что-то нужно похожее, но по-другому, набиваешь аргумент.
> Кстати, это же реально перебиндить, C-x o на H-o, а C-- C-x o на H-O ?
Да, более чем. Через C-h k <любая комбинация клавиш> узнавай, что там было забинденно. Либо смотри список в C-h b. C-h f - поиск функций, C-h v - переменных. Пример глобал сет кея я уже дал, там перепиши хоткей и готово. Для перебинда с C-x o: (global-set-key (kbd "H-o") 'other-window)
> Понятно, что от контрола не уйдёшь, но для емакса было бы прекрасно уместить всё часто используемое на альты, а комбинации с Ctrl и правой частью клавиатуры сократить до минимума, используемого как можно реже.Да, на альты а не на меты, потому что некоторые комбинации с меты хрен сдвинешь, и я подумывал о том, чтобы повесить туда гиперы и попробовать работать на них.
Я не фанат перебинда дефолтных клавиш. И я фанат соблюдения клавишной логики, а не соблюдения клавишного удобства. Лучше найти нужную кнопку на ожидаемом месте через три месяца, чем забыть удобный кат через неделю.
> вглядываться в эту кашу из имён и искать свой
ido, набирать пару букв и получать свой буффер.
> меню кастомизатора
Хвала Б-гам он у меня не работал в 22.ххх на виндоусе, когда я только начинал кастомайзить. С тех пор не открывал ниразу.
>> No.23501 Reply
>>23497
> Разве не Python?
Не писал на нём. Да и разве не от IDE/редактора это зависит?
> Пример, где ломает. Тоже так пишу, например.
Ох ты ж, ну смотри, если сейчас оно заработает… Кстати, как его включить?
У меня щас стоит вот это
 '(indent-tabs-mode t)
 '(tab-always-indent (quote complete))
 '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 58)))
И ещё закомментировано это
;; tabs
;;(setq-default indent-tabs-mode nil)
;;(setq-default tab-width 4)
;;(setq indent-tabs-mode nil)
;;(setq tab-width 4)
> Но я делаю антабифай/индент всего, что движется.
По рукам не бьют? Хорошо, когда файлы редактируешь ты один.
> http://www.emacswiki.org/emacs/download/sticky-windows.el
Хм, а ido вроде не так уж и плох… Я не понимаю, как это использовать. Как указать ей окно списка буферов? Что-то вроде
(require 'sticky-window-keep-window-visible "*Buffer List*") ? А как ему сказать, чтобы он по-умолчанию выводил в колонку только имена файлов, а путь к файлу выводил невзрачным цветом где-нибудь на последней строке? И чтобы это работало вместе с ido и работал быпоиск по букве s, а то в ido начинаешь вводить и он находит буфер, а вот на S он в Buffer List меняет какой-то атрибут у файла. Как написать ему правило быть всегда слева во всю высоту экрана и шириной N символов/пикселей?
Кстати, вставил значит ту функцию, которая должна буферы со звёздами прятать, создал шорткат
(global-set-key (kbd "C-8") 'close-annoying-windows) но оно похоже не работает. Ни когда просто в окне, ни когда уже в самом минибуфере.
> Вот скрипт для того, чтобы при выделении киллить выделение, а иначе слово перек прицелом.
Амм, спасибо, но это мне ж всё равно на емаксовый хоткей значит вешать? Хотя так оно даже удобней наверно. Если сидеть в одном емаксе.
> C-f C-b нажимаются левой рукой(lctrl мизинцем, f/b указательным или средним).
Хм. Это удобно. А как же n/p?
> Проблемы могут быть только если постоянно использовать мышку.
Н-да? А ну-ка попробуй оставить указательный палец на j, и нажать C-].
> Даже последняя?
Да, в том числе. Это в 2,5 раза больше клавиш, чем я привык жать.
> Аргументы - это удобно. Обычно ты пользуешься без них, но если что-то нужно похожее, но по-другому, набиваешь аргумент.
Я просил две клавиши, чтобы переключать буферы по часовой и против. Мне не нужно +2 +3 или -5, я не собираюсь держать более трёх открытыми одновременно.
Алсо, как сделать, чтоб как в awesome, можно было не просто переключать, а менять буферы местами?
> И я фанат соблюдения клавишной логики, а не соблюдения клавишного удобства.
На чём тогда такая логика основана? У меня пока складывается впечатление, что на «p=previous, значит C-p будет „на предыдущую строку“. М, а куда бы повесить highlight-parentheses, send-my-paste и post-my-query-on-curl? Надо больше клавиш модификаторов. Ой, модификаторы закончились, надо ввести комбинацию клавиш, исполняющую роль модификатора C-x p теперь будет искать скобочки…» Это очень избыточная логика. В сраном ворде огромное сонмище команд, но комбинации там короче. На поверхности должно быть то, что используется чаще всего. А то из этого, что используется постоянно должно быть распихано так, чтобы не отрывать пальцы от предназначенных для них мест.
> забыть удобный кат через неделю.
Невозможно, потому что если он удобный, ты его запомнишь. И пальцы твои запомнят. А иначе грош цена такому удобству.
> ido, набирать пару букв и получать свой буффер.
Ido прелесть, да, но иногда мне лениво хочется тупо прокрутить курсор вверх-вниз, сказать «О!» и нажать энтер. Поиск по имени весьма и весьма удобная штука, но иногда в голове остаётся слишком мало места для того, чтобы помнить имена той тучи файлов, которую приходится иногда редактировать. Особенно если это какая-нибудь библиотека, в которую я перидически лажу, но каждый раз в разные файлы.


Ещё у кого-то выкопал такую функцию для поиска парной скобки
(defun my-match-paren (arg)
  (interactive "p")
  (cond ((looking-at "\\s\(")
  (forward-list 1) (backward-char 1))
  ((looking-at "\\s\)")
  (forward-char 1) (backward-list 1))
  (t (self-insert-command (or arg1)))))
(global-unset-key (kbd "C-p"))
(global-set-key (kbd "C-p") 'my-match-paren)
Но мне не хватает тут обыкновеной подветки скобок, её можно сюда добавить? Алсо, дефолтная емаксовая подсветка глупая — если парная скобка находится где-то дальше по течению в невидимой зоне экрана, подсветка бесполезна. Алсо, можно как-то подсвечивать непарные скобки автоматом?
>> No.23519 Reply
>>23501
> если парная скобка находится где-то дальше по течению в невидимой зоне экрана, подсветка бесполезна
(require 'paren)
(set-face-attribute 'show-paren-match-face nil :background "gray6")
(show-paren-mode t)
(setq show-paren-style 'expression show-paren-delay 0)

Еще есть такая штука, но кое-когда я долго-долго искал причину одного бага, и нашел, что эта причина в этом пакете. Тогда, давно, я отправил багрепор и снес нахуй. Сейчас попробовал повторить баг, но, кажется, его нет. Суть бага заключалась во внезапном перемещении курсора в центр экрана.
http://www.emacswiki.org/emacs/HighlightParentheses
(require 'highlight-parentheses)
(define-globalized-minor-mode global-highlight-parentheses-mode
   highlight-parentheses-mode
   (lambda ()
(highlight-parentheses-mode t)))
(global-highlight-parentheses-mode t)
(setq hl-paren-background-colors '("gray20"))
(setq hl-paren-colors '("white" "red" "blue" "red3" "blue3" "red4" "blue4" "DarkOrchid1" "DarkOrchid2" "DarkOrchid3" "DarkOrchid4" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50" "gray50"))
(hl-paren-color-update)
> Невозможно, потому что если он удобный, ты его запомнишь.
Если он удобный, он в C, M плоскости, которую я помню и считаю удобной.
> Надо больше клавиш модификаторов. Ой, модификаторы закончились, надо ввести комбинацию клавиш, исполняющую роль модификатора C-x p теперь будет искать скобочки…» Это очень избыточная логика.
Вот нихрена ж не избыточная. Более нужные помещаются в C, М. Важные в C-M, интересные, но редко используемые в C-x (C-), комманды текущего major-mode в C-c. Всякие очень непонятные комманды в двойной префикс, вдруг кому-нибудь пригодится. Либо вообще не биндятся. В биндах находятся достаточно общие, но тем не менее редкие комманды. Вот только попробуй заявить, что C-z или M-= вообще не нужны.
> В сраном ворде огромное сонмище команд, но комбинации там короче.
Потому я даже не знаю комманд расположения текста в станом ворде.
> Я просил две клавиши, чтобы переключать буферы по часовой и против.
Так возьми и настрой. Или ты считаешь, что твои предпочтения актуальны для каждого? Я когда-то настроил на ф7, С-ф7, а потом перестал пользоваться, потому что ебанных 3-4 буффера можно и C-x o попереключать.
> Алсо, как сделать, чтоб как в awesome, можно было не просто переключать, а менять буферы местами?
Спиздил у кого-то, предположительно на вики.
(defun rotate-windows ()
   (interactive)
   (let ((this-buffer (buffer-name)))
(other-window -1)
(let ((that-buffer (buffer-name)))
  (switch-to-buffer this-buffer)
  (other-window 1)
  (switch-to-buffer that-buffer)
  (other-window -1))))
> нажать C-].
> > C-] runs the command abort-recursive-edit
Каждый день выхожу из рекурсив-едита абортом. Нет, серьезно, ты хоть где-нибудь видел рекурсив едит, и такой, из которого тебе бы хотелось выйти не С-М-с, а абортом?
> оставить указательный палец на j, и нажать C-].
Но вообще могу. Большим на контрл, мизинцем туда. Но зачем?
> А как же n/p?
Если одной правой, то контрл большим пальцем. Иначе лконтрл+N указательным; P безымянным.
> Амм, спасибо, но это мне ж всё равно на емаксовый хоткей значит вешать?
(global-set-key "\C-w" 'kill-region-or-word)
> ido
Конфигурации(там реквайры на пакеты, которые есть на емаксовики):
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(setq ido-use-filename-at-point nil)
;; disable auto searching for files unless called explicitly
(setq ido-auto-merge-delay-time 99999)
(ido-mode 1)
(require 'ido-preview)
(require 'kill-ring-ido)
(global-set-key (kbd "M-y") 'kill-ring-ido)
(add-hook 'ido-setup-hook
   (lambda()
(define-key ido-completion-map (kbd "M-a") (lookup-key ido-completion-map (kbd "C-a")))
(define-key ido-completion-map (kbd "M-e") (lookup-key ido-completion-map (kbd "C-e")))
(define-key ido-completion-map (kbd "C-a") 'move-beginning-of-line)
(define-key ido-completion-map (kbd "C-e") 'move-end-of-line)
(define-key ido-completion-map (kbd "C-M-p") (lookup-key ido-completion-map (kbd "C-p")))
(define-key ido-completion-map (kbd "C-M-n") (lookup-key ido-completion-map (kbd "C-n"))) ;; currently, this makes nothing. Maybe they'll make C-n key lately.
(define-key ido-completion-map (kbd "C-p") 'ido-preview-backward)
(define-key ido-completion-map (kbd "C-n") 'ido-preview-forward)))
Использование:
Например, C-x b жмем. Будет список буфферов в ido. В отличии от дефолта, табать постоянно не надо, любая нажатая буква сразу сужает круг подозреваемых. C-s C-r - вперед/назад.
Идо-превью - удобная штука, чтобы смотреть что-то в идо в буффере перед тем, как открыть.
Kill-ring-ido - для выбора вставки с помощью ido, стоит на M-y. Дефолтное M-y не перекрывает.
(require 'smex)
(smex-initialize)
(global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
Для M-x с ido.
> (global-set-key (kbd "C-8") 'close-annoying-windows)
Нирикамендую. С-Цифра для аргументов же.
Оно не закрывает текущее окно. Это сделано специально, я считаю текущее окно таким, что оно читается.
> А как ему сказать, чтобы он по-умолчанию выводил в колонку только имена файлов, а путь к файлу выводил невзрачным цветом где-нибудь на последней строке?
Так сначала же имена буфферов, а колонка с путем только в самом конце же.
> (require 'sticky-window-keep-window-visible "Buffer List")
Реквайр - это интерпретация содержимого файла, который заканчивается таким-же provide, и лежит в месте, указанном в `load-path'. То есть, запрос подключить либу.
(require 'sticky-windows)
(global-set-key [(control x) (?0)] 'sticky-window-delete-window)
(global-set-key [(control x) (?1)] 'sticky-window-delete-other-windows)
(global-set-key [(control x) (?9)] 'sticky-window-keep-window-visible)
Чтобы колонка появилась сама тебе нужно гораздо больше геморроя. Сейчас ты можешь просто будучи на списке буфферов взять и нажать C-x 9, и тогда его не будет закрывать С-х 1, С-х 0.
Какого именно геморроя?
http://emacswiki.org/emacs/CategoryWindows#toc4
Я скажу, что я когда-то пробовал варианты(нет, не все, которые тут есть), но на то время не было такой штуки, которая могла бы сохранить конфигурацию окон и восстановить, ничего не накосячив. Дело в том, что обьекты окон нельзя представить стрингом и потом обратно собрать в следующей сессии. Хотя как-то вроде сохраняют переменные, но мне этого не понять.
>>23501
У меня щас стоит вот это
   '(indent-tabs-mode t)
   '(tab-always-indent (quote complete))
   '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 58)))
Да ты наркоман какой-то.
'(+ 3 4) == (quote (+ 3 4))
Что значит quote? В лиспах код это данные. Если ты пишешь (+ 3 (* 2 2)), интерпретатор прочитает список, в котором элемент +, 3, (* 2 2). Есть такая функция, как '+, потому считаем аргументы, а потом передаем их в функцию. 3 считается в 3, так как цифры self-evaluated. (* 2 2) по такой-же логике считается в 4. Аргументы 3 и 4 передаются в +, получается 7.
Но если мы хотим не считать, а просто список из трех элементов? Тогда мы пишем (quote (+ 3 (* 2 2))), и нам вернется список из +, 2, (* 2 2).
Иначе говоря, сверху ты тупо понавозвращал списков из каких-то символов и списков, даже не запустив ни одной функции.
Какую функцию нужно запустить? Я быстренько прошелся по этим названиям C-h f (ставлю курсор после них, они становятся дефолт-выбором) и обнаружил, что они нихрена не функции. C-h v. Да, они аргументы.
Чтобы присвоить одному аргументу другой есть три разных комманды.
Самая простая - set.
(set 'x 2) ; тут мы пишем quote, чтобы получить symbol - х, а не значение икса.
(set 'x 'y)
(set x 4)
x
;; => y
y
;; => 4
Сет нужен редко. Обычно мы хотим всегда ставить квоут, и может принимать не 2 аргумента, а сколько нам захочется. Потому придумали сет-квоут.
(setq x 2 y 4)
Еще есть третья комманда, она находится в пакете 'cl. Там очень хитрый сет, который умеет делать так:
(setq x '(1 2 3 4))
(setf (nth 2 x) "tratata")
x
;; => (1 2 "tratata" 4)
Для конфигов хватает setq.
> Да и разве не от IDE/редактора это зависит?
enwiki://Python_(programming_language)#Indentation
У них поставил отступ - это новый блок.
>> No.23520 Reply
>>23519
И сразу же селффикс:
> Да, они аргументы.
Переменные. Аргумент - то, что принимает функция.
>> No.23527 Reply
>>23519
> Чтобы колонка появилась сама тебе нужно гораздо больше геморроя.
Хотя я не прав.
Можно поместить в конец .emacs файла
(defun make-sticky-buffer-list ()
   (when (= (length (window-list)) 1)
(list-buffers)
(delete-other-windows)
(split-window-right)
(enlarge-window-horizontally (round (/ (window-width) 1.5)))
(other-window 1)
(sticky-window-keep-window-visible 1)
(set-buffer (get-buffer "*Buffer List*"))
(other-window 1)))
(make-sticky-buffer-list)
И, да. Фикс стики-окон:
(defun sticky-window-keep-window-visible (ARG)
   "Insure the buffer associated with the current window stays visible.
This is handy for ERC buffers where you would like to see the
conversation while you work in other windows within the frame.
This is intended to be used with `sticky-window-delete-window'.
A prefix arg reverses this operation."
   (interactive "P")
   (cond
((and (integerp ARG) (< 0 ARG))
  (set-window-dedicated-p (selected-window) t))
((and (integerp ARG) (>= 0 ARG))
  (set-window-dedicated-p (selected-window) nil))
(ARG
  (set-window-dedicated-p (selected-window) t))
(t
  (set-window-dedicated-p (selected-window) (not (window-dedicated-p (selected-window))))))
   (window-dedicated-p (selected-window)))
>> No.23530 Reply
File: cf519e326ff4cb485...
Png, 204.91 KB, 1048×1000
edit Find source with google Find source with iqdb
cf519e326ff4cb485a1e2265d2daf4f6.png
File: sample_b0d0fab009...
Jpg, 367.75 KB, 850×1201
edit Find source with google Find source with iqdb
sample_b0d0fab009d36888daee38ee319e861f2a4ed136.jpg

>>23519
Какой километровый пост. Держи няшку.
> (require 'paren)
> (set-face-attribute 'show-paren-match-face nil :background "gray6")
> (show-paren-mode t)
> (setq show-paren-style 'expression show-paren-delay 0)
Мне вообще-то надо было лишь ставить курсор после закрывающей скобки (а не прям на неё), чтоб она подсвечивалась (см. пикрелейтеды). Или сделать так, чтоб емакс подсвечивал закрывающую скобку, когда курсор стоит на ней, а не после, как на открывающей. Непонятно, зачем они сделали подсветку скобок по-разному.
> http://www.emacswiki.org/emacs/HighlightParentheses
Не, очень понятная штука, если подумать, какие скобки оно должно подсвечивать, если курсор стоит на этой скобке ((((а)))) ? Парную к этой же или те скобки, в которых заключены эти?
> Если он удобный, он в C, M плоскости, которую я помню и считаю удобной.
А я, например, нет, десу.
> Более нужные помещаются в C, М. Важные в C-M, интересные, но редко используемые в C-x (C-), комманды текущего major-mode в C-c. Всякие очень непонятные комманды в двойной префикс, вдруг кому-нибудь пригодится.
То, что хоткеи распределены по назначению, не означает, что для конечного пользователя они не избыточны. Я не пользуюсь всем многообразием команд при редактировании одного любого файла. Число команд, которыми я предпочту пользоваться более-менее часто, легко уместилось бы в одной плоскости, как умещается в других редакторах.
> Вот только попробуй заявить, что C-z или M-= вообще не нужны.
Вот только попробуй заявить, что C-x C-s быстрее Ctrl+s (где угодно) Ctrl+o (nano) или :w (vi). Нет, емакс ещё и выдаст свой минибуфер на семь ответов, два раза попросит набрать y-e-s и только потом выйдет, вместо того, чтоб выдать путь к файлу в редактируемом виде и двумя кнопками «нет» и «отмена».
> (defun rotate-windows ()
М, работает!
> Каждый день выхожу из рекурсив-едита абортом.
При чём он тут? Я, например, повесил туда предыдущую функцию.
> Но вообще могу. Большим на контрл, мизинцем туда. Но зачем?
Та-ак, а теперь попробуй быстро напечатать «мама мыла раму», нажимая подобным образом C-] после каждого слова. Неудобно? Поэтому правый контрол и непригоден для частонабираемых комбинаций. Каб можно было поменять его с энтером…
> Если одной правой, то контрл большим пальцем.
Твоё запястье тебя проклянёт.
> Потому я даже не знаю комманд расположения текста в станом ворде.
Щито?
> Так возьми и настрой.
Кстати, как ей сказать, чтоб оно делало это наоборот?
> Использование:
О-о-о! Осталось только убрать хренки со звёздочками. Алсо, я в кастомайере не могу найти ido-mode, чтобы включить его перманентно.
> Нирикамендую. С-Цифра для аргументов же.
Я всё слышу про эти аргументы, но из мана помню только итератор по C-i.
> Это сделано специально, я считаю текущее окно таким, что оно читается.
А откуда тогда вызывать close-annoying-windows? Где ему вообще место?
> Реквайр - это интерпретация содержимого файла, который заканчивается таким-же provide, и лежит в месте, указанном в `load-path'. То есть, запрос подключить либу.
Окей, а как просто вызвать уже объявленную функцию? Плохо жить без понимания лиспа, да.
> Чтобы колонка появилась сама тебе нужно гораздо больше геморроя.
Ладно, проехали.
> Что значит quote?
Ты у меня это спрашиваешь?
> and the following wall of incredible yiddish phrases
Какие плюсы, какие 2×2, ты о чём вообще?!
> У них поставил отступ - это новый блок.
Охты ж. Сколько наверно там ССЗБ на нём пишут. Вообще затея с отступами забавная, но какой ценой приходится расплачиваться на отказ от скобочек или замыкающей конструкции. Это ведь уже в простом блокноте не напишешь же, промахнуля с интентацией — и получил тележку эксепшнов от компилятора или чего он там выбрасывает.
>> No.23531 Reply
File: 1342983850.png
Png, 16.04 KB, 418×260
edit Find source with google Find source with iqdb
1342983850.png
File: 1342983812.png
Png, 17.87 KB, 464×279
edit Find source with google Find source with iqdb
1342983812.png

>>23530
> см. пикрелейтеды
Ох, вот же они.
>> No.23543 Reply
File: 1291858270027.jpg
Jpg, 58.69 KB, 526×430 - Click the image to expand
edit Find source with google Find source with iqdb
1291858270027.jpg
>>23530
> Непонятно, зачем они сделали подсветку скобок по-разному.
Не по разному. Считай, что метка всегда находится между букв. Тогда если метка графически перекрывает открывающую скобку - она перед ней. Но она должна быть за закрывающей.
> те скобки, в которых заключены эти?
Это. Внешние скобки.
> Вот только попробуй заявить, что C-x C-s быстрее Ctrl+s (где угодно)
Заявляю нагло и открыто, что быстрее. C-x C-s вообще ничего не спрашивает, даже пути для сохранения, а тупо сохраняет текущий файл. Может спросить только в иссключительных ситуациях, если файл еще кто-то редактирует.
C-x C-w задает вопросы, но ведь по делу.
> Нет, емакс ещё и выдаст свой минибуфер на семь ответов, два раза попросит набрать y-e-s и только потом выйдет, вместо того, чтоб выдать путь к файлу в редактируемом виде и двумя кнопками «нет» и «отмена».
Менюшки медленнее чем y-or-n-p', но быстрее, чем yes-or-no-p'. Имексодевы считают, что y-e-s они помещают только в местах, где оно действительно нужно(чтобы новички не стреляли в ногу). А имэксопользователи, которые научились править конфиги, сразу меняют это говнище.
(fset 'yes-or-no-p 'y-or-n-p)
Менюшки вообще хуже, потому что с минибуффера можно перейти на другие буфферы, а менюшки воруют фокус. Менюшки - то, что emacs отвергает.
> Я, например, повесил туда предыдущую функцию.
> нажимая подобным образом C-] после каждого слова. Неудобно? Поэтому правый контрол и непригоден для частонабираемых комбинаций.
Поэтому C-] не предназначен, няша.
> Каб можно было поменять его с энтером…
Кстати, это интересная идея. Ентер в имэксе есть на C-m. Попробую что-нибудь поискать на эту тему.
> Кстати, как ей сказать, чтоб оно делало это наоборот?
Уже писал же, там в лямбде вызываю с -1 аргументом.
> Я всё слышу про эти аргументы, но из мана помню только итератор по C-i.
Например, выделяешь текст.
C-4 C-x C-i сделает ровно 4 пробела отступа.
С-2 C-x C-i - джва. Ну ты понял.
C-x C-x перемещает тебя на mark, другой конец выделения(но это не совсем правда, марк живет даже без выделения).
C-u C-x C-x перемещает тебя на марк и выделяет текст.
Это так, навскидку. Аргументы юзаются куда больше.
> А откуда тогда вызывать close-annoying-windows?
Из окна, которое ты читаешь же. Если этого окна еще нет, то зачем закрывать остальные? Чем они мешают?
> Окей, а как просто вызвать уже объявленную функцию?
(<function> <arg1> <arg2> <arg3> ...)
Так работает весь лисп, без исключений. Всё происходит вызовами каких-то функций. setq', require'. Открой scratch и поиграйся. Алсо, мод для scratch в имэксе очень дурной(какой-то самый примитивный лисповский), рекомендую поменять:
(setq initial-major-mode 'emacs-lisp-mode) ;elisp mode for scratch
> Ты у меня это спрашиваешь?
> Какие плюсы, какие 2×2, ты о чём вообще?!
Это я тебе обьясняю суть quote. Не удивляйся, если не поймешь сразу. Это слово я первые месяцы кодинга на лиспе воспринимал, как магию.
>> No.23544 Reply
>>23530
> Алсо, я в кастомайере не могу найти ido-mode, чтобы включить его перманентно.
Тот код, который я дал, должен включать. Попробуй выполнить
(require 'ido)
Кстати. Выполнить. Это поставить указатель после закрывающей скобки и нажать C-x C-e. Или, будучи внутри, чтобы запустить самые внешние скобки - C-M-x.
>> No.23570 Reply
File: 1330967037384.jpg
Jpg, 572.88 KB, 900×1200 - Click the image to expand
edit Find source with google Find source with iqdb
1330967037384.jpg
>>23543
> Считай, что метка всегда находится между букв.
Okay. Но почему подсвечиваться может только скобка перед меткой?
> Менюшки медленнее чем y-or-n-p',
Я их и не упоминал.
> Имексодевы
Звучит как «блаженные матроны».
> (fset 'yes-or-no-p 'y-or-n-p)
Аняня!
> Менюшки - то, что emacs отвергает.
Угу, так отвергает, что тулбаром обзавёлся и возможностью включить гуёвые скролбары.
> Поэтому C-] не предназначен, няша.
Ты до сих пор не понял. Постановка мизинца или тем паче, большого пальца, сбивает положение всей правой ладони относительно той позиции над клавиатурой, в которой удобно набирать текст.
> Кстати, это интересная идея. Ентер в имэксе есть на C-m. Попробую что-нибудь поискать на эту тему.
Поищи-поищи. Если что найдёшь — напиши.
> Из окна, которое ты читаешь же.
То, есть, если я нахожусь в GNU Emacs я вызываю 'close-annoying-windows? Чем это лучше обычного 'kill-buffer? Попробовал. Оно ничего не сделало, но написало, что я могу вызвать эту функцию через C-`.
> Если этого окна еще нет
Емакс их при старте создаёт штуки три >_>
> Так работает весь лисп, без исключений.
Ммкей…
> Открой scratch и поиграйся.
Э-это я только начал.
> (setq initial-major-mode 'emacs-lisp-mode) ;elisp mode for scratch
Поменял. Нашёл ещё удобную штуку, которая выполняет eval на весь буфер. Только потом вставляет комментарий типа этого
Было:
(fci-mode) Стало:
(fci-mode) ; ⇒ t Сам код:
(define-key emacs-lisp-mode-map (kbd "C-c C-e") 
  (lambda () 
    (interactive)
    (let ((result (eval (read (buffer-substring 
                               (point-at-bol) (point-at-eol)))))) 
      (goto-char (point-at-eol)) 
      (insert (format " ; ⇒ %s" result)))))
По идее оно в комментарий должно выводить результат выполнения строки или типа того? Что значит t?
> Это я тебе обьясняю суть quote.
Я ценю твой благородный порыв, но так как я нихуя не могу понять лучше заархиируй его на потом.

Алсо, я впервые как засел за освоение емакса, наконец почувствовал, что могу управлять им, как обычным текстовым редактором. В смысле, с той же лёгкостью… или около того. Заодно вот вам ещё пачечка вопросов.
  • Save as… оно же 'write-file по умолчанию висит на C-x C-w. Хотелось бы повесить её на C-S, но С- комбинации нечувствительны к регистру. Как быть?
  • В этот самый 'write-file можно как-то дописать, чтоб по умолчанию подставлялось имя текущего буфера? Я часто хочу сохранять черновики типа lalala1, lalala2 etc. 'write-file иногда сам(!) предлагает сохранить в бекапный вариант, что приводит к появлению shortcuts.el, shortcuts.el~ shortcuts.el~~, shortcuts.el~~~ и т. д. Я так однажды рискую проспать все полимеры.
  • Кажется, что-то поломалось, и теперь емакс ругается на русские буквы с Метой. М-л etc.
  • Как повесить хук на 'kill-buffer, что если текущий был открыт вторым (или последним), то перейти в другое окно и перейти в режим единого окна?
>> No.23650 Reply
File: 553d36fe05aa74ca6951a705953e0841.jpg
Jpg, 324.09 KB, 700×700 - Click the image to expand
edit Find source with google Find source with iqdb
553d36fe05aa74ca6951a705953e0841.jpg
>>2357
> но С- комбинации нечувствительны к регистру
(global-set-key (kbd "C-S-s") (lookup-key (current-global-map) (kbd "C-x C-w")))
> Кажется, что-то поломалось, и теперь емакс ругается на русские буквы с Метой. М-л etc.
Это одна из проблем имэкса. Он работает адекватно только с английской расскладкой и переключением через C-\ и М-х set-input-method, системные расскладки игнорируя.
> предлагает сохранить в бекапный вариант
`ido-ignore-files'. Синтаксис там какой-то странный, правда.
> Как повесить хук на 'kill-buffer, что если текущий был открыт вторым (или последним), то перейти в другое окно и перейти в режим единого окна?
Звучит злобно, и я нихуя не понял. Но (add-hook 'kill-buffer-hook (lambda() <TODO> )), или вместо лямбды функция.
Убедись, что ты хочешь делать это именно хуком, а не `defadvice' или вообще новой функцией.
> Что значит t?
В lisp nil == false, а все остальное - true. t - это универсальное обозначение для true.
> которая выполняет eval на весь буфер
> > (buffer-substring (point-at-bol) (point-at-eol))
Не умел бы читать лисп - поверил бы.
M-x eval-buffer
> Емакс их при старте создаёт штуки три >_>
(setq inhibit-startup-message t)
(setq initial-scratch-message nil)
> Угу, так отвергает, что тулбаром обзавёлся и возможностью включить гуёвые скролбары.
(scroll-bar-mode -1)
(menu-bar-mode 0)
(tool-bar-mode 0)
> Чем это лучше обычного 'kill-buffer
Еще раз. Комманда закрывает все буфферы, в которых есть звездочка первым символом, кроме текущего. То есть, обычно всякие ненужные буфферы имеют эту звездочку, а нужные - не имеют. Потому это более мягко, чем C-x 1.
> Если что найдёшь — напиши.
Нашел, что это OS-задача. Пичаль.
Можно повесить на кнопку добавлять модификатор(Не ctrl+x, а ctrl x), но это очень не удобно.
Оправдываются тем, что это не будет поддерживаться в консольке. Хотя очевидно же, что могли бы гуи-онли сделать, но в имэксе полно вещей, поддержки которых хотелось бы, а нету.
> Okay. Но почему подсвечиваться может только скобка перед меткой?
Не понимать.
<подсвечиваем через show-paren-mode>(<подсвечиваем через highlight-parentheses>...highlight-parentheses)<подсвечиваем через show-paren-mode>
>> No.23743 Reply
File: 1342546697640.jpg
Jpg, 33.07 KB, 317×372 - Click the image to expand
edit Find source with google Find source with iqdb
1342546697640.jpg
>>23531
Как в СТ2 вернуть меню? Отключил его и теперь не могу найти как вернуть.
>> No.23886 Reply
Вы не делали какой-нибудь байндинг, чтобы при убивании буфера он копировался также в системный буфер обмена, а не только во внутренний для Emacs?
Или может лучше сделать, чтобы при одной комбинации клавиш вызывались сразу две этих команды?
Вообще нужно это или дурной тон?
>> No.23900 Reply
>>23743
ладно. всем спасибо, Сам нашел. Альтом он включается.
>> No.23925 Reply
>>23886
> Вы не делали какой-нибудь байндинг, чтобы при убивании буфера он копировался также в системный буфер обмена
(setq mouse-drag-copy-region nil) ; stops selection with a mouse being immediately injected to the kill ring
(setq x-select-enable-clipboard t)
(setq x-select-enable-primary t)
(setq save-interprogram-paste-before-kill t)
Можно сделать так, что только ctrl/shitt/alt-insert работают с клипбордом, но сделать их полностью независимыми все-равно не получается(так как клипборд - это только одна запись, то она либо просто перезаписуется поверх, и не кладется в kill-ring, либо кладется в килл-ринг, куда пастит и C-w; отдельного клипборд-килл-ринга нету), потому не вижу смысла.
>> No.23992 Reply
Emacs+etags
В каталоге с нашими файлами выполняем
find . -name '*.c' -exec etags -a {} \;
Это по идее создаст тот самый файлик TAGS с перечислениями. После этого в емаксе переходим в этот каталог и делаем
M-x visit-tags-table
По идее тэги подключились и имена стало можно добивать по C-/ или C-<tab> ЕМНИП. etags хорошо понимает только С-подобные конструкции функций, классов и прочее, поэтому если синтаксис вашего языка не произошёл от синтаксиса С и/или не может быть приведён к оному, вам суждено страдать. Также etags никоим образом не в курсе про классы, функции и прочая, объвленные вне каталога, в котором вы запускали etags. То есть, если вы используете какие-то библиотеки, они должны все находиться внутри каталога, где вы пишете сам код и где запускаете etags. Нет, etags не умеет работать с $PATH.
>> No.24007 Reply
>>23992
> etags хорошо понимает только С-подобные конструкции функций, классов и прочее
Но там же есть опция --language!
И в хелпе написано, что поддерживается около 30 языков (список смотрите в etags --help).
>> No.24008 Reply
>>23992
Пока не пробовал вышеописанное, но есть еще M-.
>> No.24009 Reply
Хм, вроде неплохо выглядит, но удивляет отсутствие адекватного авто-апдейтера тагов.
>> No.24010 Reply
>>24009
Да, неплохо бы заиметь какую-нибудь функцию, которая выполнялась бы, например, при сохранении файла и обновляла таблицу тегов. Кто-нибудь знает, есть что-то подобное?
>> No.24015 Reply
File: shiori_skulls.jpg
Jpg, 116.80 KB, 1207×1000 - Click the image to expand
edit Find source with google Find source with iqdb
shiori_skulls.jpg
>>24010
Я уже делал поиск.
http://stackoverflow.com/questions/548414/how-to-programmatically-crea[...]emacs
http://www.emacswiki.org/emacs/BuildTags
Все решения - говно. Или я что-то не заметил? Ткните носом.
https://github.com/mattkeller/etags-update вроде близко, но perl, который этот няша запускает некросплатформенным шебангом - это не комильфо.

Проблема в том, что etags не делает -u(update). И ctags почему-то тоже дает ошибки при -u(но я на шиндоус).
Append тупо добавляет в конец файла. Если у нас был файл yoba.c и в нем две функции, сделали "etags yoba.c", будет TAGS файл с названием файла и двумя функциями. Удалим одну функцию. "etags -a yoba.c", будет TAGS файл с двумя файлами "йоба.ц", в одном две функции, в другом - одна.
Есть неправильный вариант решения - брать и генерить через вайлдкард без аппенда. Но если кто-то потратил полчаса на создания таг-файла с разными файлами, а тут эта зараза разьебет его в момент - это будет просто шикарно.
TAGS-синтаксис же стандартизирован? Можно же блджад сносить нахуй полностью весь раздел про файл, и делать "etags -a %file". Я так понимаю, етагс сам понимает, с какого типа языком он имеет дело.
Вот коммон лисповский(ccl) экзешник, например:
win7-sethc-exploit.exe,173
function first 35079,14216335
function indicated 35081,14216470
function redefinition.redefinition36193,14420914
Entry point 48600,16712631
Entry point 48609,16714706
Вообщем, может скоро напишу что-то удобное. Ведь я серьезно не вижу причины таскать за собой тяжелый cedet, если тут такое легкое и красивое решение прям под рукой.
>> No.24047 Reply
File: emprog5.jpg
Jpg, 355.41 KB, 769×1100 - Click the image to expand
edit Find source with google Find source with iqdb
emprog5.jpg
http://paste.lisp.org/display/130871
Вот етагс-апдейтер, как обещал. Тестируйте.

Если понравится, создайте страницу
http://www.emacswiki.org/emacs/etags-u.el
И добавьте сюда http://www.emacswiki.org/emacs/BuildTags

Мой текущий провайдер там забанен, а так как я все-равно скоро перейду на своего старого и стабильного провайдера, что-то делать для разбана мне лень.
>> No.24057 Reply
>>24047
Ничего, что лицензия злая? С такой на emacswiki пустят?
>> No.24063 Reply
File: 9шш9шл9л.jpeg
Jpeg, 68.38 KB, 450×600 - Click the image to expand
edit Find source with google Find source with iqdb
9шш9шл9л.jpeg
>>24057
Она принята FSF, а емакс-плагины - это не то, что обычно делают проприетарным. Потому сойдет, ящитаю.
>> No.24066 Reply
>>24063
Да там просто матюки в лицензии, лол.
> Она принята FSF
Тогда действительно нет проблем.
>> No.24080 Reply
>>24066
> Да там просто матюки в лицензии, лол.
WTFYW что ли?
>> No.24081 Reply
>>24080
> > Can’t you change the wording? It’s inappropriate / childish / not corporate-compliant.
> What the fuck is not clear in “DO WHAT THE FUCK YOU WANT TO”? If you do not like the license terms, just relicense the work under another license.
>> No.24082 Reply
>>24081
Что, не приняли что ли? Вот это да!
>> No.24083 Reply
>>24082
Это цитата из фака к wtfpl.
>> No.24342 Reply
Использовать dired как основной файловый менеджер — изврат?
>> No.24343 Reply
>>24342
> файловый менеджер
Сидел на линуксе без него, брат жив.
>> No.24391 Reply
>>24342
cd
@
ls
>> No.24395 Reply
File: 47_20080530154657.jpg
Jpg, 30.62 KB, 434×582 - Click the image to expand
edit Find source with google Find source with iqdb
47_20080530154657.jpg
>>24391
Таки да. Умелое использование du, ls(запилить алиасы под сортировку по сайзу, типу, группировку папок), cd, mv, cp куда быстрее, чем файловые менеджеры. Не хватает только превью пикч, но для этого есть gThumb, например.
Дайред полезен, впрочем. Над дайредом работают макросы, поиски названий регекспом, поиски по тексту регекспом в выделеных файлах, замены по тексту в выделеных файлах. Можно скрывать выделение(k), можно скрывать всё кроме выделения, инверсия(t) скрытие выделения(k). Можно заменить параметры к ls (C-u s). К примеру, добавить -R, чтобы применять поиски/замены на всех-всех файлах в папках. Можно добавлять только одну из папок (как при ls -R) прям в тот-же буффер, M-x dired-insert-subdir. Можно для выделеных файлов:
(eval-after-load "dired"
   '(progn
 (define-key dired-mode-map (kbd "C-<return>") 'dired-insert-marked-subdirs)
 (define-key dired-mode-map (kbd "S-<return>") 'dired-insert-marked-subdirs)
 (defun dired-insert-marked-subdirs (&optional arg)
   "Open each of the marked files, or the file under the point, or when prefix arg, the next N files "
   (interactive "P")
   (let ((fn-list (dired-get-marked-files nil arg 'file-directory-p)))
     (save-excursion (mapc 'dired-insert-subdir fn-list))))))
Алсо, адекватные опции сортировки для ls в dired.
http://paste.lisp.org/display/131086
>> No.24414 Reply
>>24395
> gThumb
Ужасно неудобно. Собственно, да, это почти что единственная причина, по которой я пользуюсь файловым менеджером (Thunar). Ещё иногда пользуюсь файловым менеджером в виме - удобно по деревьям ходить. Вообще, если б был Thunar со встроенной консолью и более гибкими конфигами (в каком-нибудь .thunarrc) я был бы полностью доволен. Свой менеджер всё не решаюсь запилить.
>> No.24415 Reply
>>24414
> Свой менеджер всё не решаюсь запилить
Thunar допили?

Превьюшки в dired есть ведь.
>> No.24421 Reply
>>24395
montage
@
display
>> No.24423 Reply
File: 521587-yuki_nagato_large.jpg
Jpg, 15.75 KB, 300×372 - Click the image to expand
edit Find source with google Find source with iqdb
521587-yuki_nagato_large.jpg
>>24395
> Умелое использование du, ls(запилить алиасы под сортировку по сайзу, типу, группировку папок), cd, mv, cp
К ls проще запоминать ключи по мере надобности. Алиасы непереносимы, а помнить кучу алиасов или кучу ключей одинаково много, если не больше.
> cd, mv, cp
Какие тут блин алиасы, ёпрст? cd ..? Не нужно. К cp разве что -Ra дописать, и заменить на обычный cp. Какие алиасы к mv можно сделать и зачем — я даже ума не приложу. Алсо, где мои pushd и popd?
>> No.24424 Reply
>>24423
> непереносимы
git add, push, commit
@
git clone
>> No.24430 Reply
>>24423
> pushd и popd
Лайконул.
Раньше я под это писал отдельно скрипты.
> запоминать ключи по мере надобности
Речь ведь о использовании консольки дома как файлового менеджера. Всякие --group-directories(или как оно там?) проще алиасить, чтобы не писать постоянно.
> Какие тут блин алиасы, ёпрст?
Я ничего об этом и не говорил.

>>24415
image-dired? Мне он не понравился как-то(хотя глянул опять, может и зря). Для картинок пользуюсь ido-preview.
>> No.24432 Reply
File: 12642049321029760.jpg
Jpg, 149.84 KB, 600×600 - Click the image to expand
edit Find source with google Find source with iqdb
12642049321029760.jpg
>>24430
Теперь я понимаю, почему он мне тогда не понравился. http://www.everfall.com/paste/id.php?jwzyukprz7td
Без таких вещей оно неприменимо, ящитаю.
Кстати, я наконец поборол проблему горизонтального скроллинга картинок.
>> No.24433 Reply
File: 1234127318854.jpg
Jpg, 11.95 KB, 228×287 - Click the image to expand
edit Find source with google Find source with iqdb
1234127318854.jpg
>>24424
> git add, push, commit
Во-первых, git так не поймёт.
Во-вторых, git add требует указать что ты добавляешь, push идёт после commit, а commit требует -am "бла-бла-бла" как минимум.
В третьих, хотя я использую репозиторий для переноса всей нужной конфигурации внутри $HOME, а один сраный .shellnamerc может обойтись scp, если уж на то пошло.

>>24430
> Я ничего об этом и не говорил.
Действительно. Извини.
>> No.24434 Reply
>>24430
> Всякие --group-directories(или как оно там?) проще алиасить, чтобы не писать постоянно.
У меня например все каталоги синим выводятся. А ещё есть zsh.
>> No.24435 Reply
>>24432
Бампнул пасту, добавил чуть-чуть комментариев и значительно модифицировал структуру кода.

>>24434
> каталоги синим выводятся
Это хорошо, но не достаточно. Предпочитаю все-таки иметь алиас на sl с группировкой.
>> No.24436 Reply
File: nagato_yuki_preview.jpg
Jpg, 116.04 KB, 1000×667 - Click the image to expand
edit Find source with google Find source with iqdb
nagato_yuki_preview.jpg
>>24435
> Это хорошо, но не достаточно.
$ ls -la | grep -E "^d|$"
>> No.24437 Reply
File: ls.png
Png, 14.78 KB, 461×227 - Click the image to expand
edit Find source with google Find source with iqdb
ls.png
>>24434
У меня вот такой лс например
ls='ls --color=tty --time-style="+| %d.%m.%y %T |" --group-directories-first'
l='ls -la'
>> No.24438 Reply
>>24437
А для 777 прав расцветку покажи? :3
>> No.24439 Reply
>>24437
Хм, а разве это не в .bashrc настраивается, вот такая расцветка?
>> No.24441 Reply
File: ls777.png
Png, 23.88 KB, 610×280 - Click the image to expand
edit Find source with google Find source with iqdb
ls777.png
>>24439
Я не помню где у меня в oh-my-zsh настраиваются цвета.

>>24438
Пикрилейтид.
>> No.24445 Reply
File: 2012-08-21-104055...
Png, 76.09 KB, 1280×992
edit Find source with google Find source with iqdb
2012-08-21-104055_1280x992_scrot.png
File: 2012-08-21-105924...
Png, 5.72 KB, 572×340
edit Find source with google Find source with iqdb
2012-08-21-105924_572x340_scrot.png

Аноны, здесь есть кто-нибудь нормально настроивший virtualenv в емаксе? Мой емакс в упор не хочет видеть environment-рилейтед интерпретатор, Execute region запускает системный python, который у меня py3k, а надо py2. Пользуюсь https://github.com/aculich/virtualenv.el и собственно virtualenv и virtualenvwrapper. В .zshrc:
WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv2
source /usr/bin/virtualenvwrapper.sh
В README репозитория virtualenv.el есть два способа активировать энвайронмент, пользовался обоими, второй способ работал какое-то время, потом передумал.
ЧЯДНТ? Как люди вообще работают с питонскими окружениями в емаксе?
>> No.24457 Reply
>>24445
Я как не пользователь емакса тупо сорцую env/bin/activate
>> No.24465 Reply
>>24445
Тема нравится. Но у меня лучше.
>> No.24478 Reply
>>24465
Выкладывай!
>> No.24522 Reply
File: xatach_e84d9162e9.jpg
Jpg, 9.22 KB, 209×250 - Click the image to expand
edit Find source with google Find source with iqdb
xatach_e84d9162e9.jpg
>>24445
Не пользовался пайтоном, но прочитал сорц виртуаленва:
> (when virtualenv-workon-starts-python
> (cond ((fboundp 'python-shell-switch-to-shell)
> (python-shell-switch-to-shell))
> ((fboundp 'py-shell)
> (py-shell))
> ((fboundp 'python-shell)
> (python-shell))
> ((fboundp 'run-python)
> (run-python))
> (t (error "Could not start a python shell!"))))
Допустим, прочитаем, кто такой `run-python'. C-h f run-python RET.
> Python command line (default is `python-command').
Переходим по ссылке
> python-command is a variable defined in `python.el'.
> Its value is "python"
Эту штуку нужно написать в .emacs:
(setq python-command "my_favourite_python_command")
И не забыть, что python.el сам себя не подключит.
(require 'python)
(setq python-command "my_favourite_python_command")
Да, и тебе может порнавиться какой-нибудь из остальных видов шеллов(из кода выше). Но python.el есть по дефолту в emacs24, а это что-то, да значит.
Если ты не сможешь осилить смысл virtualenv(а я не знаю, что это такое), то M-x run-python RET.
>> No.24525 Reply
File: emacs.jpg
Jpg, 551.74 KB, 1680×1050
edit Find source with google Find source with iqdb
emacs.jpg
File: emacs-django-temp...
Png, 50.40 KB, 613×688
edit Find source with google Find source with iqdb
emacs-django-template.png
File: grebler.jpg
Jpg, 9.94 KB, 215×214
edit Find source with google Find source with iqdb
grebler.jpg

>>24478
charcoal-black. А вообще это была тупая шутка.
>> No.24542 Reply
>>24522
Спасибо! Аплодирую!
>> No.25310 Reply
File: 1347475959982.jpg
Jpg, 132.78 KB, 960×540 - Click the image to expand
edit Find source with google Find source with iqdb
1347475959982.jpg
>>25219
Думаю(5-минутка эмаксвикии), это делается как-то так:
(define-key evil-normal-state-map (kbd "C-n") 'next-line)
Но у меня нет evil, чтобы проверить, нет знания vim или желания ставить/учить. Насколько я знаю, у vim несколько мапов, между которыми переключаются. Потому evil-normal-state-map не единственный, поищи через C-h v ещё мапы.
>> No.25342 Reply
>>25310
<mimo-krokodil>
Откуда скрин?
</mimo-krokodil>
>> No.25343 Reply
>> No.25344 Reply
File: 1237772232268.jpg
Jpg, 110.94 KB, 750×354
Your censorship settings forbid this file.
unrated


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]