claude-code-emacs-mcp-server
Version:
MCP server for Claude Code Emacs integration
85 lines • 3.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleGetDiagnostics = handleGetDiagnostics;
async function handleGetDiagnostics(bridge, args) {
if (!bridge.isConnected()) {
return {
content: [
{
type: 'text',
text: 'Error: Emacs is not connected'
}
],
diagnostics: [],
isError: true
};
}
try {
// Get project-wide diagnostics using the specified buffer's LSP context
const result = await bridge.request('getDiagnostics', {
buffer: args.buffer
});
const diagnostics = result?.diagnostics || [];
if (diagnostics.length === 0) {
return {
content: [
{
type: 'text',
text: `No diagnostics found in project (executed from buffer ${args.buffer})`
}
],
diagnostics: []
};
}
// Group diagnostics by file
const byFile = diagnostics.reduce((acc, diag) => {
if (!acc[diag.file]) {
acc[diag.file] = [];
}
acc[diag.file].push(diag);
return acc;
}, {});
// Format output
const output = Object.entries(byFile).map(([file, diags]) => {
const fileSection = `## ${file}\n`;
const diagList = diags.map(d => `- **${d.severity.toUpperCase()}** [${d.source}] Line ${d.line}:${d.column}\n ${d.message}`).join('\n');
return fileSection + diagList;
}).join('\n\n');
const summary = `Found ${diagnostics.length} diagnostic${diagnostics.length !== 1 ? 's' : ''} in ${Object.keys(byFile).length} file${Object.keys(byFile).length !== 1 ? 's' : ''}`;
// Transform diagnostics to match schema structure
const structuredDiagnostics = Object.entries(byFile).map(([file, diags]) => ({
file,
diagnostics: diags.map(d => ({
range: {
start: { line: d.line - 1, character: d.column }, // Convert to 0-based
end: { line: d.line - 1, character: d.column } // Single point for now
},
severity: d.severity,
message: d.message,
source: d.source
}))
}));
return {
content: [
{
type: 'text',
text: `${summary}\n\n${output}`
}
],
diagnostics: structuredDiagnostics
};
}
catch (error) {
return {
content: [
{
type: 'text',
text: `Error getting diagnostics: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
diagnostics: [],
isError: true
};
}
}
//# sourceMappingURL=diagnostic-tools.js.map