67197


お世話になります。

Emacsを使っているのですが、新しいパソコンに新しいバージョンをインストールすると、C-x
C-fでファイルやディレクトリを開いたときに、現在開いているバッファが上下に二分割し（C-x
2の状態）、その一方に新しいファイルが、別の方には前のバッファが表示されるようになりました。

なるほど、その方が便利なのかなと思ってしばらく使っていたのですが、そうしたくない時（全画面に新しいファイルやディレクトリを表示したいとき）の方が多いので、上記の新しい動作を抑制したいと思います。

この動作を抑制する.emacs.d/init.elの設定はあるでしょうか。  
また、このような疑問が新たに出てきた場合、自分で回答を見出す方法はあるでしょうか。  
よろしくお願いします。


CC BY-SA 4.0
2020-05-29T03:30:42.080
67112
2020-06-01T13:22:45.013
26673
question
emacs elisp
EmacsでC-x C-fすると、バッファが二分割する動作の抑制


オイラんところの Emacs-26.1 build1 i686-w64-mingw32 で `C-x C-f` つまり `find-file`
を呼んでも、それだけでは画面分割しないです。というわけで、その挙動を示す `Emacs`
バージョンが質問に記載されていると読者の側で再現試験ができます（ないと無理）

* * *

日本語で検索してヒットしないなら、英語で検索するっす。この例では検索キーワードとして `emacs` `find-file` `split`
がぱっと思いつくはず。すると  
<https://stackoverflow.com/questions/51879921/>  
とかヒットするですね。これによると画面が広いと自動分割するような説明があります（が、オイラんとこで再現しないのでなんとも）


CC BY-SA 4.0
2020-05-29T04:37:42.187
67114
2020-05-29T04:37:42.187
8589
67112
answer


質問者です。

実務で焦っていたので、質問の基本をだいぶ外した質問をしてしまいました。  
改めて情報です。

**Emacsのバージョン**

M-x emacs-version

[code]

    GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.13) of 2019-12-15
    
[/code]

**OSのバージョン（Ubuntu）**

[code]

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 20.04 LTS
    Release:        20.04
    Codename:       focal
    
[/code]

**.emacs.d/init.elを読み込まないとどうなるか**

[code]

    $ emacs -q
    
[/code]

で起動したところ、問題の動作は起きませんでした。

**問題の原因**

.emacs.d/init.elを少しずつ削除して問題箇所を選んだところ、以下の部分に当たりました。

これは、google-translateを使ってカーソル位置の英語を日本語にするもので、以下はC-c wを割り当てています。  
もとはるびきちさんのブログからいただいたものですが、ある程度改造して分からなくなってしまっています。

[code]

    ;(require 'google-translate)
    ;(global-set-key (kbd "C-c w") 'google-translate-at-point)
    ;(global-set-key (kbd "C-c W") 'google-translate-query-translate)
    ;
    ;  (require 'popwin)
    ;  (setq display-buffer-function 'popwin:display-buffer)
    ;  
    ;  (require 'google-translate)
    ;  (require 'google-translate-default-ui)
    ;  
    ;  (defvar google-translate-english-chars "[:ascii:]"
    ;    "これらの文字が含まれているときは英語とみなす")
    ;  (defun google-translate-enja-or-jaen (&optional string)
    ;    "regionか現在位置の単語を翻訳する。C-u付きでquery指定も可能"
    ;    (interactive)
    ;    (setq string
    ;          (cond ((stringp string) string)
    ;                (current-prefix-arg
    ;                 (read-string "Google Translate: "))
    ;                ((use-region-p)
    ;                 (buffer-substring (region-beginning) (region-end)))
    ;                (t
    ;                 (thing-at-point 'word))))
    ;    (let* ((asciip (string-match
    ;                    (format "\\`[%s]+\\'" google-translate-english-chars)
    ;                    string)))
    ;      (run-at-time 0.1 nil 'deactivate-mark)
    ;      (google-translate-translate
    ;       (if asciip "en" "ja")
    ;       (if asciip "ja" "en")
    ;       string)))
    ;  
    ;  (push '("\*Google Translate\*" :height 0.5 :stick t) popwin:special-display-config)
    ;  
    ;  (global-set-key (kbd "C-c w") 'google-translate-enja-or-jaen)
    ;  
    ;  
    ;  ;;;;; Fix error of "Failed to search TKK"
    ;  (defun google-translate--get-b-d1 ()
    ;      ;; TKK='427110.1469889687'
    ;    (list 427110 1469889687))
    
[/code]

これをコメント化したところ、問題の現象は起きなくなりました。  
google-translateは使えた方が便利なので、その後はさらに追求します。  
コメントをくださったみなさん、ありがとうございました。

ただ、Emacsの以前のバージョンでは上記のelispを読み込んでも、表題の動作が起きなかったことは確かです。  
なので、元質問のようになってしまいました。  
どのバージョンからアップしたのかは、あいにく覚えていません（スミマセン）。  
なんとも甘い質問者で、反省いたします。


CC BY-SA 4.0
2020-06-01T02:26:24.843
67181
2020-06-01T02:26:24.843
26673
67112
answer


質問者です。  
コメントでヒントをいただいて分かりました。  
Emacs25＝＞26の変更点でpopwinの挙動がおかしくなるという問題があったそうです。  
私の場合は.emacs.d/init.elを

[code]

      (require 'popwin) 
    - (setq display-buffer-function 'popwin:display-buffer) 
    + (popwin-mode 1)
    
[/code]

のように修正すると直りました。


CC BY-SA 4.0
2020-06-01T13:22:45.013
67197
2020-06-01T13:22:45.013
26673
67112
answer