LINUX.ORG.RU

Сообщения Zmicier

 

Firefox Quantum: как настраивать клавиши?

Здравствуй, ЛОР.

Поскольку тут, наконец, относительно починили Носкрипт для нового «квантового» Файрфокса, пришла пора его потыкать.

И первый и главнейший вопрос, ответ на который не находится сходу ответ — как тут теперь принято настраивать сочетания клавиш?

Конкретного примера ради — как отвязать C-w от закрытия окна? У меня в ГТК это забой слова, так что не вымораживать искоробочное поведение не может.

 , ,

Zmicier
()

Firefox Quantum на Андроиде: как сохранить страницу?

Здравствуй, ЛОР.

Как известно, в Мозилле свято уверены, что сохранять страницы локально на переносных устройствах не надо, и в интерфейсе ихнего обозревателя для Андроида такого пункта просто нет.

Для «доквантовых» Феньков было расширение на сотню строк сей пункт в меню добавляющее [0].

А теперь что?

[0] https://github.com/leibovic/savepage

 , , ,

Zmicier
()

Двунаправленный синхронизатор файлов, не перебивающий жесткие ссылки. Есть такой?

Добрых суток, ЛОР.

Есть ли готовые решения для обоюдонаправленной синхронизации каталогов, что не перетирали бы жестких ссылок? (Жесткая ссылка — это ссылка с имени файла на номер inode’а, если кто в танке.) Иначе говоря, не делали бы unlink(2)’ов кроме случаев, когда файл должен быть удален.

rsync(1) так умеет — --inplace, но он однонаправленный.

unison(1) же ультимативно удаляет файлы, мотивируя это требованием об атомарности операций над рабочим деревом: то есть содержимое сначала копируется под временное имя, затем рабочий файл удаляется и временный файл переименовывается.

Это дело хорошее, но меня бы вполне удовлетворил и рисковый подход с записью по месту. А еще лучше — какой-нибудь компромисс, типа создания резервной копии перед началом записи по месту.

Однако после непродолжительного поиска у меня сложилось впечатление, что пригодных к использованию синхронизаторов, кроме «Унисона», и вовсе нет? Это правда?

 , , ,

Zmicier
()

Git: имея актуальную копию хранилища, как экономно стянуть его форк?

Здравствуй, ЛОР.

Вот, допустим, наткнулся я на просторах Сети на такой репозиторий:

https://github.com/dkogan/emacs-snapshot

И сказано там, что «This branch is 113 commits ahead, 30 commits behind emacs-mirror:master».

emacs-mirror — это зеркало репозитория ГНУ Емакса на «Саванне». Весит оно, как я вижу по локальной копии, гигабайта полтора.

Я могу что-нибудь сделать, чтобы заполучить себе копию github.com/dkogan/emacs-snapshot, не стягивая с Гитхаба все полтора гигабайта?

Простейшее:

emacs$ git remote add --tags dkogan git://github.com/dkogan/emacs-snapshot
emacs$ git fetch dkogan

запускает загрузку по полной.

 ,

Zmicier
()

Настройка цветов для GTK3

Дорогой ЛОР, посоветуй, пожалуйста, тему для ГТК-3, что позволяла бы непринужденно выбрать цветовую палитру.

 , , ,

Zmicier
()

GNU Emacs: сборка на скорость. Как отключить компиляцию Лиспа?

Добрых суток, ЛОР.

Сборка ГНУ Емакса — процесс небыстрый, но при желании поиграться немного с сишной частью — очевидно, неизбежный. Большую часть времени при этом занимает компиляция кучи прилагающихся программ на Лиспе в байткод.

Как их можно не собирать? $ ./configure --help что-то ничего на этот счет не подсказывает. Среди целей сборки находится src$ make temacs, и это еще раньше, чем начало компиляции Лиспа, но результат вопреки предполопжениям еще не работоспособен:

$ ./temacs 
Loading loadup.el (source)...
Using load-path (/home/main/src/emacs/lisp)
Loading emacs-lisp/byte-run (source)...
Loading emacs-lisp/byte-run (source)...done
Loading emacs-lisp/backquote (source)...
Loading emacs-lisp/backquote (source)...done
Loading subr (source)...
Loading subr (source)...done
Loading version (source)...
Symbol's function definition is void: pcase

