Support calling Emacs from MATLAB via edit commands.
This commit is contained in:
parent
1b59979886
commit
67e1ede290
2 changed files with 46 additions and 0 deletions
21
toolbox/emacsinit.m
Normal file
21
toolbox/emacsinit.m
Normal file
|
@ -0,0 +1,21 @@
|
|||
function emacsinit(clientcommand)
|
||||
% EMACSINIT Initialize the current MATLAB session for matlab-shell-mode
|
||||
|
||||
if usejava('jvm')
|
||||
% Disable built-in editor showing up for debugging
|
||||
com.mathworks.services.Prefs.setBooleanPref('EditorGraphicalDebugging', false);
|
||||
% Disable the built-in editor for normal editing
|
||||
com.mathworks.services.Prefs.setBooleanPref('EditorBuiltinEditor', false);
|
||||
% Use emacsclient no-wait to send edit requests to a
|
||||
% running emacs.
|
||||
if nargin == 0
|
||||
clientcommand = 'emacsclient -n';
|
||||
end
|
||||
com.mathworks.services.Prefs.setStringPref('EditorOtherEditor', clientcommand);
|
||||
end
|
||||
|
||||
% Use the desktop hotlinking system in MATLAB Shell. matlab-shell
|
||||
% will interpret them, and provide clickable areas.
|
||||
% NOTE: This doesn't work in all cases where HotLinks are used.
|
||||
feature('HotLinks','on');
|
||||
end
|
25
toolbox/opentoline.m
Normal file
25
toolbox/opentoline.m
Normal file
|
@ -0,0 +1,25 @@
|
|||
function opentoline(file, line, column)
|
||||
%OPENTOLINE Open to specified line in function file in Emacs.
|
||||
% This is a hack to override the built-in opentoline program in MATLAB.
|
||||
%
|
||||
% Remove this M file from your path to get the old behavior.
|
||||
|
||||
editor = system_dependent('getpref', 'EditorOtherEditor');
|
||||
editor = editor(2:end);
|
||||
|
||||
if nargin==3
|
||||
linecol = sprintf('+%d:%d',line,column);
|
||||
else
|
||||
linecol = sprintf('+%d',line);
|
||||
end
|
||||
|
||||
if ispc
|
||||
% On Windows, we need to wrap the editor command in double quotes
|
||||
% in case it contains spaces
|
||||
system(['"' editor '" "' linecol '" "' file '"&']);
|
||||
else
|
||||
% On UNIX, we don't want to use quotes in case the user's editor
|
||||
% command contains arguments (like "xterm -e vi")
|
||||
system([editor ' "' linecol '" "' file '" &']);
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue