]> git.proxmox.com Git - mirror_xterm.js.git/log
mirror_xterm.js.git
7 years agoadding xterm comparison tests
Jörg Breitbart [Tue, 5 Jul 2016 09:36:30 +0000 (11:36 +0200)]
adding xterm comparison tests

7 years agoMerge pull request #148 from bfis/fix/MouseEvent_clone
Paris Kasidiaris [Mon, 27 Jun 2016 13:04:33 +0000 (16:04 +0300)]
Merge pull request #148 from bfis/fix/MouseEvent_clone

Fix MouseEvent cloning

7 years agoFix MouseEvent cloning
Benjamin Fischer [Mon, 27 Jun 2016 11:27:19 +0000 (13:27 +0200)]
Fix MouseEvent cloning
Cloneing MouseEvent instances via __proto__ (lline 1099) caused the cloned object to be broken and throw "TypeError: Illegal invocation" during property access ("ev.shiftKey" line 1020).

7 years agoMerge pull request #144 from jerch/wcwidth
Paris Kasidiaris [Mon, 27 Jun 2016 09:02:47 +0000 (12:02 +0300)]
Merge pull request #144 from jerch/wcwidth

wcwidth calculation

7 years agoadding unicode test cases
Jörg Breitbart [Sun, 26 Jun 2016 10:50:06 +0000 (12:50 +0200)]
adding unicode test cases

7 years agocleanup
Jörg Breitbart [Sat, 25 Jun 2016 08:12:21 +0000 (10:12 +0200)]
cleanup

7 years agowcwidth only for printables
Jörg Breitbart [Fri, 24 Jun 2016 14:25:00 +0000 (16:25 +0200)]
wcwidth only for printables

7 years agoMerge pull request #142 from Tyriar/patch-1
Paris Kasidiaris [Fri, 24 Jun 2016 12:58:38 +0000 (05:58 -0700)]
Merge pull request #142 from Tyriar/patch-1

Only blink cursor if the terminal has focus

7 years agowcwidth calculation
Jörg Breitbart [Fri, 24 Jun 2016 12:16:12 +0000 (14:16 +0200)]
wcwidth calculation

7 years agoOnly blink cursor if the terminal has focus
Daniel Imms [Fri, 24 Jun 2016 05:16:29 +0000 (22:16 -0700)]
Only blink cursor if the terminal has focus

Fixes #141

7 years agoMerge pull request #138 from dbkaplun/disable-ligatures
Paris Kasidiaris [Fri, 24 Jun 2016 01:39:52 +0000 (18:39 -0700)]
Merge pull request #138 from dbkaplun/disable-ligatures

Disable ligatures which mess up rendering for certain fonts

7 years agoDisable ligatures
Dan Kaplun [Thu, 23 Jun 2016 22:07:38 +0000 (15:07 -0700)]
Disable ligatures

7 years agoMerge pull request #130 from Tyriar/windows_demo
Antonis Kalipetis [Thu, 23 Jun 2016 08:52:16 +0000 (11:52 +0300)]
Merge pull request #130 from Tyriar/windows_demo

Get demo working on Windows

8 years agoBind to 127.0.0.1 on Windows only
Daniel Imms [Thu, 23 Jun 2016 03:43:41 +0000 (20:43 -0700)]
Bind to 127.0.0.1 on Windows only

8 years agoMerge remote-tracking branch 'upstream/master' into windows_demo
Daniel Imms [Thu, 23 Jun 2016 03:36:05 +0000 (20:36 -0700)]
Merge remote-tracking branch 'upstream/master' into windows_demo

8 years agoMerge pull request #137 from sourcelair/improve-paste
Paris Kasidiaris [Sun, 19 Jun 2016 17:45:31 +0000 (20:45 +0300)]
Merge pull request #137 from sourcelair/improve-paste

Fix cumbersome pasting with Cmd + V

8 years agoFix cumbersome pasting with Cmd + V
Paris [Sun, 19 Jun 2016 03:12:25 +0000 (06:12 +0300)]
Fix cumbersome pasting with Cmd + V

For some reason, setting the element's contentEditable value to true within a keyboard event, while the element has focus, did not allow pasting with clipboard, unless the element gets clicked explicitly.

8 years agoFix npm scripts
Daniel Imms [Thu, 16 Jun 2016 23:31:01 +0000 (16:31 -0700)]
Fix npm scripts

