web-dev-qa-db-ja.com

Emacsでデフォルトの作業ディレクトリを設定する方法-トラブルシューティング

これは何度も投稿されていますが、解決策がうまくいきません。私はこの投稿から次の解決策を試しました( Emacsのデフォルトフォルダーの変更 ):

  • 解決策1:(cd "C:/Users/Name/Desktop").emacsファイルに追加する
  • 解決策2:(setq default-directory "C:/Documents and Settings/USER NAME/Desktop/" ).emacsファイルに追加する
  • 解決策3:emacsショートカットを右クリックし、プロパティをクリックして、開始フィールドを目的のディレクトリに変更します。

ソリューション3のみが機能しています。残念ながら、ソリューション1または2のいずれかを使用する必要があります。

.emacsファイルから(load-theme 'light-blue t)を追加/削除すると、テーマが正しくロード/アンロードされるため、.emacsファイルは正しいと思います。

これが私の最も最近の.emacsファイルです:

(message "Default Dir: %S" default-directory)
(setq-default default-directory "C:/Users/Lucas/")
(message "Default Dir: %S" default-directory)
(setq-default indent-tabs-mode nil)
(add-hook 'Ruby-mode-hook
      (lambda ()
        (define-key Ruby-mode-map "\C-c#" 'comment-or-uncomment-region)
        )
 )  
(defadvice comment-or-uncomment-region (before slick-comment activate compile)
  "When called interactively with no active region, comment a single line instead."
  (interactive
   (if mark-active (list (region-beginning) (region-end))
     (list (line-beginning-position)
       (line-beginning-position 2)))))
(load-theme 'light-blue t)
;setq default-directory "~/")
(setq-default default-directory "C:/Users/Lucas/")

(defun xp-read-file-name (Prompt &optional dir default-filename mustmatch initial predicate)
(setq last-nonmenu-event nil)
  (funcall (or read-file-name-function #'read-file-name-default)
           Prompt dir default-filename mustmatch initial predicate))

(defun xp-save-as (filename &optional confirm)
  (interactive
   (list (if buffer-file-name
       (xp-read-file-name "Write file: " nil nil nil nil)
     (xp-read-file-name "Write file: " "C:/Users/Lucas/"
         (expand-file-name
          (file-name-nondirectory (buffer-name))
          "C:/Users/Lucas/")
         nil nil))
   (not current-prefix-arg)))
  (or (null filename) (string-equal filename "")
      (progn
  (if (file-directory-p filename)
      (setq filename (concat (file-name-as-directory filename)
           (file-name-nondirectory
            (or buffer-file-name (buffer-name))))))
  (and confirm
       (file-exists-p filename)
       (not (and (eq (framep-on-display) 'ns)
           (listp last-nonmenu-event)
           use-dialog-box))
       (or (y-or-n-p (format "File `%s' exists; overwrite? " filename))
     (error "Canceled")))
  (set-visited-file-name filename (not confirm))))
  (set-buffer-modified-p t)
  (and buffer-file-name
       (file-writable-p buffer-file-name)
       (setq buffer-read-only nil))
  (save-buffer)
  (vc-find-file-hook))
(defun comment-or-uncomment-region-or-line ()
    "Comments or uncomments the region or the current line if there's no active region."
    (interactive)
    (let (beg end)
        (if (region-active-p)
            (setq beg (region-beginning) end (region-end))
            (setq beg (line-beginning-position) end (line-end-position)))
        (comment-or-uncomment-region beg end)
        (next-line)))
(global-set-key (kbd "C-x C-;") 'comment-region)
(setq lazy-highlight-cleanup nil)
(message "Default Dir: %S" default-directory)

私のemacs.exeC:\emacs\emacs-24.3\bin(これもデフォルトのディレクトリですが、C:/Users/Lucas/に変更します)に保存され、私の.emacsは私の家の下にあります-C:\Users\Lucas

[〜#〜]更新[〜#〜]

最近、(setq-default default-directory "C:/Users/Lucas/")を設定するコマンドdefault-directoryが実行されていないことがわかりました。起動直後、これは私の*Messages*バッファです。

Default Dir: "C:\\emacs\\emacs-24.3\\bin/" [3 times]
For information about GNU Emacs and the GNU system, type C-h C-a.

.emacsファイルを上書きしているように動作します。ダブル/トリプルチェックを行いましたが、パスに別の.emacsが見つかりません。また、ショートカットからEmacsを実行していません。任意の提案をいただければ幸いです。すべてのサポートに感謝します。

17
modulitos

あなたが書いたものから、あなたはWindowsを実行しているように聞こえます。 emacsが実際にディレクトリC:\ Users\Lucasから.emacsを見つけてロードしていることを確認しましたか?そうである場合、それはWindowsがホームディレクトリがC:\ Users\Lucasであることを理解していることを意味します。これは、環境変数HOMEで確認できます。 emacsでは、次のことを試してください。

(getenv "HOME")

.emacsファイルには、次のように記述できます。

(setq default-directory "~/")
9
Jeffrey DeLeo

私にとっての問題は初期起動画面 emacsでした。

次の方法で無効にできます。

;; no startup msg  
(setq inhibit-startup-message t)

Emacsのデフォルトのウェルカム画面(チュートリアルリンク付き)では、$HOME 道。


その後、cdまたはsetq default-directory そのようです:

(setq default-directory "~/")

または

(cd "~/")
5
Knowledge

これが私がしたことであり、問​​題なく動作しました:

setq default-directory "C:\\Path\\To\\Directory\\"

保存して再起動しました。 Windows環境では、二重のバックスラッシュが必要だと思います。

2
Justin Schmitz

私はWindows10のEmacs24.3.1で同様の奇妙さに苦しんでいます。解決策はさらに奇妙です。起動画面を禁止するようにEmacsをカスタマイズします。これは、スタートアップカスタマイズボタンを使用して行うことができるため、.emacsに次のようになります。

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(inhibit-startup-screen t))

起動画面が配置されている場合(たとえば、上記のtをnilに変更)、Windowsショートカットの[開始]フィールド(「E:\ Users\Rob \」に設定)が優先され、Ctrl-x Ctrl-fでE:\ Users \が生成されます。 Rob /(奇妙なスラッシュの方向に注意してください)。

起動画面が禁止されている(上記のt).emacs

 (setq default-directory "E:/Users/Rob/me/")

支配し、Ctrl-x Ctrl-fはE:/ Users/Rob/me /(すべてスラッシュ)を生成します。

1

私はテストしたところ、Default-Directoryに関しては問題なく動作しました。私の設定は次のとおりです:

c:\bin\emacs\binのemacs.exe

%PATH%にはc:\bin\emacs\bin\が含まれます

%HOME%%USERPROFILEに設定(C:\ Users \)

ランボックスから直接

Win+remacs -qRET

(message "%s" default-directory) => "C:\ Users\jonpe /"

ディレクトリ変更後のcmd.exeから

Win+rcmdRET

cd c:\users\publicRET

emacs -qRET

(message "%s" default-directory) => "C:\ Users\Public /"

%PATH%変数にemacsを追加しましたか?

その場所を参照してemacsを起動しようとすると、デフォルトのディレクトリを起動すると実行可能ファイルの場所に設定されます。

Initファイルの後にdefault-directorylastを設定すると、その設定がinitファイルの後に役立つと予想される場合が読み込まれます。

Initファイルで以前に設定する必要がある場合(たとえば、initファイルコードの一部が正しい値を取得するように)、それも以前に設定します。 initファイルで何かを行うと、そのようなものが変数値を変更する可能性があります。

すべてのバッファーのデフォルトにしたい場合は、(setq-default default-directory "C:/Documents and Settings/USER NAME/Desktop/")(またはディレクトリー名が何であれ)を使用することもできます。

0
Drew