Small tools/scripts that help you so much? - scripting

On top of my head, especially for C/Linux developer:
ack
git-bz
colorgcc
colordiff
moap and prepare-ChangeLog
Is there some tool/script you couldn't work without, but that you feel others don't know so much?
For instance, I just found:
cppcheck

I don't use it that often, but the tool with the highest ratio of awesomeness to being little known has to be dot, which is the tool for drawing directed graphs that is part of the AT&T Graph Visualization suite. A nice example output is their Unix family tree.

On Windows or Linux:
grep, without a doubt
tail
vim
On Windows (and Linux, Solaris), XMLStarlet
I realize that grep and tail are well-known, but it amazes me how many people think it's magic when you use either one of them. Same thing with Vim. I'm hardly a power user, but I can open it up and have a small document complete before MS Word would even open.

Vim http://www.straw-dogs.co.uk/wp-content/vim_logo.png
Vim, my favorite editor

StackOverflow
Google
And my other two favourites are too large to be considered small :P
Visual Studio
The Internet

It's a language not a tool, but it is small and not yet well known: the programming language Lua. I can't live without it and it is gradually displacing my sh, ksh, awk, and perl scripts... One mark of genius: the escape character for string-search patterns is different from the escape character for quoted strings. No more trying to make sense of legions of backslashes!

git has had such a profound impact on my workflow that I do not want to code without it
firebug is a must for web development
standard command-line utilities/functions: grep, find, locate, tail, sed, awk, pushd, popd
custom TextMate bundle snippets, TextMate's bundle editor is superb even though TextMate lacks some important vi and emacs capabilities (like split buffers)
regular expressions - people need to learn how-to use regexps, period

I'm quite fond of:
.Net Reflector
Sysinternals (a bunch of cool tools here)

The python interactive interpreter and its pumped up variant iPython are the tools that have enhanced my programming productivity like no other.
Being able to experiment with new code on the fly and inspect objects, classes, and modules in any way you want interactively is simply awesome.

Does know one depend on Putty ?, i really dunno what i would do with out it

Most have been listed here already so I won't repeat. Here are a couple new ones.
LINQ Pad
Reflector
Sticky Notes VS Add-In
psValidation (My own Validation Class Library, Mostly RegEx)

- ANT
- Mylyn
- TortoiseSVN
- firebug (think console too!)
- TextMate

My faves are Notepad++, which I use for EVERYTHING that's not wrapped in a visual studio project, and a small macro in Visual studio that turns a c# variable declaration into a basic property. Both are simple, but oh so very useful!

Vim and PrintFile. All PrintFile does is print text and PostScript files, any which way I want them (including cut-and-paste).

I need the most tools when coding for web, anything else usually just a text editor.
for web:
Web Developer Add-On for Firefox
Notepad++
Pixie
MeasureIt Add-On for Firefox

Already listed but I must mention TextMate. I use Mercurial or Hg on a daily basis.

Firebug. More than anything else.

Related

Why should I switch to an IDE?

