org2blog/wp-mode での ddskk の C-j の挙動について

emacsのorg2blogにてブログの記事を書いていると、日本語入力で不思議な動作になることがあった。よく観察すると直接入力モードから C-j をタイプしてかなモードに変更できていないようであった。

検索するとorg2blogではないようだが、同様の現象に悩んでいる方がいたようだ。

  1. Emacs DDSKKの設定メモ – takeokunn’s blog

開発者の方から解決策を提示されたようでその解決策が下記にある dot.skkskk-C-j-key 関数を使用するもの。

  1. ddskk/dot.skk at master · skk-dev/ddskk

下記のように org2blog/wp モードを追加して、 ~/.skk に記述したところ C-j が正常に動作するようになった。

;; ■モードのまま C-j を有効とする
(defun skk-C-j-key (arg)
  (interactive "P")
  (let ((enable-modes '(lisp-interaction-mode ; eval-print-last-sexp
                        emacs-lisp-mode       ; newline-and-indent
                        org2blog/wp           ; org-newline-and-indent?
                        )))
    (cond
     ((and (null (skk-in-minibuffer-p)) 
           (null skk-henkan-mode)
           (member major-mode enable-modes))
      (skk-emulate-original-map arg))
     (t
      (skk-kakutei arg)))))

(add-to-list 'skk-rom-kana-rule-list
             '(skk-kakutei-key nil skk-C-j-key))

org2blogの投稿時の挙動について

emacsでこのブログの記事を書いて、投稿するときに org2blog-buffer-post-save 関数を実行している。このときに emacs の画面が上下に分割されるため困っていたら解決策が公式の Issue にあった。

  1. emacs window splits on posting · Issue #193 · org2blog/org2blog

下記のように org-export-show-temporary-export-buffer を設定すれば大丈夫。

(setq org-export-show-temporary-export-buffer nil)

Emacs のエクスポート時の日本語に混ざる空白について

このブログはorg2blogで書いているが、どうにも日本語に変な空白が混ざるときがあった。調べると同一の現象を解決しているする方法が2つあった。

  1. org-modeが出力するHTMLから余分な改行を削除する
  2. org-mode で日本語LaTeXを出力する方法 – Qiita

一つ目の方法は perl スクリプトがいることや少し古めの記事であったため、二つ目の方法を採用することにした。

記事のままであるが、下記にその elisp を転載する。

(defun remove-org-newlines-at-cjk-text (&optional _mode)
  "先頭が '*', '#', '|' でなく、改行の前後が日本の文字の場合はその改行を除去する。"
  (interactive)
  (goto-char (point-min))
  (while (re-search-forward "^\\([^|#*\n].+\\)\\(.\\)\n *\\(.\\)" nil t)
    (if (and (> (string-to-char (match-string 2)) #x2000)
             (> (string-to-char (match-string 3)) #x2000))
        (replace-match "\\1\\2\\3"))
    (goto-char (point-at-bol))))

(with-eval-after-load "ox"
  (add-hook 'org-export-before-processing-hook 'remove-org-newlines-at-cjk-text))