Reputation: 155
The question is above and my Google search wasn't succesfull. I guess I need to get the default editor and then use system("editor file.txt");
? How could I get the default editor?
Edit: I don't know why but stackoverflow doesn't like my "Hey,"... then not.
Upvotes: 7
Views: 2565
Reputation: 965
There is an example to get default editor environment, from visudo (It use default editor to open sudoers file ) source
/*
* Check EDITOR and VISUAL environment variables to see which editor
* the user wants to use (we may not end up using it though).
* If the path is not fully-qualified, make it so and check that
* the specified executable actually exists.
*/
if ((UserEditor = getenv("EDITOR")) == NULL || *UserEditor == '\0')
UserEditor = getenv("VISUAL");
if (UserEditor && *UserEditor == '\0')
UserEditor = NULL;
else if (UserEditor) {
if (find_path(UserEditor, &Editor, getenv("PATH")) == FOUND) {
UserEditor = Editor;
} else {
if (def_flag(I_ENV_EDITOR)) {
/* If we are honoring $EDITOR this is a fatal error. */
(void) fprintf(stderr,
"%s: specified editor (%s) doesn't exist!\n",
Argv[0], UserEditor);
Exit(-1);
} else {
/* Otherwise, just ignore $EDITOR. */
UserEditor = NULL;
}
}
}
You can check http://www.opensource.apple.com/source/sudo/sudo-9/sudo/visudo.c for the complete code.
Upvotes: 4
Reputation: 87271
There is no official solution. Here is my recommendation for opening up a text editor:
If the filename extension is .txt
, and xdg-open
is avaliable on $PATH
and the $DISPLAY
variable is nonempty, then use xdg-open
. Otherwise use /usr/bin/sensible-editor
if it exists. Otherwise, use getenv("EDITOR")
, getenv("VISUAL")
or getenv("SELECTED_EDITOR")
. If none of them are set, try nano
, nano-tiny
and then vi
.
Upvotes: 9