I've been programming in python and C for a little less than a year, now. I switched from OSX to Ubuntu about a month ago. I'm learning C++, and most specific (non-beginner, I.E.: an SFML tutorial I'm using) tutorials that I've seen talk as if I use an IDE. I've used Textwrangler (OSX), gedit (Linux), and nano (Both; With built-in syntax highlighting and other extras turned on) for programming, along with the terminal and "make" so far, and I'm perfectly happy with them. I would use emacs, but I really don't like the way it looks. Should I use an IDE for C++? If so, why? Honestly, I'm just scared of being a ctrl-space'ing heathen. Thank you for any responses, and take the previous sentence with a grain of salt.
Short answer: Use an IDE if you feel comfortable with one. Don't use an IDE if you don't feel comfortable with one.
To really answer this question, though, we should probably look what using an IDE gets you. Here's the Visual Studio interface for C++:
(source: msdn.com)
The first thing you notice, of course, is the code windows with the pretty highlights. However, that's not the IDE; that's just the text editor part. The rest of it is what's really important. Visual Studio includes a debugger, a file/project manager, a compiler, support for source control... the list goes on. The first letter of "IDE" is the most important one - integrated. It includes everything you need to develop in one neat package.
However, this has its downsides, too. Maybe you don't like VS's text editor. Then, you have to have two windows open, and use the IDE only for debugging, compiling, and source control, wasting most of the screen space. Maybe, after a while, you start to think maybe GCC optimizes your code better, so you start using that. Eventually, the "integrated" part of IDE goes out of the window, and you're using only a few features of the product. At that point, it might be more productive just to find replacements for everything.
Of course, there are extensions and plugins for some of these things, but the point is: an IDE is generally only useful if you spend all or most of your time in it. If you like the entire or most of the IDE, great. If you don't, then use something else, whether that's another IDE or a bunch of command line tools or something else.
Addendum: I used to use Visual Studio, and then moved to Linux with Vim, gcc, and gdb. I work with SFML a fair amount in personal projects, and I don't feel that an IDE is especially suited to it in any particular way; I do just fine with the command line tools. The tutorials are most likely written that way because most people begin coding with an IDE, and SFML attracts a lot of beginners.

How to debug a Lua script in Sublime Text 2 under Linux

I am using Lua (I am newbie on it) for scripting under Sublime Text 2 and Linux and I would like to debug my script so I would like to set some breakpoints. How can I achieve this?
Sublime text 2 is just a text editor, it is not an environment and so you cannot debug in it. I don't actually script Lua, so I am not that familiar with the tools available for it but they are out there.
Corona Labs released plugin for Sublime, which supports debugging. Check out: https://sublime.wbond.net/packages/Corona%20Editor
As far as I see - no such a thing thing for Sublime Text. Only some kind of Corona Texmate Bundle[1] derivative for Sublime[2].
Also there are couple of links for Corona SDK IDEs in official Corona page[3]. Some of them provides debugging functionality...
[1]http://www.ludicroussoftware.com/corona-textmate-bundle/
[2]https://github.com/drowne/Corona-Sublime
[3]http://www.coronalabs.com/resources/3rd-party-tools-and-services/
It should be possible to write a plugin for SLT2/3
Plugins are written in Python, so there is no compilation needed or anything like that. But it's still a huge effort due to the fact that there is virtually no documentation available for the SLT scripting API.
Your best bet would be to borrow from existing projects like
https://github.com/Kindari/SublimeXdebug
http://sokolovstas.github.io/SublimeWebInspector/
There is also Outlaw which claims to be an IDE but it does not seem to support debugging and is more like a project manager with a mediocre editor attached. You can probably do the same in SLT with a few commandlets. It does seem to have completion though.

D language dev environment

What is the current state of the art development environment for the D language?
I know about DDT for eclipse, Visual D and Codeblocks. Each has its disadvantages - DDT doesn't have a debugger, Visual D is for windows (and Visual Studio) and CodeBlocks doesn't have emacs keys bindings and I have some bad memories about it from my CS intro days.
Using tools like emacs + gdb is good enough for simple programs but when the code gets bigger I find it really hard to get around the code just with emacs. Without smart code completion and code layout (meaning, list of all functions/classes in a file) it gets really tedious and I feel I spend way too much time struggling with the editor instead of just writing the code I want to write.
Additionally, with Java+eclipse for example I have this neat documentation popup window whenever I mouse over a method/class. I find this extremely helpful, and really miss it when working in emacs.
And debugging with gdb is really just... antiquated.
So, for the love of god, save me from the 1970s! :)
Although, any tips concerning emacs and gdb (if nothing else exists) would be appreciated.
Have you looked at Mono-D?
Further, Sublime Text 2 has pretty good D support. I also maintain an improved highlighter for it.
I switched from Code::Blocks to Mono-D half year ago. However, there is a new kid on the block NetbeansD. For simple stuff Geany and Kate have enough support. :)
All this said, Mono-D beats all competitors at the moment, so try that one first.
Doesn't Emacs have GDB integration that allow you to do stepthough and add brakepoints - all in emacs?
I would suggest you try to configure your Emacs.
I also suggest using a good build tool(I use Rake when I program in Vim, but Emacs might have an elisp build tool), and the ctags and cscope really help in mapping big projects.

Alternative to Dreamweaver?