8 years agoMerge remote-tracking branch 'upstream/master' into windows_demo
Daniel Imms [Thu, 16 Jun 2016 23:28:20 +0000 (16:28 -0700)]
Merge remote-tracking branch 'upstream/master' into windows_demo

8 years agoMerge pull request #131 from sourcelair/issue/120
Paris Kasidiaris [Thu, 16 Jun 2016 14:06:10 +0000 (17:06 +0300)]
Merge pull request #131 from sourcelair/issue/120

Fix focus and blur events emission

8 years agoOn big refreshes remove `term.rowContainer` instead of `term.element` from DOM
Paris [Thu, 16 Jun 2016 08:47:05 +0000 (11:47 +0300)]
On big refreshes remove `term.rowContainer` instead of `term.element` from DOM

Fix #120

8 years agoProgress with #120
Paris [Thu, 16 Jun 2016 08:41:41 +0000 (11:41 +0300)]
Progress with #120

8 years agoMerge pull request #133 from Tyriar/132_fix_constant_focus
Paris Kasidiaris [Wed, 15 Jun 2016 09:53:31 +0000 (12:53 +0300)]
Merge pull request #133 from Tyriar/132_fix_constant_focus

Only refresh when asked

8 years agoMerge pull request #121 from Tyriar/119_fix_cursor_blink
Paris Kasidiaris [Wed, 15 Jun 2016 06:51:49 +0000 (09:51 +0300)]
Merge pull request #121 from Tyriar/119_fix_cursor_blink

Fix cursor blinking when enabled

8 years agoUse CSS animations
Daniel Imms [Tue, 14 Jun 2016 17:52:49 +0000 (10:52 -0700)]
Use CSS animations

8 years agoMerge remote-tracking branch 'upstream/master' into 119_fix_cursor_blink
Daniel Imms [Tue, 14 Jun 2016 17:36:56 +0000 (10:36 -0700)]
Merge remote-tracking branch 'upstream/master' into 119_fix_cursor_blink

8 years agoOnly refresh when asked
Daniel Imms [Tue, 14 Jun 2016 17:33:24 +0000 (10:33 -0700)]
Only refresh when asked

Fixes #132

8 years agoMerge pull request #117 from Tyriar/86_protect_max_refresh
Paris Kasidiaris [Tue, 14 Jun 2016 08:11:04 +0000 (11:11 +0300)]
Merge pull request #117 from Tyriar/86_protect_max_refresh

Bound refresh max rows to this.rows not this.lines

8 years agoMerge pull request #129 from sourcelair/docs
Paris Kasidiaris [Tue, 14 Jun 2016 07:56:08 +0000 (10:56 +0300)]
Merge pull request #129 from sourcelair/docs

Improve docs building script and template

8 years agoMerge pull request #128 from Tyriar/127_debounce_refresh
Paris Kasidiaris [Tue, 14 Jun 2016 07:49:53 +0000 (10:49 +0300)]
Merge pull request #128 from Tyriar/127_debounce_refresh

Allow refresh to execute 30 times a second maximum

8 years agoGet demo working on Windows
Daniel Imms [Mon, 13 Jun 2016 22:50:18 +0000 (15:50 -0700)]
Get demo working on Windows

- Removed bin bash scripts in favor of npm scripts so they work
  cross-platform
- Moved to use 127.0.0.1 as 0.0.0.0 doesn't work on Windows

Note that this doesn't work with the current pty.js as it doesn't build on
Windows.

8 years agoMerge pull request #125 from sourcelair/addon-loader
Paris Kasidiaris [Mon, 13 Jun 2016 21:58:23 +0000 (00:58 +0300)]
Merge pull request #125 from sourcelair/addon-loader

Implement addon loader (CommonJS + RequireJS)

8 years agoImplement docs building
Paris [Mon, 13 Jun 2016 21:21:17 +0000 (00:21 +0300)]
Implement docs building

8 years agoImplement test
Paris [Mon, 13 Jun 2016 21:05:47 +0000 (00:05 +0300)]
Implement test

8 years agoAllow refresh to execute 30 times a second maximum
Daniel Imms [Mon, 13 Jun 2016 19:37:16 +0000 (12:37 -0700)]
Allow refresh to execute 30 times a second maximum