Как же правильно?

 , , ,

Zmicier
()

Почему /etc/hosts не учитывается при косвенном разрешении имени посредством CNAME?

Здравствуй, ЛОР.

Пусть есть имя узла, указывающее CNAME’ом на другое имя, которое указывает на адрес(а):

$ host irc.freenode.net
irc.freenode.net is an alias for chat.freenode.net.
chat.freenode.net has address 174.143.119.91
chat.freenode.net has address 91.217.189.42
<...>
$ getent hosts irc.freenode.net
185.30.166.38   chat.freenode.net irc.freenode.net
164.132.77.237  chat.freenode.net irc.freenode.net
<...>

Дописываю в /etc/hosts:

127.127.127.127	chat.freenode.net

Ожидаемо имею:

$ getent hosts chat.freenode.net
127.127.127.127 chat.freenode.net

Но вместе с тем я ожидал, что получив от сервера имен CNAME, NSS будет разрешать его так же через /etc/hosts, однако нет:

$ getent hosts irc.freenode.net
174.143.119.91  chat.freenode.net irc.freenode.net
185.30.166.38   chat.freenode.net irc.freenode.net
<...>

Основной вопрос — почему? В смысле, где это документировано?

Вместе с тем, я также был бы рад узнать, что можно сделать, чтоб было, как я сперва предположил.

 , ,

Zmicier
()

Firefox. Триггер (hook) на фокусировку окна.

Добрых суток, ЛОР.

Не подскажет ли кто навскидку, как в Айсвизеле / Файрфоксе привязать какое-либо действие к факту фокусировки окна? Того окна, что под управлением оконного диспетчера, а не об’екта window. То есть window.onfocus, но для иксового (или аналогичного) окна.

Специфичное для Пентадактиля решение тоже сойдет, но такого, кажется, нет.

 , ,

Zmicier
()

GNU Emacs: quale: символы старше Latin-1 на клавиатуре

Добрых суток, ЛОР.

Хочется мне, допустим, в английской раскладке иметь на клавишах сперва английские кавычки, а в русской — на тех же клавишах сперва русские. В Иксах тут никаких проблем нет. В Емаксе на первый взгляд тоже ничего сложного:

(quail-define-package
 "test" "Test" "XX" nil
 ""
 nil t t nil t nil nil nil nil nil t)

(quail-define-rules
 ("«" ?‘)
 ("»" ?’)
 ("‘" ?«)
 ("“" ?„)
 ("’" ?»)
 ("”" ?“))

