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 подписка на новые темы