LINUX.ORG.RU

Сообщения arte-at-marte

 

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

Форум — Development

Очень мне понравилась фраза: нет разницы, в какой ОС работать, если в конечном итоге грузишься в Emacs. Захотелось сделать нечто подобное, но возникла проблема: я использую раскладку клавиатуры, которая называется «дворак для программистов». Хочу, чтобы в Emacs, не зависимо от операционной системы и используемой в ней раскладки был именно дворак для программистов.

Например, хочу иметь возможность загрузиться в консоль линукса, запустить там Emacs и комфортной работы даже без прав суперпользователя (я не нашел способа сменить раскладку клавиатуры в консоли без прав суперпользователя, если кто знает - тоже подскажите). Аналогично с виндой, чтобы можно было воткнуть флешку, стартануть с нее Emacs и иметь возможность использовать свою раскладку без установки дополнительного софта.

Я даже не знаю в каком направлении копать. Нашел только input-method'ы и quail-define-rules, которые все, похоже, определяются таким образом, как будто везде установлена qwerty раскладка... Я не знаю как определить, какая в данный момент в ОС выбрана раскладка, не знаю как получить keycode символа или как заставить имакс вернуть символ с указанным keycode... В общем, мне будут полезны любые мысли и идеи...

 ,

arte-at-marte
()

Проблема с JFrame и тайловыми оконными менеджерами.

Форум — Development

Вот такая получается картина.

Как я вижу то, что происходит:

  1. создается окно и растягивается оконным менеджером на половину экрана;
  2. отображение в такое окно происходит по меньшей мере раз т.к. фон закрашивается зеленым;
  3. JFrame (а вместе с ним и JPanel и Canvas) урезается до размеров заданых для jFrame с помощью setMinimumSize или setPreferredSize. JFrame при этом не получает никаких сообщений. Приоритет отдается setPreferredSize. Само окно(ну, т.е. иксовое) при этом остается прежних размеров - проверил с помощью xwininfo;
  4. далее отображение происходит в урезаный jFrame. Это как раз изображение на картинке выше;
  5. если после этого изменить размеры окна вручную, то все становится норм.

Есть мысли как справиться с этим багом? Ну или хотя бы где поискать...

 , jframe,

arte-at-marte
()

Как подключить jar'ы к проекту leiningen?

Форум — Development

Есть 31 jar-файл. Есть какой-нибудь простой способ подключить их к проекту?

Подробней jar'ы - это jMonkeyEngine и его зависимости. В репозиториях есть [org.cogchar/ext.bundle.opengl.jmonkey «1.0.6.2»], [org.clojars.oskarkv/jmonkeyengine «3.0.1-SNAPSHOT»] и [org.clojars.oskarkv/jmonkeyengine «3.0.5-SNAPSHOT»]. Но первый - очень старый. Там версия движка от 3 октября прошлого года, а с тех пор много нового и полезного добавили. А второй и третий выдают «Could not find artifact org.clojars.oskarkv:jmonkeyengine:jar:3.0.5-SNAPSHOT in clojars» при попытке скачать зависимости. На clojars.org по поводу них написано: «Oops. We hit an error opening the metadata POM file for this project so some details are not available.»

 , jmonkeyengine3,

arte-at-marte
()

Как в emacs lisp правильно динамически переопределять функции?

Форум — Development

Раньше я писал:

(defun bar () "bar")
(defun foo () (bar))

(flet ((bar () "other bar"))
  (foo))
=> "other bar"
и это прекрасно работает. Но каждый раз при использовании этой конструкции выдает:
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
При этом cl-flet не может переопределять функции:
(cl-flet ((bar () "other"))
  (foo))
=> "bar"

 ,

arte-at-marte
()

не могу установить программу

Форум — General

Использую debian squeeze стабильную ветку. Очень хочу поиграться с программкой supercollider (это для программирования музыки). Установить deb-пакет или из сырцов с офф сайта не получается - в репозитории отсутствуют нужные зависимости(в т.ч. в unstable и testing). Однако этот пакет есть в sid unstable... Я добавляю в sources.list строчку:

deb http://ftp.uk.debian.org/debian/ sid main contrib unstable

и пытаюсь установить supercollider:

