问题
What I have so far is
alias em="open -a /Applications/Emacs.app "$@" && osascript -e 'tell application "Emacs.app" to activate'"
But I am stumped.
With that code, em file.txt will activate, but won't open the file. And I get '22:23: syntax error: Expected end of line but found unknown token. (-2741)'
Doing
alias em=open -a /Applications/Emacs.app "$@"
Works fine and then it will open the file, but obviously not bring emacs to the front.
And for some strange reason
osascript -e 'tell application "Emacs.app" to activate'
doesn't activate emacs.... I have no idea what is going on.
I am happy to fix this either with alias code, or with .emacs code
edit: see comments for another thing tried.
回答1:
Could the problem be that you need to escape you quotes, like this?
alias em="open -a /Applications/Emacs.app \"$@\" && osascript -e 'tell application \"Emacs.app\" to activate'"
回答2:
Try this:
(setq ns-pop-up-frames nil)
Works fine for me.
Found it here
回答3:
I have the following in my .bashrc
sourced by my .profile
:
alias emacs='open -a /Applications/Emacs.app "$@"'
And in my .emacs
custom area:
(custom-set-variables
;; yadda yadda
;;...
'(ns-pop-up-frames nil))
Or if you don't like to M-x customize-variable
your way into it, as Jeff said:
(setq ns-pop-up-frames nil)
I didn't need any AppleScript to do this; although I noticed you were missing the end tell
? Anyway, works like a charm for me, pops Emacs open, or uses the existing window if there is one, and it's on top, and the Terminal remains ready for more input.
回答4:
You can use:
emacsclient -nt somefile
in your terminal, which would open specified file(s) in new buffer using your existing frame rather than a new client frame.
http://www.gnu.org/software/emacs/manual/html_node/emacs/emacsclient-Options.html
来源:https://stackoverflow.com/questions/6068819/alias-to-make-emacs-open-a-file-in-a-new-buffer-not-frame-and-be-activated-com