For commands that pass a significant amount of output to the write function,
this prevents the terminal maxing out the CPU and making the UI unresponsive.
While commands can still run beyond what they do on the terminal, it is far
better with a debounce in place as every single terminal manipulation does not
need to be constructed in the DOM.

A side-effect of this is that it makes ^C to interrupt a process seem more
responsive.

Fixes #127
Fixes #126

8 years agoImplement addon loader (CommonJS + RequireJS)
Paris [Mon, 13 Jun 2016 16:07:29 +0000 (19:07 +0300)]
Implement addon loader (CommonJS + RequireJS)

Closes #96

8 years agoMerge pull request #122 from Tyriar/demo_options
Paris Kasidiaris [Mon, 13 Jun 2016 12:03:10 +0000 (15:03 +0300)]
Merge pull request #122 from Tyriar/demo_options

Add basic options selection to demo

8 years agoMerge pull request #123 from Tyriar/jsdoc
Paris Kasidiaris [Mon, 13 Jun 2016 11:58:17 +0000 (14:58 +0300)]
Merge pull request #123 from Tyriar/jsdoc

Add some jsdoc for important functions

8 years agoMerge pull request #93 from Tyriar/linkify_ip_addr
Antonis Kalipetis [Mon, 13 Jun 2016 11:53:17 +0000 (14:53 +0300)]
Merge pull request #93 from Tyriar/linkify_ip_addr

Add IP addresses to linkify

8 years agoAdd some jsdoc for important functions
Daniel Imms [Sat, 11 Jun 2016 03:05:26 +0000 (20:05 -0700)]
Add some jsdoc for important functions

Part of #13

8 years agoAdd basic options selection to demo
Daniel Imms [Sat, 11 Jun 2016 02:15:52 +0000 (19:15 -0700)]
Add basic options selection to demo

This will make it easier to test options without needing to modify the demo.

8 years agoAdd a bunch of tests
Daniel Imms [Sat, 11 Jun 2016 01:53:32 +0000 (18:53 -0700)]
Add a bunch of tests

8 years agoMerge remote-tracking branch 'upstream/master' into linkify_ip_addr
Daniel Imms [Sat, 11 Jun 2016 01:08:39 +0000 (18:08 -0700)]
Merge remote-tracking branch 'upstream/master' into linkify_ip_addr

8 years agoTidy up code
Daniel Imms [Sat, 11 Jun 2016 01:05:24 +0000 (18:05 -0700)]
Tidy up code

8 years agoFix cursor blinking when enabled
Daniel Imms [Sat, 11 Jun 2016 01:01:34 +0000 (18:01 -0700)]
Fix cursor blinking when enabled

Fixes #119

8 years agoCheck optional port clause after domain too
Daniel Imms [Fri, 10 Jun 2016 20:15:59 +0000 (13:15 -0700)]
Check optional port clause after domain too

8 years agoBound refresh max rows to this.rows not this.lines
Daniel Imms [Fri, 10 Jun 2016 18:51:00 +0000 (11:51 -0700)]
Bound refresh max rows to this.rows not this.lines

this.row is the size of rows in the viewport, this.lines is the buffer. It's
only possible to refresh `0` to `this.rows - 1`.

Fixes #86

8 years agoMerge pull request #60 from runarberg/master
Paris Kasidiaris [Fri, 10 Jun 2016 16:32:45 +0000 (19:32 +0300)]
Merge pull request #60 from runarberg/master

Fix cross platform input problems

8 years agoFix third level shifts for Mac OS and windows
runarberg [Wed, 1 Jun 2016 17:06:57 +0000 (17:06 +0000)]
Fix third level shifts for Mac OS and windows

ISO third level keys were not working. That prevented some inputting
important characters (like pipe `|` and caret `^`) on some keyboard
layouts.

Instead of parsing the user-agent string to find the users os, we now
look into the `platform` attribute of the `navigator` object.

Removed the hijacking of the command key `⌘` on Mac OS as the `Alt` key
on other systems.

8 years agoMerge pull request #115 from sourcelair/decimal-terminal-flags
Paris Kasidiaris [Fri, 10 Jun 2016 16:07:25 +0000 (19:07 +0300)]
Merge pull request #115 from sourcelair/decimal-terminal-flags

Stop using binary literals

