Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


7 questions online user: 32

0
votes
answers
7 views
+10

emacs ocaml REPL:「搜索程序:沒有這樣的文件或目錄,ocaml」

0

我試圖在Ubuntu 16.04.3在VirtualBox上設置OCaml。我對他們都是新手;請原諒我的無知。我使用emacs ocaml REPL:「搜索程序:沒有這樣的文件或目錄,ocaml」

wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin 

安裝opam,並根據以下的opam安裝說明添加

. /home/<username>/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true 

~/.profile文件。我使用opam install tuaregGNU emacs 24.5.1使用sudo apt-get install emacs來安裝tuareg

當我試圖在Emacs中鍵入M-x run-ocamlreturn使用ocaml REPL,我OCaml REPL to run: ocaml;當我再次打enter,我

Searching for program: no such file or directory, ocaml 

然後我試圖M-x shell,看看我是否可以運行外殼ocaml,我發現我需要使用opam switch我想從終端/ shell中運行ocaml每次;如果我直接鍵入ocaml,我會得到

The program 'ocaml' is currently not installed. You can install it by typing: sudo apt-get install ocaml-interp 

我不知道這是否有什麼關係,我發現了問題。

作爲第二次嘗試,我又回到了Emacs和類型M-x run-ocaml,打return,並在OCaml REPL to run:再次命中return(這次沒有ocaml)。這開闢了一個新的緩衝區:

output file descriptor closed

但是,當我試圖在新的緩衝區類的東西,說1+1;;,並創下shift-return,我得到Output file descriptor of OCaml is closed,如上圖所示。

我一直在閱讀不同的文檔和線索的指示,但他們都沒有描述我的情況。任何幫助將非常感激!

沙发
0
1

也許你應該嘗試像M-x run-ocamlreturn,然後鍵入類似/usr/bin/opam config exec -- ocaml(或任何路徑到您的OPAM安裝),而不是ocaml

板凳
0
0

所以我按照realworldocaml解決了這個問題。我意識到我的帖子中有幾個問題,所以我使用這個答案 分享鏈接中建議的每個解決方案。

@ ghilesZ的回答完美地解決了我的問題標題(謝謝!)中的問題。我應該在M-x命令(正如上面的答案所示)或~/.emacs配置文件中(如鏈接所暗示的)添加ocaml的路徑。完成以下步驟後,可以通過在終端中輸入which ocaml來獲取路徑。

需鍵入

eval `opam config env` 

運行從終端ocaml可以通過將行到~/.bashrc文件來解決。這是因爲在當前shell中輸入命令只會爲當前shell設置一些東西。爲了讓將來的shell自動設置,它需要被添加到登錄腳本中。

0
votes
answers
7 views
+10

Spacemacs:在調出文檔後將光標移回代碼

1

在具有Clojure層的Spacemacs中,如果我做了SPC m h h,它會用文檔信息分割窗口,並將光標移動到包含文檔的新分割區。Spacemacs:在調出文檔後將光標移回代碼

是否有一個鍵盤快捷鍵可以將光標移回到包含代碼的頂部分割點?當光標位於文檔分割中時,我使用的典型vim快捷方式C-w k不起作用。

沙发
0
1

大多數情況下,我只是閱讀文檔並按q關閉文檔窗口。

如果您使用的是evil模式,使用SPC <window_number>也很容易;對我來說最經常的是SPC 1。 在emacs模式下,C-x o也可以工作,但這取決於您擁有多少個窗口。

0
votes
answers
6 views
+10

在emacs中使用不同的包存儲庫

1

我有一個.emacs文件,其中我使用package-install在初始化時自動從存儲庫安裝所需的包。到目前爲止,我正在使用http://melpa.milkbox.net/packages/存儲庫,我通過在線教程獲取了這個存儲庫。在某些時候,我試圖安裝auctex軟件包,並收到一條錯誤消息,告訴我該軟件包在該存儲庫下不可用。我檢查,這是真的。我發現了在GNU存儲庫下的auctexis availablehttp://elpa.gnu.org/packages/在emacs中使用不同的包存儲庫

我試圖做的是:添加第二個包庫(GNU ELPA在這種情況下)我.emacs從該文件是否需要安裝第一個庫(MELPA)下沒有可用的軟件包package-install可以養活。

