code: function gutterClick(code_mirror, line_number, gutter_id, that) {
          if (gutter_id !== gutterName && gutter_id !== 'CodeMirror-linenumbers') {
              return;
          }
          if (!that.cd) {
              var _cd = document_manager.getCurrentDocument();
              if (_cd) {
                  that.cd = _cd.file.fullPath;
              }
          }
          if (!_.endsWith(that.cd, '.js')) {
              return;
          }
  
          var line_info = code_mirror.lineInfo(line_number);
  
          if (line_info.gutterMarkers && line_info.gutterMarkers[gutterName]) {
              if (that._nodeDebuggerDomain) {
                  that._nodeDebuggerDomain.exec('setBreakpoint', that.cd, line_number);
              }
              else {
                  var breakpoints_to_save = prefs.get('breakpoints');
                  _.remove(breakpoints_to_save, function (breakpoint) {
                      return breakpoint.fullPath === that.cd && breakpoint.line === line_number;
                  });
                  prefs.set('breakpoints', _.uniq(breakpoints_to_save, function (elem) {
                      return [elem.fullPath, elem.line].join();
                  }));
                  prefs.save();
                  code_mirror.setGutterMarker(line_number, gutterName, null);
              }
          }
          else {
              if (that._nodeDebuggerDomain) {
                  that._nodeDebuggerDomain.exec('removeBreakpoint', {
                      line: line_number,
                      fullPath: that.cd
                  });
              }
              else {
                  that.addBreakpoint({
                      line: line_number,
                      fullPath: that.cd
                  }, that);
              }
          }
      }
docs: /*
  Sets or removes Breakpoint at cliked line
  
  @param {CodeMirror} cm
  The CodeMirror instance
  
  @param {Number} n
  LineNumber
  
  @param {String} gutterId