Enhancing Indentation for Kate

Alexandru Stan

Short description: My goal is to improve indentation functionality for Kate. I will be making tabs vs spaces functionality more consistent. This will give the opponents in the tabs verses spaces war less to not like about the other side. I will be implementing elastic tab stops, which helps make code like it was aligned with spaces, with the functionality of tabs.

Additional info: http://community.kde.org/GSoC/2011/Ideas#Projec...

Name: Alexandru Stan


Email Address: alex@hypertriangle.com


Freenode IRC Nick: amstan


IM Service and Username: Google Talk/mile92


Location (City, Country and/or Time Zone): Hamilton, Ontario, Canada, EST


Proposal Title: Enhancing Indentation for Kate


Motivation for Proposal / Goal: I am a frequent user of Kate (I write all of my code with it), so I want to support it. As a tabs supporter I feel like I have sacrificed my alignment options when writing code. Elastic tabs will solve this dilemma. My goal is to make tabs verses spaces functionality more consistent and implement elastic tabs while keeping other editors in the loop.

 

Implementation Details

 

Elastic Tabs

Described athttp://nickgravgaard.com/elastictabstops/


The idea seems pretty easy in practice. When tab is pressed: if there's a tab on the previous line at the cursor position, the new cursor position will be where the tab on the previous line ends; if there isn't a tab on the previous tab, indent a user defined number of characters.


This idea is fairly easy to implement if only using tabs as storage. But that will cause the files to have all tabs in them (not really compatible with other editors). Converting the elastic tabs to spaces will be fairly easy, the problem will be importing spaces back to elastic tabs. This importing may only work with simple documents; I will research how other editors that support elastic tabs accomplish this.

 

Tabs vs Spaces Consistent Functionality

I will be making tabs and spaces more functionality homogeneous. Navigating and editing a document with spaces seems to be much harder than a document with tabs.

I wish to accomplish the following:

  • Fix delete behavior with spaces: delete should remove the following indent (or user defined number of spaces) not just the following space.

  • When pressing LEFT after an indent of spaces, the cursor should move the user defined number of spaces, not just one space.

  • A way to easily switch between tabs and spaces behavior. Coders should use tabs or spaces according to what the project requires, not to their editor settings. Right now I have to navigate through the settings, click about 4 things to change between them; a shortcut or a menu entry might be nice. Auto detection wouldn't be bad either.

 

Tentative Timeline

I’m unsure how to expand this more. I cannot set the timeline in stone without researching how everything works.

I have around one buffer week at the end of each month.

 

April - Middle of May

  • Get myself familiarized with Kate's source tree

  • Clone the repository

  • Improve my ideas by talking to the community. Submit bugs as a checklist for the Tabs vs Spaces Consistent Functionality ideas.

  • Learn the parts of Kate that I'll have to work with


Middle of May - End of June

Implement all the Tabs and Spaces Consistent Functionality Ideas.

One per week

  • Work on that delete behavior with spaces

  • Fix the cursor navigation around space indents

  • Implement the shortcut for switching between tabs and spaces + auto-detect. This might take 2 weeks.

July

One per week

  • Research how the indentation system works

  • Implement elastic tabs

  • Play with it for a while(use it), try to come up with new ideas.

  • Export to space aligned/indented files

August

One per week

  • Importing from space aligned/indented files

  • Research how other editors solve this

  • Look over the code written over the summer, clean up/document everything that was left



Other Obligations

  • I have school, 4 classes per week. But the courses workload is fairly lightweight, and a lot of the course material I already know.

  • I also spend about 5 hours per week looking over Google AI Challenge. I'm an admin there, making sure nothing goes wrong.



About Me

I’m a student for Mohawk College, first year. Avid user of Linux since 05. A few years(about 8) of experience in programming. I had experience with Python, C, C++, PyQt, PHP, Java and Scheme. I’m pretty picky about how I manage my projects, so I’m a user of git, doxygen and I maintain github repos for a lot of my projects. This is my first time doing Google Summer of Code.