8 years agoStop using binary literals. Non ES6 compatible
Paris [Fri, 10 Jun 2016 16:02:49 +0000 (19:02 +0300)]
Stop using binary literals. Non ES6 compatible

8 years agoMerge pull request #114 from sourcelair/fix-copy-nbsp
Paris Kasidiaris [Fri, 10 Jun 2016 14:05:10 +0000 (17:05 +0300)]
Merge pull request #114 from sourcelair/fix-copy-nbsp

Stop copying non-breaking spaces into clipboard

8 years agoImplement tests
Paris [Fri, 10 Jun 2016 13:35:56 +0000 (16:35 +0300)]
Implement tests

8 years agoExport copied text processing to static method
Paris [Fri, 10 Jun 2016 13:27:58 +0000 (16:27 +0300)]
Export copied text processing to static method

8 years agoFix copying of non-breaking spaces
Paris [Fri, 10 Jun 2016 13:17:14 +0000 (16:17 +0300)]
Fix copying of non-breaking spaces

8 years agoMerge pull request #109 from Tyriar/65_send_ctrl_l_r_key
Antonis Kalipetis [Fri, 10 Jun 2016 12:57:10 +0000 (15:57 +0300)]
Merge pull request #109 from Tyriar/65_send_ctrl_l_r_key

Jump over words with ctrl+left/right

8 years agoMerge remote-tracking branch 'upstream/master' into 65_send_ctrl_l_r_key
Daniel Imms [Fri, 10 Jun 2016 10:00:22 +0000 (03:00 -0700)]
Merge remote-tracking branch 'upstream/master' into 65_send_ctrl_l_r_key

8 years agoMerge pull request #110 from Tyriar/64_cursor_disappears_when_scrolling
Paris Kasidiaris [Fri, 10 Jun 2016 09:22:28 +0000 (12:22 +0300)]
Merge pull request #110 from Tyriar/64_cursor_disappears_when_scrolling

Draw cursor at correct position when scrolling

8 years agoMerge pull request #107 from runarberg/fix/ctrl-or-shift-insert-copy-pasting
Paris Kasidiaris [Fri, 10 Jun 2016 08:57:15 +0000 (11:57 +0300)]
Merge pull request #107 from runarberg/fix/ctrl-or-shift-insert-copy-pasting

Allow Ctrl/Shift + insert to copy/paste on windows and linux

8 years agoMerge pull request #112 from Tyriar/111_scroll_with_blank_lines_after_cursor
Paris Kasidiaris [Fri, 10 Jun 2016 08:40:08 +0000 (11:40 +0300)]
Merge pull request #112 from Tyriar/111_scroll_with_blank_lines_after_cursor

Improve scroll to work with blank lines after the cursor

8 years agoImprove scroll to work with blank lines after the cursor
Daniel Imms [Fri, 10 Jun 2016 04:05:45 +0000 (21:05 -0700)]
Improve scroll to work with blank lines after the cursor

This commit works fixes scrolling when there were blank lines after the cursor.
Here is what it does (blank rows are those added by running `clear`):

when increasing rows:
  if there are blank rows below the cursor:
    add a blank row to the bottom
  else if there is room in the buffer above the viewport
    scroll up
  else
    add a blank row to the bottom

when decreasing rows:
  if there are blank rows below the cursor:
    remove a blank row from the bottom
  else
    scroll down

Fixes #111

8 years agoDraw cursor at correct position when scrolling
Daniel Imms [Fri, 10 Jun 2016 02:59:59 +0000 (19:59 -0700)]
Draw cursor at correct position when scrolling

Fixes #64

8 years agoMore escape sequence tests
Daniel Imms [Fri, 10 Jun 2016 02:25:29 +0000 (19:25 -0700)]
More escape sequence tests

8 years agoAdd tests for F-keys
Daniel Imms [Fri, 10 Jun 2016 02:00:40 +0000 (19:00 -0700)]
Add tests for F-keys

8 years agoRefactor escape sequence code and add tests
Daniel Imms [Fri, 10 Jun 2016 01:41:54 +0000 (18:41 -0700)]
Refactor escape sequence code and add tests

8 years agoJump over words with ctrl+left/right
Daniel Imms [Fri, 10 Jun 2016 01:01:12 +0000 (18:01 -0700)]
Jump over words with ctrl+left/right

