>>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 У них поставил отступ - это новый блок.