Metadata-Version: 2.1
Name: make-c
Version: 0.1.5b2
Summary: A utility to create a simple C source file with a main and open it in an editor.
Home-page: https://github.com/zcutlip/make_c_program
Author: Zachary Cutlip
Author-email: uid000@gmail.com
License: MIT
Platform: UNKNOWN
Requires-Python: >=3.3
Description-Content-Type: text/markdown

# make_c

A script to generate a simple C program with a few basic includes and a `main()`. Then it opens the file in your editor of choice placing the cursor at the proper line and column to start adding code.

Supported editors include:

- vim
- SublimeText (`subl`)
- TextMate (`mate`)
- Visual Studio Code (`code`)
- nano
- emacs

## Installing

```console
$ cd make_c
$ python3 setup.py install
```

## Running

Help output:

```console
$ make_c --help
usage: make_c [-h] [--list-editors] [--version] [--editor EDITOR]
              [--skip-editor] [--tabs] [--generate-makefile]
              [filename]

make_c: A utility to create a simple C source file with a main and open it in
an editor. version 0.1.4

positional arguments:
  filename             Name of the source file to create.

optional arguments:
  -h, --help           show this help message and exit
  --list-editors       List known editors.
  --version            Print version string and exit.
  --editor EDITOR      Editor to use to open the resulting source file.
  --skip-editor        Create the source file but don't open it in an editor.
  --tabs               Use tabs instead of spaces.
  --generate-makefile  Create a makefile to build the program.
```

List available editors:

```console
$ make_c --list-editors
Known editors:

vim: Vi IMproved, a programmer's text editor
subl: Sublime Text 3
mate: TextMate 2
code: Visual Studio Code
emacs: GNU project Emacs editor
nano: Nano's ANOther editor, an enhanced free Pico clone
```

If an editor isn't provided on the command line, it can be specified using an environment. The variables that are used are, in the following order:

1. `MAKE_C_EDITOR`
2. `EDITOR`
3. `VISUAL`

Creating and editing a file:

```console
# Create foo.c and edit in the default editor, VIM:
$ make_c foo.c

# Edit using $MAKE_C_EDITOR environment variable to specify editor:
$ export MAKE_C_EDITOR=/usr/local/bin/emacs
$ make_c foo.c

# If MAKE_C_EDITOR isn't set, EDITOR and VISUAL respected, in that order:
$ unset MAKE_C_EDITOR
$ export EDITOR=/usr/bin/vim

#Edit in SublimeText instead:

$ make_c foo.c --editor=subl

#Generate a makefile in addition to the C file.

$ make_c foo.c --generate-makefile
```

## Adding editor support

To add additional editors, extend the `CProgram` class and override:

- The `EDITOR` class variable
- The `DESCRIPTION` class variable
- The `generate_editor_command()` instance method

The string representation for `--list-editors` is automatically generated by the superclass from `EDITOR` and `DESCRIPTION`.

The `generate_editor_command()` method should return an `argv` that represents that editor's commandline incantation in list form suitable for consumption by `subprocess.Popen()`. For example, if your editor takes a `--line` and `--column` argument, you would return:

```python
def generate_editor_command(self):
    return [self.generate_editor_arg0(),
            "--line",
            "%d" % self.edit_line,
            "--column",
            "%d" % self.edit_column,
            self.filename]
```