Escape codes used: 5=ctrl, C=right, D=left

Fixes #65

8 years agoFix Ctrl/Shift + insert copy/paste
runarberg [Thu, 9 Jun 2016 13:05:50 +0000 (13:05 +0000)]
Fix Ctrl/Shift + insert copy/paste

Many systems (including MS Windows and many linuxes) map `<Ctrl>` +
`<Insert>` to copy and `<Shift> + <Insert>` to paste. That serves as a
handy fallback when the more common `<Ctrl> + C` and `<Ctrl> + V`
keybindings have their default prevented to send signals to the
terminal.

Currently all keydown-events with the insert key send `\x1b[2~` to the
terminal. This commit won't send that key if either the `shiftKey` or
the `ctrlKey` are present. Instead it will enable `contentEditable` to
allow for pasting.

8 years agoMerge pull request #97 from Tyriar/redundant_resize
Paris Kasidiaris [Thu, 9 Jun 2016 07:53:16 +0000 (10:53 +0300)]
Merge pull request #97 from Tyriar/redundant_resize

Don't resize when unnecessary

8 years agoMerge pull request #105 from sourcelair/issue/46
Paris Kasidiaris [Thu, 9 Jun 2016 07:29:34 +0000 (10:29 +0300)]
Merge pull request #105 from sourcelair/issue/46

Introduce testing environment for xterm.js

8 years agoAdd CXX environment
Paris [Thu, 9 Jun 2016 07:22:49 +0000 (10:22 +0300)]
Add CXX environment

8 years agoAdd apt addon in travis for node-gyp dependency of pty.js
Paris [Thu, 9 Jun 2016 07:18:39 +0000 (10:18 +0300)]
Add apt addon in travis for node-gyp dependency of pty.js

8 years agoAdd travis ci build status in xterm.js
Paris [Thu, 9 Jun 2016 07:10:36 +0000 (10:10 +0300)]
Add travis ci build status in xterm.js

8 years agoAdd .travis.yml
Paris [Thu, 9 Jun 2016 07:08:44 +0000 (10:08 +0300)]
Add .travis.yml

8 years agoSet up environment for testing
Paris [Thu, 9 Jun 2016 07:04:53 +0000 (10:04 +0300)]
Set up environment for testing

8 years agoMerge pull request #102 from Tyriar/dont_crash_demo_refresh
Paris Kasidiaris [Thu, 9 Jun 2016 06:49:28 +0000 (09:49 +0300)]
Merge pull request #102 from Tyriar/dont_crash_demo_refresh

Don't crash demo server on refresh

8 years agoRemove old test-suite completely
Paris [Thu, 9 Jun 2016 06:49:11 +0000 (09:49 +0300)]
Remove old test-suite completely

8 years agoMerge pull request #101 from Tyriar/fix_resize_buffer
Paris Kasidiaris [Thu, 9 Jun 2016 06:13:06 +0000 (09:13 +0300)]
Merge pull request #101 from Tyriar/fix_resize_buffer

Fix buffer corruption after resizing rows

8 years agoDon't crash demo server on refresh
Daniel Imms [Thu, 9 Jun 2016 02:28:55 +0000 (19:28 -0700)]
Don't crash demo server on refresh

Fixes #100

8 years agoFix buffer corruption after resizing rows
Daniel Imms [Thu, 9 Jun 2016 02:08:30 +0000 (19:08 -0700)]
Fix buffer corruption after resizing rows

Lines from the buffer were incorrectly being removed when the viewport was
resized. This change removes the lines when the cursor is above them, if not it
shifts the viewport down. Some basic jsdoc comments were added to some Terminal
properties for future reference.

Fixes #98
Fixes #99

8 years agoDon't resize when unnecessary
Daniel Imms [Thu, 9 Jun 2016 00:38:34 +0000 (17:38 -0700)]
Don't resize when unnecessary

8 years agoMerge pull request #84 from sourcelair/fix/terminal-focus-event
Paris Kasidiaris [Wed, 8 Jun 2016 21:00:05 +0000 (00:00 +0300)]
Merge pull request #84 from sourcelair/fix/terminal-focus-event

Fix emission of terminal focus&blur events

8 years agoMerge pull request #95 from sourcelair/issue/85
Paris Kasidiaris [Wed, 8 Jun 2016 19:09:21 +0000 (22:09 +0300)]
Merge pull request #95 from sourcelair/issue/85