I'm tired of Dreamweaver overwriting wrong files on the server,
so I'm looking for an alternative.
I want color-coding and possibility to open/save and edit files direct from the server, so I don't need to save files on my desktop first.
I'm using Windows.
Every web developer should be hand-writing their mark-up - all forms of automated abstraction inhibit your understanding and awareness of the code and create maintenance problems for the future. I'm quite a zealot about this, you may be able to tell.
On that basis, I can heartily recommend Editplus: has code colouring, FTP and a huge amount of feature-sugar from line duplication to macros.
Notepad++ extended with some plugins is a really handy replacement. Though I can't call it IDE, it does virtually everything a developer need. In my case (a lot of repetitive code) Texter (a small app working in background) makes notepadd++ even more handy. So, my suggestion is: Notepad++ and Texter.
I switched to notepad++ when I had the same kind of problems with DreamWeaver. I tried some other programs too, but they were too complicated for my needs.
If all you need is color-coding and ftp-support, notepad++ is a good choice.
Visual Web Developer Express, which is the lightweight version of Visual Studio.
http://www.microsoft.com/express/
If you're using a Mac you should take a look at Coda
Well personally I use Programmer's Notepad but it doesn't support the facility to upload files to the server. You could get Notepad++ and this FTP plugin. I haven't tried Notepad++ but I'm sure that it isn't WYSIWYG.
Perhaps KompoZer? It has all the features you've asked for, and there's a Windows version (as well as Mac and Linux).
Dreamweaver... Not my cup of tea, because it lacks good support for modern web programming with Javascript or PHP.
For primary design, I use WeBuilder from Blumentals. Its also a good and not expensive PHP and Javascript IDE with debugging support and also has good CSS support with a built-in CSS editor.
I'm not a big fan of text editors like Notepad++ as an IDE replacement, because you often need a lot of additional plug-ins to have similar features like a IDE. But for some files or quick editing nothing can beat such editors (I like Notepad++ the most on Windows).
So for Windows I would prefer WeBuilder for all things (design & programming).
You use only Windows? For Linux there are other alternatives too ;)
When I searched an alternative for the Dreamweaver for PHP, I found some IDEs and one among them is Netbeans. Soon it became my favorite for my object oriented coding.
Here is the download page.
This has support for Zend and Symphony frameworks.
They also support File uploading.
When developping in PHP, I generally use Eclipse PDT.
If you are more oriented towards HTML/CSS/Javascript, you might be interested by Aptana, which is based on Eclipse too... Which means it can use lots of plugins, including some to work directly on a server, I suppose (see TM/RSE, for instance).
Note than Aptana can also be installed into an existing Eclipse installation, as a plugin.
Oh, also, I almost forgot : Eclipse is free, and there are both a free and a commercial version of Aptana.
(One bad thing about Eclipse being it requires a quite powerful computer -- at least 2 cores and 2 GB of RAM, if you want to use any other application at the same time...)
E Text Editor, a Textmate clone for Windows, claims to have FTP Support. But i haven't used this feature before.
I want color-coding and possibility to open/save and edit files direct from the server, so I don't need to save files on my desktop first.
The Zeus editor can highlight and fold HTML files, it integrates with HTML Tidy and can seamless edit files from the server via ftp/sftp.
It also has support for a host of other languages (i.e C/C++, C#, Java, Javascript, PHP, etc etc)

Why Emacs/Vim/Textmate? Isn't Xcode good enough?

Hi I mostly do C++, Objective-C programming. And I found Xcode plus an auto completion/macro plugin (Completion Dictionary) quite adequate.
However, all people seem to praise over their pure text editors. I tried Textmate for a bit; liked its simplicity but dislike its files/framework handling.
Am I missing something here? Or, do Vim or Emacs have auto-completion as good as Xcode?
Pull up a chair son, let me speak on this.
Well before the days of Xcode, there was VIM and Emacs. I know it's hard to imagine, but it's true.
Many people got accustomed to VIM/Emacs, and thus continue to use it.
Emacs is extremely customizable, and offers pretty much everything you can imagine (including a built in shrink and the towers of hanoi). You can easily call compilers from Emacs, and create your own extensions as needed.
VIM has incredible regex engine (Emacs does as well) and is very handy because (VI) comes with pretty much every Unix OS, and works fantastically if you don't have arrow keys (yeah yeah, real old school). People are very good with using keys to move around documents, without having to use the mouse.
The same is true with Emacs as well, but for me, I find cursor motion much easier on VIM.
The text editor war is fueled with as much religious zealotry as the Mac vs PC war, and the answer is pick the best that works for you. If you like Xcode, great, continue to use it, however good luck if you're ever forced to work on a PC or Linux machine. Personally, I use Emacs to code, VIM to manipulate text and Firefox to look at lolcats.
I really don't understand why emacs props up when people talk about text editors. In my experience it's more like eclipse (or one of those other platforms/IDEs) than vi because it is an environment, which happens to be good at text editing.
As an IDE emacs features version control, live compilation, spell checking, auto completion, debugging, code browsing and lots more for a wide variety of SDKs. For the rest of your computing needs it's an email/news/web/irc/twitter/xmmp client, calendar, organizer, calculator, terminal emulator, remote editing, speadsheets, games etc. etc. etc.
After Dijkstra: "Emacs is no more about text editing than astronomy is about telescopes"
What you are missing is that Emacs and Vim are actually IDEs.
vi is ubiquitous on UNIX systems, and Emacs almost so. AFAIK, Xcode is on one platform.
Having a powerhouse IDE is a great thing, but everyone should have a smattering of skill to keep them functional on any platform they might be dropped into.
It's all up to your preference.
Some people like to work with lightweight texteditors like (g)vim, emacs, pico, etc.
Others like to work with IDEs like MS Visual Studio, Eclipse, Xcode.
As long as your environment is compatible with the text editing technology, it's all up to you.
By the way, I like working with Eclipse and vim because they are what I used to learn programming ;)
The main reason you seem to think people like Emacs/Vim is for code completion. People like Emacs/Vim cause they are both MADE for editing text. You have control and options available to you that other editors just don't have. Once you get REALLY good at using one of these programs you want these key bindings / commands available everywhere. Macros, regular expressions, moving around by search/word/paragraph/function, interfacing with version control, complicated undo/redo and copy/paste functions and extension options are just a FEW of the things that these editors do really really well.
Code completion is just one of MANY things that can make writing programming easier. Emacs/Vim can handle ALL of them (natively or by exntensions).
No, not really. It's a matter of preference really. I liked working in Visual Studio 6, but nowadays the newer versions are just too bloated. So if I can do something outside VS I usually do it without opening the whole IDE box.
On windows I like notepad2 and gvim. I've customized vim to the point where it suits my needs perfectly, so I don't have to think about what and where.
But, it's good to mention that (you could also figure that out by yourself by reading these kinda posts) a lot of users uses vim/emacs/... 'cause of the heard-its-the-best/cool-factor/actual-usability. So if it doesn't suit you, don't use it. Nobody's gonna look you the wrong way cause of that.
For me most the two most important features are:
Emacs key bindings, as that is what my fingers are compatible to.
Open-source, for the freedom it provides. Being tied to one platform is anathema.
These days I mostly use Eclipse for programming (set to Emacs keybindings) and FSF Emacs for reading mail and some occasional LaTeX.
I personally love emacs. I've used vim and a handful of IDEs. Vim and emacs both have great communities where people are willing to code up features for just about any language. I don't know of any IDEs that, say, support Haskell. It all depends on what's important to you. Both have extension languages, though IMO, emacs lisp is the better of the two. The ability to ignore the mouse is the main thing I like as well. So many IDEs also feature emacs and vim compatibilty modes or extensions. They both have a large time investment, but both are worth it. Sooner or later, you will choose which suits you, vim/emacs/IDE, and then stick to improving your skills with it.
When you are using Emacs, you can install Cedet or Autocomplete package to use name completion for some languages (C++ is pretty good, while Obj-C is still not supported), in addition to rich editor functionality
emacs is powerful. I use emacs with vimpluse.el so that I can use the vim key bindings with all the emacs features.
I use Vim mostly for the input model. Once you have become proficient in the input model, going back to an editor where you are forced to use a mouse feels clumsy and ultimately (at least to me) irritating. It is a lot more efficient to type "ci'" to alter all the text between two single quotes, then taking your hands off of the home row, finding and selecting the text with the mouse and finally hitting 'delete'.
I have only used Emacs briefly and while I prefer Vim, I am jealous of some of its features. But I ultimately went with Vim because I find the chord-input model that Emacs uses to put unnecessary strain on my fingers.
I have Xcode and TextMate and I don't use them although I know they can be very powerful. Instead I use Vim (or MacVim if you prefer). Why ?
Because it's light, fast, addictive, powerful, customizable...
I could go on like this for a long time but the most important thing is that I can do all I want with Vim.
Whatever the editor you use, the best editor is the one you master (almost) perfectly.
I don't use vi to do my coding; however, I do, when available, use vi emulation in my editors. When I am doing Java coding in IntelliJ I use the IdeaVIM plugin which gives me vi support in IntelliJ's editor. This means I almost never have to take my fingers off of home row. I navigate with the keyboard (h,j,k,l), cut/paste with yy, dd, etc. And of course when I do need the power of a full feature GUI editor vi emulation doesn't keep me from using those features.
It drives me nuts that XCode doesn't have vi emulation in its editor. Seems like functionality that any decent IDE should have.
TextMate just feels lighter to me. Off the top of my head:
It has great support for jumping between files and methods within files. Think Quicksilver for files/methods. With a file open for editing, hit command-shift-t to bring up a floating panel listing all the methods in the file. Start typing and the list filters itself down. Select the method you want and hit return to jump to it. Xcode has something like this but the sting matching is more literal.
Lots of built in text expansion. Type a trigger and hit tab to have it expanded. For example, on a new line typing m and then hitting tab creates a method for you. The tab key then intelligently jumps to the various parts of the inserted text so that you can edit them in place. These are such a huge timesaver it's ridiculous.
Nice plugin support for Subversion and Git. Probably other VCSs too.
Completions (like Xcode) and history. TextMate allows you to tab-complete basically any text that exists in the file. So once you type a variable name or method call once, you can use tab to auto-complete it anywhere in that same file.
Smart past board with history, nice built in diffs, theme support, good keyboard support, find in files and across projects (with RegEx) and probably more that I'm forgetting.
Anyway, that's enough from me.
Personally, I love TextMate, because it's actually a really lightweight solution. Granted, I have not used Vim or Emacs in depth (I like my GUIs)...although I do thoroughly enjoy the Control-based cursor navigation (Control-A is beginning of line, Control-E is end of line, Control-F and Control-B are forward and backward, etc). So between Xcode and TextMate, I use Xcode for most of my serious development, but if I just need to quickly edit a source file I can be up and coding before Xcode even finishes launching (it helps that TextMate can remember which files were previously opened and restore them). So for some lightweight text editing, TextMate is my choice.
Above that, TextMate's plug-in support is amazing; it provides full support (syntax coloring, building & running, etc.) for so many different things (shell scripts, CSS, SQL, LaTeX, and much more) that Xcode doesn't provide. When I need to brush up a quick program in Java or tweak a webpage, it's a lot easier then using Vim and then building from the Terminal.
My only complaint with TextMate is that the console is read-only, so I can't build anything interactive. That, and the fact that it doesn't seem to support C99 keywords (for loops and booleans) in a plain-C file.
I am a long time vim user, and find that I really like Komodo edit with the Vim emulation turned on. Thus, I get all of convenience of the vim key bindings (to which I have become so accustomed that a recent MS Word document that I recently produced had no less than three ":w"s in it) plus the well implemented code completion for C++, Python, javascript, etc.
I don't use XCode because I don't develop OS X specific applications very much and so the benefit of the OS X framework integration isn't large enough to outweigh the cost of not having vim key bindings and the "do it our way or not at all" approach that Apple takes toward development.
Xcode is more of an IDE, whereas emacs and vi are for pure text (though they have massive extensions to them). This is preferable if you're on an older system or over an SSH. In addition, they're pretty much on every UNIX based computer, whereas XCode is proprietary Apple software.
You might have a look at my essay on the subject Why Emacs?. While it's more or less Emacs-centric some of the points made in it would apply to vim and TextMate as well.
I tried vim a long time ago and for one reason or another "I didn't get it". Then after trying other editors over the years I reached a point where no editor seemed to do what I wanted it to do. After voicing my frustration to a friend he recommended that I try vim....and I am so glad that I took another look because it was the answer to a question that I didn't know how to ask! I have used Vim/MacVim ever since...
here my configuration:
https://github.com/RandyMcMillan/QuickVim
I use Xcode as well because it is nice to have code completion.
XVim is good for people that want a modal/vim feel in the Xcode editor:
https://github.com/JugglerShu/XVim
But when it comes to my day to day editing Vim wins every time. That is why I have the QuickVim repo is so that I can quickly reproduce my environment anytime/anywhere.
I have a list of licenses for editors like TextMate, etc..but it is likely that I won't ever use them since I can use vim for free and customize it to my exact specifications.
Heavy Vim user here. I generally find the text manipulation capability of Vi/Vim far superior than traditional editors which lack things like:
visual mode: e.g. prefixing 5 lines with comment //
macros: e.g. surround 3rd to 5th words in a line with quotation marks, repeat for 100 lines
multiple registers: think 36 registers to copy and paste
delete{motion}: e.g. delete from cursor up to the next occurrence of 'initWithFrame'
These are just a few examples that Vim has XCode text editing beat hands down
For Objective-C. I tend to install a Vim plugin on the IDE to get the best of both worlds - native build / UI components support.
Incidentally. Emac keyboard bindings (e.g. CTRL-A to go to top of line) are supported in a lot of native (Coacoa) text fields on Mac. Including the one you're using for typing answers on stackoverflow :D
XVim works with XCode. IdeaVim for AppCode