我不是專家(事實上,我是一個純粹的初學者)在Elisp,我瀏覽了各種線索以找到解決方案。這裏是我的實際代碼:

(package-initialize) 

(require 'package) 

(add-to-list 'package-archives 
      '(("melpa" . "http://melpa.milkbox.net/packages/") 
       ("gnu" . "http://elpa.gnu.org/packages/")) t) 

(package-refresh-contents) 

(dolist (package '(use-package)) 
    (unless (package-installed-p package) 
      (package-install package))) 

(use-package paredit :ensure t) 

(dolist (package '(auctex   ; <-- Not available under MELPA! 
        auto-complete 
        auto-complete-c-headers 
        magit 
        sr-speedbar 
        yasnippet 
        )) 

    (unless (package-installed-p package) 
    (package-install package)) 
    (require package)) 

有了這個代碼在我.emacs文件,當我啓動emacs的時候,我的配置被忽略。我收到此錯誤消息:error: Required feature 'auctex' was not provided

如何修改我的代碼以查看來自GNU ELPA的auctex軟件包?

爲了您的信息,我使用Ubuntu 16.04與GNU Emacs 24.5.1。


編輯:我想補充幾句什麼斯特凡提出:有幾個問題,我的代碼,並分裂我的兩個add-to-list 'package-archives ...)電話似乎沒有,上下班(雖然它是正確的事當然是)。這是由於我的(require package)線路試圖做到:(require auctex)在某些時候。看到this post,看看爲什麼這是一個問題。

我讀到(require 'package-name)安裝後不需要的事實。 This post解釋了原因。刪除此行確保auctex正確加載,因爲它是自動加載的。

從此,一切正常,沒有更多的錯誤或警告。我然後試圖刪除我的線:

(add-to-list 'package-archives 
      '("gnu" . "http://elpa.gnu.org/packages/")) 

auctex包仍然正確加載。

+0

你想用這個做什麼:'(dolist(package'(use-package))...)'?它遍歷列表的唯一元素是符號'use-package' - 僅一次迭代,綁定變量'package'爲符號'use-package'。 – Drew

沙发
0
2

(add-to-list 'package-archives 
      '(("melpa" . "http://melpa.milkbox.net/packages/") 
       ("gnu" . "http://elpa.gnu.org/packages/")) t) 

不加2項列表:add-to-list只增加單個元素到列表中。在這種情況下,它將添加不是有效元素的元素(("melpa" . "http://melpa.milkbox.net/packages/") ("gnu" . "http://elpa.gnu.org/packages/"))

你想要