apt-get -t unstable install supercollider
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  libarchive1 libqt4-sql-mysql libqt4-qt3support mysql-common libpulse-mainloop-glib0
  libgsf-1-common libqt4-sql libphonon4 libqt4-designer libmysqlclient16
  libmysqlclient18 libqt4-script libgsf-1-114 qt4-qtconfig
Для их удаления используйте 'apt-get autoremove'.
Будут установлены следующие дополнительные пакеты:
  binutils cmake cmake-data cpp-4.4 cpp-4.7 desktop-file-utils ecj fontconfig-config
  g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.7 gcc-4.7-base gcj-4.7-base gcj-4.7-jdk
  gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gcj-jdk gcj-jre gcj-jre-headless
  gtk2-engines-pixbuf gvfs gvfs-common gvfs-daemons gvfs-libs jackd jackd2
  jackd2-firewire javascript-common libaacs0 libacl1 libarchive12 libattr1
  libbluetooth3 libbluray1 libboost-filesystem1.49.0 libboost-regex1.49.0
  libboost-system1.49.0 libboost-thread1.49.0 libc-bin libc-dev-bin libc6 libc6-dev
  libc6-i686 libconfig++9 libcwiid1 libdbus-1-3 libdbus-1-dev libecj-java libffado2
  libfontconfig1 libgail18 libgcc1 libgcj-bc libgcj-common libgcj13 libgcj13-awt
  libgcj13-dev libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgdu0 libgfortran3
  libglib2.0-0 libglibmm-2.4-1c2a libgmp10 libgnutls26 libgomp1 libgpg-error0
  libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2.0-0 libgtk2.0-bin
  libicu48 libiec61883-0 libitm1 libjack-jackd2-0 libjack-jackd2-dev libjbig0
  libjpeg8 libjs-jquery libjs-mathjax libjs-underscore liblzma5 libmpc2 libmpfr4
  libmysqlclient18 libnettle4 liborc-0.4-0 libp11-kit0 libpcre3 libqt4-dbus
  libqt4-designer libqt4-network libqt4-qt3support libqt4-script libqt4-sql
  libqt4-sql-mysql libqt4-webkit libqt4-xml libqt4-xmlpatterns libqtcore4 libqtdbus4
  libqtgui4 libqtwebkit4 libquadmath0 librsvg2-2 librsvg2-common libsamplerate0
  libscsynth1 libstdc++6 libstdc++6-4.4-dev libtiff4 libwmf0.2-7 libx11-6 libx11-dev
  libxml++2.6-2 libxmlrpc-core-c3 locales make multiarch-support mysql-common
  pkg-config qdbus qjackctl qt4-qtconfig supercollider-common supercollider-server
  wwwconfig-common
Предлагаемые пакеты:
  binutils-doc gcc-4.4-locales gcc-4.7-locales g++-4.4-multilib gcc-4.4-doc
  libstdc++6-4.4-dbg gcc-4.4-multilib libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg
  libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7 gcc-4.7-multilib
  libmudflap0-4.7-dev gcc-4.7-doc libitm1-dbg libquadmath0-dbg binutils-gold
  gcj-4.7-source libgcj13-dbg gvfs-backends jack-tools meterbridge apache2 httpd
  libbluray-bdj glibc-doc libgcj-doc libvisual-0.4-plugins gstreamer-codec-install
  gnome-codec-install gstreamer0.10-tools gstreamer0.10-plugins-base libqt4-dev
  librsvg2-bin libstdc++6-4.4-doc make-doc pulseaudio-utils subversion mysql-client
  postgresql-client
Рекомендуемые пакеты:
  libx11-doc
Пакеты, которые будут УДАЛЕНЫ:
  g++-4.3 gcc-4.3 gcj-4.4-base gcj-4.4-jdk gcj-4.4-jre gcj-4.4-jre-headless
  gcj-4.4-jre-lib libgcj10 libgcj10-awt libgcj10-dev libstdc++6-4.3-dev libxmlrpc-c3
  linux-headers-2.6-686 linux-headers-2.6.32-5-686
