パス文字列を次のように連結する必要があるため、.emacs
ファイルに次の行を追加しました。
(setq org_base_path "~/smcho/time/")
(setq org-default-notes-file-path (concatenate 'string org_base_path "notes.org"))
(setq todo-file-path (concatenate 'string org_base_path "gtd.org"))
(setq journal-file-path (concatenate 'string org_base_path "journal.org"))
(setq today-file-path (concatenate 'string org_base_path "2010.org"))
私がする時 C-h vtoday-file-path
RET チェックするために、変数が割り当てられていません。
私のコードの何が問題になっていますか?パス文字列を連結する他の方法はありますか?
私は問題が間違った設定が原因であることがわかりました、コードは実際に機能します。私のコードよりも良い答えをありがとう。
(concat "foo" "bar")
ではなく(concatenate 'string "foo" "bar")
を使用できます。どちらも機能しますが、もちろん前者の方が短いです。
まず、「_」は使用しないでください。代わりに「-」を使用してください。これを.emacsに挿入し、emacsを再起動して(またはバッファーでS-expを評価して)、効果を確認します。
(setq org-base-path (expand-file-name "~/smcho/time"))
(setq org-default-notes-file-path (format "%s/%s" org-base-path "notes.org")
todo-file-path (format "%s/%s" org-base-path "gtd.org")
journal-file-path (format "%s/%s" org-base-path "journal.org")
today-file-path (format "%s/%s" org-base-path "2010.org"))
expand-file-nameを使用して、ディレクトリに関連するファイル名を作成します。
(let ((default-directory "~/smcho/time/"))
(setq org-default-notes-file-path (expand-file-name "notes.org"))
(setq todo-file-path (expand-file-name "gtd.org"))
(setq journal-file-path (expand-file-name "journal.org"))
(setq today-file-path (expand-file-name "2010.org")))