(set-input-method 'test)

Однако если в направлении « все работает, то « — и не думает.

Документация по «Квэйлу» как-то скудновата, но из собственно quail.el, а именно из quail-simple-translation-keymap [0] становится понятно, что символы дальше 255-го по-умолчанию просто не обрабатываются, а из quail-define-package [1] улавливается, что их должно быть можно включить в обработку вот так:

(quail-define-package
 "test" "Test" "XX" nil
 ""
 '(("‘" . quail-self-insert-command)
   ("’" . quail-self-insert-command)
   ("“" . quail-self-insert-command)
   ("”" . quail-self-insert-command))
 t t nil t nil nil nil nil '() t)

После этого еще раз (quail-define-rules ...) и (set-input-method 'test) — и однако нифига.

Чего я не понимаю?

-- Приложения --

[0]

(defvar quail-simple-translation-keymap
  (let ((map (make-keymap))
	(i 0))
    (while (< i ?\ )
      (define-key map (char-to-string i) 'quail-other-command)
      (setq i (1+ i)))
    (while (< i 127)
      (define-key map (char-to-string i) 'quail-self-insert-command)
      (setq i (1+ i)))
    (setq i 128)
    (while (< i 256)
      (define-key map (vector i) 'quail-self-insert-command)
      (setq i (1+ i)))
    (define-key map "\177" 'quail-delete-last-char)
    (define-key map [delete] 'quail-delete-last-char)
    (define-key map [backspace] 'quail-delete-last-char)
    ;;(let ((meta-map (make-sparse-keymap)))
    ;;(define-key map (char-to-string meta-prefix-char) meta-map)
    ;;(define-key map [escape] meta-map))
    map))

[1]

(defun quail-define-package (name language title
				  &optional guidance docstring translation-keys
				  forget-last-selection deterministic
				  kbd-translate show-layout create-decode-map
				  maximum-shortest overlay-plist
				  update-translation-function
				  conversion-keys simple)
  (let (translation-keymap conversion-keymap)
    (if deterministic (setq forget-last-selection t))
    (if translation-keys
	(progn
	  (setq translation-keymap (copy-keymap
				    (if simple quail-simple-translation-keymap
				      quail-translation-keymap)))
	  (dolist (trans translation-keys)
	    (define-key translation-keymap (car trans) (cdr trans))))
      (setq translation-keymap
	    (if simple quail-simple-translation-keymap
	      quail-translation-keymap)))
    (when conversion-keys
      (setq conversion-keymap (copy-keymap quail-conversion-keymap))
      (dolist (conv conversion-keys)
	(define-key conversion-keymap (car conv) (cdr conv))))
    (quail-add-package
     (list name title (list nil) guidance (or docstring "")
	   translation-keymap
	   forget-last-selection deterministic kbd-translate show-layout
	   (if create-decode-map (list 'decode-map) nil)
	   maximum-shortest overlay-plist update-translation-function
	   conversion-keymap simple))

    ;; Update input-method-alist.
    (let ((slot (assoc name input-method-alist))
	  (val (list language 'quail-use-package title docstring)))
      (if slot (setcdr slot val)
	(setq input-method-alist (cons (cons name val) input-method-alist)))))

  (quail-select-package name))

 , , , ,

Zmicier
()

GNU Emacs: isearch-backward-kill-word или что-то типа того

Зело меня огорчает, что в ГНУ Емаксе, а точнее в интерактивном поиске (isearch’е) нет команды вида «стереть последнее слово» — DEL стирает последнюю букву в строке поиска, M-DEL же пролетает насквозь в буфер — дико бесит!

Наверное, ее можно навелосипедировать самому, но ведь наверняка кто-нибудь уже написал какой-нибудь isearch-backward-kill-word, а я просто как-то не так ищу, а потому не могу найти, верно?

 , ,

Zmicier
()

GNU Emacs: defadvice pop-to-buffer → pop-to-buffer-same-window

Где-то между 24.4.1-й версией ГНУ Емакса и последним слепком из гита, сопровождающему shell.el стукнуло в голову, что M-x shell должна открывать оболочку не в текущем окне, как это было ранее, а в новом.

Материально это выражается в том, что в районе 720-й строчки оного shell.el (pop-to-buffer-same-window buffer) заменили на (pop-to-buffer buffer).

Мне такая перемена совершенно не по душе, как мне вернуть старое поведение?

Понятно, что я могу просто взять функцию shell, скопировать ее целиком в ~/.emacs и поправить, как я захочу.

Однако, насколько мне позволяют понять мои более чем скромные знания Елиспа и умение гуглить, правильно здесь будет написать что-то такое:

(defadvice shell-same-window (around shell activate)
  (letf (((symbol-function 'pop-to-buffer)
          (lambda (buffer &rest args)
            (pop-to-buffer-same-window buffer))))
    ad-do-it))

Однако это просто и молча не работает, а если попытаться откинуть в диагностических целях адвайс:

(letf (((symbol-function 'pop-to-buffer)
          (lambda (buffer &rest args)
            (pop-to-buffer-same-window buffer))))
  (shell))

то я получаю ошибку, смысл которой от меня ускользает:

pop-to-buffer-same-window: Variable binding depth exceeds max-specpdl-size

Где я накосячил?

 , ,

Zmicier
()

A4Tech X7 G800 (клавиатура): дополнительные клавиши вообще работают?

Увидел тут случайно впервые клавиатуру A4Tech X7 G800, которая среди прочего с дополнительными клавишами для больших пальцев под пробелом [0], и подумал — опа, почему я это еще не попробовал.

Однако прежде чем идти покупать, пошел погуглил на предмет подлянок и нагуглил кучку вопросов на форумах [1][2][3][4] — жалоб на то, что дополнительные клавиши видятся Иксами строго как дубликаты отдельных основных (Home, End, точка, запятая и т. п.) и ни одного ответа с решением.

Тов. Ford_Focus (вы тут пару лет тому назад всем советовали эту клавиатуру), тт. artemka91, CYB3R, si0 (если я верно понял, у вас такая была), другие уважаемые лоровцы, это правда такая печаль?

[0] http://images.people.overclockers.ru/187266.jpg
[1] http://www.linuxquestions.org/questions/linux-general-1/is-it-possible-to-cha...
[2] http://ubuntuforums.org/showthread.php?t=1108340
[3] http://ubuntuforums.org/showthread.php?t=1108187
[4] https://stackoverflow.com/questions/18750818/detection-of-custom-keyboard-keys

 , , ,

Zmicier
()

GNU Emacs: номера строк в эмуляторе терминала

Второй новичковый вопрос по ГНУ Емаксу.

Разумеется, мне нужны номера строк по левую сторону от текста, и в графическом (GTK) интерфейсе это элементарно включается из коробки: (linum-mode).

Но в эмуляторе терминала оно выглядит неприемлемо:

1(defun hello ()
2  (message  "Hello, World!"))
3
4(hello)

То есть между номером и текстом нет пробела, каковой называется «fringe», и насколько я понял из документации, в псевдографике просто не реализован.

Можно задать (setq-default linum-format "%d "), и это само собой даст пробел, но побочным эффектом соб’ет единую для всего файла ширину номерной колонки, т. е. вместо ожидаемого:

  11 foo
...
1001 bar

получим:

11 foo
...
1001 bar

Не то, чтоб оно было сильно критично (в пределах одного экрана перекоса нет), но ведь это можно сделать нормально,я просто, наверное, не понял, как?

 , , ,

Zmicier
()

GNU Emacs: readlineish C-h, C-w, C-u everywhere

Здравствуй, ЛОР.

Я тут решил в новом году серьезно подойти к GNU Emacs’у, который раньше использовал эпизодически только там, где не тянул Vim (для Латеха, иногда для автоматической обработки файлов).

Итак, я временно отключил Evil, и у меня теперь будет куча новичковых вопросов, позволь их задать.

И первое — это привычные мне по emacs-like режимам в GNU Readline и в GTK клавиши C-h, C-w и C-u (стереть символ, слово, строку), какие в самом-то Емаксе и отсутствуют. А точнее означают совсем другое.

Я не буду спрашивать, на что мне переназначить справку, вставку и «универсальный аргумент» (справку, очевидно, ни на что не надо — <F1> и так уже есть, остальное подумаю). А спрошу как, собственно, правильно сделать переназначение.

Если я правильно понял, в разных режимах по ним должны вызываться разные функции. Так сейчас бэкспэйс в минибуфере или буфере с человеческим текстом значит delete-backward-char, но backward-delete-char-untabify буфере с кодом. И это я еще никакие дополнительные пакеты не подключал, а они ведь, если что, именно клавишу бэкспэйс переопределять будут, а не функцию, верно?

Справка подсказывает, что можно сделать низкоуровневое переназначение:

(define-key key-translation-map (kbd "C-h") (kbd "DEL"))
(define-key key-translation-map (kbd "C-w") (kbd "<C-backspace>"))
(define-key key-translation-map (kbd "C-u") (kbd "<C-S-backspace>"))

(К слову, откуда такая неконсистенстность: почему именно DEL, <backspace> нельзя, но <C-backspace>, C-DEL нельзя?)

Но это ведь значит, что какая-нибудь C-c C-w (где бы и что бы она ни значила) перестанет работать, так?

Как же правильно?

 , , ,

Zmicier
()

Нет пунктов «Suspend» и «Hibernate» в меню, хотя сами по себе ожидание и спячка работают.

Добрых суток уважаемым лоровцам.

Обновил я тут на своем ПК Дебиан ГНУ/Линукс Джесси, причем основательно — более двух тысяч пакетов, что накопились за полгода, т. е. почти все, что было установлено.

Первое, на что напоролся — из ка-дэ-ешного меню (а значит и из krunner’а) пропали пункты «Leave › Suspend» и «Leave › Hibernate», хотя сами функции, если приказать прямо: # pm-suspend и # pm-hibernate соответственно, прекрасно работают.

Подскажите, пожалуйста, где начинать копать?

 , , ,

Zmicier
()

Tiny Tiny RSS. Иконки лент в дереве лент. Нет их.

Добрых всем суток.

Согласно найденным на просторах Сети снимкам экрана [1], Tiny Tiny RSS должна показывать индивидуальные иконки лент в дереве лент, а также в списке новостей.

У меня же TT-RSS из дебиановского репозитория, версии 1.13+dfsg-1, их не показывает в дереве, но благополучно показывает в списке новостей [2]. В настройках на первый взгляд ничего такого нет. От браузера: Файрфокс или Хромиум не зависит.

В чем тут загвоздка?

[1]: http://tt-rss.org/images/1.9/1.jpg
[2]: http://imgur.com/FJsOjbh.png

 

Zmicier
()

Aptitude предлагает снести пол-системы.

Добрых суток, товарищи.

Когда в репозитории Дебиана относительно установленной системы накопилось порядочно обновлений (несколько сотен пакетов), но обновлять их все желания / возможности нет, но есть желание обновить частично, то нередко Aptitude показывает себя не сильно умным, предлагая для начала в порядке разрешения зависимостей снести пол-системы, хотя решение через обновление энного количества пакетов заведомо существует, и более того, несколько раз нажав ., можно заставить Аптитьюд его выдать, но чаще быстрее просто отключить решатель (# aptitude -o Aptitude::ProblemResolver::StepLimit=0) и разрешать сломанные зависимости вручную.

Собственно, а нельзя ли на пользовательском уровне научить Аптитьюд выдавать сразу нормальное решение? У него там настраивается куча весовых коэффициентов на этот счет, может быть кто уже подобрал нужные?

 , , , ,

Zmicier
()

В «KDE System Settings» отсутствует вкладка управления Nepomuk’ом

Добрых всем суток.

Я хорошо помню, что в ка-дэ-ешных «System Settings» было подменю (гугль говорит, что оно именовалося «Desktop Search»), относящееся к Непомуку. Теперь я его там не наблюдаю. Так и должно быть, или это у меня проблема и она решаема?

Debian GNU/Linux Jessie.

$ systemsettings --version
Qt: 4.8.6
KDE Development Platform: 4.13.1
System Settings: 4.11.9

 , ,

Zmicier
()

Авторизация в Hypercomments не работает в Iceweasel’е

Добрых суток, товарищи.

Debian GNU/Linux Jessie, Iceweasel 30.0-2. Не воспринимается авторизация в системе «Гиперкомментс», что используется, например, на http://lenta.ru, и еще много где. Последовательность действий: «Войти» → окошко выбора openid-провайдера → Гугль или Твиттер → успешная авторизация → ничего не поменялось, я по прежнему незалогинен.

Проверялось в том числе в «safe mode» ($ iceweasel -safe-mode). В яваскриптовую консоль никаких ошибок, вроде бы, не валится.

В Хромиуме и uzbl’е такой проблемы не наблюдаю.

Вопрос: это в порядке вещей?

 ,

Zmicier
()

Как подписаться на RSS-ленту, указанную в <link />?

Существует ли хоть одна приблуда под Андроид, умеющая извлекать адрес RSS/Atom-фида, указанный тэгом <link rel="alternate" /> в шапке HTML-страницы?

Иначе говоря, я не желаю выискивать прямую ссылку на RSS-фид в виде оранжевой кнопочки на странице, которой может не быть вовсе (например, на Стэковерфлоу и компании нет), чтоб скопировать ее в читалку. Но хотел бы как на настольном ПК — смотря в браузере на веб-страницу, парой нажатий подписаться на ассоциированную с ней ленту.

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

 , , , ,

Zmicier
()

RSS подписка на новые темы