Undocumented Matlab
  • SERVICES
    • Consulting
    • Development
    • Training
    • Gallery
    • Testimonials
  • PRODUCTS
    • IQML: IQFeed-Matlab connector
    • IB-Matlab: InteractiveBrokers-Matlab connector
    • EODML: EODHistoricalData-Matlab connector
    • Webinars
  • BOOKS
    • Secrets of MATLAB-Java Programming
    • Accelerating MATLAB Performance
    • MATLAB Succinctly
  • ARTICLES
  • ABOUT
    • Policies
  • CONTACT
  • SERVICES
    • Consulting
    • Development
    • Training
    • Gallery
    • Testimonials
  • PRODUCTS
    • IQML: IQFeed-Matlab connector
    • IB-Matlab: InteractiveBrokers-Matlab connector
    • EODML: EODHistoricalData-Matlab connector
    • Webinars
  • BOOKS
    • Secrets of MATLAB-Java Programming
    • Accelerating MATLAB Performance
    • MATLAB Succinctly
  • ARTICLES
  • ABOUT
    • Policies
  • CONTACT

Changing Matlab's Command Window colors – part 2

May 9, 2009 9 Comments

Following my post on Changing Matlab’s Command Window colors, I received an email asking whether it was possible to temporarily set the Command-Window (CW)’s text color, so that subsequent disp or fprintf commands will be displayed in some specific text color.
The short and simple answer is no: You can change the text color as described in that post, but once you modify it, the entire CW text will be modified accordingly.
Unfortunately, CW (like Swing’s standard JTextArea of which CW is an instance) does not automatically support HTML formatting as most other uicontrols. In fact, CW’s default Document object, which holds all the text-area’s text and font style information, is an extension of Swing’s javax.swing.text.PlainDocument, which does not allow any text style formatting. And the CW object itself is a simple JTextArea, which does not enable using a styled Document object. Perhaps in a future version MathWorks would be willing to use the almost identical (syntactically-wise) JTextPane, which does enable styled text runs.
To a very limited degree, you can use the fact that hyperlinks and error messages have separate styles than standard text (respectively, blue underlined and red). So, you can output text in these styles as follows:

% Use hyperlink style:
>> disp('<a href="">my text</a>')
my text
% Use STDERR (fid=2) style:
>> fprintf(2,'my text\n')
my text

Note: you could possibly get a handle to the JTextArea (see the previous post) and then set its UI property to your tailor-made Java UI class. In this class you can set text segment properties based on whichever properties you wish. This is apparently how Matlab overcame JTextPane’s limitations: they implemented a custom com.mathworks.mde.cmdwin.CmdWinSyntaxUI class that extends javax.swing.plaf.basic.BasicTextAreaUI. But implementing such a custom UI class while retaining Matlab’s syntax-highlighting functionality is most probably very difficult and not worth the effort. So we’ll just wait for some supported method in a future Matlab release.
Addendum (May 13, 2009): I have found a way to enable display of text in any color, as well as underline, in the Command Window. See my post on cprintf for details.

Related posts:

  1. Changing Matlab's Command Window colors – Matlab's Command Window foreground and background colors can be modified programmatically, using some of Matlab's undocumented internal Java classes. Here's how....
  2. Command Window text manipulation – Special control characters can be used to format text output in Matlab's Command Window. ...
  3. EditorMacro v2 – setting Command Window key-bindings – The EditorMacro utility was extended to support built-in Matlab Editor and Command-Window actions and key-bindings. This post describes the changes and the implementation details....
  4. Bold color text in the Command Window – Matlab Command Window text can be formatted *bold* since R2011b. ...
  5. Another Command Window text color hack – Matlab's fprintf command has an undocumented hack to display orange-colored text. ...
  6. cprintf – display formatted color text in the Command Window – cprintf is a utility that utilized undocumented Matlab desktop functionalities to display color and underline-styled formatted text in the Command Window...
