Using Geany for programming in R

The article was originally published as a blog post (but feel free to improve this wiki page as you see fit). This page contains some tips on how to use Geany to program in R.

Execute commands in an R session

To send R commands from the editor to the integrated Virtual Terminal Emulator (VTE), you need to download Geany >= 0.19. Then you can set send_selection_unsafe=true in geany.conf and assign “Send selection to terminal” to a ctrl+r or ctrl+enter keybinding (or similar) via Edit > Prefs > Keybindings. As long as your Geany installation has support for the embedded VTE (and to my knowledge it is currently NOT supported on Windows), you’re good to go. Start R in the terminal, write some R code in Geany and send the line or selection to the terminal by using the assigned keybinding.

Be careful, though. The hidden option send_selection_unsafe is called that way and is disabled by default for good reason. If set to true, it does not strip trailing newline characters and even add one if not already present. When no R session is running, you are prone to send stupid commands (e.g. rm -rf your_preferred_folder) for execution to the console. Again, be careful with that.

Improving the R parser in Geany

The R lexer should consider the “.” (dot) as part of an object name (as it does for the “_” underscore). By default it doesn’t. To change that, you can proceed as follows if you are using Geany >= 1.23 (assuming Linux, but it should be very similar on other platforms).

Copy /usr/share/geany/filetypes.r to ~/.config/geany/filedefs/. Then in ~/.config/geany/filedefs/filetypes.r uncomment the wordchars element and add a “.” (dot) in that list. Your config file should thus contain the following line: wordchars=_.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

Now when you double-click or ctrl+left/right on an object name (say, make.names() or my_ueber.cool_fun()), Geany should select or skip the entire word.

Combining Geany with RStudio

As good as an IDE as Geany is, it is not so well suited for working with R. It comes with no integrated graphics device, help system, or object browser. So Geany is a good choice if you’re OK with working in a bare bones terminal. In this sense RStudio is superior for actually performing statistical analyses in R, as it has many R-specific functionalities that make analyzing data that much easier. Yet again, RStudio is not a full-fledged IDE and lacks certain functionality for heavy code uplifting.

So one thing that you can do is to use both IDEs at the same time on a given file. My workflow is as follows:

  • I open a_given_file.R in both Geany and RStudio and regularly save any modifications
  • When I analyze data in RStudio, save a_given_file.R and then switch to Geany, you will usually be greeted with a “The file ‘a_given_file.R’ on the disk is more recent than the current buffer. Do you want to reload it?” pop-up dialogue. Say Reload.
  • When I do some heavy code uplifting in Geany, save a_given_file.R and then switch to RStudio, you will usually automatically get the latest version of the file reloaded from disk.

Be careful: this approach works if you get used to it and try to avoid careless errors that could result in data loss. Otherwise, always save and close the file before switching to the other IDE.