2015-07-21 55 views
4

我試圖使用Emacs作爲Julia的集成計算環境& Python。 ESS(Emacs Speaks Statistics)是我用來交互發送REPL評估選定代碼的插件。Emacs終端列寬(茱莉亞/ python外殼)

C-c C-c選擇代碼,並開始Julia解釋首次組合使用,在後續執行它使用現有Julia會話。

我面臨的挑戰是Julia的終端窗口(即使是Python也是如此)出於某種原因僅使用80 columns作爲輸出。

例如,如果在Julia會話中執行以下代碼,將以三列打印DataFrame df,這三個組包裝在80列。即使我的窗口大小可以輕鬆處理超過200個字符。

using DataFrames 
df=readtable("../../data/titanic/data/train.csv") 


julia> df[1:2, :] 
2x12 DataFrame 
| Row | PassengerId | Survived | Pclass | 
|-----|-------------|----------|--------| 
| 1 | 1   | 0  | 3  | 
| 2 | 2   | 1  | 1  | 

| Row | Name             | Sex  | 
|-----|-------------------------------------------------------|----------| 
| 1 | "Braund, Mr. Owen Harris"        | "male" | 
| 2 | "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" | "female" | 

| Row | Age | SibSp | Parch | Ticket  | Fare | Cabin | Embarked | 
|-----|------|-------|-------|-------------|---------|-------|----------| 
| 1 | 22.0 | 1  | 0  | "A/5 21171" | 7.25 | NA | "S"  | 
| 2 | 38.0 | 1  | 0  | "PC 17599" | 71.2833 | "C85" | "C"  | 

我甚至嘗試手動發射了Emacs的外殼M-x shellJulia會話,甚至將導致80列包裝。

但是,如果我在Julia會話中執行的相同代碼將在正常Mac OSX Terminal內運行,將會正確使用終端的整個寬度。

解決方法/潛在的罪魁禍首

如果我執行上stty sizeOS X Terminal我得到這代表我的終端例如24 157的實際大小適當的輸出。

但是如果我在Emacs shell裏執行stty sizeM-x shell我得到0 0。不管Emacs窗口的大小是什麼,Emacs裏的stty的結果總是0 0

當我手動更改stty設置,比如說stty rows 24 cols 160,然後執行julia我能夠從julia獲得我的輸出以消耗全部160列。

問題

  1. 我怎樣才能讓Emacs的動態調整的stty(設置)或任何機構,將給予預期的結果。
  2. 如果#1是不可能的,這是一個妥協,我必須處理的是可以在.emacs文件中設置靜態stty設置,默認情況下會使用它。

我甚至在Linux機器(CentOS)上試過這個,我也有同樣的問題。

感謝您的幫助。

回答

1

在我看到的emacs M-x shell中,有一個EMACS = t envvar,您可以使用它從.bashrc或同等設置中執行stty設置。但是,如果您使用「Mx ansi-term」,則完全支持終端大小調整,包括動態調整大小,嚴重終端仿真等。更多信息:https://masteringemacs.org/article/running-shells-in-emacs-overview - 如果可能的話,我會強烈推薦此路徑假設沒有人知道更好的一個)。

希望你能夠使用ansi-term,但是如果需要M-x shell,那麼可能會比.profile或.bashrc這樣的行有效。缺點是它會按用戶使用,而用戶在這些腳本中做了大不相同的事情。

[ _"$EMACS" = _t ] && stty cols 160