vscode-fortran-support icon indicating copy to clipboard operation
vscode-fortran-support copied to clipboard

feat: Auto-generation of `launch.json` and `tasks.json`

Open yuxuan-z19 opened this issue 10 months ago • 3 comments

Is there an existing request for this?

  • [x] I have searched the existing issues

Feature Request

I'd like to request a feature "Fortran: gfortran build and debug active file", just like what the C/C++ extension does when someone debugs his .c or .cpp source code. Obviously we need tasks.json configured as well (to setup a preLaunchTask).

Here are my configurations:

// .vscode/launch.json
{
    "configurations": [
        {
            "name": "Fortran: gfortran build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "preLaunchTask": "Fortran: gfortran build active file", 
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
// .vscode/tasks.json
{
    "tasks": [
        {
            "type": "shell",
            "label": "Fortran: gfortran build active file",
            "command": "/usr/bin/gfortran",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger"
        }
    ],
    "version": "2.0.0"
}

I was wondering if there's a way to generate launch.json and tasks.json automatically with minor modification to this extension.

yuxuan-z19 avatar Aug 17 '23 14:08 yuxuan-z19

While I agree that some automatic generation of tasks.json and launch.json files for debugging would be really nice.

I think that a more complete approach would be a command that generates a new fpm project at the current directory with something like fpm new --backfill and also the .vscode files with some setting similar to https://github.com/fortran-lang/fpm/discussions/479#discussioncomment-2942179

fedebenelli avatar Sep 19 '23 13:09 fedebenelli

While I agree that some automatic generation of tasks.json and launch.json files for debugging would be really nice.

I think that a more complete approach would be a command that generates a new fpm project at the current directory with something like fpm new --backfill and also the .vscode files with some setting similar to fortran-lang/fpm#479 (reply in thread)

This is a great idea @fedebenelli. FYI there are plans for making fpm fully integrated with VS Code similar to CMake, but we will probably save that for a GSoC project or a funding proposal, since the dev time required would be in the hundreds of hours.

gnikit avatar Sep 19 '23 19:09 gnikit

@yuxuan-z19 No it is not currently possible. We rely 100% on the C++ extension so for me software-wise it makes sense not duplicating these file generation processes, since they will inevitably get outdated. I appreciate that this is not the most reasonable thing for a user though. Users just want to have these scripts ready.

Maybe there is a way (through some registered command) to call the C++ extension's task and launch generation scripts and then edit them.

gnikit avatar Sep 19 '23 19:09 gnikit