НОВЫЕ пакеты, которые будут установлены:
  cpp-4.7 desktop-file-utils gcc-4.7 gcc-4.7-base gcj-4.7-base gcj-4.7-jdk
  gcj-4.7-jre gcj-4.7-jre-headless gcj-4.7-jre-lib gvfs-common gvfs-daemons gvfs-libs
  jackd jackd2 jackd2-firewire javascript-common libaacs0 libarchive12 libbluetooth3
  libbluray1 libboost-filesystem1.49.0 libboost-regex1.49.0 libboost-system1.49.0
  libboost-thread1.49.0 libconfig++9 libcwiid1 libffado2 libgcj13 libgcj13-awt
  libgcj13-dev libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libglibmm-2.4-1c2a libgmp10
  libicu48 libiec61883-0 libitm1 libjbig0 libjs-jquery libjs-mathjax libjs-underscore
  liblzma5 libmpc2 libmysqlclient18 libnettle4 libp11-kit0 libqtdbus4 libqtwebkit4
  libquadmath0 libsamplerate0 libscsynth1 libxml++2.6-2 libxmlrpc-core-c3
  multiarch-support qdbus qjackctl supercollider supercollider-common
  supercollider-server wwwconfig-common
Пакеты, которые будут обновлены:
  binutils cmake cmake-data cpp-4.4 ecj fontconfig-config g++-4.4 gcc-4.4
  gcc-4.4-base gcj-jdk gcj-jre gcj-jre-headless gtk2-engines-pixbuf gvfs libacl1
  libattr1 libc-bin libc-dev-bin libc6 libc6-dev libc6-i686 libdbus-1-3 libdbus-1-dev
  libecj-java libfontconfig1 libgail18 libgcc1 libgcj-bc libgcj-common libgdu0
  libgfortran3 libglib2.0-0 libgnutls26 libgomp1 libgpg-error0
  libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2.0-0 libgtk2.0-bin
  libjack-jackd2-0 libjack-jackd2-dev libjpeg8 libmpfr4 liborc-0.4-0 libpcre3
  libqt4-dbus libqt4-designer libqt4-network libqt4-qt3support libqt4-script
  libqt4-sql libqt4-sql-mysql libqt4-webkit libqt4-xml libqt4-xmlpatterns libqtcore4
  libqtgui4 librsvg2-2 librsvg2-common libstdc++6 libstdc++6-4.4-dev libtiff4
  libwmf0.2-7 libx11-6 libx11-dev locales make mysql-common pkg-config qt4-qtconfig
обновлено 70, установлено 60 новых пакетов, для удаления отмечено 14 пакетов, и 937 пакетов не обновлено.
Необходимо скачать 148 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 90,1 MB.
Хотите продолжить [Д/н]?

а если сказать aptitude, вместо apt-get, то еще хлеще:

aptitude install supercollider 
Следующие НОВЫЕ пакеты будут установлены:        
  desktop-file-utils{a} gcc-4.7-base{ab} gvfs-common{a} gvfs-daemons{a} 
  gvfs-libs{a} jackd{a} jackd2{a} jackd2-firewire{a} javascript-common{a} 
  libaacs0{a} libarchive12{a} libbluetooth3{a} libbluray1{a} 
  libboost-filesystem1.49.0{a} libboost-regex1.49.0{a} libboost-system1.49.0{a} 
  libboost-thread1.49.0{a} libconfig++9{a} libcwiid1{a} libffado2{a} 
  libglibmm-2.4-1c2a{a} libgmp10{a} libicu48{a} libiec61883-0{a} libjbig0{a} 
  libjs-jquery{a} libjs-mathjax{a} libjs-underscore{a} liblzma5{a} libnettle4{a} 
  libqtdbus4{a} libqtwebkit4{a} libsamplerate0{a} libscsynth1{a} libxml++2.6-2{a} 
  libxmlrpc-core-c3{a} multiarch-support{a} qdbus{a} qjackctl{a} supercollider 
  supercollider-common{a} supercollider-server{a} wwwconfig-common{a} 
Следующие пакеты будут УДАЛЕНЫ:
  libarchive1{u} libmysqlclient16{u} libqt4-designer{u} libqt4-qt3support{u} 
  libqt4-script{u} libqt4-sql{u} libqt4-sql-mysql{u} libxmlrpc-c3{u} 
  mysql-common{u} qt4-qtconfig{u} 
