(string-to-number "Hi!") ==> 0
Только я все также не знаю что служит заменой take. Городить цикл как-то сурово.
=> 0
prepend-ить имя юзера, а чтобы сообщение посылалось юзеру, с которым до этого шел разговор.
(micq-like)
pastebin.com
Взять 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?
Как мне урезать кол-во символов в этой строке до n символов?
Например, что бы сделать так:
(setq text (cut text n))
#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)))
с какого-то перепугу стал при goto-char сбрасывать выделение региона, пришлось (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)))
(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))
`(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.
Также прошу прощения за последнюю рекомендацию, тестировал :)
(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?
#348017
(require 'cl) и defun* спасли гиганта мысли
возвращаясь к (require 'cl) и defun* спасли гиганта мысли
(defun random-list-element (list)
(nth (random (list-length list)) list))
;; Add keyring's SSH agent envar to Emacs. Automatically! Not so useless ;)
#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?
Переделал по-индусски, но зато все стало тупо-просто! Еще раз призываю
высказаться матерых 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?
Выдумал немного 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
Собственно вопрос к знатокам: а проще можно? Как-то не очень нравится
получившийся вариант, слишком много конвертирования даты да и
громоздко. Манипуляция с со списком (последняя строка)
некрасивая. Может где есть возможность улучшить?