Desktop
Print Print
« Previous
Next »
9 Responses
  1. Ken Orr May 11, 2009 at 04:51 Reply

    Hi Yair,

    Clever use of the tools at hand! We would definitely like to allow users to change the color of their text in the Command Window (this is a frequent request). We’re thinking about more robust highlighting mechanisms now.

    Depending on your needs, publishing could also serve as an intermediate solution, as you could embed HTML into your output, which would then be rendered by a web browser.

    -Ken

  2. cprintf - display formatted color text in the Command Window | Undocumented Matlab May 16, 2009 at 10:46 Reply

    […] In earlier posts I showed how to modify the Command Window (CW) text and background color, and a very limited method of displaying red (error) and blue (hyperlinked) CW messages. Since then, I was obsessed with finding a better way to CW display text in any color. After lots […]

  3. Malcolm Lidierth October 9, 2011 at 09:35 Reply

    N.B. href=””
    can be used add a matlab command to run when the text is clicked
    href=”matlab:disp(‘Command replaces disp(….) etc’)”

  4. Rohan October 10, 2011 at 07:35 Reply

    I am Beginner to MATLAB. By using the command NET.addAssembly i am loading .NET Assembly. Instantiating the object of Assembly’s class i am invoking the methods of the class.

    Passing the parameter such as double, char to method of assembly class its working fine.

    But when i am trying to pass cell array to method of instantiated class its showing the error parameter mismatch.

    i have done following procedure

    s=NET.addAssembly('name of assembly')
    t = s.AssemblyHandle.GetType('Class present in assembly');
    obj = System.Activator.CreateInstance(t);
    obj.PassCellArray(CellArray);

    s=NET.addAssembly('name of assembly') t = s.AssemblyHandle.GetType('Class present in assembly'); obj = System.Activator.CreateInstance(t); obj.PassCellArray(CellArray);

    .NET MEthod

    public void PassCellArray(System.Object[] dd) {}

    public void PassCellArray(System.Object[] dd) {}

    As reference from MATHWORKS, using this object passing the Cell array to method which has parameter as System.Object[].

    So please help me for how to pass cell array to .NET method.

    • Yair Altman October 10, 2011 at 08:24 Reply

      @Rohan – Try converting your cell array into a regular array; also ensure that your array contents can be directly converted into System.Object.

      A better place for this and similar questions would be on StackOverflow or the CSSM newsgroup or to directly ask MathWorks technical support. This website is not a general Matlab Q&A forum…

  5. Monsters Inc - Octave:Улучшаем качество сценариев и не только March 19, 2012 at 04:33 Reply

    […] Маленькое замечание , возможно кто нибудь захочет сделать часть вывода цветным. Пока такая возможность не доступна как и не одступен пока описанная в документации поддержка echo (octave -x). Почему нельзя делать цветной вывод, максимум что вы можете сделать цветным это приглашение вашего терминала PS1 в файле .octaverc . Возможно (не проверял)также изменить цвет для вывода сообщений об ощибках, как это сделано в qtOctave и использовать в некоторых функциях, вывод, как вывод ошибки, подробнее […]

  6. Octave: Улучшаем сценарии | Crafting blog March 27, 2013 at 04:29 Reply

    […] Маленькое замечание , возможно кто нибудь захочет сделать часть вывода цветным. Пока такая возможность не доступна как и не одступен пока описанная в документации поддержка echo (octave -x). Почему нельзя делать цветной вывод, максимум что вы можете сделать цветным это приглашение вашего терминала PS1 в файле .octaverc . Возможно (не проверял)также изменить цвет для вывода сообщений об ощибках, как это сделано в qtOctave и использовать в некоторых функциях, вывод, как вывод ошибки, подробнее […]

  7. Заметки по Octave | Crafting.be September 6, 2013 at 16:41 Reply

    […] Почему нельзя делать цветной вывод, максимум что вы можете сделать цветным это приглашение вашего терминала PS1 в файле .octaverc . Возможно (не проверял)также изменить цвет для вывода сообщений об ошибках, как это сделано в qtOctave и использовать в некоторых функциях, вывод, как вывод ошибки, подробнее […]

  8. Another Command Window text color hack | Undocumented Matlab November 6, 2013 at 11:02 Reply

    […] built-in fprintf or disp commands. Back in 2009, I explained the undocumented ability to display red or hyperlinked text using fprintf, or colored and underlined text using my cprintf utility. I followed this up […]

Leave a Reply
HTML tags such as <b> or <i> are accepted.
Wrap code fragments inside <pre lang="matlab"> tags, like this:
<pre lang="matlab">
a = magic(3);
disp(sum(a))
</pre>
I reserve the right to edit/delete comments (read the site policies).
Not all comments will be answered. You can always email me (altmany at gmail) for private consulting.

Click here to cancel reply.

Useful links
  •  Email Yair Altman
  •  Subscribe to new posts (feed)
  •  Subscribe to new posts (reader)
  •  Subscribe to comments (feed)
 
Accelerating MATLAB Performance book
Recent Posts

Speeding-up builtin Matlab functions – part 3

Improving graphics interactivity

Interesting Matlab puzzle – analysis

Interesting Matlab puzzle

Undocumented plot marker types

Matlab toolstrip – part 9 (popup figures)

Matlab toolstrip – part 8 (galleries)

Matlab toolstrip – part 7 (selection controls)

Matlab toolstrip – part 6 (complex controls)

Matlab toolstrip – part 5 (icons)

Matlab toolstrip – part 4 (control customization)

Reverting axes controls in figure toolbar

Matlab toolstrip – part 3 (basic customization)

Matlab toolstrip – part 2 (ToolGroup App)

Matlab toolstrip – part 1