Следующие пакеты будут обновлены:
  cmake cmake-data cpp-4.4 fontconfig-config gcc-4.4 gcc-4.4-base{b} gvfs libacl1 
  libattr1 libc-bin libc-dev-bin libc6 libc6-dev libdbus-1-3 libfontconfig1 
  libgcc1{b} libgdu0 libglib2.0-0 libgomp1{b} libgpg-error0 
  libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libjack-jackd2-0 libjpeg8 
  libmpfr4 liborc-0.4-0 libpcre3 libqt4-dbus libqt4-network libqt4-xml libqtcore4 
  libqtgui4 libstdc++6{b} libtiff4 locales make pkg-config 
37 пакетов обновлено, 43 установлено новых, 10 пакетов отмечено для удаления, и 963 пакетов не обновлено.
Необходимо получить 76,0 MB архивов. После распаковки 86,0 MB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
  libstdc++6: Ломает: gcc-4.3 (< 4.3.6-1) но установлен 4.3.5-4 
  gcc-4.7-base: Ломает: gcj-4.4-base (< 4.4.6-9~) но установлен 4.4.5-2 
  libgfortran3: Зависит: gcc-4.4-base (= 4.4.5-8) но устанавливается 4.4.7-3.
  g++-4.4: Зависит: gcc-4.4-base (= 4.4.5-8) но устанавливается 4.4.7-3.
           Зависит: gcc-4.4 (= 4.4.5-8) но устанавливается 4.4.7-3.
  libgomp1: Ломает: gcc-4.3 (< 4.3.6-1) но установлен 4.3.5-4 
  libstdc++6-4.4-dev: Зависит: gcc-4.4-base (= 4.4.5-8) но устанавливается 4.4.7-3.
  libqt4-xmlpatterns: Зависит: libqt4-network (= 4:4.6.3-4+squeeze1) но устанавливается 4:4.8.2+dfsg-11.
                      Зависит: libqtcore4 (= 4:4.6.3-4+squeeze1) но устанавливается 4:4.8.2+dfsg-11.
  libc6-i686: ПредЗависит: libc6 (= 2.11.3-4) но устанавливается 2.13-38.
  libgcc1: Ломает: gcc-4.3 (< 4.3.6-1) но установлен 4.3.5-4 
  libqt4-webkit: Зависит: libqt4-network (= 4:4.6.3-4+squeeze1) но устанавливается 4:4.8.2+dfsg-11.
                 Зависит: libqtcore4 (= 4:4.6.3-4+squeeze1) но устанавливается 4:4.8.2+dfsg-11.
                 Зависит: libqtgui4 (= 4:4.6.3-4+squeeze1) но устанавливается 4:4.8.2+dfsg-11.
  libjack-jackd2-dev: Зависит: libjack-jackd2-0 (= 1.9.6~dfsg.1-2) но устанавливается 1.9.8~dfsg.4+20120529git007cdc37-5.
  libdbus-1-dev: Зависит: libdbus-1-3 (= 1.2.24-4+squeeze1) но устанавливается 1.6.8-1.
  gcc-4.4-base: Конфликтует: gcj-4.4-base (< 4.4.6-9~) но установлен 4.4.5-2 
Следующие действия разрешат зависимости:

      Удалить следующие пакеты:                                                        
1)      bsh-gcj                                                                        
2)      build-essential                                                                
3)      ecj                                                                            
4)      ecj-gcj                                                                        
5)      g++                                                                            
6)      g++-4.3                                                                        
7)      g++-4.4                                                                        
8)      gcc-4.3                                                                        
9)      gcj-4.4-base                                                                   
10)     gcj-4.4-jdk                                                                    
11)     gcj-4.4-jre                                                                    
12)     gcj-4.4-jre-headless                                                           
13)     gcj-4.4-jre-lib                                                                
14)     gcj-jdk                                                                        
15)     gcj-jre                                                                        
16)     gcj-jre-headless                                                               
17)     gimp                                                                           
18)     kupfer                                                                         
19)     libantlr-java-gcj                                                              
20)     libavahi-client-dev                                                            
21)     libblas3gf                                                                     
22)     libboost-dev                                                                   
23)     libboost-signals-dev                                                           
24)     libboost-signals1.42-dev                                                       
25)     libboost-test-dev                                                              
26)     libboost-test1.42-dev                                                          
27)     libboost1.42-dev                                                               
28)     libc6-i686                                                                     
29)     libdb4.7-java-gcj                                                              
30)     libdbus-1-dev                                                                  
31)     libecj-java-gcj                                                                
32)     libgcj-bc                                                                      
33)     libgcj10                                                                       
34)     libgcj10-awt                                                                   
35)     libgcj10-dev                                                                   
36)     libgfortran3                                                                   
37)     libjack-jackd2-dev                                                             
38)     libjaxp1.3-java-gcj                                                            
39)     liblapack3gf                                                                   
40)     liblog4j1.2-java-gcj                                                           
41)     libqt4-webkit                                                                  
42)     libqt4-xmlpatterns                                                             
43)     libstdc++6-4.3-dev                                                             
44)     libstdc++6-4.4-dev                                                             
45)     libxalan2-java-gcj                                                             
46)     libxerces2-java-gcj                                                            
47)     linux-headers-2.6-686                                                          
48)     linux-headers-2.6.32-5-686                                                     
49)     python-gnome2                                                                  
50)     python-gtk2                                                                    
51)     python-keybinder                                                               
52)     python-numpy                                                                   
53)     python-wnck                                                                    

      Сохранить для следующих пакетов их текущие версии:                               