Stop marking spans as `inline-block`

8 years agoStop marking spans as `inline-block` (not needed after 670b179140)
Paris [Wed, 8 Jun 2016 19:03:45 +0000 (22:03 +0300)]
Stop marking spans as `inline-block` (not needed after 670b179140)

Fix #85

8 years agoMerge pull request #94 from Tyriar/patch-2
Paris Kasidiaris [Wed, 8 Jun 2016 18:30:34 +0000 (21:30 +0300)]
Merge pull request #94 from Tyriar/patch-2

Add section on addons to README

8 years agoMerge remote-tracking branch 'upstream/master' into patch-2
Daniel Imms [Wed, 8 Jun 2016 06:34:35 +0000 (23:34 -0700)]
Merge remote-tracking branch 'upstream/master' into patch-2

8 years agoMerge pull request #89 from Tyriar/readme_demo
Paris Kasidiaris [Wed, 8 Jun 2016 06:19:18 +0000 (09:19 +0300)]
Merge pull request #89 from Tyriar/readme_demo

Add demo section to README

8 years agoMerge pull request #88 from Tyriar/patch-1
Paris Kasidiaris [Wed, 8 Jun 2016 06:17:49 +0000 (09:17 +0300)]
Merge pull request #88 from Tyriar/patch-1

Add http:// to demo output address

8 years agoAdd section on addons to README
Daniel Imms [Wed, 8 Jun 2016 05:31:39 +0000 (22:31 -0700)]
Add section on addons to README

8 years agoAdd IP addresses to linkify
Daniel Imms [Wed, 8 Jun 2016 05:12:38 +0000 (22:12 -0700)]
Add IP addresses to linkify

Fixes #91

8 years agoAdd demo section to README
Daniel Imms [Wed, 8 Jun 2016 00:08:37 +0000 (17:08 -0700)]
Add demo section to README

Fixes #87

8 years agoAdd http:// to demo output address
Daniel Imms [Tue, 7 Jun 2016 23:43:33 +0000 (16:43 -0700)]
Add http:// to demo output address

This makes it easy to launch the demo in a browser by right clicking the URL in
gnome-terminal

8 years agoFix emission of terminal focus&blur events
TDaglis [Tue, 7 Jun 2016 10:58:00 +0000 (13:58 +0300)]
Fix emission of terminal focus&blur events

8 years agoMerge pull request #82 from sourcelair/issue/79
Paris Kasidiaris [Tue, 7 Jun 2016 10:44:36 +0000 (13:44 +0300)]
Merge pull request #82 from sourcelair/issue/79

Make cursor hollow on blur

8 years agoMake cursor hollow on blur
Paris [Tue, 7 Jun 2016 09:06:34 +0000 (12:06 +0300)]
Make cursor hollow on blur

Fix #79

8 years agoMerge pull request #83 from sourcelair/issue/76
Paris Kasidiaris [Tue, 7 Jun 2016 10:39:47 +0000 (13:39 +0300)]
Merge pull request #83 from sourcelair/issue/76

Set line height of terminal rows to normal

8 years agoSet line height of terminal rows to normal
Paris [Tue, 7 Jun 2016 09:23:28 +0000 (12:23 +0300)]
Set line height of terminal rows to normal

Fix #76

8 years agoMerge pull request #81 from sourcelair/bash-demo
Paris Kasidiaris [Tue, 7 Jun 2016 08:43:58 +0000 (11:43 +0300)]
Merge pull request #81 from sourcelair/bash-demo

Implement fully featured bash terminal demo with a static terminal fallback

8 years agoImplement fully featured terminal demo w/ static fallback
Paris [Sun, 5 Jun 2016 05:22:22 +0000 (08:22 +0300)]
Implement fully featured terminal demo w/ static fallback

8 years agoMerge pull request #78 from sourcelair/drop-hidden-textarea
Paris Kasidiaris [Tue, 7 Jun 2016 06:36:44 +0000 (09:36 +0300)]
Merge pull request #78 from sourcelair/drop-hidden-textarea

Drop hidden textarea for input handling

8 years agoFix indentation
Paris [Mon, 6 Jun 2016 16:38:13 +0000 (19:38 +0300)]
Fix indentation