Categories
  • Desktop (45)
  • Figure window (59)
  • Guest bloggers (65)
  • GUI (165)
  • Handle graphics (84)
  • Hidden property (42)
  • Icons (15)
  • Java (174)
  • Listeners (22)
  • Memory (16)
  • Mex (13)
  • Presumed future risk (394)
    • High risk of breaking in future versions (100)
    • Low risk of breaking in future versions (160)
    • Medium risk of breaking in future versions (136)
  • Public presentation (6)
  • Semi-documented feature (10)
  • Semi-documented function (35)
  • Stock Matlab function (140)
  • Toolbox (10)
  • UI controls (52)
  • Uncategorized (13)
  • Undocumented feature (217)
  • Undocumented function (37)
Tags
ActiveX (6) AppDesigner (9) Callbacks (31) Compiler (10) Desktop (38) Donn Shull (10) Editor (8) Figure (19) FindJObj (27) GUI (141) GUIDE (8) Handle graphics (78) HG2 (34) Hidden property (51) HTML (26) Icons (9) Internal component (39) Java (178) JavaFrame (20) JIDE (19) JMI (8) Listener (17) Malcolm Lidierth (8) MCOS (11) Memory (13) Menubar (9) Mex (14) Optical illusion (11) Performance (78) Profiler (9) Pure Matlab (187) schema (7) schema.class (8) schema.prop (18) Semi-documented feature (6) Semi-documented function (33) Toolbar (14) Toolstrip (13) uicontrol (37) uifigure (8) UIInspect (12) uitools (20) Undocumented feature (187) Undocumented function (37) Undocumented property (20)
Recent Comments
  • Rolf (18 days 2 hours ago): Disclosure: This comes from the developer/vendor of the Code Checker for MATLAB. Have a look at the Code Checker for MATLAB by MonkeyProof Solutions which has many such (configurable)...
  • Yair Altman (25 days 20 hours ago): In theory you could use the data: URI scheme (e.g. .load('data:text/html,<html ><body>Hello world</body></html>')), but for some reason it doesn’t work well in...
  • Sebastian (26 days 1 hour ago): Thanks for your update to the now unsupported `HTMLBrowserPanel`. I tried to replace it with the `LightweightHelpPanel` but the application I am working on is showing generated...
  • Leuze (48 days 2 hours ago): Hello, I would like to add a new object into SLDD and display columns according to my object properties <>
  • Eric Delgado (77 days 5 hours ago): Hey Yair, I think your site is the right place to share that I wrote ccTools, a lib that allows a lot of customizations of Matlab built-in web components (such as uifigure,...
  • Eric Delgado (77 days 5 hours ago): Hey guys, first of all, thanks to @Yair, your site saved me a lot of times! 🙂 That’s why I am sharing that I wrote m2mlapp (*.m => *.mlapp) file conversion, that...
  • François (94 days 2 hours ago): more than 10 years later it helps me after struggling few hours, so thanks you very much !
  • Yair Altman (95 days 0 hours ago): I am not familiar with a universal catch-all tab-completion mechanism for all functions, and it also doesn’t make much sense to me, because different functions use...
  • Arye (95 days 19 hours ago): hi, is there a universal functionSignature.json file that will allow my to get the function hints when opening brackets of my funcs? something that automaticly recognize my function...
  • Sunham (98 days 13 hours ago): This is an old article, but the issue persists even in 2023. 2023a: z = mat2cell(1:1e6,1,repmat(1,1,1e 6)); f = @() cellfun(‘isempty’, z); g = @() cellfun(@isempty,z);...
  • Yair Altman (108 days 3 hours ago): Robot only runs when you tell it to run a command such as keyPress. If you don’t tell it to run a command, it uses no CPU, so there’s no need to remove the Robot...
  • Eric (108 days 14 hours ago): Hey @Kevin, can you share your code about create group of figures in the AppContainer? The container of multiples uifigures could be an amazing improvement over AppDesigner and its...
  • Elsa Smith (109 days 5 hours ago): I recently used java.awt.Robot to perform GUI testing on MATLAB and found it to be an extremely easy and useful way to control mouse movements.
  • Elsa Smith (109 days 6 hours ago): I’m suspecting that the slow performance of my GUI may be due to the use of java.awt.Robot. Is there a way to cancel/stop/remove the robot after it has been created, or is...
  • Michelle Kline (109 days 23 hours ago): *edit* tip about fopen(), not about fwrite(). ‘Wb’ vs. ‘wb’
Contact us
Captcha image for Custom Contact Forms plugin. You must type the numbers shown in the image
Undocumented Matlab © 2009 - Yair Altman
This website and Octahedron Ltd. are not affiliated with The MathWorks Inc.; MATLAB® is a registered trademark of The MathWorks Inc.
Scroll to top