Note: I’m currently working on formatting the post to provide the most information in an organized way…
XCodeMapper
-
The package modifier to make CodeMap the greatest Code Navigator for SublimeText available by weeding out what you don’t need to see and displaying what you do backed by an unlimited nesting category system to organize that output in a way that makes sense, makes you more efficient, and even helps debug your code all while taking up as little space from your coding area as possible.
-
Our goal is to make you more efficient by showing you what’s relevant and hiding what isn’t and by organizing the relevant data in a way that instantly shows you its place within a file or project and by showing you common or uncommon errors which can otherwise be difficult to track down because of the way our brain processes text. It is to also allow you to decide what’s relevant based on the language you’re using, or the project your working on in that language by using simple function calls to add things to earmark in your code.
-
The hmuan mnid is albe to raed tihgns wihch may ohwtierse look iopmsibsle wehn alcuatly tnhinkig aobut it. Because of this, it’s easy for us screen code and miss things because it makes sense in other languages or because certain characters are used in the current language but won’t work in other situations, etc… Words simply blend together and to us, we look at the first and last characters in place, and the content to determine a word, our minds don’t actually care about the order the content is to make a word appear. It’s also possible for us to omit special characters, doubles, etc… while reading because they don’t mean anything in terms of communicative language. Having a second pair of eyes which doesn’t read the way we do makes us better and more efficient overall while coding.
-
In the future I want to add a more advanced syntax error detection system to make tracking down typos and little errors common with those of us who deal with dozens of programming, scripting and display / stylization languages - This is especially important for code which goes through an evaluator within a language as error-checking is incredibly difficult because you typically end up with incredibly vague descriptions which could match more than half of what’s processed.
#Frequently Asked Questions and Answers#
How do we give back?
- Any and all support is appreciated whether words of thanks, hate, constructive criticism, negative comments all the way to financial assistance! Thank you, in advance!
-
Josh ‘Acecool’ Moser for his work with XCodeMapper and misc. fixes or other to CodeMap
-
Financial Support:
- PayPal.me at: https://paypal.me/Acecool
- Coming soon…
-
Comments
-
Thanks or Other: Acecool Code Mapping System - previously XCodeMapper - Developmental Name - Nearing Version 1 - addition to [ CodeMap by oleg-shiro ]
- When providing negative comments, please be respectful of the community you’re posting it on. Negative comments and constructive criticism enables us improve CodeMap and XCodeMapper for everyone.
-
Thanks or Other: Acecool Code Mapping System - previously XCodeMapper - Developmental Name - Nearing Version 1 - addition to [ CodeMap by oleg-shiro ]
-
Financial Support:
-
oleg-shiro for his work with CodeMap, the base Addon XCodeMapper uses.
-
Financial Support:
- Coming soon…
- Coming soon…
-
Comments
- Thanks or Other: CodeMap - interactive code tree plugin
- When providing negative comments, please be respectful of the community you’re posting it on. Negative comments and constructive criticism enables us improve CodeMap and XCodeMapper for everyone.
- Thanks or Other: CodeMap - interactive code tree plugin
-
Financial Support:
-
Josh ‘Acecool’ Moser for his work with XCodeMapper and misc. fixes or other to CodeMap
Where do I go to report a bug?
- Submitting bug reports helps improve CodeMap and XCodeMapper for all using it; Thank you for providing this service to us, it means the world to us!
-
XCodeMapper Bug Reporting: There are several places I monitor for bug reports and feature requests - they are:
- Issue Tracker: https://bitbucket.org/Acecool/acecooldev_sublimetext3/issues/
- Create a New Issue Report: https://bitbucket.org/Acecool/acecooldev_sublimetext3/issues/new
- Sublime Text Forum: Acecool Code Mapping System - previously XCodeMapper - Developmental Name - Nearing Version 1 - addition to [ CodeMap by oleg-shiro ]
- Here / CodeMap Issue Tracker: https://github.com/oleg-shilo/sublime-codemap/issues/27
-
CodeMap, by oleg-shiro, Bug Reporting and Feature Requests:
- Issue Tracker: https://github.com/oleg-shilo/sublime-codemap/issues
- Create a New Issue Report: https://github.com/oleg-shilo/sublime-codemap/issues/new
-
XCodeMapper Bug Reporting: There are several places I monitor for bug reports and feature requests - they are:
Where do I submit a feature request?
- Please see Where do I go to report a bug? for links…
- Note: You may use the Issue Tracker, Sublime Text Forum post for XCodeMapper ( Dev Name ) or This post in CodeMap Issue Tracker to submit feature requests!
Where can I download XCodeMapper?
- It can be downloaded directly at: https://bitbucket.org/Acecool/acecooldev_sublimetext3/get/master.zip
- Other Package downloads Available: https://bitbucket.org/Acecool/acecooldev_sublimetext3/downloads/
- Source-Code: https://bitbucket.org/Acecool/acecooldev_sublimetext3/downloads/
Where do I install This Addon?
-
Windows:
- The root install folder is: "%AppData%\Sublime Text 3\Packages\"
-
Note: Opening the above path in Explorer navigates you to
- "C:\Users\%UserName%\AppData\Roaming\Sublime Text 3\Packages\" ( Vista upwards )
- "C:\Documents and Settings\%UserName%\Application Data\" ( XP / 2000 )
- Note: any of these paths can be used, excluding quotes, with the last 2 being Operating System version specific - the first one will work on all or most versions of Windows )
- Note: These %Variables% can be used in Explorer Address Bar - They are Windows Variables which can be used anywhere Windows parsed them ( Batch Files, Explorer Path Bar, Command Prompt, and more! )
-
Mac
- … Information coming soon …
-
Linux
- … Information coming soon …
-
Other
- … Information coming soon …
How do I install it?
- Note: I may alter this so instead of AppData\SublimeText 3\Packages\ existing in the zip, the root will be Packages\ so you only need to place the zip into the “%AppData%\Sublime Text 3\Packages” folder and Extract Here…
- Note: Right now the zip file is packaged to provide a path to follow to show where files go… AppData/Sublime Text 3/Packges/ should be the first folder where other folders are discovered.
- The first few steps are to ensure Package Control and CodeMap are installed. If you are going to use GMod Lua then that needs to be installed prior to extracting the files into the folder…
- To install Package Control:
- Click on the Tools Menu then Install Package Control ( It should be in tools or another menu ).
- To install CodeMap:
- Command / Ctrl + Shift + P ( by default )
- Type Package Control and scroll down to Install Package and Press [ ENTER ]
- Type CodeMap and press Enter with CodeMap by oleg-shiro selected - It may take a moment to install…
- To install Package Control:
- Once the install is done ( clicking Alt + M + Release M + M + Release M + Release Alt should open the Code - Map Panel while viewing a Python or Text File )
- Extract them to “%AppData%\Sublime Text 3\Packages” - The folders should be CodeMap\ ( for modifications to the default CodeMap package - these are RARE and are deleted when merged with the default CodeMap package ), *\ ( Modifications to syntax-highlighting files ), User\ ( For XCodeMapper files inside of User\CodeMap* and default configuration for CodeMap to ensure XCodeMapper maps Python and other languages over the default system, and XCodeMapper ).
How do I know if I successfully installed it?
-
When successfully installed, the folder-structure should appear as such:
- Note: All .sublime-syntax / .tmLanguage files included adds function, func , def, and ƒ to function table to allow proper highlighting when using other / shorter keywords to ensure XCodeMapper doesn’t take up a lot of room repeating something you already know, or something which can be described using less characters…
- Note: the custom_languages\ folder in AppData\Packages\CodeMap\ is required until the small issue with single-file replacements triggering Sublime Text UnZipped == True or Packaged == False leading to logic running trying to find md.sublime-syntax when code_map.py exists… This is an issue with how Sublime Text handles their api calls but we can fix it within CodeMap… This will be resolved soon…
-
"%AppData%" or "C:\Users\%UserName%\AppData\Roaming\"
- Sublime Text 3\
- AppData\Packages\
- AppData\Packages\AutoHotkey\
- AutoHotkey.tmLanguage
- AppData\Packages\CodeMap\
- AppData\Packages\CodeMap\custom_languages\
- JavaScript.sublime-syntax
- lua.sublime-syntax
- md.sublime-syntax
- AppData\Packages\CodeMap\custom_languages\
- code_map.py ( Temporarily here until next version goes live )
- AppData\Packages\GMod Lua\
- Lua.tmLanguage
- AppData\Packages\JavaScript\
- JavaScript.sublime-syntax
- AppData\Packages\Lua\
- Lua.sublime-syntax
- AppData\Packages\PHP\
- PHP.sublime-syntax
- AppData\Packages\Python\
- Python.sublime-syntax
- AppData\Packages\User\
- code_map.sublime-settings ( This is very important - without it, by default Python is parsed by the default universal mapper )
- More files soon - Either here or in CodeMap nested - sublime-settings configuration for XCodeMappers
- AppData\Packages\User\CodeMap\
- AppData\Packages\User\CodeMap\Acecool\
- init.py ( Required by Python - maybe not by ST3 )
- AcecoolST3_Library.py
- XCodeMapper.py
- XCodeMapper_Definitions.py
- AppData\Packages\User\CodeMap\custom_languages
-JavaScript.sublime-syntax ( DEFAULT )- lua.sublime-syntax ( DEFAULT )
- md.sublime-syntax ( DEFAULT )
- AppData\Packages\User\CodeMap\custom_mappers\
- ahk.py - AutoHotkey Classes
- bat.py - Batch File Classes
- js.py - JavaScript Classes
- lua.py - Lua Classes
- md.py - MarkDown Classes
- php.py - PHP / Hypertext PreProcessor / Personal Home Page Classes
- py.py - Python Classes
- sublime-settings.py - Sublime Settings File Classes
- template.py - XCodeMapper TEMPLATE for creating NEW files… INCOMPLETE!
- template_extended_info.py - INCOMPLETE!
- ts.py - TypeScript Classes
- AppData\Packages\User\CodeMap\examples\ - Contains Syntax Tests for the mappers… Not all have been populated…
- ASP.asp
- AutoHotkey.ahk
- HTML.htm
- HTML.html
- JavaScript.js
- Lua.lua
- Lua_Acecool.lua
- Lua_GMod.lua
- MarkDown.md
- PHP.php
- Text.txt
- Python.py
- SQL.sql
- SublimeTextKeyMap.sublime-keymap
- SublimeTextSettings.sublime-settings
- SublimeTextSyntax.sublime-syntax
- SublimeTextTMLanguage.tmLanguage
- TypeScript.tx
- code_map.py
- code_map.sublime_settings
- default.sublime-keymap
- Installing Acecool’s CodeMap GLua Extension.txt
- py_xcodemapper_config.sublime-settings
- snippets.py
- XCodeMapper.Default.sublime-settings
- XCodeMapper.User.sublime-settings
- More files soon - Either here or in one directory up in User\ - sublime-settings configuration for XCodeMappers
- AppData\Packages\User\CodeMap\Acecool\
- AppData\Packages\AutoHotkey\
- AppData\Packages\
- Sublime Text 3\
- Note: If files are in the wrong place - simply copy the files from the zip to the appropriate location.
Why can’t I simply add the repo to Package Control?
- I am working on a solution for this to make it easier to install ( I’ll include a Batch File soon - run using Admin / Elevated Privileges ). With what I know now, it appears the Repo method will add it to one folder and may not allow breaking out ( for the mods to GMod Lua, Python, AHK, JavaScript and other languages to add the mathematical function char, ƒ, so that functions are highlighted when you use it ). If If / when I find a solution I will make this option available!
What custom mappers does XCodeMapper come with and what do they track in the code?
- Notes for the _User class in all files: You can use ANY class as the Parent… It’s completely up to you which mappings you inherit under the User class! You can even make up your own from scratch without the default language for the mappings you’re expanding by using XCodeMapperBase as the parent! )
- Note: In the OnSetupSyntax callback, when you Add Syntax to be earmarked, there are various options - for the purpose of slimming down this already extensive list I’ve omitted the search-type… self.AddSyntax(
CATEGORY_USED_, SEARCH_METHOD_REGEX_STARTSWITH_ENDSWIDTH_CONTAINS_case_sensitive_CONTAINSI_as_insensitive, VARARGS ) where VARARGS are ‘x’, ‘y’, ‘etc’ for as many entries as you want which are added to the same category and search-type used to find them… The regex below should be obvious - others are startwith or contains / i for the most part… The reason Startswith is used for quite a lot is because its inexpensive logic ( it basically grabs length of string we’re checking, SubStrings the code we’re looking at then checks SubStringedCode == OurLookingString ) - we don’t need to use it in any of the mappers but it is also more human readable than most regex… - XCodeMapper currently supports 9 different file-extensions in order to support the base-languages which use them and others which use those file extensions too in addition to default mappings. They are:
-
Default / XCodeMapperBase
-
Default Mappings look for keywords in comment lines following by : and a space.
- Task Keywords: 'TODO: ', 'Fix: ', 'Task: ', 'Work: ', 'Update: ', 'Important: ', 'Debug: ’
- Note Keywords: 'Note: ', 'Info: ', 'Debugging: ’
-
Default Mappings look for keywords in comment lines following by : and a space.
- ahk - AutoHotkey
- bat - Batch File
- js - JavaScript
- lua - Lua / Moon & Garry’s Mod Lua
- md - MarkDown
- php - Hypertext PreProcessor / Personal Home Page
- py - Python
- sublime-settings - SublimeText Settings File
- ts - TypeScript
-
Default / XCodeMapperBase
How many languages do you plan on supporting?
- As many as necessary. The primary ones planned next are: JSON, HTML, SQL, ASP, tmLanguage / sublime-syntax and other sublime- files.
What Major features do you currently have planned?
-
Add a Rule System
- In short: a rule system will allow us in the classes or configuration to define certain basic things, or even a toggle, to process data. One example is how Python tracks nested classes - we’d be able to do the same thing with a rule-system and a few definitions such as indenting or replacing scope when class keyword is found, unindenting / popping off the stack when code on a different depth is found. For other languages we can use then, end, {, }, etc… to track these things. This way we don’t need to repeat long chunks of logic for different languages which are essentially the same… You could say we’re making everything as generic as possible… Other rules will be added too… - Add a better code-stripper / tracker…
- Right now we strip comments from lines so they don’t appear if code is found on that line we’re interested in. We also strip comment blocks from lines, etc… from the start and end and we return the appropriate code… - Add dynamic Syntax Switching system ( so alternate classes can be used regardless of file extension ) and add rules to switch which syntax map is active
- Certain files support many languages per. One example is PHP which uses HTML when not in php tags. For HTML JavaScript can be found in Script tags, and CSS in Style tags. When a php tag is found, we process PHP but SQL can also be found in certain function calls not to mention Regular Expressions… These are things we need to look for. HTML as said above supports 3 primary languages. PHP supports 6. ASP Supports 6. Without supporting these extra languages, valuable information is slipping through our fingertips and re-adding rulesets or entire languages multiple times defeats the purpose of my coding standard - expect this feature soon! - As seen in the Optimizations planning segment - Add Chunk processing system to eliminate large portions of work - this will help in larger files more so than smaller files and will open the road to letting us make a universal mapper for languages using the regex provided by tmLanguage / sublime-syntax files, and others…
What Minor features do you currently have planned?
- Plenty…
What Code Alterations do you currently have planned ie things we won’t notice?
- Consolidating certain functions into a single functions as they are nearly identical and it doesn’t warrant having 3 or even 2 functions when the outcome is the same…
What Optimizations do you currently have planned?
- Different ways to process files… Instead of requiring files parsed line by line, add the ability to parse chunk by chunk - ie multiple lines per iteration so the regex from some of the language files can be executed… The primary plan for this, as of now, is to add a new function: AddChunkSyntax - which will run on the entire file, or chunks of the file first - these lines of code which have been found are then removed from the line by line processor ( if other syntax is added to the current mapper ). This also will allow us to completely remove block-comments and process them differently ( for notes, tasks, etc… ) from everything before the other syntax is processed… This is a major feature AND optimization because chunk processing will eliminate a large number of lines otherwise processed one by one meaning less work for other systems in place. It’s no different than combining bubble-sort ( the slowest sorting method ) and QuickSort ( one of the fastest ) together making an even faster search algorithm because bubble sort is faster than QuickSort for SMALL samples… Or even combining 3 or more search algorithms to make something so much faster than any single method by itself.
What Optimization Features exist?
- Alternate Classes per language and per project meaning we don’t need to look for syntax / other data when we know we won’t find it.
What Bug Fixes do you currently have planned / ie What are the known bugs or issues?
- Fix minor issue where OnFunctionArgs adds an extra space to the output when no arguments are processed ( may occur in PreOnAddEntry or elsewhere ) making the function appear ( ) with between 2 or 3 spaces instead of 1 ( with my coding standard ).
What Other Changes do you currently have planned?
- Plenty…
What is your story?
- I have a broken neck, back and severe nerve damage from an automobile accident which occurred on May 7, 2011 where the other party was too busy looking at a going out of business sale in their passenger mirror to notice a stop sign which led to a low-speed but high damage injury because their right wheel was against the curb and my front right frame rail was angled directly at their front-left wheel along the path of the axle meaning there was an immediate drop in speed to complete-stop without any crumple or delay of the force being applied to my body. I would’ve been better off running through a brick wall - even a head on accident would’ve been better because instead of instant stopping both vehicles would’ve crumpled delaying and lessening the force by applying it over time instead of instantly which would’ve reduced the injuries sustained. I lost out on promising career opportunities, large yearly salaries and the ability to do most things. I’ve gone through hell for close to 7 years now and it is something I’d wish on no one else. I’m still fighting them and their insurance company has tried some real underhanded crap - there was water damage in my home caused by a home supply store installing a fridge incorrectly and they had no business getting involved but they did to try to get me to sign a $2,500 contract which said the $2,500 frees them from ALL liability, injury claims, etc… I’ve never felt so low that a person could do that to another person who is going through what I’m going through as I did then. Even pissing myself and all of the other humiliation wasn’t as bad as seeing what some of humanity gets away with when they’re a legally mandated for-profit company. My medical bills are close to $100,000 and the pain I go through requires severe medication around-the clock via time-released Fentanyl patch 100 mcg/hr and it only relieves my pain down to a 3 / 4 but the more I do the higher it goes. The state I live in is classified, by law, as Living-Death in many countries. If it wasn’t for my mom taking care of me, I would’ve long been dead but as of now nothing has given me permanent relief and I don’t want to be on opiates for the rest of my life… There are risky surgeries which may or may not help so I want the courts approval to be able to end my life when the time comes that I can’t continue living like this or when I am out of options or when something else related to this accident causes something serious.
What do you spend your time doing?
- I try to spend my time as productive as possible. It isn’t easy with 40 hour work weeks which can take me 3 to 6 months or longer to get through. But the way I spend my time is to improve the efficiency and which I can create content and to spread my wealth of knowledge on. I have tutored hundreds of students over the last view years in the ways the world works, numerous programming languages, what real companies expect of employees generating code, or in the industry of computing, databasing, application development, and more along with how to properly and efficiently organize code, debug, etc… My students have all contacted me after they’ve spent years talking with me and learning from me thanking me for helping them achieve their dreams - it is one of the things which empowers me to continue living through my hell. That and the fact new students still come to me and I still have knowledge to give. One of the main languages I use to teach is Lua because Garry’s Mod provides a quick and easy way to get into the world of programming with instant results - no need to restart a server to view the changes with auto-refresh systems in place - it helps new students stick with it because they see their results and improvement instantly. I have over 500 tutorials in GLua I share for questions similar between students, heavily commented as fully-working code. Because efficiency is so important to me, I am able to continue growing this database without repeating myself - chat and voice logs are saved and tutorials are created from them for new content. There are things and ideas I do repeat - but I’ve been successful not repeating myself as an educator other than the base files I send out giving more time to teach important things. Additionally, by not doing things typical educators do ( create a class and stick to the script ) it means I can easily adapt to new students methods of learning and by explaining things in my own works, differently each time if need be, it reinforces what I know and helps the students reinforce what they know because I don’t simply regurgitate a book to them ( which is a huge problem of many schools - the bad teachers simply read the book to them and when a student asks a question they simply regurgitate verbatim what the book says reinforcing the fact that these teachers do NOT know the material they are trying to teach which causes severe issues - I try to be the exact opposite of these bad teachers. There seem to be more and more of them simply getting a position because they need a job and don’t act as educators. It means that students aren’t getting the education that everyone deserves which is why people like me need to exist ).
Are you accepting new students?
- As long as I am breathing, I am. Contact me on Steam - it is currently the best platform ( with Steam Chat Logger ) because I have it running at all times, Garry’s Mod is on it, and old messages when I’m not on are delivered to me…: http://steamcommunity.com/id/Acecool/ - As I tell everyone - if you’re interested in being a student, add me and ask me. I’ll send starter material and how to set up Source Dedicated Server to code along with the outline of Lua, and more. As questions come up, ASK ME and I will respond as soon as I am on - I process all messages when I come to the computer or have a device in my hand. What I teach traverses languages - Logic is universal. Stick with it and you’ll have no problem moving from one language to the next, debugging, and you’ll know what to expect when out in the world.
What does Acecool mean?
- I created the word Acecool around 1989 meaning A School to serve as my primary objective in life - I aim to soak up as much knowledge as I can, and help spread it to others to improve our collective selves. I’ve been using Acecool as my online alias since around that time, and as my business name. I registered Acecool.com / net / org in the early 90s however the domain host GoDaddy or something didn’t honor the 10 year agreement and resold it. I’m in the process of reacquiring my domains. I own the legal TradeMark to Acecool as TradeMarks work similarly to Copyright - as soon as you create a new work, it is immediately protected under copyright law. Because I created Acecool, a new word and name used for the industries in business and as my business name and alias - it belongs to me. I have proof going back to the creation of the name that I am the first so any that use it are violation of my TradeMark.