Сообщения в Нужна помощь по программированию под емакс

Нужна помощь по программированию под емакс

Привет.

Вот я пишу программку, хочу опакетить ее. Делаю в конце

(provide 'my-prog)

В емаксе добавляю каталог в load-path, делаю require. Вопрос: как достучатьс до функций из пакета?
Difrex to All (2017-09-28 09:08:57) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Difrex> Привет.
Difrex> Вот я пишу программку, хочу опакетить ее. Делаю в конце
Difrex> (provide 'my-prog)
Difrex> В емаксе добавляю каталог в load-path, делаю require. Вопрос: как достучатьс до функций из пакета?
Не очень понял что значит "достучаться". Если вызывать их из других программ, то они сразу доступны по имени. Если имеется в виду интерактивный вызов, то надо использовать специальную форму (interactive &optional ARG-DESCRIPTOR). Подробнее можно прочитать во встроенной справке "C-h f interactive RET".

;;; Йу-ху! С каждым днём имаксеров становится всё больше =)
Andrew Lobanov to Difrex (2017-09-28 10:06:02) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
>Если имеется в виду интерактивный вызов, то надо использовать специальную форму (interactive &optional ARG-DESCRIPTOR). Подробнее можно прочитать во встроенной справке "C-h f interactive RET".
Спасибо! То, что нужно.
>;;; Йу-ху! С каждым днём имаксеров становится всё больше =)
Да я уже года полтора, как емаксом пользуюсь, просто не писал под него =)
Difrex to Andrew Lobanov (2017-09-28 11:00:17) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
В общем начал я пилить клиента под емакс. Пока удалось сделать только получение списка эх. Но думаю потом дело пойдет быстрее.

Если кто готов присоедениться - велком https://gitea.difrex.ru/Difrex/idec.el
Difrex to Difrex (2017-09-28 14:16:07) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Difrex> В общем начал я пилить клиента под емакс. Пока удалось сделать только получение списка эх. Но думаю потом дело пойдет быстрее.
Difrex> Если кто готов присоедениться - велком https://gitea.difrex.ru/Difrex/idec.el
О! Крутота. Я неоднократно начинал, но забрасывал. А я go осваиваю потихоньку =)
Andrew Lobanov to Difrex (2017-09-28 15:03:47) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
А ты не мог бы подсказать как мне сделать такую штуку, как список из ассоциативных массивов.

Делаю сейчас так:
(setq new-messages-list (-concat 'new-messages-list '((content . message-content) (id . msg))))
Потом пытаюсь пройтись по этому списку:
(dolist (msg new-messages-list)
        (message (assoc 'id msg)))
Но не работает. Ругается так: Wrong type argument: listp
Difrex(mobile) to Andrew Lobanov (2017-10-03 20:37:37) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Переделал на хэшики - все работает =)
Difrex(mobile) to Difrex(mobile) (2017-10-03 21:41:24) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Difrex(mobile)> А ты не мог бы подсказать как мне сделать такую штуку, как список из ассоциативных массивов.
Difrex(mobile)> Делаю сейчас так:
Difrex(mobile)> ====
Difrex(mobile)> (setq new-messages-list (-concat 'new-messages-list '((content . message-content) (id . msg))))
Difrex(mobile)> ====
Difrex(mobile)> Потом пытаюсь пройтись по этому списку:
Difrex(mobile)> ====
Difrex(mobile)> (dolist (msg new-messages-list)
Difrex(mobile)> (message (assoc 'id msg)))
Difrex(mobile)> ====
Difrex(mobile)> Но не работает. Ругается так: Wrong type argument: listp
Вот я не помню как в emacs lisp работают property lists. Я делал простой список списков со структурой ((msgid body) (msgid body)) и обкодил список, обращаясь к элементам посредством (first...) и (second...). Решение кривое, но рабочее и с учётом статичности структуры данных, в целом, приемлемое.
Andrew Lobanov to Difrex(mobile) (2017-10-04 05:13:02) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Difrex(mobile)> Переделал на хэшики - все работает =)
Можешь накидать примерчик? Интересно а то.
Andrew Lobanov to Difrex(mobile) (2017-10-04 05:13:02) [ссылка]

Re: Нужна помощь по программированию под емакс

Ответ на сообщение
Как-то так:
(setq new-messages-list (make-hash-table :test 'equal))
(dolist (m my-list)
  ...
  (puthash msg message-content new-messages-list)
)

(maphash (lambda (id msg)
  (message (concat "Get " id "\n" msg))
 new-messages-list)
Тут инициализируется хэш
https://gitea.difrex.ru/Difrex/idec.el/src/research/idec.el#L315

Тут заполняется
https://gitea.difrex.ru/Difrex/idec.el/src/research/idec.el#L417

Тут выводится
https://gitea.difrex.ru/Difrex/idec.el/src/research/idec.el#L369
Difrex to Andrew Lobanov (2017-10-04 08:32:01) [ссылка]