ARCHIVE  ENTRY  COMMENT  TRACKBACK  CATEGORY  RECOMMEND  LINK  PROFILE  OTHERS
<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
2016.02.25 Thursday

スポンサーサイト

一定期間更新がないため広告を表示しています

2016.01.27 Wednesday

[Emacs] 外で作業するときに重要な情報を隠すマイナーモード

指定したキーワード (正規表現) をパスワードみたいに *** で表示する。

(defvar my-secret-words nil)

(make-face 'my-secret-words-face)
(set-face-attribute 'my-secret-words-face nil :background "red" :foreground "red")

(defun my-secret-words--jit-hider (b e)
  (save-excursion
    (remove-overlays b e 'category 'my-secret-words)
    (dolist (word my-secret-words)
      (goto-char b)
      (while (search-forward-regexp word e t)
        (let* ((b (match-beginning 0))
               (e (match-end 0))
               (ov (make-overlay b e)))
          (overlay-put ov 'category 'my-secret-words)
          (overlay-put ov 'display (make-string (- e b) ?*)))))))

(defun my-secret-words--post-command ()
  (let ((ovs (overlays-at (point)))
        (message-log-max nil))
    (dolist (ov ovs)
      (when (eq (overlay-get ov 'category) 'my-secret-words)
        (message (buffer-substring (overlay-start ov) (overlay-end ov)))))))

(define-minor-mode my-secret-words-mode
  "Minor mode to hide secret words in the buffer."
  :init-value nil
  :global nil
  :lighter "Secr"
  (cond (my-secret-words-mode
         (jit-lock-mode 1)
         (jit-lock-register 'my-secret-words--jit-hider)
         (add-hook 'post-command-hook 'my-secret-words--post-command nil t))
        (t
         (remove-hook 'post-command-hook 'my-secret-words--post-command t)
         (jit-lock-unregister 'my-secret-words--jit-hider)
         (remove-overlays (point-min) (point-max) 'category 'my-secret-words))))

(define-globalized-minor-mode my-global-secret-words-mode
  my-secret-words-mode
  (lambda () (my-secret-words-mode 1)))


隠すキーワードの設定

(setq my-secret-words '("氏" "名" "メアド"))


モードを有効に

M-x my-secret-words-mode
M-x global-my-secret-words-mode

2016.01.21 Thursday

[Emacs] 「、。」をよしなに「,.」に変換してくれるマイナーモード

M-x my-auto-kutoten-mode を呼ぶと、開いているファイルの中に「,.」があれば「、。」のキーを「,.」に置き換え、そうでなければ何もしない。

(define-minor-mode my-auto-kutoten-mode
  "Auto 句読点 mode。"
  :init-value nil
  :global nil
  :keymap (let ((kmap (make-sparse-keymap)))
            (define-key kmap "、" ",")
            (define-key kmap "。" ".")
            kmap)
  (when (and my-auto-kutoten-mode
             (save-excursion
               (goto-char (point-min))
               (not (and (search-forward "," nil t)
                         (search-forward "." nil t)))))
    (my-auto-kutoten-mode -1)))

.tex を開いた時に自動的に有効にするには

(add-hook 'latex-mode-hook 'my-auto-kutoten-mode)

2015.06.09 Tuesday

Source Code Pro とさわらびフォントを合わせてみた

日本語フォントをいろいろ見ていて、さわらびフォントがとても気に入ったのだけど、 Source Code Pro といまいち調和しなかったのでさわらびフォントを改造してみた。

書いた fontforge スクリプト:
 

#!/usr/bin/fontforge -script

Open("SawarabiGothic-Medium.otf")
SelectWorthOutputting()

# adjust parameters to SourceCodePro
Print("Sawarabi: Adjusting...")
ScaleToEm(750, 250)
SetOS2Value("WinAscent", 984)
SetOS2Value("WinDescent", 273)
SetOS2Value("HHeadAscent", 984)
SetOS2Value("HHeadDescent", -273)
SetOS2Value("HHeadLineGap", 0)
SetOS2Value("TypoAscent", 750)
SetOS2Value("TypoDescent", -250)
SetOS2Value("TypoLineGap", 0)

# widen 120%
Print("Sawarabi: Widening...")
SetWidth(120, 2)
CenterInWidth()

# lighten
Print("Sawarabi: Lightening...")
ExpandStroke(7, 0, 0, 0, 2)

# set fontnames
SetFontNames("SawarabiGothic_phi", "SawarabiGothic phi")
SetTTFName(0x411, 1, "さわらびゴシック phi")
SetUniqueID(0)

# generate font file
Print("Sawarabi: Generating...")
Generate("SawarabiGothicPhi-Regular.otf")

Close()


各種パラメータを Source Code Pro と同じにして、ついでに文字を少し細くする。
字間も Source Code Pro と等幅になるように調整。

合ってるかはよくわからないけど、ワーニングもりもり吐きながらもとりあえず動いたのでヨシ。

源ノ角の Regular とちょうど同じくらいの太さになるので、足りない漢字は源ノ角で補えばいい感じ。フォントは難しいほんと。
2014.07.20 Sunday

パワーポイントの図をepsにする

パワーポイントで図を作る


OpenOffice Draw に貼って、右クリック → 画像として保存


ファイル形式にepsが選べる!楽しい!


----

図がおかしくなるときは、一度「変換>多角形に変換」してから「変換>メタデータに変換」するとうまくいくことがある
2013.05.13 Monday

マージンを入れたらなんか集中できそうな気がした

(defvar my-automargin-margin 30)

(defun my-window-width (&optional window)
  (let ((margins (window-margins window))
        (width (window-width window)))
    (+ width
       (or (car margins) 0)
       (or (cdr margins) 0))))

(defun my-automargin-function ()
  (let ((margin (if (= (frame-width) (my-window-width))
                    my-automargin-margin 0)))
    (dolist (window (window-list))
      (set-window-margins window margin margin))))

(add-hook 'window-configuration-change-hook 'my-automargin-function)

ウィンドウが横に分割されてない場合、自動的にマージンを入れる。
2013.04.22 Monday

ido-modeのキーバインド。

 こうするとちょっとzshっぽくなって素敵。

(defun my-ido-spc-or-next ()
    (interactive)
    (if (= (length ido-matches) 1)
        (call-interactively 'ido-exit-minibuffer)
      (unless (= (length ido-text) 0)
        (call-interactively 'ido-restrict-to-matches))
      (call-interactively 'ido-next-match)))

(defun my-ido-hook ()
    (define-key ido-completion-map (kbd "C-n") 'ido-next-match)
    (define-key ido-completion-map (kbd "C-p") 'ido-prev-match)
    (define-key ido-completion-map (kbd "TAB") 'my-ido-spc-or-next)
    (define-key ido-completion-map (kbd "<S-tab>") 'ido-prev-match)
    (define-key ido-completion-map (kbd "SPC") 'ido-restrict-to-matches))

(add-hook 'ido-minibuffer-setup-hook 'my-ido-hook)
2013.03.28 Thursday

multiple-cursors-modeでもisearchを使いたい

 使いたかった。
のでmultiple-cursors対応のisearchもどきを作ってみた。


ソースはこっち。

2013.03.22 Friday

multiple-cursors hacks for cua-mode

(defadvice mc--maybe-set-killed-rectangle
  (around mc--maybe-set-cua--killed-rectangle activate)
  (let ((entries (mc--kill-ring-entries)))
    (unless (mc--all-equal entries)
      (setq killed-rectangle entries
            cua--last-killed-rectangle
            (cons (and kill-ring (car kill-ring)) entries)))))

multiple-cursorsから抜けた直後にcua-pasteすると、各カーソルのキルリングをあわせて矩形貼り付け。

(defadvice cua-paste
  (before mc--maybe-set-cua--killed-rectangle activate)
  (when (and multiple-cursors-mode
             cua--last-killed-rectangle)
    (let* ((n 1))
      (mc/for-each-cursor-ordered
       (let ((kill-ring (overlay-get cursor 'kill-ring))
             (kill-ring-yank-pointer (overlay-get cursor 'kill-ring-yank-pointer)))
         (kill-new (or (nth n cua--last-killed-rectangle) ""))
         (overlay-put cursor 'kill-ring kill-ring)
         (overlay-put cursor 'kill-ring-yank-pointer kill-ring-yank-pointer)
         (setq n (1+ n)))))
    (setq cua--last-killed-rectangle nil)))

逆に、cua-modeで矩形をコピーした直後にmultiple-cursorsに入ると、矩形の各行をそれぞれ各カーソルのキルリングに登録。

mutiple-cursorsはほんとうによくできてて、コード読むとけっこう勉強になる。
2013.03.17 Sunday

[emacs] "multiple-cursors"実行中でも使えるジャンプコマンド。

が欲しかったので作ってみた。

サンプル動画:

コードはgithub:

multiple-cursors最高やで!

2013.03.11 Monday

electric-case.elを更新。

変換の起こる条件を厳しくしたので、まじかここで変換するのかって感じの動作が減ったはず。
key-comboあたりと若干かみ合わないところがあったり、ストレスなく使うにはもう少し調整がいるなあ。

Powered by
30days Album
PR