54)     supercollider [Не установлен]                                                  

      Оставить следующие зависимости неразрешёнными:                                   
55)     libantlr-java рекомендует libantlr-java-gcj                                    
56)     bsh рекомендует bsh-gcj                                                        
57)     libdb4.7-java рекомендует libdb4.7-java-gcj                                    
58)     dkms рекомендует linux-headers-2.6-686 | linux-headers-2.6-amd64 | linux-header
59)     dpkg-dev рекомендует build-essential                                           
60)     libgcj10 рекомендует gcj-4.4-jre-lib (>= 4.4.4-17)                             
61)     gimp-data рекомендует gimp                                                     
62)     libgimp2.0 рекомендует gimp                                                    
63)     liblog4j1.2-java рекомендует liblog4j1.2-java-gcj                              
64)     kupfer рекомендует python-gnome2                                               
65)     kupfer рекомендует python-wnck                                                 
66)     linux-image-2.6.32-5-686 рекомендует libc6-i686                                
67)     libxalan2-java рекомендует libxalan2-java-gcj                                  
68)     libxerces2-java рекомендует libxerces2-java-gcj                                
69)     libc6 рекомендует libc6-i686                                                   


Принять данное решение? [Y/n/q/?] 
При этом происходит много странного.

Во-первых он пытается обновить то, чего обновлять не нужно.

Во-вторых меня смущает:

Следующие пакеты устанавливались автоматически и больше не требуются:
  libarchive1 libqt4-sql-mysql libqt4-qt3support mysql-common libpulse-mainloop-glib0
  libgsf-1-common libqt4-sql libphonon4 libqt4-designer libmysqlclient16
  libmysqlclient18 libqt4-script libgsf-1-114 qt4-qtconfig
Для их удаления используйте 'apt-get autoremove'.
Если дать комманду apt-get autoremove, то ничего не удаляется. А если попытаться удалить эти пакеты вручную, то пишет:
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 xserver-xorg-core : Рекомендует: libgl1-mesa-dri (>= 7.10.2-4) но 7.7.1-5 будет установлен
                     Ломает: libgl1-mesa-dri (< 7.10.2-4) но 7.7.1-5 будет установлен

В общем бардак полный. При этом система безупречно работает уже пол года, очень не хочу все поломать...

 

arte-at-marte
()

emacs, cl-delete & cl-nunion

