Чтобы добавлять сообщения и комментарии, .

@4DA:
4DA

This page gives a list of the most useful elisp functions for text processing tasks in elisp programing. Any elisp coder would have memorized every functions in this page. That's how important they are.

ergoemacs.org

@fmap:
fmap

If the first character after the ignored whitespace is neither a digit in the given base, nor a plus or minus sign, nor the leading dot of a floating point number, this function returns 0.
(string-to-number "Hi!") ==> 0

@fmap:
fmap

(http://dorophone.blogspot.com/2011/04/deep-emacs-part-1.html)

@fmap:
fmap

Полезная табличка: (http://hyperpolyglot.org/lisp)
Только я все также не знаю что служит заменой take. Городить цикл как-то сурово.

@fmap:
fmap

(string-match "[[:upper:]]" "a")
=> 0

@4DA:
4DA

Навелосипедил костыль, при помощи которого в главном канале bitlbee можно не
prepend-ить имя юзера, а чтобы сообщение посылалось юзеру, с которым до этого шел разговор.
(micq-like)

pastebin.com

@Kim:
Kim

Взять X параграфов текста, размер которых ещё влезает в четыре килобайта. 

(defun byte-count-in-region (start end)
  (string-to-number
   (with-output-to-string (call-process-region start end
					       "wc" nil standard-output nil
					       "-c"))))
(defun select-juickable-paragraph-set ()
  (interactive)
  (let ((start (point))
	(block-length 4096))
    (while (and (< (byte-count-in-region start (point)) block-length)
		(< (point) (point-max)))
      (forward-paragraph))
    (if (> (byte-count-in-region start (point)) block-length) 
	(backward-paragraph))
    (if (<= (point) start)
	(goto-char start))
    (set-mark start)
    (message "Current region size is small enough for juick")))

Как можно сделать это короче в два раза? И почему в емаксе до сих пор нет какого-нибудь forward-byte?

@folex:
folex

Ня!

@yoghurt:
yoghurt

У меня появилась сумасшедшая идея реализовать очередную объектную систему на Emacs Lisp. Ну не можется мне там без объектов что-то нормальное писать. Отговорите меня пожалуйста

@folex:
folex

Пусть у меня есть переменная text, которая содержит строку.
Как мне урезать кол-во символов в этой строке до n символов?
Например, что бы сделать так:
(setq text (cut text n))

@Sectoid:
Sectoid

привет, жуйк! А ты когда-нибуть сталкивался программированием элементов UI в GNU Emacs? Имеется в виду создание чего-то вроде того, что видишь в customize. Если да, то поделись ссылками, а то ничего толкового не нагугливается.

@iorlas:
iorlas

learn-elisp-for-emacs.org
Created using Sphinx 0.6.6.
Python
Символично.

@a13:
a13

с какого-то перепугу стал при goto-char сбрасывать выделение региона, пришлось #721710 переделать:
(defun* quote-region (&optional (left-quote "«") (right-quote "»"))
(interactive)
(let ((beg (region-beginning))
(end (region-end)))
(goto-char beg)
(insert left-quote)
(goto-char end)
(insert right-quote)))

@a13:
a13

Задолбался ...

(require 'cl)

(defun* quote-region (&optional (left-quote "«") (right-quote "»"))
(interactive)
(goto-char (region-beginning))
(insert left-quote)
(goto-char (region-end))
(insert right-quote))

@a13:
a13

(defmacro defjuickaction (function-name matcher action)
`(defun ,function-name ()
(interactive)
(if (and (equal (get-text-property (point) 'read-only) t)
(,@matcher))
(,@action)
(self-insert-command 1))))

(defjuickaction juick-go-recommend
(thing-at-point-looking-at "#[0-9]+")
(juick-send-message juick-bot-jid
(concat "! " (match-string-no-properties 0))))

It works.

Также прошу прощения за последнюю рекомендацию, тестировал :)

@a13:
a13

хочу выдать на stdout список буферов, нацарапал такое:
(defun list-buffers-string () (mapconcat '(lambda (s) (format "%s" s))
(remove-if '(lambda (name) (string= (substring name 0 1) " "))
(mapcar 'buffer-name (buffer-list)))
"\n"))

в скрэтче отрабатывает нормально, а вот если сделать
emacsclient --eval "(list-buffers-string)"
,вместо перевода строк выдает \n
WTF?

@a13:
a13

возвращаясь к #348017
(require 'cl) и defun* спасли гиганта мысли

@a13:
a13

Я дурак или его действительно нет?
(defun random-list-element (list)
(nth (random (list-length list)) list))

@demyan:
demyan

Мой код в апстриме jabber.el
emacs-jabber.git.sourceforge.net

@demyan:
demyan

(setenv "SSH_AUTH_SOCK" (concat "/tmp/" (car (locate-file-completion "/tmp/keyring" () t)) "ssh"))
;; Add keyring's SSH agent envar to Emacs. Automatically! Not so useless ;)

@a13:
a13

А как указать default value для &optional аргумента? (defun bla (&optional (a 666)) ...) не прокатило :(

@demyan:
demyan

Переделал #272721, ввел лишний defun.. как-то вышло слегка
по-индусски, но зато все стало тупо-просто! Еще раз призываю
высказаться матерых Elisp'еров.

(defun calendar-x-month-last-thu (today)
(if (> (- (cadr today) (calendar-day-of-week today)) 3)
; current month or last
(car today) (- (car today)
; begining of year workaround
(if (eq 1 (car today)) -11 1))))

(let ((d (calendar-current-date))
(m (calendar-x-month-last-thu (calendar-current-date))))
(if (> m (car d))
; happy new year!
(concat (calendar-month-name m t) "_" (number-to-string (- (caddr d) 1)))
; string "Mon_YEAR" is what we need
(concat (calendar-month-name m t) "_" (number-to-string (caddr d)))))

В жуике это конечно не нужно, но мало-ли.. не делать же ради такой мелочи публичный git?

@demyan:
demyan


Выдумал немного elisp-кода для определения даты "прошлого четверга".
Код таков:

(format-time-string
"%c"
(apply 'encode-time
(let ((d ; that's day
(calendar-gregorian-from-absolute
(calendar-dayname-on-or-before
4 ; last Thursday
(calendar-absolute-from-gregorian (calendar-current-date))))))
(list 0 0 0 (cadr d) (car d) (caddr d) nil nil nil))))

Сразу оговорюсь, что мне этот код был надо не просто так, а для
личного использования. Поэтому использован format-time-string :)
Строку #3 я скопировал из time-date.el, еще, как видите, использованы
функции calendar.el

Собственно вопрос к знатокам: а проще можно? Как-то не очень нравится
получившийся вариант, слишком много конвертирования даты да и
громоздко. Манипуляция с со списком (последняя строка)
некрасивая. Может где есть возможность улучшить?

@kaineer:
kaineer

.. не думай о вложеньях свысока :-/

@Thriller:
Thriller

shell-quote-argument выдаёт что-то неадекватное заместо \n >_<.

@Thriller:
Thriller

Я уж привык к format из CL, и не только потому что он гибкий — я его ещё в Guile встречал. А тут какой-то аналог printf просто :-(.