# SciTE + ConEmu + Julia with AutoHotkey

**URL:** <https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710>\
**Category:** Tooling\
**Created:** [October 23, 2018, 10:43pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710 "2018-10-23T22:43:28Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 23, 2018, 10:43pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/1 "2018-10-23T22:43:28Z")

</div>

Hello,

I made an AutoHotkey (v2 64-bit) script that connects SciTE and Julia because none of the IDE’s out there worked for me (probably my fault). All outputs in Julia REPL console are read from conhost.exe’s output buffer in memory. The output is then sent to SciTE’s output pane through the SciTE Director Interface, thus allowing infinite scrollback (more than Command Prompt’s 9999 or ConEmu’s 32766 limit). Single line commands and code blocks can be sent to Julia via keyboard shortcut CTRL+E (supports multi-select), and the entire file can be run with CTRL+R (after saving). This is done through the clipboard after parsing the code or filename with SciTE’s builtin lua (so tabbed lines will display properly inside the REPL console). Existing clipboard data is saved before the operation and restored afterwards. The console app used here is ConEmu because it allows the use of Unifont, which is capable of displaying all Unicode plane 0 characters. The current configurations of SciTE and ConEmu _should_ allow for them to function as is. I modified SciTE’s builtin Python lexer properties to enable code folding and highlighting for Julia.

To try this out you should:

1. Download the entire project from GitHub ([GitHub - oif2003/JuliaSciTEConEmu: Connect SciTE, ConEmu, and Julia with AutoHotkey v2](https://github.com/oif2003/JuliaSciTEConEmu))
2. Run “start.bat” (this will also set your SciTE\_HOME variable to “\JuliaSciTEConEmu\wscite”)
3. On first run it should ask you to locate “julia.exe” which is usually found at “C:\Users\UserName\AppData\Local\Julia-X.X.X\bin”  
…(Delete “config.ini” to change this later)
4. Try keyboard shortcuts such as CTRL+E, CTRL+R, or CTRL+1 (fix indentation of selected code with lua)

Links:  
Julia: [https://julialang.org/](https://julialang.org/)  
SciTE 64-bit for Windows: [https://sjohannes.wordpress.com/scite-win64-nightly/](https://sjohannes.wordpress.com/scite-win64-nightly/)  
Unifont: [GNU Unifont Glyphs](http://unifoundry.com/unifont/index.html)  
ConEmu: [https://conemu.github.io/](https://conemu.github.io/)  
This Repo: [GitHub - oif2003/JuliaSciTEConEmu: Connect SciTE, ConEmu, and Julia with AutoHotkey v2](https://github.com/oif2003/JuliaSciTEConEmu)

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [October 24, 2018, 12:28am UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/2 "2018-10-24T00:28:35Z")

</div>

It is really great to hear that. I heard SciTE is even better than notepad++ in terms of performance. I always want to try it. My question is how can I set it up on Linux?

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 24, 2018, 4:22am UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/3 "2018-10-24T04:22:49Z")

</div>

I don’t have Linux and AutoHotkey does not run on it either, but I imagine you can use an equivalent scripting language for automation on Linux for one way or maybe two way communication between SciTE and Julia. I really like SciTE, too because you can macro with lua and do nifty things like multi select, multi paste/edit, and rectangular selection. Perhaps some of the lua code would be of some use to you at least.

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [October 24, 2018, 6:28pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/4 "2018-10-24T18:28:11Z")

</div>

I just got scite set up for my Linux machine. Do you mind sharing me your user configuration code for scite? I want to see what features are available. Thanks.

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 25, 2018, 1:03am UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/5 "2018-10-25T01:03:44Z")

</div>

Sure, here it is. It doesn’t display properly here so you might want to check out the documentations or get my config files (SciTEUser.properties and SciTEGlobal.properties) from my GitHub under the “wsite” folder. User settings \> Global settings and Global settings tend to get rewritten when you update, so keep that in mind.

For more info see:

1. [SciTE FAQ](https://www.scintilla.org/SciTEFAQ.html)
2. [SciTE](https://www.scintilla.org/SciTEDoc.html)

SciTEUser.properties:

## Between sessions  
session.bookmarks=1  
session.folds=1  
;window position  
position.left=913  
position.top=0  
position.width=937  
position.height=1088  
save.session=1  
save.recent=1  
save.position=1  
save.find=1

## Behavior  
;Find and replace  
find.close.on.find=0  
find.use.strip=0  
replace.use.strip=0  
highlight.current.word=1  
selection.multiple=1  
selection.additional.typing=1  
selection.multipaste=1

## Appearance  
font.base=$(font.monospace)  
font.small=$(font.monospace)  
font.comment=$(font.monospace)  
font.text=$(font.monospace)  
font.text.comment=$(font.monospace)  
font.embedded.base=$(font.monospace)  
font.embedded.comment=$(font.monospace)  
font.vbs=$(font.monospace)

horizontal.scrollbar=0  
blank.margin.left=5  
line.margin.visible=1  
line.margin.width=4  
statusbar.visible=0  
code.page=65001  
fold.symbols=3  
caret.line.back=#FF0000  
caret.line.back.alpha=15

tabbar.hide.one=1  
tabbar.hide.index=1   
tabbar.multiline=1   
toolbar.visible=1   
toolbar.large=1

;output pane settings  
output.code.page=65001  
split.vertical=0  
output.initial.hide=0  
output.vertical.size=200  
output.scroll=2  
output.horizontal.scrollbar=0

## Block uncomment (ctrl+Q) for dark theme (breaks output pane)  
#~ style.\*.32=$(font.base),back:#000000,fore:#ffffff  
#~ style.\*.33=back:#C0C0C0,$(font.base)  
#~ style.\*.37=fore:#939393  
#~ caret.fore=#FFFFFF  
#~ selection.alpha=75  
#~ selection.back=#FFFFFF  
#~ colour.keyword=fore:#649bff  
#~ colour.operator=fore:#727272

indent.size=4  
tabsize=4  
use.tabs=1  
tab.indents=1  
fold.comment=1  
virtual.space=3

## Lua Macro Shortcuts  
command.name.1.\*=Fix Identation  
command.subsystem.1.\*=3  
command.1.\*=dofile $(SciteDefaultHome)\fixindent.lua  
command.mode.1.\*=savebefore:no

command.name.9.\*=juliacode.lua  
command.subsystem.9.\*=3  
command.9.\*=dofile $(SciteDefaultHome)\juliacode.lua  
command.mode.9.\*=savebefore:no

command.name.6.\*=juliascript.lua  
command.subsystem.6.\*=3  
command.6.\*=dofile $(SciteDefaultHome)\juliascript.lua  
command.mode.6.\*=savebefore:yes

command.name.8.\*=lockoutputpane.lua  
command.subsystem.8.\*=3  
command.8.\*=dofile $(SciteDefaultHome)\lockoutputpane.lua  
command.mode.8.\*=savebefore:no

command.name.7.\*=unlockoutputpane.lua  
command.subsystem.7.\*=3  
command.7.\*=dofile $(SciteDefaultHome)\unlockoutputpane.lua  
command.mode.7.\*=savebefore:no

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 25, 2018, 2:27pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/6 "2018-10-25T14:27:44Z")

</div>

Just found the commands to move entire lines up and down. You can use them as a lazy way to select the current line, too.

## User defined key commands  
user.shortcuts=\  
Alt+Up|SCI\_MOVESELECTEDLINESUP|\  
Alt+Down|SCI\_MOVESELECTEDLINESDOWN|\

More commands you can keybind:  
[https://www.scintilla.org/ScintillaDoc.html#KeyboardCommands](https://www.scintilla.org/ScintillaDoc.html#KeyboardCommands)

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [October 25, 2018, 6:49pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/7 "2018-10-25T18:49:37Z")

</div>

Thanks so much. I really found this community very helpful. Two weeks ago, I was thinking if I could find some introductory learning materials about GPU programming with Julia, then a post about it showed up. Last week, I was thinking about editing my Julia code in scite, then your post came out.

PS: I personally think adding Julia support to Scite in Linux makes more sense, because in windows we already have Julia support for notepad++. Scite is also based on Scintilla but is available on both windows and linux, and in many cases is considered alternative of notepad++ in Linux.

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 25, 2018, 7:36pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/8 "2018-10-25T19:36:04Z")

</div>

You’re welcome. SciTE can be controlled through Window Message (WM\_COPYDATA), and it’s output pane is a bonus since I already have the AutoHotkey code to read console output. I remember when I tried Notepad++, I couldn’t get code folding to work reliably. As for Julia support for SciTE on Linux, perhaps you can lead the charge there?

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [October 26, 2018, 8:38pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/9 "2018-10-26T20:38:24Z")

</div>

How can I make the indent guidelines more visible? I mean, thicker and darker…

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 26, 2018, 11:48pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/10 "2018-10-26T23:48:40Z")

</div>

Try putting this in your lexer properties file:  
style. **_lexer_**.37=fore: **_#FF0000_**

Change the word “lexer” to the language you are using for syntax highlighting. #FF0000 is the hex value for indentation guide color. I didn’t see any setting for thickness. If you are piggybacking off Python lexer (like I am), put this inside “python.properties”:

style.python.37=fore:#FF0000

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [October 27, 2018, 8:05pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/11 "2018-10-27T20:05:21Z")

</div>

Thanks. It works. How can I see how many tabs or spaces the white space between left edge and my code has used?

---

<div class="post-metadata">

**Author:** ![oif2003](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oif2003/32/6022_2.png) [@oif2003](https://discourse.julialang.org/u/oif2003)\
**Post date:** [October 27, 2018, 9:40pm UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/12 "2018-10-27T21:40:10Z")

</div>

Try menu View \> Whitespace (Ctrl + Shift + 8)

Or use these in SciTEUser.properties:

**view.whitespace**  
**view.indentation.whitespace**  
_Setting view.whitespace to 1 makes SciTE start up with whitespace visible._  
_Setting view.indentation.whitespace to 0 hides visible whitespace inside indentation._  
_Setting view.indentation.whitespace to 1 makes indentation whitespace visible_  
_Setting view.indentation.whitespace to 2 makes indentation whitespace only visible_

**whitespace.fore**  
**whitespace.back**  
_Sets the colours used for displaying all visible whitespace, overriding any styling applied by the lexer._

Taken from: [SciTE](https://www.scintilla.org/SciTEDoc.html)

---

<div class="post-metadata">

**Author:** ![Gavin-Holt](https://avatars.discourse-cdn.com/v4/letter/g/5f9b8f/32.png) [@Gavin-Holt](https://discourse.julialang.org/u/Gavin-Holt)\
**Post date:** [November 10, 2020, 11:30am UTC](https://discourse.julialang.org/t/scite-conemu-julia-with-autohotkey/16710/13 "2020-11-10T11:30:42Z")

</div>

Hi  
I’m new to Julia, but a long term user of SciTE. Sorry to add to an old post but I downloaded your SciTE installation specifically looking for a properties and/or API file for Julia.

- Do such files exist?
- Could you add it to you Github repository?

Any pointer welcome.

Kind Regards Gavin Holt