Форум — Development
(setf a '(1 2 3))
(dolist (d '(1 2 3))
  (cl-delete d a))
a
=> (1)

(cl-nunion a '(4 5 6))
a
=> (1)

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

 ,

arte-at-marte
()

проблема с emacs's overlay

Форум — Development

Такой вод код:

(defun my-compose-region (beg end text)
  (let ((ov (make-overlay beg end)))
    (overlay-put ov 'display text)
    (overlay-put ov 'modification-hooks
		 (list (lambda (ov _ _ _)
			 (delete-overlay ov))))))

(my-compose-region 1 10 "Oo")
После удаления или модификации текста оверлея выдает в буффер *Messages* такой текст:
delete-char: Wrong number of arguments: (lambda (ov _ _ _) (delete-overlay ov)), 5
Хотя в документяции явно описано, что функции modification-hooks вызываются с 4-мя аргументами.

Я меняю код на:

(defun my-compose-region (beg end text)
  (let ((ov (make-overlay beg end)))
    (overlay-put ov 'display text)
    (overlay-put ov 'modification-hooks
		 (list (lambda (ov _ _ _ _)  ; <- только здесь добавляю пятый аргумент
			 (delete-overlay ov))))))
И опять в буффер *Messages* выдает текст:
delete-char: Wrong number of arguments: (lambda (ov _ _ _ _) (delete-overlay ov)), 4
PS: я знаю, что в данном случае можно обойтись без modification-hooks, но мне нужна именно она т.к. хочу организовать цепочку взамосвязанных оверлеев.

Я могу написать вот так:

(defun my-compose-region (beg end text)
  (let ((ov (make-overlay beg end)))
    (overlay-put ov 'display text)
    (overlay-put ov 'modification-hooks
		 (list (lambda (ov &rest unused)
			 (delete-overlay ov))))))
и это даже будет работать, но...

arte-at-marte
()

в полноэкранном режиме скачет курсор мыши

Форум — General

В некоторых играх в полноэкранном режиме курор каждые несколько секунд перескакивает в одну и ту же позицию в левой верхней части экрана. Кто-нибудь сталкивался?

 , ,

arte-at-marte
()

Не работает динамическое изменение org-todo-keywords.

Форум — Development

(let ((org-todo-keywords '((sequence «WAITING» «TODO»)))) (org-todo arg))

почему не работает?

 ,

arte-at-marte
()

как в emacs lisp различить C-u и 4

Форум — Development

Когда в emacs комбинация набрана с префиксом C-u в функцию передается числовой аргумент 4. Возникла необходимость отличить эти два случая, чтобы (my-fun 4) и C-u M-x my-fun давали разные результаты. Т.е. я хочу использовать C-u в каком то особом значении отличном от числового. Можно это как-нибудь сделать?

 ,

arte-at-marte
()

как отключить колонки?

Форум — General

У меня возникла проблемa с разъемом для аудиоустройств. Если вставлять в него штекер полностью(например, наушники), то звук не идет ни в колонки ни в наушники. А если не полностью, то звук идет и в колонки и в наушники. Я пробовал несколько разных аудиоустройтсв - на всех так работает...

Можно в linux как-нибудь отключить колонки как устройства?

arte-at-marte
()

Как в Emacs временно подавить вывод в эхо-область и в буффер *Messages*?

Форум — Development

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

 , , force output,

arte-at-marte
()

У кого есть шрифт Inconsolata скрещенный с чем-нибудь, что содержит русские буквы?

Форум — General

Или посоветуйте тулзы для скрещивания...

У меня кое-как получилось скрестить Inconsolata с FreeMono при помощи FontForge, но оно уродливо. При попытке скрестить с другими шрифтами FontForge падает...

 inconsolata,

arte-at-marte
()

zsh автодополнение

Форум — General

Сразу на примере:

touch foo1.bar
touch foo2.bar
Других файлов в каталоге нет.

Я хочу, чтобы при наборе ./<TAB> оно дополнилось до foo (т.е. до общей части обоих вариантов) с открытием меню выбора.

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

1. Если я наберу 1 или 2 и затем TAB. Впрочем если без TAB'a, то вообще идеально будет.

2. Если я выберу один из пунктов меню, например, при помощи Control-n/Control-p и нажму Control-Space.

где подсмотреть, как это можно сделать?

arte-at-marte
()

emacs lisp+emacs и clojure+eclipse

Форум — Development

emacs lisp не самый приятный язык для программирования. Особенно когда речь идет о любимой среде разработки. С тех пор, как появилсся Clojure стало возможным написание плагинов для eclipse на лиспе [намного более современным, чем emacs lisp] со всеми вытекающими отсюда плюсами. Но насколько это удобно на самом деле? Если кто-нибудь пробовоал, поделитесь впечатлениями.

 , , ,

arte-at-marte
()

Как в Emacs выводить цветной текст?

Форум — Development

Т.е. нужно сказать «вывести вот этот кусок текста определенным цветом/стилем» и «подкрасить уже напечатанный текст». Например все, что до точки перекрасить зеленым, а все, что после - синим.

 , , face-font

arte-at-marte
()

Проблема с compose-region в Emacs

Форум — Development

Захотелось автоматически заменять defvar на ∃, defun на ∃ƒ, lambda на λ и т.д. Я так понял этим занимается функция compose-region, однако она не работает если исходный регион заменяется несколькими символами как в случае с ∃ƒ. А именно оно выводитвсе символы в одно место т.е. (compose-region 1 5 «hello») по идее должно заменить первые пять символов в буфере на hello, но работает как будто удаляет первые пять символов и потом все буквы «hello» выводит в одну позицию точки один поверх другого...

В идеале так же было бы здорово заменять (not (foo)) на ¬(foo), но я не придумал как... :(

Кто-нибудь делал что-то подобное?

 compose region,

arte-at-marte
()

Трудности при написание сниппетов с Yasnippet

Форум — Web-development

Поставил перед собой такую задачу: написать простой сниппет для if для лиспов.

Я хочу добиться поведения в котором в случае короткой записи if укладывался бы в одну строку, а в случае длинной использовался перенос строки. Что то вроде:

(if (> a b) a b)
(if (long-condition)
    (long-then-section)
  (long-else-section))

А еще в if может отсутствовать else-часть и в этом случае не должно быть одиночной скобки на строке.

Я столкнулся с двумя проблемами, разрешить которые не смог.

Первая проблема - мне нужно узнать длинну всей конструкции. Написать что то вроде

(if ${1:$$(код парсинга выражения)) 
я не могу т.к. надо сохранить возможность навигации при помощи yas/next-field и yas/prev-field.

Написать

(if ${4:$1 $2 $3})
тоже нельзя т.к. при вызове yas/next-field когда курсор будет на тройке, он перейдет на четверку, а надо, чтобы переходил в конец этой конструкции.

Вторая проблема в выравнивании. Для примера(только для примера!) я пишу такой сниппет:

(if $1${1:$(if (> (length yas/text) 10) «\n\t» "")} $2${2:$(if (> (length yas/text) 10) «\n\t» "")} $3) $0

С короткой записью он работает, с длинной выходит вот так:

(if (long-condition) 
	(then-section) 
	(else-section))
а должно вот так:
(if (long-condition) 
    (then-section) 
  (else-section))
Что может помочь в данной ситуации? Куда посмотреть можно? Какие есть альтернативы?

Сразу замечу, я срашиваю не только для if'а, просто на его примере...

arte-at-marte
()

emacs проблема с define-key

Форум — Development

Я буквально пару недель программирую в Emacs Lisp и наткнулся на ошибку, которую не могу побороть: Вот так код работает полностью нормально, без ошибок и предупреждений:

(define-key paredit-mode-map (kbd "M-J")   'paredit-join-sexp-ex)
(define-key paredit-mode-map (kbd "C-k")   'paredit-kill-ex)
(define-key paredit-mode-map (kbd "M-k")   'paredit-kill-backward)

(define-key paredit-mode-map (kbd "M-[") 'paredit-wrap-square)
(define-key paredit-mode-map (kbd "M-{") 'paredit-wrap-curly)

(define-key paredit-mode-map (kbd ")")   'paredit-close-round-ex)
(define-key paredit-mode-map (kbd "}")   'paredit-close-curly-ex) 
(define-key paredit-mode-map (kbd "]")   'paredit-close-square-ex)
(define-key paredit-mode-map (kbd "M-)")   'paredit-close-round-ex-and-newline)
(define-key paredit-mode-map (kbd "M-}")   'paredit-close-curly-ex-and-newline)
(define-key paredit-mode-map (kbd "M-]")   'paredit-close-square-ex-and-newline)
(define-key paredit-mode-map (kbd "C-]")   'paredit-forward-slurp-sexp)
(define-key paredit-mode-map (kbd "C-[")   'paredit-backward-slurp-sexp)
(define-key paredit-mode-map (kbd "C-)")   'paredit-forward-barf-sexp)
(define-key paredit-mode-map (kbd "C-(")   'paredit-backward-barf-sexp)
Но если первые три define-key переместить вниз этого кода, то при перезапуске имакса будет получено:

error: Key sequence M-J starts with non-prefix key ESC

По идее т.к. эти строки идут подряд, то никакой код не должен выполняется, кроме define-key... Это баг?

Кто-нибудь сталкивался с подобным?

arte-at-marte
()

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