(add-to-list 'package-archives 
      '("melpa" . "http://melpa.milkbox.net/packages/")) 
(add-to-list 'package-archives 
      '("gnu" . "http://elpa.gnu.org/packages/")) 

但需要注意的是,第二add-to-list應該是多餘的,因爲package-archives默認包含("gnu" . "http://elpa.gnu.org/packages/")了。

一兩件事:你不應該需要require這些軟件包安裝它們(像你做你的代碼的最後一行)之後,由於包應該有足夠的自動加載做出這樣require不必要的(以及有害感覺它會放慢你的啓動)。

0
votes
answers
3 views
+10

emacs elisp切換到緩衝區,並按照

2

我想寫一個命令,會導致Emacs切換到一個新的緩衝區,並執行一些操作(在這種情況下,執行一個shell命令)寫輸出到緩衝區。emacs elisp切換到緩衝區,並按照

(defun test-func() 
    (interactive) 
    (let ((bname "*temp*") 
     (default-directory "/home/me")) 
    (with-output-to-temp-buffer bname 
     (switch-to-buffer bname) 
     (shell-command "ls -l" bname)))) 

在這種情況下,它「工作」,除非在命令完成執行之前它不切換緩衝區。我想立即切換,然後在運行時跟隨輸出。有沒有辦法做到這一點?

沙发
0
1

您需要在switch-to-buffer之後明確呼叫redisplay以使其可見。

請注意,ls是一個相當「快」的命令,它不可能顯示零碎。你可能想嘗試像

while true; do 
    date 
    sleep 10 
done 

一個shell腳本並運行是異步的(或者使用async-shell-command或添加&到命令行的末尾)。

還要注意對shell-command幫助說:

在elisp的,你經常會得到更好的通過調用call-processstart-process直接,因爲它提供了更多的控制權,也不強制使用一個外殼的服務(需要引用參數)。

+0

是的,它切換到緩衝區,但緩衝區不會更新,直到shell命令完成...也許有一種不同的方式叫出來。 – MichaelB

+0

@MichaelB:使用'&',看編輯。 – sds

+0

看起來像重新顯示,然後啓動過程可以做到這一點。 – MichaelB

0
votes
answers
3 views
+10

Emacs中按鍵的重放「腳本」

2

我想在終端中使用asciinema來錄製一些Emacs功能的中等截屏。我可以開始asciinema,然後emacs -nw,做記錄,然後停止。但我發現我總是犯很多錯誤。Emacs中按鍵的重放「腳本」

所以我認爲,如果我能夠以某種格式編寫按鍵的「腳本」,這將是非常好的,這將被饋送給Emacs。就像重放一個鍵盤宏,但時間相當長,並且按鍵之間有延遲(否則錄製速度太快)。

這是可能以某種方式?我願意做一些elisp編程,但不知道從哪裏開始。例如,我可以記錄我的腳本列表,

(list (kbd "C-x C-f") "filename.el" (kbd "C-e") (kbd "C-x C-e") ...) 

,並通過它迭代,轉換按鍵和字符逐字發送字符串,但我怎麼「送」的結果Emacs的?

這將是很好,如果緩衝區切換等工作。

沙发
0
1

您可以記錄一系列用戶操作(鍵盤,菜單等),創建一個鍵盤宏

簡而言之,您使用<f3>開始錄製,<f4>停止錄製。然後您可以使用<f4>(相同的鍵)播放錄音。另外,你可以做各種奇特的事情,但這些都是基礎知識。

有關詳細信息,請參閱Emacs手冊節點Keyboard Macros


您可以顯示其在提示你的截屏中正在使用的按鍵,使用模式showkey-tooltip-mode從庫showkey.el - 見ShowKey

要顯示宏記錄的密鑰,您需要將選項showkey-tooltip-sleep-time設置或綁定到大於零的秒數。 (默認情況下爲零,因此可以通過快速鍵入來防止某些鍵顯示。)

選項showkey-tooltip-key-only-flag控制是否在工具提示中僅顯示鍵或其鍵和命令。

或者,您可以使用模式showkey-log-mode顯示按鍵的增量日誌。

+0

謝謝。我知道鍵盤宏(我在問題中提到它們),但AFAIK格式是不透明的。理想情況下,我寧願記錄小序列,將它們粘貼到一個大的文件中,然後根據需要進行編輯。 –

0
votes
answers
3 views
+10

從組織模式生成info.gz文件

2

我有最新的組織模式(9.1.3),我通過它的git存儲庫(特別是使用)straight-use-package安裝到emacs。信息文件,但是,沒有安裝。我如何手動創建並安裝它?從組織模式生成info.gz文件

我已經看過了git回購和它docorg.texi是文檔的來源。但它不是info.gz文件。我試過命令make doc,我得到的錯誤是no names found, cannot describe anything

沙发
0
0

您應該從主org目錄(doc目錄的父目錄)嘗試make info。但是由於你是在Windows上(我認爲),在生成信息文件的工具鏈中可能缺少一些東西。

但是,您可以在emacs中生成一個info文件:訪問org.texi文件並說??M-x makeinfo-buffer。這假定您已安裝makeinfo(又名texi2any)。請注意,生成的信息文件是未壓縮的:如果要壓縮它們,則需要使用gzip之後手工完成。

的信息文件../../info相對doc目錄中產生,因爲在org.texi下面一行,:

@setfilename ../../info/org.info 

你可以改變,如果你希望他們在其他地方(或移動他們事後)。

+0

我在Debian Linux上。我也嘗試使用主要org目錄中的'make info',並導致錯誤提示'fatal:找不到名稱,無法描述任何內容。我用'apt search'查找了包裝盒texiany,但無法找到它。 – Piglet

+0

'make -n info'說什麼?此外,該程序稱爲makeinfo或texi2any,但*包*稱爲「texinfo」。嘗試安裝和/或查看是否安裝了「makeinfo」。如果是這樣,那麼只需在doc目錄中說'makeinfo org.texi',看看會發生什麼。 – Nick

+0

我安裝了'texinfo',並用'M-x makeinfo-buffer'成功創建了信息文件。 – Piglet

0
votes
answers
1 views
+10

如何在每次啓動時在emacs中顯示菜單欄?

1

我把這個在我的.emacs文件:如何在每次啓動時在emacs中顯示菜單欄?

(custom-set-variables                   
'(gud-gdb-command-name "gdb --annotate=1") 
'(large-file-warning-threshold nil) 
'(menu-bar-mode t) 
'(shell-dirtrack-verbose nil)) 
(custom-set-faces                   
) 
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 

注意(menu-bar-mode t)。當我啓動emacs時,我必須M-x menu-bar-mode才能獲得菜單欄。我正在GNU Emacs的22.1.1(MAC-蘋果達爾文,低碳版1.6.0)

+2

你應該考慮升級到最新的GNU Emacs的:HTTP: //emacsformacosx.com/ – phils 2010-09-25 12:38:17

+0

我確實在Linux上得到了一個Emacs 22.2.1的菜單欄,正是你在'.emacs'中發佈的內容。因此,無論是在你的'.emacs'中還是有其他的東西來關閉菜單欄,或者它是Mac/Carbon特有的問題。 – Gilles 2010-09-25 13:58:13

+0

我嘗試了下面的人的建議;他們沒有工作,但是當我故意在.emacs文件中加入一個錯誤,以至於它不會一直加載(我沒有關閉一個文件),那麼菜單欄就出現了。奇怪的。什麼是emacs的加載順序?是否有其他默認位置在加載系統範圍的.emacs文件? – Avery 2010-09-26 00:37:52

沙发
0
1

你應該考慮升級到最新的GNU Emacs的:

emacsformacosx.com

板凳
0
3

的相關函數的文檔說:

With a numeric argument, if the argument is positive, 
turn on menu bars; otherwise, turn off menu bars. 

所以,你可以嘗試,而不是(menu-bar-mode t)

(menu-bar-mode 1)

這就是說,對我來說(Emacs 23.2.1),通過設置這個Mxcustomize-variablemenu-bar-mode結果在我的自定義設置變量中出現在您的顯示位置,並且在重新啓動時它具有所需的效果。

雖然Emacs的版本可能有所不同。你手動輸入了嗎?建議僅使用customize界面進行更改,因爲犯錯可能會破壞事情。或者可能您的其他設置是無效的? (例如,在Emacs 23.2.1中我不能自定義一個gud-gdb-command-nameshell-dirtrack-verbose變量)OTOH我認爲它仍然可以自定義只能按需加載的庫中的變量,所以這可能並不意味着這可能並不意味着任何東西。)

你可以註釋掉一切在你的自定義變量,如果你想檢查這一點(但要注意的是最後的右括號:)

+0

已確認:'C-u 1 M-x菜單欄模式 - >菜單欄模式已啓用 – leoger 2010-09-25 12:46:16

+0

我嘗試了一切建議(修改調用,註釋掉其他自定義等)。我正在使用「自定義」界面來編輯這些內容,但這些建議都沒有奏效。這可能是一個特定實現/平臺的錯誤。 – Avery 2010-09-26 00:34:18

地板
0
0

我不認爲(menu-bar-mode 1)custom-set-variables內所屬。相反,把它外面,就像您的來電add-hook

(custom-set-variables 
'(gud-gdb-command-name "gdb --annotate=1") 
'(large-file-warning-threshold nil) 
'(shell-dirtrack-verbose nil)) 
(custom-set-faces 
) 
(menu-bar-mode 1) 
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 
+0

我試過這個:不起作用。 – Avery 2010-09-26 00:34:36

+0

您是否嘗試過使用「-Q」調用emacs(假設這甚至可能在OS X上)?這將阻止加載所有啓動文件;如果它使得emacs出現一個菜單欄,那麼你知道一些啓動文件是 - 防止 - 出現菜單欄。我會自己嘗試,但無法訪問Mac。 – offby1 2010-09-27 00:11:51