- strings 20170307.1533(in MELPA)
- Miscellaneous string functions.
概要
strings.el
は昔からある
文字列関数ライブラリです。
以下の関数が用意されています。
他のライブラリで使われている関数で
汎用的なものも取り込んでいます。
- ordinal-suffix (n)
- pick-some-words (pos direction limit)
- region-description (width &optional prefix suffix begin end)
- current-d-m-y-string ()
- current-line-string (&optional buffer)
- display-lines-containing (buffer string &optional flush-p)
- word-before-point ()
- symbol-name-before-point ()
- echo-in-buffer (buffer-name string &optional force-display-p)
- set-minibuffer-empty-p (flag)
- minibuffer-empty-p ()
- erase-nonempty-inactive-minibuffer ()
- erase-inactive-minibuffer ()
- fill-string (string &optional justify nosqueeze to-eop)
- string-w-face (arg)
- concat-w-faces (&rest arguments)
- insert-in-minibuffer (&rest arguments)
- buffer-alist (&optional nospacep)
- read-any-variable (prompt &optional default-value)
- frame-alist ()
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてstringsを使う方は
以下のコマンドを実行します。
M-x package-install strings
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name strings
empty-name-p (name)
empty-name-p
は空文字列か
nilのときに t
を返します。
(empty-name-p "nonempty") ; => nil (empty-name-p "") ; => t (empty-name-p nil) ; => t
non-empty-name-p (name)
non-empty-name-p
は空文字列か
nilのときに nil
を返します。
文字列に対しては文字列そのものを返します。
(non-empty-name-p "nonempty") ; => "nonempty" (non-empty-name-p "") ; => nil (non-empty-name-p nil) ; => nil
ordinal-suffix (n)
ordinal-suffix
は数に対して序数を返します。
(ordinal-suffix 0) ; => "th" (ordinal-suffix 1) ; => "st" (ordinal-suffix 2) ; => "nd" (ordinal-suffix 3) ; => "rd" (ordinal-suffix 4) ; => "th" (ordinal-suffix 11) ; => "th" (ordinal-suffix 12) ; => "th" (ordinal-suffix 13) ; => "th" (ordinal-suffix 1021) ; => "st" (ordinal-suffix 1022) ; => "nd" (ordinal-suffix 1023) ; => "rd"
pick-some-words (pos direction limit)
pick-some-words
は
バッファ位置 pos
で
最大文字数 limit
に到達するまで
単語を読み込みます。
カーソル位置は移動しません。
カーソル位置の単語が
limit
よりも長い場合は
limit
文字の部分文字列を返します。
(defun test-pick-some-words (before-string after-string direction limit) "pick-some-wordsのテスト関数。 一時バッファでカーソル位置をBEFORE-STRINGとAFTER-STRINGの間に置き、 その位置でpick-some-words関数を呼び出す" (with-temp-buffer (insert before-string) (save-excursion (insert after-string)) (pick-some-words (point) direction limit))) ;;;; カーソル位置は[a b c]と[pick some words]の間にある ;; DIRECTIONがnilのときは前方を見る (test-pick-some-words "a b c" "pick some words" nil 1) ; => "p" (test-pick-some-words "a b c" "pick some words" nil 4) ; => "pick" (test-pick-some-words "a b c" "pick some words" nil 5) ; => "pick" (test-pick-some-words "a b c" "pick some words" nil 9) ; => "pick some" (test-pick-some-words "a b c" "pick some words" nil 99) ; => "pick some words" ;; DIRECTIONがtのときは後方を見る (test-pick-some-words "a b c" "pick some words" t 1) ; => "c" (test-pick-some-words "a b c" "pick some words" t 3) ; => "b c" (test-pick-some-words "a b c" "pick some words" t 9) ; => "a b c"
region-description (width &optional prefix suffix begin end)
region-description
は
begin
から end
までのregionを
width
(>= 20)文字になるよう短縮表記します。
begin
と end
がnilのときはregionを取得します。
prefix
と suffix
は「"」がデフォルトです。
(defun test-region-description (width &optional prefix suffix) (with-temp-buffer (insert "This is a temporary buffer.") (region-description width prefix suffix (point-min) (point-max)))) (test-region-description 20 "\"" "\"") ;; => "\"T ... .\" (27 chars)" (test-region-description 22 "\"" "\"") ;; => "\"Th ... r.\" (27 chars)" (test-region-description 25 "\"" "\"") ;; => "\"This ... fer.\" (27 chars)" (test-region-description 30 "\"" "\"") ;; => "\"This is a temporary buffer.\"" (test-region-description 50 "\"" "\"") ;; => "\"This is a temporary buffer.\""
current-d-m-y-string ()
current-d-m-y-string
は
現在の日付を「dd-mon-year」の表記で返します。
(current-d-m-y-string) ; => "9-Feb-2017"
current-line-string (&optional buffer)
current-line-string
は
カーソル位置の現在行の内容を
改行抜きの文字列で返します。
buffer
が与えられた場合は
そのバッファが対象となります。
(with-temp-buffer ;; [abc]と[def]の間にカーソルがある場合 (insert "abc") (save-excursion (insert "def\n")) (current-line-string)) ; => "abcdef"
display-lines-containing (buffer string &optional flush-p)
M-x display-lines-containing
は
M-x occur
に似たコマンドです。
カレントバッファにおいて
文字列を含む行を*Lines Containing*バッファに
書き出して表示します。
C-u
をつけた場合は
文字列を含まない行を表示します。
Lispプログラムから呼ぶ場合は、
buffer
に出力バッファflush-p
がnilのときはstring
を含む行、tのときは含まない行
を出力します。
word-before-point ()
word-before-point
は、
カーソル位置、または
直前の単語を文字列で得ます。
(defun test-word-at-point (before after) "カーソル位置の前の文字列BEFORE、後の文字列AFTERを設定して word-at-pointを呼び出す" (with-temp-buffer (insert before) (save-excursion (insert after)) (word-at-point))) (test-word-at-point "find" " file") ; => "find" (test-word-at-point "find " "file") ; => "file" (test-word-at-point "find fi" "le") ; => "file"
symbol-name-before-point ()
symbol-name-before-point
は、
カーソル位置、または
直前のシンボルを文字列で得ます。
(defun test-symbol-name-at-point (before after) "カーソル位置の前の文字列BEFORE、後の文字列AFTERを設定して symbol-name-at-pointを呼び出す" (with-temp-buffer (emacs-lisp-mode) (insert before) (save-excursion (insert after)) (symbol-name-at-point))) (test-symbol-name-at-point "defun" " find-file") ; => nil (test-symbol-name-at-point "defun " "find-file") ; => "find-file" (test-symbol-name-at-point "defun find-" "file") ; => "find-file"
echo-in-buffer (buffer-name string &optional force-display-p)
echo-in-buffer
は
バッファ buffer-name
の末尾に、
文字列 string
を書き込みます。
force-display-p
がtのときは、
最後尾を表示します。
バッファが存在しない場合は作成します。
set-minibuffer-empty-p (flag)
set-minibuffer-empty-p
は
ミニバッファの内容が空であることを宣言します。
minibuffer-empty-p ()
minibuffer-empty-p
は
ミニバッファが空であるかどうかを判定します。
erase-nonempty-inactive-minibuffer ()
erase-nonempty-inactive-minibuffer
は
非アクティブで空ではないミニバッファを空にします。
入力のたびに設定したけば、
次の設定を加えます。
(add-hook 'pre-command-hook 'erase-nonempty-inactive-minibuffer)
erase-inactive-minibuffer ()
erase-inactive-minibuffer
は
非アクティブなミニバッファを空にします。
入力のたびに設定したけば、
次の設定を加えます。
ただし、こちらの方はやや重いです。
(add-hook 'pre-command-hook 'erase-inactive-minibuffer)
fill-string (string &rest ignore)
fill-string
は fill-region
で
字詰めした文字列を返します。
(let ((fill-column 10)) (fill-string "あいうえおかきくけこさしすせそ")) ;;; => "あいうえお ;;; かきくけこ ;;; さしすせそ"
string-w-face (arg)
string-w-face
は (FACE STRING)
で
与えられた引数に対して face
を付加します。
普通に propertize
を使いましょう。
;;; 両者は等価 (string-w-face '(org-level-1 "hoge")) (propertize "hoge" 'face 'org-level-1)
concat-w-faces (&rest arguments)
concat-w-faces
は
arguments
各々に対して
string-w-face
を呼び出します。
普通に concat
と propertize
を使いましょう。
insert-in-minibuffer (&rest arguments)
insert-in-minibuffer
は
ミニバッファに各 arguments
を書き込みます。
内部で string-w-faces
が呼び出されていますので、
(FACE STRING)
も受け付けます。
buffer-alist (&optional nospacep)
buffer-alist
は
(バッファ名 . バッファオブジェクト)
の連想リストを返します。
nospacep
がtならば
隠しバッファを除きます。
read-any-variable (prompt &optional default-value)
read-any-variable
は
read-variable
の亜種で、
全ての変数を対象に
変数名をミニバッファから読み込みます。
標準関数 read-variable
は
ユーザオプションのみが対象です。
frame-alist ()
frame-alist
は
(フレーム名 . フレームオブジェクト)
の連想リストを返します。
標準関数の make-frame-names-alist
と同様ですが、
frame-alist
が返すフレーム名は
逆アルファベット順にソートされます。
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。